From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755948AbcBVWGg (ORCPT ); Mon, 22 Feb 2016 17:06:36 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:35142 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754469AbcBVWGf (ORCPT ); Mon, 22 Feb 2016 17:06:35 -0500 From: Boris Ostrovsky To: konrad.wilk@oracle.com, david.vrabel@citrix.com Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, mcgrof@kernel.org, Boris Ostrovsky Subject: [PATCH] xen/x86: Zero out .bss for PV guests Date: Mon, 22 Feb 2016 17:06:07 -0500 Message-Id: <1456178767-8038-1-git-send-email-boris.ostrovsky@oracle.com> X-Mailer: git-send-email 2.1.0 X-Source-IP: userv0021.oracle.com [156.151.31.71] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Baremetal kernels clear .bss early in the boot. Since Xen PV guests don't excecute that early code they should do it too. (Since we introduce macros for specifying 32- and 64-bit registers we can get rid of ifdefs in startup_xen()) Signed-off-by: Boris Ostrovsky --- arch/x86/xen/xen-head.S | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S index b65f59a..2af87d1 100644 --- a/arch/x86/xen/xen-head.S +++ b/arch/x86/xen/xen-head.S @@ -35,16 +35,31 @@ #define PVH_FEATURES (0) #endif - __INIT -ENTRY(startup_xen) - cld #ifdef CONFIG_X86_32 - mov %esi,xen_start_info - mov $init_thread_union+THREAD_SIZE,%esp +#define REG(register) %e##register +#define WSIZE_SHIFT 2 +#define STOS stosl #else - mov %rsi,xen_start_info - mov $init_thread_union+THREAD_SIZE,%rsp +#define REG(register) %r##register +#define WSIZE_SHIFT 3 +#define STOS stosq #endif + + __INIT +ENTRY(startup_xen) + cld + + /* Clear .bss */ + xor REG(ax),REG(ax) + mov $__bss_start,REG(di) + mov $__bss_stop,REG(cx) + sub REG(di),REG(cx) + shr $WSIZE_SHIFT,REG(cx) + rep STOS + + mov REG(si),xen_start_info + mov $init_thread_union+THREAD_SIZE,REG(sp) + jmp xen_start_kernel __FINIT -- 2.1.0