Re: [Qemu-devel] [PATCH] hw/timer/grlib_gptimer: Avoid integer overflow
On 13 February 2014 09:16, Sebastian Huber wrote: > The GPTIMER uses 32-bit registers. Use a 64-bit operation to get the > ptimer count, otherwise we end up with a count of 0 for GPTIMER counter > values of 0x. > --- > hw/timer/grlib_gptimer.c |4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/hw/timer/grlib_gptimer.c b/hw/timer/grlib_gptimer.c > index d5687f6..343563c 100644 > --- a/hw/timer/grlib_gptimer.c > +++ b/hw/timer/grlib_gptimer.c > @@ -106,9 +106,9 @@ static void grlib_gptimer_enable(GPTimer *timer) > /* ptimer is triggered when the counter reach 0 but GPTimer is triggered > at > underflow. Set count + 1 to simulate the GPTimer behavior. */ > > -trace_grlib_gptimer_enable(timer->id, timer->counter + 1); > +trace_grlib_gptimer_enable(timer->id, timer->counter); This change isn't mentioned in the commit message... > -ptimer_set_count(timer->ptimer, timer->counter + 1); > +ptimer_set_count(timer->ptimer, (uint64_t)timer->counter + 1); > ptimer_run(timer->ptimer, 1); > } thanks -- PMM
Re: [Qemu-devel] [PATCH] hw/timer/grlib_gptimer: Avoid integer overflow
On 02/13/2014 10:16 AM, Sebastian Huber wrote: > The GPTIMER uses 32-bit registers. Use a 64-bit operation to get the > ptimer count, otherwise we end up with a count of 0 for GPTIMER counter > values of 0x. Looks good, thanks Sebastian. Reviewed-by: Fabien Chouteau > --- > hw/timer/grlib_gptimer.c |4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/hw/timer/grlib_gptimer.c b/hw/timer/grlib_gptimer.c > index d5687f6..343563c 100644 > --- a/hw/timer/grlib_gptimer.c > +++ b/hw/timer/grlib_gptimer.c > @@ -106,9 +106,9 @@ static void grlib_gptimer_enable(GPTimer *timer) > /* ptimer is triggered when the counter reach 0 but GPTimer is triggered > at > underflow. Set count + 1 to simulate the GPTimer behavior. */ > > -trace_grlib_gptimer_enable(timer->id, timer->counter + 1); > +trace_grlib_gptimer_enable(timer->id, timer->counter); > > -ptimer_set_count(timer->ptimer, timer->counter + 1); > +ptimer_set_count(timer->ptimer, (uint64_t)timer->counter + 1); > ptimer_run(timer->ptimer, 1); > } > >
[Qemu-devel] [PATCH] hw/timer/grlib_gptimer: Avoid integer overflow
The GPTIMER uses 32-bit registers. Use a 64-bit operation to get the ptimer count, otherwise we end up with a count of 0 for GPTIMER counter values of 0x. --- hw/timer/grlib_gptimer.c |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/timer/grlib_gptimer.c b/hw/timer/grlib_gptimer.c index d5687f6..343563c 100644 --- a/hw/timer/grlib_gptimer.c +++ b/hw/timer/grlib_gptimer.c @@ -106,9 +106,9 @@ static void grlib_gptimer_enable(GPTimer *timer) /* ptimer is triggered when the counter reach 0 but GPTimer is triggered at underflow. Set count + 1 to simulate the GPTimer behavior. */ -trace_grlib_gptimer_enable(timer->id, timer->counter + 1); +trace_grlib_gptimer_enable(timer->id, timer->counter); -ptimer_set_count(timer->ptimer, timer->counter + 1); +ptimer_set_count(timer->ptimer, (uint64_t)timer->counter + 1); ptimer_run(timer->ptimer, 1); } -- 1.7.7