[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCHv2 07/12] cuda: set timer 1 frequency property to C
From: |
David Gibson |
Subject: |
Re: [Qemu-ppc] [PATCHv2 07/12] cuda: set timer 1 frequency property to CUDA_TIMER_FREQ |
Date: |
Sun, 11 Feb 2018 10:15:31 +1100 |
User-agent: |
Mutt/1.9.2 (2017-12-15) |
On Fri, Feb 09, 2018 at 06:51:37PM +0000, Mark Cave-Ayland wrote:
> 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>
> ---
> 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 408858e688..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->tb_frequency) - ti->load_time;
> - d = (tb_diff * 0xBF401675E5DULL) / (ti->tb_frequency << 24);
> + tb_diff = get_tb(current_time, s->tb_frequency) - ti->load_time;
> + d = (tb_diff * 0xBF401675E5DULL) / (s->tb_frequency << 24);
This requires an update due to the bug in the earlier patch which
touched this. I've fixed this up in my tree.
> 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;
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature
- [Qemu-ppc] [PATCHv2 00/12] cuda: various fixes, tidy-ups, and move 6522 to separate device, Mark Cave-Ayland, 2018/02/09
- [Qemu-ppc] [PATCHv2 02/12] cuda: don't allow writes to port output pins, Mark Cave-Ayland, 2018/02/09
- [Qemu-ppc] [PATCHv2 03/12] cuda: don't call cuda_update() when writing to ACR register, Mark Cave-Ayland, 2018/02/09
- [Qemu-ppc] [PATCHv2 07/12] cuda: set timer 1 frequency property to CUDA_TIMER_FREQ, Mark Cave-Ayland, 2018/02/09
- Re: [Qemu-ppc] [PATCHv2 07/12] cuda: set timer 1 frequency property to CUDA_TIMER_FREQ,
David Gibson <=
- [Qemu-ppc] [PATCHv2 06/12] cuda: minor cosmetic tidy-ups to get_next_irq_time(), Mark Cave-Ayland, 2018/02/09
- [Qemu-ppc] [PATCHv2 08/12] cuda: factor out timebase-derived counter value and load time, Mark Cave-Ayland, 2018/02/09
- [Qemu-ppc] [PATCHv2 05/12] cuda: rename frequency property to tb_frequency, Mark Cave-Ayland, 2018/02/09
[Qemu-ppc] [PATCHv2 01/12] cuda: do not use old_mmio accesses, Mark Cave-Ayland, 2018/02/09