hpet
static union hpet_lock hpet __cacheline_aligned = {
old.lockval = READ_ONCE(hpet.lockval);
if (arch_spin_trylock(&hpet.lock)) {
WRITE_ONCE(hpet.value, new.value);
arch_spin_unlock(&hpet.lock);
new.lockval = READ_ONCE(hpet.lockval);
static int hpet;
hpet = is_hpet_enabled();
tsc_start = tsc_read_refs(&ref_start, hpet);
tsc_stop = tsc_read_refs(&ref_stop, hpet);
if (hpet)
hpet ? "HPET" : "PM_TIMER",
static u64 tsc_read_refs(u64 *p, int hpet)
if (hpet)
int hpet = is_hpet_enabled(), i, loopmin;
tsc1 = tsc_read_refs(&ref1, hpet);
tsc2 = tsc_read_refs(&ref2, hpet);
if (hpet)
hpet ? "HPET" : "PMTIMER", i + 1);
if (!hpet && !ref1 && !ref2) {
hpet ? "HPET" : "PMTIMER");
if (!hpet && !ref1 && !ref2) {
hpet ? "HPET" : "PMTIMER", tsc_pit_min, tsc_ref_min);
struct hpet __iomem *hpet = devp->hd_hpet;
mc = read_counter(&hpet->hpet_mc);
struct hpet __iomem *hpet;
hpet = devp->hd_hpet;
write_counter(read_counter(&hpet->hpet_mc),
writel(isr, &hpet->hpet_isr);
m = read_counter(&hpet->hpet_mc);
m = read_counter(&hpet->hpet_mc);
writel(isr, &hpet->hpet_isr);
struct hpet __iomem *hd_hpet;
struct hpet __iomem *hpet;
hpet = hpetp->hp_hpet;
start = read_counter(&hpet->hpet_mc);
m = read_counter(&hpet->hpet_mc);
struct hpet __iomem *hpet;
hpet = hpetp->hp_hpet;
cap = readq(&hpet->hpet_cap);
struct hpet __iomem *hp_hpet;
mcfg = readq(&hpet->hpet_config);
write_counter(0L, &hpet->hpet_mc);
writeq(mcfg, &hpet->hpet_config);
timer = &hpet->hpet_timers[devp - hpetp->hp_dev];
devp->hd_hpet = hpet;