[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 10/12] cuda: set timer 1 frequency property to CUDA_T
From: |
David Gibson |
Subject: |
[Qemu-devel] [PULL 10/12] cuda: set timer 1 frequency property to CUDA_TIMER_FREQ |
Date: |
Mon, 12 Feb 2018 14:40:52 +1100 |
From: Mark Cave-Ayland <address@hidden>
Now that we have successfully decoupled the timebase frequency and the hardware
timer frequency, set the timer 1 frequency property to CUDA_TIMER_FREQ and alter
get_next_irq_time() to use it rather than the hard-coded constant.
In addition to this we must now switch the tb_diff calculation over to use the
timebase frequency now that the hardware clock frequency and the timebase
frequency are different.
Signed-off-by: Mark Cave-Ayland <address@hidden>
[dwg: Correct a conflict due to a bug in an earlier patch]
Signed-off-by: David Gibson <address@hidden>
---
hw/misc/macio/cuda.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
index 355a2f2262..e00df4a21a 100644
--- a/hw/misc/macio/cuda.c
+++ b/hw/misc/macio/cuda.c
@@ -158,8 +158,8 @@ static unsigned int get_counter(CUDAState *s, CUDATimer *ti)
uint64_t current_time = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
/* Reverse of the tb calculation algorithm that Mac OS X uses on bootup. */
- tb_diff = get_tb(current_time, ti->frequency) - ti->load_time;
- d = (tb_diff * 0xBF401675E5DULL) / (ti->frequency << 24);
+ tb_diff = get_tb(current_time, s->tb_frequency) - ti->load_time;
+ d = (tb_diff * 0xBF401675E5DULL) / (s->tb_frequency << 24);
if (ti->index == 0) {
/* the timer goes down from latch to -1 (period of latch + 2) */
@@ -191,7 +191,7 @@ static int64_t get_next_irq_time(CUDATimer *ti, int64_t
current_time)
/* current counter value */
d = muldiv64(current_time - ti->load_time,
- CUDA_TIMER_FREQ, NANOSECONDS_PER_SECOND);
+ ti->frequency, NANOSECONDS_PER_SECOND);
/* the timer goes down from latch to -1 (period of latch + 2) */
if (d <= (ti->counter_value + 1)) {
counter = (ti->counter_value - d) & 0xffff;
@@ -210,7 +210,7 @@ static int64_t get_next_irq_time(CUDATimer *ti, int64_t
current_time)
}
CUDA_DPRINTF("latch=%d counter=%" PRId64 " delta_next=%" PRId64 "\n",
ti->latch, d, next_time - d);
- next_time = muldiv64(next_time, NANOSECONDS_PER_SECOND, CUDA_TIMER_FREQ) +
+ next_time = muldiv64(next_time, NANOSECONDS_PER_SECOND, ti->frequency) +
ti->load_time;
if (next_time <= current_time) {
next_time = current_time + 1;
@@ -879,7 +879,7 @@ static void cuda_realizefn(DeviceState *dev, Error **errp)
struct tm tm;
s->timers[0].timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, cuda_timer1, s);
- s->timers[0].frequency = s->tb_frequency;
+ s->timers[0].frequency = CUDA_TIMER_FREQ;
s->timers[1].timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, cuda_timer2, s);
s->timers[1].frequency = (SCALE_US * 6000) / 4700;
--
2.14.3
- [Qemu-devel] [PULL 02/12] hw/ppc: rename functions in comments, (continued)
- [Qemu-devel] [PULL 02/12] hw/ppc: rename functions in comments, David Gibson, 2018/02/11
- [Qemu-devel] [PULL 05/12] spapr: set vsmt to MAX(8, smp_threads), David Gibson, 2018/02/11
- [Qemu-devel] [PULL 04/12] cuda: don't allow writes to port output pins, David Gibson, 2018/02/11
- [Qemu-devel] [PULL 01/12] spapr: add missing break in h_get_cpu_characteristics(), David Gibson, 2018/02/11
- [Qemu-devel] [PULL 09/12] cuda: don't call cuda_update() when writing to ACR register, David Gibson, 2018/02/11
- [Qemu-devel] [PULL 03/12] cuda: do not use old_mmio accesses, David Gibson, 2018/02/11
- [Qemu-devel] [PULL 07/12] cuda: rename frequency property to tb_frequency, David Gibson, 2018/02/11
- [Qemu-devel] [PULL 11/12] cuda: factor out timebase-derived counter value and load time, David Gibson, 2018/02/11
- [Qemu-devel] [PULL 06/12] cuda: introduce CUDAState parameter to get_counter(), David Gibson, 2018/02/11
- [Qemu-devel] [PULL 08/12] cuda: minor cosmetic tidy-ups to get_next_irq_time(), David Gibson, 2018/02/11
- [Qemu-devel] [PULL 10/12] cuda: set timer 1 frequency property to CUDA_TIMER_FREQ,
David Gibson <=
- [Qemu-devel] [PULL 12/12] misc: introduce new mos6522 VIA device and enable it for ppc builds, David Gibson, 2018/02/11
- Re: [Qemu-devel] [PULL 00/12] ppc-for-2.12 queue 20180212, Peter Maydell, 2018/02/12
- Re: [Qemu-devel] [PULL 00/12] ppc-for-2.12 queue 20180212, Laurent Vivier, 2018/02/12