diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-04-17 16:30:50 -0400 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2013-04-26 14:27:31 -0400 |
commit | 54695c3088a74e25474db8eb6b490b45d1aeb0ca (patch) | |
tree | 4ecaa9c41857cf4b380f54017830e2aeb8dc56fe /arch/powerpc/kernel/asm-offsets.c | |
parent | bc5ad3f3701116e7db57268e6f89010ec714697e (diff) |
KVM: PPC: Book3S HV: Speed up wakeups of CPUs on HV KVM
Currently, we wake up a CPU by sending a host IPI with
smp_send_reschedule() to thread 0 of that core, which will take all
threads out of the guest, and cause them to re-evaluate their
interrupt status on the way back in.
This adds a mechanism to differentiate real host IPIs from IPIs sent
by KVM for guest threads to poke each other, in order to target the
guest threads precisely when possible and avoid that global switch of
the core to host state.
We then use this new facility in the in-kernel XICS code.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch/powerpc/kernel/asm-offsets.c')
-rw-r--r-- | arch/powerpc/kernel/asm-offsets.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c index dbfd5498f440..a791229329cf 100644 --- a/arch/powerpc/kernel/asm-offsets.c +++ b/arch/powerpc/kernel/asm-offsets.c | |||
@@ -574,6 +574,8 @@ int main(void) | |||
574 | HSTATE_FIELD(HSTATE_KVM_VCPU, kvm_vcpu); | 574 | HSTATE_FIELD(HSTATE_KVM_VCPU, kvm_vcpu); |
575 | HSTATE_FIELD(HSTATE_KVM_VCORE, kvm_vcore); | 575 | HSTATE_FIELD(HSTATE_KVM_VCORE, kvm_vcore); |
576 | HSTATE_FIELD(HSTATE_XICS_PHYS, xics_phys); | 576 | HSTATE_FIELD(HSTATE_XICS_PHYS, xics_phys); |
577 | HSTATE_FIELD(HSTATE_SAVED_XIRR, saved_xirr); | ||
578 | HSTATE_FIELD(HSTATE_HOST_IPI, host_ipi); | ||
577 | HSTATE_FIELD(HSTATE_MMCR, host_mmcr); | 579 | HSTATE_FIELD(HSTATE_MMCR, host_mmcr); |
578 | HSTATE_FIELD(HSTATE_PMC, host_pmc); | 580 | HSTATE_FIELD(HSTATE_PMC, host_pmc); |
579 | HSTATE_FIELD(HSTATE_PURR, host_purr); | 581 | HSTATE_FIELD(HSTATE_PURR, host_purr); |