On Fri, 31 Jul 2015, Shaohua Li wrote:
> @@ -336,6 +336,22 @@ static void __setup_APIC_LVTT(unsigned int clocks, int 
> oneshot, int irqen)
>       apic_write(APIC_LVTT, lvtt_value);
>  
>       if (lvtt_value & APIC_LVT_TIMER_TSCDEADLINE) {
> +             u64 msr;
> +
> +             /*
> +              * See Intel SDM: TSC-Deadline Mode chapter. In xAPIC mode,
> +              * writing APIC LVTT and TSC_DEADLINE MSR isn't serialized.
> +              * This uses the algorithm described in Intel SDM to serialize
> +              * the two writes
> +              * */
> +             while (1) {
> +                     wrmsrl(MSR_IA32_TSC_DEADLINE, -1L);
> +                     rdmsrl(MSR_IA32_TSC_DEADLINE, msr);
> +                     if (msr)
> +                             break;
> +             }
> +             wrmsrl(MSR_IA32_TSC_DEADLINE, 0);


I think this is exceptionally silly. A proper fence after the
apic_write() should have the same effect.

Thanks,

        tglx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to