mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-06 02:24:14 +08:00
x86/kvmclock: Remove page size requirement from wall_clock
There is no requirement for wall_clock data to be page aligned or page sized. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com> Acked-by: Paolo Bonzini <pbonzini@redhat.com> Cc: steven.sistare@oracle.com Cc: daniel.m.jordan@oracle.com Cc: linux@armlinux.org.uk Cc: schwidefsky@de.ibm.com Cc: heiko.carstens@de.ibm.com Cc: john.stultz@linaro.org Cc: sboyd@codeaurora.org Cc: hpa@zytor.com Cc: douly.fnst@cn.fujitsu.com Cc: peterz@infradead.org Cc: prarit@redhat.com Cc: feng.tang@intel.com Cc: pmladek@suse.com Cc: gnomes@lxorguk.ukuu.org.uk Cc: linux-s390@vger.kernel.org Cc: boris.ostrovsky@oracle.com Cc: jgross@suse.com Link: https://lkml.kernel.org/r/20180719205545.16512-3-pasha.tatashin@oracle.com
This commit is contained in:
parent
368a540e02
commit
7ef363a395
@ -46,14 +46,12 @@ early_param("no-kvmclock", parse_no_kvmclock);
|
||||
|
||||
/* Aligned to page sizes to match whats mapped via vsyscalls to userspace */
|
||||
#define HV_CLOCK_SIZE (sizeof(struct pvclock_vsyscall_time_info) * NR_CPUS)
|
||||
#define WALL_CLOCK_SIZE (sizeof(struct pvclock_wall_clock))
|
||||
|
||||
static u8 hv_clock_mem[PAGE_ALIGN(HV_CLOCK_SIZE)] __aligned(PAGE_SIZE);
|
||||
static u8 wall_clock_mem[PAGE_ALIGN(WALL_CLOCK_SIZE)] __aligned(PAGE_SIZE);
|
||||
|
||||
/* The hypervisor will put information about time periodically here */
|
||||
static struct pvclock_vsyscall_time_info *hv_clock;
|
||||
static struct pvclock_wall_clock *wall_clock;
|
||||
static struct pvclock_wall_clock wall_clock;
|
||||
|
||||
/*
|
||||
* The wallclock is the time of day when we booted. Since then, some time may
|
||||
@ -66,15 +64,15 @@ static void kvm_get_wallclock(struct timespec64 *now)
|
||||
int low, high;
|
||||
int cpu;
|
||||
|
||||
low = (int)slow_virt_to_phys(wall_clock);
|
||||
high = ((u64)slow_virt_to_phys(wall_clock) >> 32);
|
||||
low = (int)slow_virt_to_phys(&wall_clock);
|
||||
high = ((u64)slow_virt_to_phys(&wall_clock) >> 32);
|
||||
|
||||
native_write_msr(msr_kvm_wall_clock, low, high);
|
||||
|
||||
cpu = get_cpu();
|
||||
|
||||
vcpu_time = &hv_clock[cpu].pvti;
|
||||
pvclock_read_wallclock(wall_clock, vcpu_time, now);
|
||||
pvclock_read_wallclock(&wall_clock, vcpu_time, now);
|
||||
|
||||
put_cpu();
|
||||
}
|
||||
@ -267,12 +265,10 @@ void __init kvmclock_init(void)
|
||||
} else if (!(kvmclock && kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE)))
|
||||
return;
|
||||
|
||||
wall_clock = (struct pvclock_wall_clock *)wall_clock_mem;
|
||||
hv_clock = (struct pvclock_vsyscall_time_info *)hv_clock_mem;
|
||||
|
||||
if (kvm_register_clock("primary cpu clock")) {
|
||||
hv_clock = NULL;
|
||||
wall_clock = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user