From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gleb Natapov Subject: Re: x86: pvclock kvm: align allocation size to page size Date: Tue, 19 Feb 2013 15:22:10 +0200 Message-ID: <20130219132210.GK3600@redhat.com> References: <20130219015814.GA7679@amt.cnet> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: kvm To: Marcelo Tosatti Return-path: Received: from mx1.redhat.com ([209.132.183.28]:47328 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757957Ab3BSNWP (ORCPT ); Tue, 19 Feb 2013 08:22:15 -0500 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r1JDMCPJ010202 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 19 Feb 2013 08:22:13 -0500 Content-Disposition: inline In-Reply-To: <20130219015814.GA7679@amt.cnet> Sender: kvm-owner@vger.kernel.org List-ID: On Mon, Feb 18, 2013 at 10:58:14PM -0300, Marcelo Tosatti wrote: > > To match whats mapped via vsyscalls to userspace. > > Reported-by: Peter Hurley > Signed-off-by: Marcelo Tosatti > Reviewed-by: Gleb Natapov > diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c > index 220a360..5bedbdd 100644 > --- a/arch/x86/kernel/kvmclock.c > +++ b/arch/x86/kernel/kvmclock.c > @@ -218,6 +218,9 @@ static void kvm_shutdown(void) > void __init kvmclock_init(void) > { > unsigned long mem; > + int size; > + > + size = PAGE_ALIGN(sizeof(struct pvclock_vsyscall_time_info)*NR_CPUS); > > if (!kvm_para_available()) > return; > @@ -231,16 +234,14 @@ void __init kvmclock_init(void) > printk(KERN_INFO "kvm-clock: Using msrs %x and %x", > msr_kvm_system_time, msr_kvm_wall_clock); > > - mem = memblock_alloc(sizeof(struct pvclock_vsyscall_time_info)*NR_CPUS, > - PAGE_SIZE); > + mem = memblock_alloc(size, PAGE_SIZE); > if (!mem) > return; > hv_clock = __va(mem); > > if (kvm_register_clock("boot clock")) { > hv_clock = NULL; > - memblock_free(mem, > - sizeof(struct pvclock_vsyscall_time_info)*NR_CPUS); > + memblock_free(mem, size); > return; > } > pv_time_ops.sched_clock = kvm_clock_read; > @@ -275,7 +276,7 @@ int __init kvm_setup_vsyscall_timeinfo(void) > struct pvclock_vcpu_time_info *vcpu_time; > unsigned int size; > > - size = sizeof(struct pvclock_vsyscall_time_info)*NR_CPUS; > + size = PAGE_ALIGN(sizeof(struct pvclock_vsyscall_time_info)*NR_CPUS); > > preempt_disable(); > cpu = smp_processor_id(); > -- Gleb.