From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36700) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZZITw-0000ul-SB for qemu-devel@nongnu.org; Tue, 08 Sep 2015 08:58:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZZITv-0008N6-RF for qemu-devel@nongnu.org; Tue, 08 Sep 2015 08:58:40 -0400 Date: Tue, 8 Sep 2015 08:58:34 -0400 (EDT) From: Paolo Bonzini Message-ID: <1602970168.27375747.1441717114271.JavaMail.zimbra@redhat.com> In-Reply-To: <55EEDABD.5090305@redhat.com> References: <1440703987-29012-1-git-send-email-lvivier@redhat.com> <1440703987-29012-8-git-send-email-lvivier@redhat.com> <55EEDABD.5090305@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v3 7/9] hpet: remove muldiv64() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Laurent Vivier Cc: qemu-trivial@nongnu.org, qemu-devel@nongnu.org, Stefan Hajnoczi ----- Messaggio originale ----- > Da: "Laurent Vivier" > A: qemu-devel@nongnu.org, "Stefan Hajnoczi" , "Paolo= Bonzini" , > qemu-trivial@nongnu.org > Inviato: Marted=C3=AC, 8 settembre 2015 14:55:25 > Oggetto: Re: [Qemu-devel] [PATCH v3 7/9] hpet: remove muldiv64() >=20 > ping ? >=20 > 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. > >=20 > > We can define the period in nanoseconds and use it > > directly, this allows to remove muldiv64(). > >=20 > > We only need to convert the period to femtoseconds > > to put it in internal hpet capability register. > >=20 > > Signed-off-by: Laurent Vivier > > --- > > hw/timer/hpet.c | 6 +++--- > > include/hw/timer/hpet.h | 4 ++-- > > 2 files changed, 5 insertions(+), 5 deletions(-) > >=20 > > 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) > > =20 > > static uint64_t ticks_to_ns(uint64_t value) > > { > > - return (muldiv64(value, HPET_CLK_PERIOD, FS_PER_NS)); > > + return value * HPET_CLK_PERIOD; > > } > > =20 > > static uint64_t ns_to_ticks(uint64_t value) > > { > > - return (muldiv64(value, FS_PER_NS, HPET_CLK_PERIOD)); > > + return value / HPET_CLK_PERIOD; > > } > > =20 > > static uint64_t hpet_fixup_reg(uint64_t new, uint64_t old, uint64_t ma= sk) > > @@ -758,7 +758,7 @@ static void hpet_realize(DeviceState *dev, Error > > **errp) > > /* 64-bit main counter; LegacyReplacementRoute. */ > > s->capability =3D 0x8086a001ULL; > > s->capability |=3D (s->num_timers - 1) << HPET_ID_NUM_TIM_SHIFT; > > - s->capability |=3D ((HPET_CLK_PERIOD) << 32); > > + s->capability |=3D ((uint64_t)(HPET_CLK_PERIOD * FS_PER_NS) << 32)= ; > > =20 > > 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" > > =20 > > #define HPET_BASE 0xfed00000 > > -#define HPET_CLK_PERIOD 10000000ULL /* 10000000 femtoseconds = =3D=3D > > 10ns*/ > > +#define HPET_CLK_PERIOD 10 /* 10 ns*/ > > =20 > > -#define FS_PER_NS 1000000 > > +#define FS_PER_NS 1000000 /* 1000000 femtoseconds =3D=3D 1 ns */ > > #define HPET_MIN_TIMERS 3 > > #define HPET_MAX_TIMERS 32 > > =20 > >=20 Reviewed-by: Paolo Bonzini