Re: [PATCH] x86: APIC: Remove apic_write_around(); use alternatives

From: Yinghai Lu
Date: Fri Jul 18 2008 - 13:01:20 EST

On Fri, Jul 18, 2008 at 9:25 AM, Yinghai Lu <yhlu.kernel@xxxxxxxxx> wrote:
> On Fri, Jul 18, 2008 at 3:52 AM, Ingo Molnar <mingo@xxxxxxx> wrote:
>> * Maciej W. Rozycki <macro@xxxxxxxxxxxxxx> wrote:
>>> Use alternatives to select the workaround for the 11AP Pentium
>>> erratum for the affected steppings on the fly rather than build time.
>>> Remove the X86_GOOD_APIC configuration option and replace all the
>>> calls to apic_write_around() with plain apic_write(), protecting
>>> accesses to the ESR as appropriate due to the 3AP Pentium erratum.
>>> Remove apic_read_around() and all its invocations altogether as not
>>> needed. Remove apic_write_atomic() and all its implementing backends.
>>> The use of ASM_OUTPUT2() is not strictly needed for input constraints,
>>> but I have used it for readability's sake.
>> wow, impressive patch!
>>> I had the feeling no one else was brave enough to do it, so I went
>>> ahead and here it is. Verified by checking the generated assembly and
>>> tested with both a 32-bit and a 64-bit configuration, also with the
>>> 11AP "feature" forced on and verified with gdb on /proc/kcore to work
>>> as expected (as an 11AP machines are quite hard to get hands on these
>>> days). Some script complained about the use of "volatile", but
>>> apic_write() needs it for the same reason and is effectively a
>>> replacement for writel(), so I have disregarded it.
>> kudos for pulling this off :-)
>> applied to tip/x86/apic. This will interact with tip/x86/x2apic but that
>> topic is being worked on anyway. The interaction should be trivial.
> it seems we should start apic related merging after x2apic get merged?

> git merge tip/x86/x2apic
Auto-merged Documentation/kernel-parameters.txt
Auto-merged arch/x86/Kconfig
Auto-merged arch/x86/kernel/Makefile
CONFLICT (content): Merge conflict in arch/x86/kernel/Makefile
Auto-merged arch/x86/kernel/acpi/boot.c
Auto-merged arch/x86/kernel/apic_32.c
Auto-merged arch/x86/kernel/apic_64.c
Auto-merged arch/x86/kernel/cpu/common_64.c
Auto-merged arch/x86/kernel/genx2apic_uv_x.c
Auto-merged arch/x86/kernel/io_apic_32.c
Auto-merged arch/x86/kernel/io_apic_64.c
Auto-merged arch/x86/kernel/paravirt.c
CONFLICT (content): Merge conflict in arch/x86/kernel/paravirt.c
Auto-merged arch/x86/kernel/setup.c
Auto-merged arch/x86/kernel/smpboot.c
CONFLICT (content): Merge conflict in arch/x86/kernel/smpboot.c
Auto-merged arch/x86/kernel/vmi_32.c
CONFLICT (content): Merge conflict in arch/x86/kernel/vmi_32.c
Auto-merged arch/x86/lguest/boot.c
Auto-merged arch/x86/xen/enlighten.c
CONFLICT (content): Merge conflict in arch/x86/xen/enlighten.c
Auto-merged drivers/pci/Makefile
Auto-merged drivers/pci/intel-iommu.c
Auto-merged include/asm-x86/apic.h
CONFLICT (content): Merge conflict in include/asm-x86/apic.h
Auto-merged include/asm-x86/cpufeature.h
Auto-merged include/asm-x86/genapic_64.h
Auto-merged include/asm-x86/hw_irq.h
Auto-merged include/asm-x86/io_apic.h
Auto-merged include/asm-x86/ipi.h
Auto-merged include/asm-x86/mach-default/mach_apic.h
Auto-merged include/asm-x86/mach-es7000/mach_apic.h
Auto-merged include/asm-x86/paravirt.h
CONFLICT (content): Merge conflict in include/asm-x86/paravirt.h
Auto-merged include/asm-x86/smp.h
Auto-merged include/linux/irq.h
Auto-merged kernel/irq/manage.c
Automatic merge failed; fix conflicts and then commit the result.

also please apply
Fix VMI apic_ops.
from Suresh

to x2apic

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at