kernel_optimize_test/arch/x86_64/kernel
Linus Torvalds f7f847b015 Revert "x86-64: Disable local APIC timer use on AMD systems with C1E"
This reverts commit e66485d747, since
Rafael Wysocki noticed that the change only works for his in -mm, not in
mainline (and that both "noapictimer" _and_ "apicmaintimer" are broken
on his hardware, but that's apparently not a regression, just a symptom
of the same issue that causes the automatic apic timer disable to not
work).

It turns out that it really doesn't work correctly on x86-64, since
x86-64 doesn't use the generic clock events for timers yet.

Thanks to Rafal for testing, and here's the ugly details on x86-64 as
per Thomas:

  "I just looked into the code and the logic vs.  noapictimer on SMP is
   completely broken.

   On i386 the noapictimer option not only disables the local APIC
   timer, it also registers the CPUs for broadcasting via IPI on SMP
   systems.

   The x86-64 code uses the broadcast only when the local apic timer is
   active, i.e.  "noapictimer" is not on the command line.  This defeats
   the whole purpose of "noapictimer".  It should be there to make boxen
   work, where the local APIC timer actually has a hardware problem,
   e.g.  the nx6325.

   The current implementation of x86_64 only fixes the ACPI c-states
   related problem where the APIC timer stops in C3(2), nothing else.

   On nx6325 and other AMD X2 equipped systems which have the C1E
   enabled we run into the following:

   PIT keeps jiffies (and the system) running, but the local APIC timer
   interrupts can get out of sync due to this C1E effect.

   I don't think this is a critical problem, but it is wrong
   nevertheless.

   I think it's safe to revert the C1E patch and postpone the fix to the
   clock events conversion."

On further reflection, Thomas noted:

   "It's even worse than I thought on the first check:

    "noapictimer" on the command line of an SMP box prevents _ONLY_ the
    boot CPU apic timer from being used.  But the secondary CPU is still
    unconditionally setting up the APIC timer and uses the non
    calibrated variable calibration_result, which is of course 0, to
    setup the APIC timer.  Wreckage guaranteed."

so we'll just have to wait for the x86 merge to hopefully fix this up
for x86-64.

Tested-and-requested-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-09-26 15:43:41 -07:00
..
acpi [acpi] Correct the decoding of video mode numbers in wakeup.S 2007-09-20 11:06:58 -07:00
cpufreq [CPUFREQ] the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI 2007-07-13 01:29:51 -04:00
aperture.c x86_64: arch/x86_64/kernel/aperture.c lower printk severity 2007-07-21 18:37:14 -07:00
apic.c x86_64: fix HPET init race 2007-08-11 15:47:39 -07:00
asm-offsets.c [PATCH] x86-64: Auto compute __NR_syscall_max at compile time 2007-05-02 19:27:18 +02:00
audit.c [PATCH] audit signal recipients 2007-05-11 05:38:25 -04:00
bugs.c x86_64: include asm/bugs.h in bugs.c for check_bugs prototype 2007-07-31 15:39:42 -07:00
crash_dump.c [PATCH] kdump: read previous kernel's memory 2006-01-10 08:01:28 -08:00
crash.c move die notifier handling to common code 2007-05-08 11:15:04 -07:00
e820.c x86_64: arch/x86_64/kernel/e820.c lower printk severity 2007-07-21 18:37:14 -07:00
early_printk.c xen: use the hvc console infrastructure for Xen console 2007-07-18 08:47:44 -07:00
early-quirks.c x86_64: move iommu declaration from proto to iommu.h 2007-07-21 18:37:14 -07:00
entry.S remove unused TIF_NOTIFY_RESUME flag 2007-07-31 15:39:38 -07:00
genapic_flat.c [PATCH] x86-64: Fix allnoconfig error in genapic_flat.c 2007-05-02 19:27:21 +02:00
genapic.c [PATCH] x86: adjust inclusion of asm/fixmap.h 2007-05-02 19:27:04 +02:00
head64.c x86_64: display more intuitive error message if kernel is not 2MB aligned 2007-05-11 08:29:32 -07:00
head.S x86_64: Change PMDS invocation to single macro 2007-08-18 10:25:25 -07:00
hpet.c x86_64: fix section mismatch warning in hpet.c 2007-07-22 11:03:38 -07:00
i387.c [PATCH] x86-64: use BUILD_BUG_ON in FPU code 2006-12-07 02:14:01 +01:00
i8259.c x86_64: Move functions declarations to header file 2007-07-21 18:37:12 -07:00
init_task.c use the new percpu interface for shared data 2007-07-19 10:04:45 -07:00
io_apic.c ACPI: boot correctly with "nosmp" or "maxcpus=0" 2007-08-21 00:33:35 -04:00
ioport.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
irq.c x86_64 irq: use mask/unmask and proper locking in fixup_irqs() 2007-06-26 16:54:29 -07:00
k8.c Avoid zero size allocation in cache_k8_northbridges() 2007-05-23 20:14:12 -07:00
kprobes.c x86: Fix alternatives and kprobes to remap write-protected kernel text 2007-07-22 11:03:37 -07:00
ldt.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
machine_kexec.c Revert "[PATCH] x86: __pa and __pa_symbol address space separation" 2007-05-07 08:44:24 -07:00
Makefile revert "x86, serial: convert legacy COM ports to platform devices" 2007-07-31 15:39:38 -07:00
mce_amd.c x86_64: Fix APIC typo 2007-07-21 18:37:09 -07:00
mce_intel.c [PATCH] x86: Add a cumulative thermal throttle event counter. 2006-09-26 10:52:42 +02:00
mce.c x86: Stop MCEs and NMIs during code patching 2007-07-22 11:03:37 -07:00
module.c [PATCH] Generic BUG for x86-64 2006-12-08 08:28:39 -08:00
mpparse.c x86_64: remove unused variable maxcpus 2007-07-21 18:37:09 -07:00
nmi.c x86_64: Fix to keep watchdog disabled by default for i386/x86_64 2007-08-18 10:25:25 -07:00
pci-calgary.c x86_64: Calgary - Fix mis-handled PCI topology 2007-08-11 15:58:12 -07:00
pci-dma.c x86_64: Fail dma_alloc_coherent on dma less devices 2007-08-18 10:25:25 -07:00
pci-gart.c x86_64: move iommu declaration from proto to iommu.h 2007-07-21 18:37:14 -07:00
pci-nommu.c x86_64: move iommu declaration from proto to iommu.h 2007-07-21 18:37:14 -07:00
pci-swiotlb.c x86_64: move iommu declaration from proto to iommu.h 2007-07-21 18:37:14 -07:00
pmtimer.c [PATCH] time: x86_64: convert x86_64 to use GENERIC_TIME 2007-02-16 08:14:00 -08:00
process.c Revert "x86_64: Quicklist support for x86_64" 2007-09-21 12:09:41 -07:00
ptrace.c x86_64: Zero extend all registers after ptrace in 32bit entry path. 2007-09-21 09:52:07 -07:00
reboot.c x86_64: move iommu declaration from proto to iommu.h 2007-07-21 18:37:14 -07:00
relocate_kernel.S [PATCH] Avoid overwriting the current pgd (V4, x86_64) 2006-09-26 10:52:38 +02:00
setup64.c x86_64: Ignore compat mode SYSCALL when IA32_EMULATION is not defined 2007-06-22 18:41:19 -07:00
setup.c Revert "x86-64: Disable local APIC timer use on AMD systems with C1E" 2007-09-26 15:43:41 -07:00
signal.c x86: i386-show-unhandled-signals-v3 2007-07-22 11:03:37 -07:00
smp.c Revert "x86_64: Quicklist support for x86_64" 2007-09-21 12:09:41 -07:00
smpboot.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
stacktrace.c simplify the stacktrace code 2007-05-08 11:14:58 -07:00
suspend_asm.S [PATCH] x86-64: Relocatable Kernel Support 2007-05-02 19:27:07 +02:00
suspend.c Replace CONFIG_SOFTWARE_SUSPEND with CONFIG_HIBERNATION 2007-07-29 16:45:38 -07:00
sys_x86_64.c Remove fs.h from mm.h 2007-07-29 17:09:29 -07:00
syscall.c [PATCH] x86-64: Auto compute __NR_syscall_max at compile time 2007-05-02 19:27:18 +02:00
tce.c x86-64: Calgary: fix section mismatch warnings in tce 2007-07-31 15:39:37 -07:00
time.c x86_64: use the global PIT lock 2007-07-21 18:37:12 -07:00
trampoline.S [PATCH] x86-64: Move cpu verification code to common file 2007-05-02 19:27:08 +02:00
traps.c x86: i386-show-unhandled-signals-v3 2007-07-22 11:03:37 -07:00
tsc_sync.c [PATCH] x86: Log reason why TSC was marked unstable 2007-05-02 19:27:08 +02:00
tsc.c x86_64: cleanup tsc.c merge artifact 2007-07-26 11:35:20 -07:00
verify_cpu.S Unify the CPU features vectors between i386 and x86-64 2007-07-12 10:55:54 -07:00
vmlinux.lds.S x86_64: Squash initial_code modpost warnings 2007-07-22 11:03:38 -07:00
vsmp.c [PATCH] Fix build breakage with CONFIG_X86_VSMP 2006-10-12 12:25:27 -07:00
vsyscall.c x86_64: Add vDSO for x86-64 with gettimeofday/clock_gettime/getcpu 2007-07-21 18:37:08 -07:00
x8664_ksyms.c [PATCH] x86: Export _proxy_pda for gcc 4.2 2007-03-16 21:07:36 +01:00