On Mon, 27 Mar 2017, [email protected] wrote:
> +
> + if (val)
> + msr_set_bit_on_cpus(cpu_possible_mask, MSR_IA32_DEBUGCTLMSR,
> DEBUGCTLMSR_FREEZE_WHILE_SMM_BIT);
> + else
> + msr_clear_bit_on_cpus(cpu_possible_mask, MSR_IA32_DEBUGCTLMSR,
> DEBUGCTLMSR_FREEZE_WHILE_SMM_BIT);
This is still not protected against CPU hotplug. What's so hard about:
get_online_cpus();
if (val) {
msr_set_bit_on_cpus(cpu_online_mask, MSR_IA32_DEBUGCTLMSR,
DEBUGCTLMSR_FREEZE_WHILE_SMM_BIT);
} else {
msr_clear_bit_on_cpus(cpu_online_mask, MSR_IA32_DEBUGCTLMSR,
DEBUGCTLMSR_FREEZE_WHILE_SMM_BIT);
}
put_online_cpus();
Aside of that, when this is set to SMI freeze, what causes a CPU which
comes online after that point to set the bit as well? Nothing AFAICT.
Thanks,
tglx