+ #
+ # [!] Don't add CmdlineChecks in add_kconfig_checks() to avoid wrong results
+ # when the tool doesn't check the cmdline.
+ #
+ # [!] Make sure that values of the options in CmdlineChecks need normalization.
+ # For more info see normalize_cmdline_options().
+ #
+ # A common pattern for checking the 'param_x' cmdline parameter
+ # that __overrides__ the 'PARAM_X_DEFAULT' kconfig option:
+ # l += [OR(CmdlineCheck(reason, decision, 'param_x', '1'),
+ # AND(KconfigCheck(reason, decision, 'PARAM_X_DEFAULT_ON', 'y'),
+ # CmdlineCheck(reason, decision, 'param_x, 'is not set')))]
+ #
+ # Here we don't check the kconfig options or minimal kernel version
+ # required for the cmdline parameters. That would make the checks
+ # very complex and not give a 100% guarantee anyway.
+
+ # 'self_protection', 'defconfig'
+ l += [CmdlineCheck('self_protection', 'defconfig', 'nosmep', 'is not set')]
+ l += [CmdlineCheck('self_protection', 'defconfig', 'nosmap', 'is not set')]
+ l += [CmdlineCheck('self_protection', 'defconfig', 'nokaslr', 'is not set')]
+ l += [CmdlineCheck('self_protection', 'defconfig', 'nopti', 'is not set')]
+ l += [CmdlineCheck('self_protection', 'defconfig', 'nospectre_v1', 'is not set')]
+ l += [CmdlineCheck('self_protection', 'defconfig', 'nospectre_v2', 'is not set')]
+ l += [CmdlineCheck('self_protection', 'defconfig', 'nospectre_bhb', 'is not set')]
+ l += [CmdlineCheck('self_protection', 'defconfig', 'nospec_store_bypass_disable', 'is not set')]
+ l += [CmdlineCheck('self_protection', 'defconfig', 'arm64.nobti', 'is not set')]
+ l += [CmdlineCheck('self_protection', 'defconfig', 'arm64.nopauth', 'is not set')]
+ l += [CmdlineCheck('self_protection', 'defconfig', 'arm64.nomte', 'is not set')]
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'mitigations', 'is not off'),
+ CmdlineCheck('self_protection', 'defconfig', 'mitigations', 'is not set'))]
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'spectre_v2', 'is not off'),
+ CmdlineCheck('self_protection', 'defconfig', 'spectre_v2', 'is not set'))]
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'spectre_v2_user', 'is not off'),
+ CmdlineCheck('self_protection', 'defconfig', 'spectre_v2_user', 'is not set'))]
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'spec_store_bypass_disable', 'is not off'),
+ CmdlineCheck('self_protection', 'defconfig', 'spec_store_bypass_disable', 'is not set'))]
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'l1tf', 'is not off'),
+ CmdlineCheck('self_protection', 'defconfig', 'l1tf', 'is not set'))]
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'mds', 'is not off'),
+ CmdlineCheck('self_protection', 'defconfig', 'mds', 'is not set'))]
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'tsx_async_abort', 'is not off'),
+ CmdlineCheck('self_protection', 'defconfig', 'tsx_async_abort', 'is not set'))]
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'srbds', 'is not off'),
+ CmdlineCheck('self_protection', 'defconfig', 'srbds', 'is not set'))]
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'mmio_stale_data', 'is not off'),
+ CmdlineCheck('self_protection', 'defconfig', 'mmio_stale_data', 'is not set'))]
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'retbleed', 'is not off'),
+ CmdlineCheck('self_protection', 'defconfig', 'retbleed', 'is not set'))]
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'kpti', 'is not off'),
+ CmdlineCheck('self_protection', 'defconfig', 'kpti', 'is not set'))]
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'kvm.nx_huge_pages', 'is not off'),
+ CmdlineCheck('self_protection', 'defconfig', 'kvm.nx_huge_pages', 'is not set'))]
+ if arch == 'ARM64':
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'ssbd', 'kernel'),
+ CmdlineCheck('self_protection', 'my', 'ssbd', 'force-on'),
+ CmdlineCheck('self_protection', 'defconfig', 'ssbd', 'is not set'))]
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'rodata', 'full'),
+ AND(KconfigCheck('self_protection', 'defconfig', 'RODATA_FULL_DEFAULT_ENABLED', 'y'),
+ CmdlineCheck('self_protection', 'defconfig', 'rodata', 'is not set')))]
+ else:
+ l += [OR(CmdlineCheck('self_protection', 'defconfig', 'rodata', '1'),
+ CmdlineCheck('self_protection', 'defconfig', 'rodata', 'is not set'))]