From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3FA2770 for ; Wed, 19 May 2021 19:13:18 +0000 (UTC) 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 88F15AFAB; Wed, 19 May 2021 19:13:10 +0000 (UTC) Date: Wed, 19 May 2021 21:13:08 +0200 From: Joerg Roedel To: Peter Zijlstra Cc: Joerg Roedel , x86@kernel.org, Hyunwook Baek , hpa@zytor.com, Andy Lutomirski , Dave Hansen , Jiri Slaby , Dan Williams , Tom Lendacky , Juergen Gross , Kees Cook , David Rientjes , Cfir Cohen , Erdem Aktas , Masami Hiramatsu , Mike Stunes , Sean Christopherson , Martin Radev , Arvind Sankar , linux-coco@lists.linux.dev, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org Subject: Re: [PATCH v2 5/8] x86/sev-es: Leave NMI-mode before sending signals Message-ID: References: <20210519135251.30093-1-joro@8bytes.org> <20210519135251.30093-6-joro@8bytes.org> <20210519175450.GF21560@worktop.programming.kicks-ass.net> X-Mailing-List: linux-coco@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210519175450.GF21560@worktop.programming.kicks-ass.net> Hi Peter, thanks for your review. On Wed, May 19, 2021 at 07:54:50PM +0200, Peter Zijlstra wrote: > On Wed, May 19, 2021 at 03:52:48PM +0200, Joerg Roedel wrote: > > --- a/arch/x86/kernel/sev.c > > +++ b/arch/x86/kernel/sev.c > > @@ -1343,9 +1343,10 @@ DEFINE_IDTENTRY_VC_SAFE_STACK(exc_vmm_communication) > > return; > > } > > > > + instrumentation_begin(); > > + > > irq_state = irqentry_nmi_enter(regs); > > lockdep_assert_irqs_disabled(); > > - instrumentation_begin(); > > > > /* > > * This is invoked through an interrupt gate, so IRQs are disabled. The > > That's just plain wrong. No instrumentation is allowed before you enter > the exception context. Okay. > > + irqentry_nmi_exit(regs, irq_state); > > + > > And this is wrong too; because at this point the handler doesn't run in > _any_ context anymore, certainly not one you can call regular C code > from. The #VC handler is at this point not running on the IST stack anymore, but on the stack it came from or on the task stack. So my believe was that at this point it inherits the context it came from (just like the page-fault handler). But I also don't fully understand the context tracking, so is my assumption wrong? Regards, Joerg From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1A560C433ED for ; Wed, 19 May 2021 19:13:18 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id BD6586108D for ; Wed, 19 May 2021 19:13:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BD6586108D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=virtualization-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 7E5E140ECD; Wed, 19 May 2021 19:13:17 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uTd2h8Biw6hK; Wed, 19 May 2021 19:13:16 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp4.osuosl.org (Postfix) with ESMTP id DC91A40611; Wed, 19 May 2021 19:13:15 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 8D9EFC000E; Wed, 19 May 2021 19:13:15 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 0AE74C0001 for ; Wed, 19 May 2021 19:13:14 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id E3EAF40EAD for ; Wed, 19 May 2021 19:13:13 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8Vsfpt18ZUW4 for ; Wed, 19 May 2021 19:13:13 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by smtp4.osuosl.org (Postfix) with ESMTPS id 22A5C40EC1 for ; Wed, 19 May 2021 19:13:13 +0000 (UTC) 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 88F15AFAB; Wed, 19 May 2021 19:13:10 +0000 (UTC) Date: Wed, 19 May 2021 21:13:08 +0200 From: Joerg Roedel To: Peter Zijlstra Subject: Re: [PATCH v2 5/8] x86/sev-es: Leave NMI-mode before sending signals Message-ID: References: <20210519135251.30093-1-joro@8bytes.org> <20210519135251.30093-6-joro@8bytes.org> <20210519175450.GF21560@worktop.programming.kicks-ass.net> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210519175450.GF21560@worktop.programming.kicks-ass.net> Cc: kvm@vger.kernel.org, Dave Hansen , virtualization@lists.linux-foundation.org, Arvind Sankar , hpa@zytor.com, Jiri Slaby , Joerg Roedel , x86@kernel.org, David Rientjes , Martin Radev , Tom Lendacky , Kees Cook , Cfir Cohen , Hyunwook Baek , linux-coco@lists.linux.dev, Andy Lutomirski , Dan Williams , Juergen Gross , Mike Stunes , Sean Christopherson , linux-kernel@vger.kernel.org, Masami Hiramatsu , Erdem Aktas X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" Hi Peter, thanks for your review. On Wed, May 19, 2021 at 07:54:50PM +0200, Peter Zijlstra wrote: > On Wed, May 19, 2021 at 03:52:48PM +0200, Joerg Roedel wrote: > > --- a/arch/x86/kernel/sev.c > > +++ b/arch/x86/kernel/sev.c > > @@ -1343,9 +1343,10 @@ DEFINE_IDTENTRY_VC_SAFE_STACK(exc_vmm_communication) > > return; > > } > > > > + instrumentation_begin(); > > + > > irq_state = irqentry_nmi_enter(regs); > > lockdep_assert_irqs_disabled(); > > - instrumentation_begin(); > > > > /* > > * This is invoked through an interrupt gate, so IRQs are disabled. The > > That's just plain wrong. No instrumentation is allowed before you enter > the exception context. Okay. > > + irqentry_nmi_exit(regs, irq_state); > > + > > And this is wrong too; because at this point the handler doesn't run in > _any_ context anymore, certainly not one you can call regular C code > from. The #VC handler is at this point not running on the IST stack anymore, but on the stack it came from or on the task stack. So my believe was that at this point it inherits the context it came from (just like the page-fault handler). But I also don't fully understand the context tracking, so is my assumption wrong? Regards, Joerg _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization