* [PATCH] KVM: PPC: Use exported tb_to_ns() function in decrementer emulation
@ 2018-10-19 10:07 Paul Mackerras
2018-10-20 9:54 ` [PATCH v2] " Paul Mackerras
0 siblings, 1 reply; 3+ messages in thread
From: Paul Mackerras @ 2018-10-19 10:07 UTC (permalink / raw)
To: kvm, kvm-ppc; +Cc: Michael Ellerman, linuxppc-dev
This changes the KVM code that emulates the decrementer function to do
the conversion of decrementer values to time intervals in nanoseconds
by calling the tb_to_ns() function exported by the powerpc timer code,
in preference to open-coded arithmetic using values from the
decrementer_clockevent struct. Similarly, the HV-KVM code that did
the same conversion using arithmetic on tb_ticks_per_sec also now
uses tb_to_ns().
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
---
arch/powerpc/kvm/book3s_hv.c | 3 +--
arch/powerpc/kvm/emulate.c | 6 ++----
2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index bf8def2..d65b961 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -2337,8 +2337,7 @@ static void kvmppc_set_timer(struct kvm_vcpu *vcpu)
kvmppc_core_prepare_to_enter(vcpu);
return;
}
- dec_nsec = (vcpu->arch.dec_expires - now) * NSEC_PER_SEC
- / tb_ticks_per_sec;
+ dec_nsec = tb_to_ns(vcpu->arch.dec_expires - now);
hrtimer_start(&vcpu->arch.dec_timer, dec_nsec, HRTIMER_MODE_REL);
vcpu->arch.timer_running = 1;
}
diff --git a/arch/powerpc/kvm/emulate.c b/arch/powerpc/kvm/emulate.c
index fa888bf..7a7c348 100644
--- a/arch/powerpc/kvm/emulate.c
+++ b/arch/powerpc/kvm/emulate.c
@@ -62,11 +62,9 @@ void kvmppc_emulate_dec(struct kvm_vcpu *vcpu)
dec_time = vcpu->arch.dec;
/*
* Guest timebase ticks at the same frequency as host decrementer.
- * So use the host decrementer calculations for decrementer emulation.
+ * So use the host timebase calculations for decrementer emulation.
*/
- dec_time = dec_time << decrementer_clockevent.shift;
- do_div(dec_time, decrementer_clockevent.mult);
- dec_nsec = do_div(dec_time, NSEC_PER_SEC);
+ dec_nsec = tb_to_ns(dec_time);
hrtimer_start(&vcpu->arch.dec_timer,
ktime_set(dec_time, dec_nsec), HRTIMER_MODE_REL);
vcpu->arch.dec_jiffies = get_tb();
--
2.7.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v2] KVM: PPC: Use exported tb_to_ns() function in decrementer emulation
2018-10-19 10:07 [PATCH] KVM: PPC: Use exported tb_to_ns() function in decrementer emulation Paul Mackerras
@ 2018-10-20 9:54 ` Paul Mackerras
2018-10-31 5:42 ` [v2] " Michael Ellerman
0 siblings, 1 reply; 3+ messages in thread
From: Paul Mackerras @ 2018-10-20 9:54 UTC (permalink / raw)
To: kvm, kvm-ppc; +Cc: Michael Ellerman, linuxppc-dev
This changes the KVM code that emulates the decrementer function to do
the conversion of decrementer values to time intervals in nanoseconds
by calling the tb_to_ns() function exported by the powerpc timer code,
in preference to open-coded arithmetic using values from the
decrementer_clockevent struct. Similarly, the HV-KVM code that did
the same conversion using arithmetic on tb_ticks_per_sec also now
uses tb_to_ns().
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
---
v2: don't delete the second do_div in kvmppc_emulate_dec(), we need it.
arch/powerpc/kvm/book3s_hv.c | 3 +--
arch/powerpc/kvm/emulate.c | 7 +++----
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index bf8def2..d65b961 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -2337,8 +2337,7 @@ static void kvmppc_set_timer(struct kvm_vcpu *vcpu)
kvmppc_core_prepare_to_enter(vcpu);
return;
}
- dec_nsec = (vcpu->arch.dec_expires - now) * NSEC_PER_SEC
- / tb_ticks_per_sec;
+ dec_nsec = tb_to_ns(vcpu->arch.dec_expires - now);
hrtimer_start(&vcpu->arch.dec_timer, dec_nsec, HRTIMER_MODE_REL);
vcpu->arch.timer_running = 1;
}
diff --git a/arch/powerpc/kvm/emulate.c b/arch/powerpc/kvm/emulate.c
index fa888bf..9f5b8c0 100644
--- a/arch/powerpc/kvm/emulate.c
+++ b/arch/powerpc/kvm/emulate.c
@@ -61,11 +61,10 @@ void kvmppc_emulate_dec(struct kvm_vcpu *vcpu)
dec_time = vcpu->arch.dec;
/*
- * Guest timebase ticks at the same frequency as host decrementer.
- * So use the host decrementer calculations for decrementer emulation.
+ * Guest timebase ticks at the same frequency as host timebase.
+ * So use the host timebase calculations for decrementer emulation.
*/
- dec_time = dec_time << decrementer_clockevent.shift;
- do_div(dec_time, decrementer_clockevent.mult);
+ dec_time = tb_to_ns(dec_time);
dec_nsec = do_div(dec_time, NSEC_PER_SEC);
hrtimer_start(&vcpu->arch.dec_timer,
ktime_set(dec_time, dec_nsec), HRTIMER_MODE_REL);
--
2.7.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [v2] KVM: PPC: Use exported tb_to_ns() function in decrementer emulation
2018-10-20 9:54 ` [PATCH v2] " Paul Mackerras
@ 2018-10-31 5:42 ` Michael Ellerman
0 siblings, 0 replies; 3+ messages in thread
From: Michael Ellerman @ 2018-10-31 5:42 UTC (permalink / raw)
To: Paul Mackerras, kvm, kvm-ppc; +Cc: Michael Ellerman, linuxppc-dev
On Sat, 2018-10-20 at 09:54:55 UTC, Paul Mackerras wrote:
> This changes the KVM code that emulates the decrementer function to do
> the conversion of decrementer values to time intervals in nanoseconds
> by calling the tb_to_ns() function exported by the powerpc timer code,
> in preference to open-coded arithmetic using values from the
> decrementer_clockevent struct. Similarly, the HV-KVM code that did
> the same conversion using arithmetic on tb_ticks_per_sec also now
> uses tb_to_ns().
>
> Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/c43befca86ae35cc82bd889484bd17
cheers
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-10-31 5:42 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-19 10:07 [PATCH] KVM: PPC: Use exported tb_to_ns() function in decrementer emulation Paul Mackerras
2018-10-20 9:54 ` [PATCH v2] " Paul Mackerras
2018-10-31 5:42 ` [v2] " Michael Ellerman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).