On 14.10.2011, at 08:36, David Gibson wrote: > On Fri, Oct 14, 2011 at 07:30:09AM +0200, Alexander Graf wrote: >> >> On 14.10.2011, at 07:19, David Gibson wrote: >> >>> In __cpu_ppc_store_decr(), we set up a regular timer used to trigger >>> decrementer interrupts. This is necessary to implement the decrementer >>> properly under TCG, but is unnecessary under KVM (true for both Book3S-PR >>> and Book3S-HV KVM variants), because the kernel handles generating and >>> delivering decrementer exceptions. >>> >>> Under kvm, in fact, the timer causes expensive and unnecessary exits from >>> kvm to qemu. This patch, therefore, disables setting the timer when kvm >>> is in use. >>> >>> Signed-off-by: Anton Blanchard <an...@au1.ibm.com> >>> Signed-off-by: David Gibson <da...@gibson.dropbear.id.au> >>> --- >>> hw/ppc.c | 25 ++++++++++++++----------- >>> 1 files changed, 14 insertions(+), 11 deletions(-) >>> >>> diff --git a/hw/ppc.c b/hw/ppc.c >>> index 25b59dd..87aa4e5 100644 >>> --- a/hw/ppc.c >>> +++ b/hw/ppc.c >>> @@ -658,21 +658,24 @@ static void __cpu_ppc_store_decr (CPUState *env, >>> uint64_t *nextp, >> >> Do we ever call store_decr in the kvm case? Isn't that only called >> from emulated mtdec? > > Yes, from cpu_ppc_set_tb_clk(). Anton observed the kvm exits in the > wild, they're not theoretical. > > Agh, which reminds me, I forgot to fixup the git author again. The > patch should show authorship by Anton Blanchard <an...@au1.ibm.com>, > as in the s-o-b.
Wouldn't a simple if (kvm_enabled()) { return; } in the beginning of the function make more sense? There's no code connecting the in-qemu and the in-kvm decrementors atm, so any logic applying to the in-qemu one is moot for kvm. Alex