init_scattered_cpuid_features() is called twice, first time from
early_cpu_init(), before 'noibrs' or 'noibpb' option are parsed.
This results in setting of sysctl_* variables. When we call
init_scattered_cpuid_features() the second time, after the boot options
have been parsed, init_scattered_cpuid_features() will leave sysctl_*
parameters unchanged (i.e. already set).
To avoid this, always set those variables based on ibrs/pb_inuse.
Orabug:
27382723
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Brian Maly <brian.maly@oracle.com>
Signed-off-by: Kirtikar Kashyap <kirtikar.kashyap@oracle.com>
return;
set_ibrs_supported();
set_ibpb_supported();
- if (ibrs_inuse)
- sysctl_ibrs_enabled = 1;
- if (ibpb_inuse)
- sysctl_ibpb_enabled = 1;
+ sysctl_ibrs_enabled = ibrs_inuse ? 1 : 0;
+ sysctl_ibpb_enabled = ibpb_inuse ? 1 : 0;
} else if (boot_cpu_has(X86_FEATURE_IBPB)) {
printk_once(KERN_INFO "FEATURE IBPB Present%s\n", ignore ? " but ignored (Xen)": "");
if (ignore)
return;
set_ibpb_supported();
- if (ibpb_inuse)
- sysctl_ibpb_enabled = 1;
+ sysctl_ibpb_enabled = ibpb_inuse ? 1 : 0;
} else {
printk(KERN_INFO "FEATURE SPEC_CTRL Not Present\n");
}