public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* x2apic_wrmsr_fence vs. Intel manual
@ 2020-03-02 16:11 Jan Kiszka
  2020-03-02 16:20 ` Thomas Gleixner
  2020-03-04 18:27 ` Dave Hansen
  0 siblings, 2 replies; 6+ messages in thread
From: Jan Kiszka @ 2020-03-02 16:11 UTC (permalink / raw)
  To: x86; +Cc: Linux Kernel Mailing List

Hi all,

as I generated a nice bug around fence vs. x2apic icr writes, I studied 
the kernel code and the Intel manual in this regard more closely. But 
there is a discrepancy:

arch/x86/include/asm/apic.h:

/*
 * Make previous memory operations globally visible before
 * sending the IPI through x2apic wrmsr. We need a serializing instruction or
 * mfence for this.
 */
static inline void x2apic_wrmsr_fence(void)
{
        asm volatile("mfence" : : : "memory");
}

Intel SDM, 10.12.3 MSR Access in x2APIC Mode:

"A WRMSR to an APIC register may complete before all preceding stores 
are globally visible; software can prevent this by inserting a 
serializing instruction or the sequence MFENCE;LFENCE before the WRMSR."

The former dates back to ce4e240c279a, but that commit does not mention 
why lfence is not needed. Did the manual read differently back then? Or 
why are we safe? To my reading of lfence, it also has a certain 
instruction serializing effect that mfence does not have.

Jan

-- 
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-03-04 18:40 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-03-02 16:11 x2apic_wrmsr_fence vs. Intel manual Jan Kiszka
2020-03-02 16:20 ` Thomas Gleixner
2020-03-02 16:33   ` Jan Kiszka
2020-03-02 16:35   ` Peter Zijlstra
2020-03-04 18:27 ` Dave Hansen
2020-03-04 18:39   ` Jan Kiszka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox