Messages in this thread | | | Date | Tue, 22 Jul 2008 09:24:01 -0400 | From | Yong Wang <> | Subject | Re: [PATCH] x86: APIC: Remove apic_write_around(); use alternatives |
| |
On Mon, Jul 21, 2008 at 10:59:41AM -0700, Suresh Siddha wrote: > Thanks Ingo. I tested tip/master and found an issue (patch attached) > for x2apic support. This is not because of the recent merges we had, but > because of something(where we still access memory based interface after > enabling x2apic mode) that slipped through my earlier tests. > > Probably it is a good idea to unmap the memory mapped interface, once we switch > to x2apic mode. That will catch the issues much earlier. I will > post another patch for this. > > Meanwhile, I will do more testing of tip/master along with addressing > open issues. > --- > > [patch] x64, apic: use generic apic_write() for ack_APIC_irq() > > ack_APIC_irq() is used at too many generic places (and not just during > irq_chip handling!) to use the native_apic_mem_write(). For ex, this will > break x2apic based systems. > > Fix ack_APIC_irq() to use the generic apic_write() even for 64-bit. > > Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> > --- > > diff --git a/include/asm-x86/apic.h b/include/asm-x86/apic.h > index 300b65e..1df955f 100644 > --- a/include/asm-x86/apic.h > +++ b/include/asm-x86/apic.h > @@ -138,11 +138,7 @@ static inline void ack_APIC_irq(void) > */ > > /* Docs say use 0 for future compatibility */ > -#ifdef CONFIG_X86_32 > apic_write(APIC_EOI, 0); > -#else > - native_apic_mem_write(APIC_EOI, 0); > -#endif > } >
ACK. I tested this patch on my x2apic capable box and it works well. Without this patch, kernel built from tip/x86/x2apic cannot boot in x2apic mode and all APs got stuck in smp_callin->calibrate_delay and failed to boot. After applying this patch, system boots well and all processors got up and running successfully.
| |