x86/apic: Implement EIO micro-optimization
authorMichael S. Tsirkin <mst@redhat.com>
Wed, 16 May 2012 16:03:58 +0000 (19:03 +0300)
committerIngo Molnar <mingo@kernel.org>
Fri, 18 May 2012 07:46:09 +0000 (09:46 +0200)
commit0ab711ae6ab0db7696b43c74f9ba9de4d7fc1deb
tree61295a9035f1f15fe32083ff1dbf6c83d73069b0
parent2a43195d831997551da93e6b3c22c965e93fe9cc
x86/apic: Implement EIO micro-optimization

We know both register and value for eoi beforehand,
so there's no need to check it and no need to do math
to calculate the msr. Saves instructions/branches
on each EOI when using x2apic.

I looked at the objdump output to verify that the
generated code looks right and actually is shorter.

The real improvemements will be on the KVM guest side
though, those come in a later patch.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Cc: Avi Kivity <avi@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: gleb@redhat.com
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/e019d1a125316f10d3e3a4b2f6bda41473f4fb72.1337184153.git.mst@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/include/asm/apic.h
arch/x86/kernel/apic/x2apic_cluster.c
arch/x86/kernel/apic/x2apic_phys.c
arch/x86/kernel/apic/x2apic_uv_x.c