[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] xen/pcifront: Use monotonic clock
On 08/08/2015 09:36 PM, Abhilash Jindal wrote: Wall time obtained from do_gettimeofday is susceptible to sudden jumps due to user setting the time or due to NTP.Monotonic time is constantly increasing time better suited for comparing twotimestamps. See commit e1d5bbcdc7ca08d8731f5d780f0de342a768d96a (you probably will need to update your tree) -boris --- drivers/pci/xen-pcifront.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/pci/xen-pcifront.c b/drivers/pci/xen-pcifront.c index f7197a7..5ef3eb7 100644 --- a/drivers/pci/xen-pcifront.c +++ b/drivers/pci/xen-pcifront.c@@ -114,7 +114,7 @@ static int do_pci_op(struct pcifront_device *pdev, struct xen_pci_op *op)evtchn_port_t port = pdev->evtchn; unsigned irq = pdev->irq; s64 ns, ns_timeout; -struct timeval tv; +struct timespec tv; spin_lock_irqsave(&pdev->sh_info_lock, irq_flags);@@ -131,8 +131,8 @@ static int do_pci_op(struct pcifront_device *pdev, struct xen_pci_op *op)* (in the latter case we end up continually re-executing poll() with a * timeout in the past). 1s difference gives plenty of slack for error. */ -do_gettimeofday(&tv); -ns_timeout = timeval_to_ns(&tv) + 2 * (s64)NSEC_PER_SEC; +ktime_get_ts(&tv); +ns_timeout = timespec_to_ns(&tv) + 2 * (s64)NSEC_PER_SEC; xen_clear_irq_pending(irq);@@ -140,8 +140,8 @@ static int do_pci_op(struct pcifront_device *pdev, struct xen_pci_op *op)(unsigned long *)&pdev->sh_info->flags)) { xen_poll_irq_timeout(irq, jiffies + 3*HZ); xen_clear_irq_pending(irq); -do_gettimeofday(&tv); -ns = timeval_to_ns(&tv); +ktime_get_ts(&tv); +ns = timespec_to_ns(&tv); if (ns > ns_timeout) { dev_err(&pdev->xdev->dev, "pciback not responding!!!\n"); -- 1.7.9.5 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |