Re: [kvm-unit-tests PATCH 3/4] lib/alloc: return a zeroed page from alloc_page

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 31/10/2016 19:51, Andrew Jones wrote:
> This allows us to remove a bunch of memsets.

Please add a new function alloc_zeroed_page instead.

Paolo

> Signed-off-by: Andrew Jones <drjones@xxxxxxxxxx>
> ---
>  lib/alloc.c     | 1 +
>  lib/x86/vm.c    | 2 --
>  x86/vmx.c       | 6 ------
>  x86/vmx_tests.c | 9 ---------
>  4 files changed, 1 insertion(+), 17 deletions(-)
> 
> diff --git a/lib/alloc.c b/lib/alloc.c
> index 7687c703f40b..15c96e4ee8a3 100644
> --- a/lib/alloc.c
> +++ b/lib/alloc.c
> @@ -160,6 +160,7 @@ void *alloc_page(void)
>  
>  	p = free_head;
>  	free_head = *(void **)free_head;
> +	memset(p, 0, PAGE_SIZE);
>  	return p;
>  }
>  
> diff --git a/lib/x86/vm.c b/lib/x86/vm.c
> index bba8ccee7dd0..0882e0a478ca 100644
> --- a/lib/x86/vm.c
> +++ b/lib/x86/vm.c
> @@ -91,8 +91,6 @@ static void setup_mmu(unsigned long len)
>  {
>      unsigned long *cr3 = alloc_page();
>  
> -    memset(cr3, 0, PAGE_SIZE);
> -
>  #ifdef __x86_64__
>      if (len < (1ul << 32))
>          len = (1ul << 32);  /* map mmio 1:1 */
> diff --git a/x86/vmx.c b/x86/vmx.c
> index 411ed3211d4d..65c8583a18db 100644
> --- a/x86/vmx.c
> +++ b/x86/vmx.c
> @@ -278,7 +278,6 @@ static void split_large_ept_entry(unsigned long *ptep, int level)
>  
>  	new_pt = alloc_page();
>  	assert(new_pt);
> -	memset(new_pt, 0, PAGE_SIZE);
>  
>  	prototype = pte & ~EPT_ADDR_MASK;
>  	if (level == 2)
> @@ -618,7 +617,6 @@ static void init_vmcs_guest(void)
>  static int init_vmcs(struct vmcs **vmcs)
>  {
>  	*vmcs = alloc_page();
> -	memset(*vmcs, 0, PAGE_SIZE);
>  	(*vmcs)->revision_id = basic.revision;
>  	/* vmclear first to init vmcs */
>  	if (vmcs_clear(*vmcs)) {
> @@ -657,7 +655,6 @@ static void init_vmx(void)
>  	ulong fix_cr4_set, fix_cr4_clr;
>  
>  	vmxon_region = alloc_page();
> -	memset(vmxon_region, 0, PAGE_SIZE);
>  
>  	fix_cr0_set =  rdmsr(MSR_IA32_VMX_CR0_FIXED0);
>  	fix_cr0_clr =  rdmsr(MSR_IA32_VMX_CR0_FIXED1);
> @@ -687,9 +684,7 @@ static void init_vmx(void)
>  	*vmxon_region = basic.revision;
>  
>  	guest_stack = alloc_page();
> -	memset(guest_stack, 0, PAGE_SIZE);
>  	guest_syscall_stack = alloc_page();
> -	memset(guest_syscall_stack, 0, PAGE_SIZE);
>  }
>  
>  static void do_vmxon_off(void *data)
> @@ -812,7 +807,6 @@ static void test_vmptrst(void)
>  	struct vmcs *vmcs1, *vmcs2;
>  
>  	vmcs1 = alloc_page();
> -	memset(vmcs1, 0, PAGE_SIZE);
>  	init_vmcs(&vmcs1);
>  	ret = vmcs_save(&vmcs2);
>  	report("test vmptrst", (!ret) && (vmcs1 == vmcs2));
> diff --git a/x86/vmx_tests.c b/x86/vmx_tests.c
> index 58736d789bd5..681204238ed9 100644
> --- a/x86/vmx_tests.c
> +++ b/x86/vmx_tests.c
> @@ -224,7 +224,6 @@ void msr_bmp_init()
>  	u32 ctrl_cpu0;
>  
>  	msr_bitmap = alloc_page();
> -	memset(msr_bitmap, 0x0, PAGE_SIZE);
>  	ctrl_cpu0 = vmcs_read(CPU_EXEC_CTRL0);
>  	ctrl_cpu0 |= CPU_MSR_BITMAP;
>  	vmcs_write(CPU_EXEC_CTRL0, ctrl_cpu0);
> @@ -567,8 +566,6 @@ static int iobmp_init()
>  
>  	io_bitmap_a = alloc_page();
>  	io_bitmap_b = alloc_page();
> -	memset(io_bitmap_a, 0x0, PAGE_SIZE);
> -	memset(io_bitmap_b, 0x0, PAGE_SIZE);
>  	ctrl_cpu0 = vmcs_read(CPU_EXEC_CTRL0);
>  	ctrl_cpu0 |= CPU_IO_BITMAP;
>  	ctrl_cpu0 &= (~CPU_IO);
> @@ -938,7 +935,6 @@ static int setup_ept()
>  	}
>  	eptp |= (3 << EPTP_PG_WALK_LEN_SHIFT);
>  	pml4 = alloc_page();
> -	memset(pml4, 0, PAGE_SIZE);
>  	eptp |= virt_to_phys(pml4);
>  	vmcs_write(EPTP, eptp);
>  	support_2m = !!(ept_vpid.val & EPT_CAP_2M_PAGE);
> @@ -974,8 +970,6 @@ static int ept_init()
>  		return VMX_TEST_EXIT;
>  	data_page1 = alloc_page();
>  	data_page2 = alloc_page();
> -	memset(data_page1, 0x0, PAGE_SIZE);
> -	memset(data_page2, 0x0, PAGE_SIZE);
>  	*((u32 *)data_page1) = MAGIC_VAL_1;
>  	*((u32 *)data_page2) = MAGIC_VAL_2;
>  	install_ept(pml4, (unsigned long)data_page1, (unsigned long)data_page2,
> @@ -1541,9 +1535,6 @@ static int msr_switch_init(struct vmcs *vmcs)
>  	exit_msr_store = alloc_page();
>  	exit_msr_load = alloc_page();
>  	entry_msr_load = alloc_page();
> -	memset(exit_msr_store, 0, PAGE_SIZE);
> -	memset(exit_msr_load, 0, PAGE_SIZE);
> -	memset(entry_msr_load, 0, PAGE_SIZE);
>  	entry_msr_load[0].index = MSR_KERNEL_GS_BASE;
>  	entry_msr_load[0].value = MSR_MAGIC;
>  
> 
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux