From: Sebastien Dugue It seems the hpet clocksource's vread method was lost in the x86_64 conversion to clockevents. So here it is. Signed-off-by: Sebastien Dugue Signed-off-by: Thomas Gleixner Cc: Ingo Molnar Cc: john stultz Cc: Andi Kleen Signed-off-by: Andrew Morton --- arch/i386/kernel/hpet.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff -puN arch/i386/kernel/hpet.c~x86_64-hpet-restore-vread arch/i386/kernel/hpet.c --- a/arch/i386/kernel/hpet.c~x86_64-hpet-restore-vread +++ a/arch/i386/kernel/hpet.c @@ -215,6 +215,13 @@ static cycle_t read_hpet(void) return (cycle_t)hpet_readl(HPET_COUNTER); } +#ifdef CONFIG_X86_64 +static cycle_t __vsyscall_fn vread_hpet(void) +{ + return readl((const void __iomem *)fix_to_virt(VSYSCALL_HPET) + 0xf0); +} +#endif + static struct clocksource clocksource_hpet = { .name = "hpet", .rating = 250, @@ -223,6 +230,9 @@ static struct clocksource clocksource_hp .shift = HPET_SHIFT, .flags = CLOCK_SOURCE_IS_CONTINUOUS, .resume = hpet_start_counter, +#ifdef CONFIG_X86_64 + .vread = vread_hpet, +#endif }; /* _