----- Messaggio originale ----- > Da: "Laurent Vivier" <lviv...@redhat.com> > A: qemu-devel@nongnu.org, "Stefan Hajnoczi" <stefa...@redhat.com>, "Paolo > Bonzini" <pbonz...@redhat.com>, > qemu-triv...@nongnu.org > Inviato: Martedì, 8 settembre 2015 14:55:25 > Oggetto: Re: [Qemu-devel] [PATCH v3 7/9] hpet: remove muldiv64() > > ping ? > > On 27/08/2015 21:33, Laurent Vivier wrote: > > hpet defines a clock period in femtoseconds but > > then converts it to nanoseconds to use the internal > > timers. > > > > We can define the period in nanoseconds and use it > > directly, this allows to remove muldiv64(). > > > > We only need to convert the period to femtoseconds > > to put it in internal hpet capability register. > > > > Signed-off-by: Laurent Vivier <lviv...@redhat.com> > > --- > > hw/timer/hpet.c | 6 +++--- > > include/hw/timer/hpet.h | 4 ++-- > > 2 files changed, 5 insertions(+), 5 deletions(-) > > > > diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c > > index 2bb6221..3037bef 100644 > > --- a/hw/timer/hpet.c > > +++ b/hw/timer/hpet.c > > @@ -126,12 +126,12 @@ static uint32_t hpet_time_after64(uint64_t a, > > uint64_t b) > > > > static uint64_t ticks_to_ns(uint64_t value) > > { > > - return (muldiv64(value, HPET_CLK_PERIOD, FS_PER_NS)); > > + return value * HPET_CLK_PERIOD; > > } > > > > static uint64_t ns_to_ticks(uint64_t value) > > { > > - return (muldiv64(value, FS_PER_NS, HPET_CLK_PERIOD)); > > + return value / HPET_CLK_PERIOD; > > } > > > > static uint64_t hpet_fixup_reg(uint64_t new, uint64_t old, uint64_t mask) > > @@ -758,7 +758,7 @@ static void hpet_realize(DeviceState *dev, Error > > **errp) > > /* 64-bit main counter; LegacyReplacementRoute. */ > > s->capability = 0x8086a001ULL; > > s->capability |= (s->num_timers - 1) << HPET_ID_NUM_TIM_SHIFT; > > - s->capability |= ((HPET_CLK_PERIOD) << 32); > > + s->capability |= ((uint64_t)(HPET_CLK_PERIOD * FS_PER_NS) << 32); > > > > qdev_init_gpio_in(dev, hpet_handle_legacy_irq, 2); > > qdev_init_gpio_out(dev, &s->pit_enabled, 1); > > diff --git a/include/hw/timer/hpet.h b/include/hw/timer/hpet.h > > index 773953b..d872909 100644 > > --- a/include/hw/timer/hpet.h > > +++ b/include/hw/timer/hpet.h > > @@ -16,9 +16,9 @@ > > #include "qom/object.h" > > > > #define HPET_BASE 0xfed00000 > > -#define HPET_CLK_PERIOD 10000000ULL /* 10000000 femtoseconds == > > 10ns*/ > > +#define HPET_CLK_PERIOD 10 /* 10 ns*/ > > > > -#define FS_PER_NS 1000000 > > +#define FS_PER_NS 1000000 /* 1000000 femtoseconds == 1 ns */ > > #define HPET_MIN_TIMERS 3 > > #define HPET_MAX_TIMERS 32 > > > >
Reviewed-by: Paolo Bonzini <pbonz...@redhat.com>