WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

RE: [Xen-devel] [PATCH 05/12] xen/pvclock: add monotonicity check

To: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>, Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>
Subject: RE: [Xen-devel] [PATCH 05/12] xen/pvclock: add monotonicity check
From: Dan Magenheimer <dan.magenheimer@xxxxxxxxxx>
Date: Wed, 14 Oct 2009 20:26:48 -0700 (PDT)
Cc: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>, kurt.hackel@xxxxxxxxxx, arch/x86 maintainers <x86@xxxxxxxxxx>, Glauber de Oliveira Costa <gcosta@xxxxxxxxxx>, Avi Kivity <avi@xxxxxxxxxx>, the, chris.mason@xxxxxxxxxx
Delivery-date: Wed, 14 Oct 2009 20:29:55 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <1255548516-15260-6-git-send-email-jeremy.fitzhardinge@xxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
> Other tsc-based clocksources add a monotonicity test to make 
> sure there's
> no regression in the returned cycles.
> 
> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
> ---
>  arch/x86/xen/time.c |    7 ++++++-
>  1 files changed, 6 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/x86/xen/time.c b/arch/x86/xen/time.c
> index 0a5aa44..00f06cc 100644
> --- a/arch/x86/xen/time.c
> +++ b/arch/x86/xen/time.c
> @@ -213,9 +213,14 @@ cycle_t xen_clocksource_read(void)
>       return ret;
>  }
>  
> +static struct clocksource xen_clocksource;
> +
>  static cycle_t xen_clocksource_get_cycles(struct clocksource *cs)
>  {
> -     return xen_clocksource_read();
> +     cycle_t ret = xen_clocksource_read();
> +
> +     return ret >= xen_clocksource.cycle_last ?
> +             ret : xen_clocksource.cycle_last;

As long as we are going through the trouble of making
this monotonic, shouldn't it be monotonically increasing
(rather than just monotonically non-decreasing)?  The
rdtsc instruction and any suitably high-precision
hardware timer will never return the same value
on subsequent uses so this might be a reasonable
precedent to obey.  E.g.

+       return ret > xen_clocksource.cycle_last ?
+               ret : ++xen_clocksource.cycle_last;

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>