lkml.org 
[lkml]   [2007]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch 43/69] i386: HPET, check if the counter works
    ugh... do not send email before breakfast.  do not send email before 
    breakfast. nevermind :)

    -dean

    On Tue, 5 Jun 2007, dean gaudet wrote:

    > the HPET specification allows for HPETs with *much* lower resolution than
    > 50us. in fact Fmin is 10Hz iirc. (sorry to jump in so late, but i'm
    > about a month behind on the list.)
    >
    > -dean
    >
    > On Mon, 21 May 2007, Chris Wright wrote:
    >
    > > -stable review patch. If anyone has any objections, please let us know.
    > > ---------------------
    > >
    > > From: Thomas Gleixner <tglx@linutronix.de>
    > >
    > > Some systems have a HPET which is not incrementing, which leads to a
    > > complete hang. Detect it during HPET setup.
    > >
    > > Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    > > Signed-off-by: Chris Wright <chrisw@sous-sol.org>
    > > ---
    > > [chrisw: Why is this not upstream yet?]
    > >
    > > ---
    > > arch/i386/kernel/hpet.c | 24 +++++++++++++++++++++++-
    > > 1 file changed, 23 insertions(+), 1 deletion(-)
    > >
    > > --- linux-2.6.21.1.orig/arch/i386/kernel/hpet.c
    > > +++ linux-2.6.21.1/arch/i386/kernel/hpet.c
    > > @@ -226,7 +226,8 @@ int __init hpet_enable(void)
    > > {
    > > unsigned long id;
    > > uint64_t hpet_freq;
    > > - u64 tmp;
    > > + u64 tmp, start, now;
    > > + cycle_t t1;
    > >
    > > if (!is_hpet_capable())
    > > return 0;
    > > @@ -273,6 +274,27 @@ int __init hpet_enable(void)
    > > /* Start the counter */
    > > hpet_start_counter();
    > >
    > > + /* Verify whether hpet counter works */
    > > + t1 = read_hpet();
    > > + rdtscll(start);
    > > +
    > > + /*
    > > + * We don't know the TSC frequency yet, but waiting for
    > > + * 200000 TSC cycles is safe:
    > > + * 4 GHz == 50us
    > > + * 1 GHz == 200us
    > > + */
    > > + do {
    > > + rep_nop();
    > > + rdtscll(now);
    > > + } while ((now - start) < 200000UL);
    > > +
    > > + if (t1 == read_hpet()) {
    > > + printk(KERN_WARNING
    > > + "HPET counter not counting. HPET disabled\n");
    > > + goto out_nohpet;
    > > + }
    > > +
    > > /* Initialize and register HPET clocksource
    > > *
    > > * hpet period is in femto seconds per cycle
    > >
    > > --
    > > -
    > > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    > > the body of a message to majordomo@vger.kernel.org
    > > More majordomo info at http://vger.kernel.org/majordomo-info.html
    > > Please read the FAQ at http://www.tux.org/lkml/
    > >
    > -
    > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    > the body of a message to majordomo@vger.kernel.org
    > More majordomo info at http://vger.kernel.org/majordomo-info.html
    > Please read the FAQ at http://www.tux.org/lkml/
    >
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-06-05 18:59    [W:0.024 / U:30.568 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site