Prev: [PATCH 1/4] KVM: MMU: fix forgot reserved bits check in speculative path
Next: [PATCH 2/4] KVM: MMU: cleanup spte update path
From: Samuel Xu on 13 Jul 2010 05:50 HI: I am a freshman for HPET timer. Previously, I use TSC counter, to use rdtsc to get the time stamp. elapsed cycle can be counter from 2 time stamps. As a advanced replacement of TSC, I suppose HPET timer can be conveniently to read time stamp from both kernel mode user and user mode apps. While I failed to find a way to get time stamp value of HPET in Linux kenerl (I am doing a driver and want to know elapsed cycle from driver code). I tried hpet_readl() from my driver code, while hit compiling error. Is it a correct API for kernel driver to invoke? I also read the Linux Documentation of HPET, which contain a user mode demo app to generate a periodic timer via HPET, while missing the time stamp reading. Any hint? Thanks! Samuel -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Clemens Ladisch on 13 Jul 2010 08:00 Samuel Xu wrote: > While I failed to find a way to get time stamp value of HPET in Linux > kenerl (I am doing a driver and want to know elapsed cycle from driver > code). The HPET is x86-specific any might not be available on every machine. > I tried hpet_readl() from my driver code, while hit compiling error. This function is intended for internal use by the kernel and not for drivers, so it is not exported for modules. You can hack your own accessor function by calling ioremap() on the HPET address (0xfed00000 or 0xfefff000 or whatever) and reading from that memory. A more portable way to get a time stamp is getrawmonotonic(). > I also read the Linux Documentation of HPET, which contain a user mode > demo app to generate a periodic timer via HPET, while missing the time > stamp reading. There is no ioctl for this; call mmap() on /dev/hpet and then read the main counter value from offset 0xf0 of that memory. A more portable way to get a time stamp is to use clock_gettime() with CLOCK_MONOTONIC_RAW. Regards, Clemens -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Samuel Xu on 13 Jul 2010 09:50
Thanks Clemens! Besides calling ioremap() on specific HPET address, is there more elegant interface, "offically" for kernel mode driver accessing HPET? 2010/7/13 Clemens Ladisch <clemens(a)ladisch.de>: > Samuel Xu wrote: >> While I failed to find a way to get time stamp value of HPET in Linux >> kenerl (I am doing a driver and want to know elapsed cycle from driver >> code). > > The HPET is x86-specific any might not be available on every machine. > >> I tried hpet_readl() from my driver code, while hit compiling error. > > This function is intended for internal use by the kernel and not for > drivers, so it is not exported for modules. > > You can hack your own accessor function by calling ioremap() on the HPET > address (0xfed00000 or 0xfefff000 or whatever) and reading from that > memory. > > A more portable way to get a time stamp is getrawmonotonic(). > >> I also read the Linux Documentation of HPET, which contain a user mode >> demo app to generate a periodic timer via HPET, while missing the time >> stamp reading. > > There is no ioctl for this; call mmap() on /dev/hpet and then read the > main counter value from offset 0xf0 of that memory. > > A more portable way to get a time stamp is to use clock_gettime() with > CLOCK_MONOTONIC_RAW. > > > Regards, > Clemens > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |