On Mon, 27 Mar 2017, kan.li...@intel.com 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


Reply via email to