Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp4328524ybt; Mon, 6 Jul 2020 01:42:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzXov8hVnMis67UHuo4k2sL16CaWCv6WlhXpfkccdbf9HyO8ZKEfrw156js8Gv+1ZWtOPyE X-Received: by 2002:a17:906:430b:: with SMTP id j11mr25258993ejm.270.1594024956424; Mon, 06 Jul 2020 01:42:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594024956; cv=none; d=google.com; s=arc-20160816; b=CoiEClKXYi5dztKJG2b0aVLizpq2OJ2/mkcLH59gVAmk07guRpoy8b2AaZ5eJCBBwj 1esXwa9IZJ4GnNRj1D60zT7YPq8MPfmnaVhKNL3GvZ0edoRIzD9TAM2nzXwm/VR0THA7 fx2pVD9q8U2TXwRS046VTQvyG7nswwxdYrBYKqdR1gtz8gkxQvFGS14FOT6FXgmShJsk 2x4lYnmpIJGecq3VcokAz1a5SmrtQgwvDZw5huGJ+SQWlpunXXbuFvS6r/BTytI5g86O PMk48jDhIcjuUG2mjj4lF3qjoxLibHMO9gWy32zY9hmkO98qUDqAqf3WwNMi/ynB3tzF 0Vxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=cMVlCaKRYhQ/i5eR4nepRahJrOaYOjS5dyrLn6wsOjI=; b=PTHS3uPz4oif2sSJqX/t8VFcP6G18soSkqcn+BN1KyTTQEdDkCIguR+Zd6b46ZDlEv +G7WBXQpCR/Nmj/dXGMkqlQ30rpEEeO4Ih0uApugi94TTs9JNBceaTz7DkMx449zuJj6 4LV8JsaMnIm8wY+Oki4d3D8aAhMKFwAucB+fDXB3WzDlE//6RMZLlBSEfhV4nFYMnfiU QklFfKzE7gWKBgmmFnV96zV1olfTjmWfCfQhZV80PmH7e78PcsKkWBYaqwos04Iika6x mRj+rSxbIHOxd6BoJW0CBWF0p08Y1kpU3IOWG9sYFF2zX/PWnIdz+pyRo7mOrWCpEXfd st7A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v5si13852169edf.437.2020.07.06.01.42.13; Mon, 06 Jul 2020 01:42:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728454AbgGFIl6 (ORCPT + 99 others); Mon, 6 Jul 2020 04:41:58 -0400 Received: from mx2.suse.de ([195.135.220.15]:44562 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726001AbgGFIl5 (ORCPT ); Mon, 6 Jul 2020 04:41:57 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 7A4A6AE6D; Mon, 6 Jul 2020 08:41:56 +0000 (UTC) Received: by lion.mk-sys.cz (Postfix, from userid 1000) id EB878602E3; Mon, 6 Jul 2020 10:41:55 +0200 (CEST) Date: Mon, 6 Jul 2020 10:41:55 +0200 From: Michal Kubecek To: Andy Lutomirski Cc: x86@kernel.org, Andrew Cooper , Juergen Gross , LKML Subject: Re: [PATCH entry v2 3/6] x86/entry/xen: Route #DB correctly on Xen PV Message-ID: <20200706084155.ndltt24ipognh67e@lion.mk-sys.cz> References: <4163e733cce0b41658e252c6c6b3464f33fdff17.1593795633.git.luto@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4163e733cce0b41658e252c6c6b3464f33fdff17.1593795633.git.luto@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jul 03, 2020 at 10:02:55AM -0700, Andy Lutomirski wrote: > On Xen PV, #DB doesn't use IST. We still need to correctly route it > depending on whether it came from user or kernel mode. > > This patch gets rid of DECLARE/DEFINE_IDTENTRY_XEN -- it was too > hard to follow the logic. Instead, route #DB and NMI through > DECLARE/DEFINE_IDTENTRY_RAW on Xen, and do the right thing for #DB. > Also add more warnings to the exc_debug* handlers to make this type > of failure more obvious. > > This fixes various forms of corruption that happen when usermode > triggers #DB on Xen PV. > > Fixes: 4c0dcd8350a0 ("x86/entry: Implement user mode C entry points for #DB and #MCE") > Signed-off-by: Andy Lutomirski > --- > arch/x86/include/asm/idtentry.h | 24 ++++++------------------ > arch/x86/kernel/traps.c | 12 ++++++++++++ > arch/x86/xen/enlighten_pv.c | 28 ++++++++++++++++++++++++---- > arch/x86/xen/xen-asm_64.S | 5 ++--- > 4 files changed, 44 insertions(+), 25 deletions(-) > > diff --git a/arch/x86/include/asm/idtentry.h b/arch/x86/include/asm/idtentry.h > index cf51c50eb356..94333ac3092b 100644 > --- a/arch/x86/include/asm/idtentry.h > +++ b/arch/x86/include/asm/idtentry.h [...] > @@ -570,11 +554,15 @@ DECLARE_IDTENTRY_MCE(X86_TRAP_MC, exc_machine_check); > > /* NMI */ > DECLARE_IDTENTRY_NMI(X86_TRAP_NMI, exc_nmi); > -DECLARE_IDTENTRY_XEN(X86_TRAP_NMI, nmi); > +#ifdef CONFIG_XEN_PV > +DECLARE_IDTENTRY_RAW(X86_TRAP_NMI, xenpv_exc_nmi); > +#endif > > /* #DB */ > DECLARE_IDTENTRY_DEBUG(X86_TRAP_DB, exc_debug); > -DECLARE_IDTENTRY_XEN(X86_TRAP_DB, debug); > +#ifdef CONFIG_XEN_PV > +DECLARE_IDTENTRY_RAW(X86_TRAP_DB, xenpv_exc_debug); > +#endif > > /* #DF */ > DECLARE_IDTENTRY_DF(X86_TRAP_DF, exc_double_fault); Hello, this patch - now in mainline as commit 13cbc0cd4a30 ("x86/entry/32: Fix #MC and #DB wiring on x86_32") - seems to break i586 builds with CONFIG_XEN_PV=y as xenpv_exc_nmi and xenpv_exc_debug are only defined with CONFIG_X86_64: [ 1279s] ld: arch/x86/entry/entry_32.o: in function `asm_xenpv_exc_nmi': [ 1279s] /home/abuild/rpmbuild/BUILD/kernel-pae-5.8.rc4/linux-5.8-rc4/linux-obj/../arch/x86/include/asm/idtentry.h:557: undefined reference to `xenpv_exc_nmi' [ 1279s] ld: arch/x86/entry/entry_32.o: in function `asm_xenpv_exc_debug': [ 1279s] /home/abuild/rpmbuild/BUILD/kernel-pae-5.8.rc4/linux-5.8-rc4/linux-obj/../arch/x86/include/asm/idtentry.h:567: undefined reference to `xenpv_exc_debug' Michal Kubecek