diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-22 21:38:11 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-22 21:38:11 -0400 |
commit | f08b9c2f8af0d61faa1170aeae4fbca1eff6a504 (patch) | |
tree | 367b04b7750b66c8412bd377e549aa0fb5b3df02 /arch/x86/kernel/apic/apic.c | |
parent | d79ee93de909dfb252279b9a95978bbda9a814a9 (diff) | |
parent | 0ab711ae6ab0db7696b43c74f9ba9de4d7fc1deb (diff) |
Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86/apic changes from Ingo Molnar:
"Most of the changes are about helping virtualized guest kernels
achieve better performance."
Fix up trivial conflicts with the iommu updates to arch/x86/kernel/apic/io_apic.c
* 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86/apic: Implement EIO micro-optimization
x86/apic: Add apic->eoi_write() callback
x86/apic: Use symbolic APIC_EOI_ACK
x86/apic: Fix typo EIO_ACK -> EOI_ACK and document it
x86/xen/apic: Add missing #include <xen/xen.h>
x86/apic: Only compile local function if used with !CONFIG_GENERIC_PENDING_IRQ
x86/apic: Fix UP boot crash
x86: Conditionally update time when ack-ing pending irqs
xen/apic: implement io apic read with hypercall
Revert "xen/x86: Workaround 'x86/ioapic: Add register level checks to detect bogus io-apic entries'"
xen/x86: Implement x86_apic_ops
x86/apic: Replace io_apic_ops with x86_io_apic_ops.
Diffstat (limited to 'arch/x86/kernel/apic/apic.c')
-rw-r--r-- | arch/x86/kernel/apic/apic.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index 3722179a49db..39a222e094af 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c | |||
@@ -1326,11 +1326,13 @@ void __cpuinit setup_local_APIC(void) | |||
1326 | acked); | 1326 | acked); |
1327 | break; | 1327 | break; |
1328 | } | 1328 | } |
1329 | if (cpu_has_tsc) { | 1329 | if (queued) { |
1330 | rdtscll(ntsc); | 1330 | if (cpu_has_tsc) { |
1331 | max_loops = (cpu_khz << 10) - (ntsc - tsc); | 1331 | rdtscll(ntsc); |
1332 | } else | 1332 | max_loops = (cpu_khz << 10) - (ntsc - tsc); |
1333 | max_loops--; | 1333 | } else |
1334 | max_loops--; | ||
1335 | } | ||
1334 | } while (queued && max_loops > 0); | 1336 | } while (queued && max_loops > 0); |
1335 | WARN_ON(max_loops <= 0); | 1337 | WARN_ON(max_loops <= 0); |
1336 | 1338 | ||