All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Vivier <lvivier@redhat.com>
To: qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: [Qemu-devel] [PATCH v3 3/9] pcnet: remove muldiv64()
Date: Thu, 27 Aug 2015 21:33:01 +0200	[thread overview]
Message-ID: <1440703987-29012-4-git-send-email-lvivier@redhat.com> (raw)
In-Reply-To: <1440703987-29012-1-git-send-email-lvivier@redhat.com>

Originally, timers were ticks based, and it made sense to
add ticks to current time to know when to trigger an alarm.

But since commit:

7447545 change all other clock references to use nanosecond resolution accessors

All timers use nanoseconds and we need to convert ticks to nanoseconds, by
doing something like:

    y = muldiv64(x, get_ticks_per_sec(), PCI_FREQUENCY)

where x is the number of device ticks and y the number of system ticks.

y is used as nanoseconds in timer functions,
it works because 1 tick is 1 nanosecond.
(get_ticks_per_sec() is 10^9)

But as PCI frequency is 33 MHz, we can also do:

    y = x * 30; /* 33 MHz PCI period is 30 ns */

Which is much more simple.

This implies a 33.333333 MHz PCI frequency,
but this is correct.

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
---
v3: part of "PCI: remove muldiv64()"
 hw/net/pcnet.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/hw/net/pcnet.c b/hw/net/pcnet.c
index 3437376..0eb3cc4 100644
--- a/hw/net/pcnet.c
+++ b/hw/net/pcnet.c
@@ -670,8 +670,7 @@ static inline hwaddr pcnet_rdra_addr(PCNetState *s, int idx)
 static inline int64_t pcnet_get_next_poll_time(PCNetState *s, int64_t current_time)
 {
     int64_t next_time = current_time +
-        muldiv64(65536 - (CSR_SPND(s) ? 0 : CSR_POLL(s)),
-                 get_ticks_per_sec(), 33000000L);
+                        (65536 - (CSR_SPND(s) ? 0 : CSR_POLL(s))) * 30;
     if (next_time <= current_time)
         next_time = current_time + 1;
     return next_time;
-- 
2.1.0

  parent reply	other threads:[~2015-08-27 19:33 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-27 19:32 [Qemu-devel] [PATCH v3 0/9] remove useless muldiv64() Laurent Vivier
2015-08-27 19:32 ` [Qemu-devel] [PATCH v3 1/9] i6300esb: remove muldiv64() Laurent Vivier
2015-09-14 13:31   ` [Qemu-devel] [PATCH v4 " Laurent Vivier
2015-08-27 19:33 ` [Qemu-devel] [PATCH v3 2/9] rtl8139: " Laurent Vivier
2015-08-28 14:12   ` Stefan Hajnoczi
2015-08-27 19:33 ` Laurent Vivier [this message]
2015-08-28 14:12   ` [Qemu-devel] [PATCH v3 3/9] pcnet: " Stefan Hajnoczi
2015-08-27 19:33 ` [Qemu-devel] [PATCH v3 4/9] mips: " Laurent Vivier
2015-09-08 12:54   ` Laurent Vivier
2015-09-08 13:42   ` Leon Alrae
2015-08-27 19:33 ` [Qemu-devel] [PATCH v3 5/9] openrisc: " Laurent Vivier
2015-09-08 12:54   ` Laurent Vivier
2015-08-27 19:33 ` [Qemu-devel] [PATCH v3 6/9] arm: clarify the use of muldiv64() Laurent Vivier
2015-08-27 20:23   ` Peter Crosthwaite
2015-09-01 11:17   ` Peter Maydell
2015-09-01 11:23     ` Laurent Vivier
2015-09-01 11:30       ` Peter Maydell
2015-08-27 19:33 ` [Qemu-devel] [PATCH v3 7/9] hpet: remove muldiv64() Laurent Vivier
2015-09-08 12:55   ` Laurent Vivier
2015-09-08 12:58     ` Paolo Bonzini
2015-08-27 19:33 ` [Qemu-devel] [PATCH v3 8/9] bt: " Laurent Vivier
2015-09-08 12:55   ` Laurent Vivier
2015-09-08 12:57     ` Paolo Bonzini
2015-08-27 19:33 ` [Qemu-devel] [PATCH v3 9/9] net: " Laurent Vivier
2015-08-28 14:12   ` Stefan Hajnoczi
2015-09-24 16:21 ` [Qemu-devel] [PATCH v3 0/9] remove useless muldiv64() Laurent Vivier
2015-09-25 10:31   ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1440703987-29012-4-git-send-email-lvivier@redhat.com \
    --to=lvivier@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.