Received: by 2002:a05:7412:3784:b0:e2:908c:2ebd with SMTP id jk4csp243031rdb; Sat, 30 Sep 2023 02:48:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEmMOCl7bPyEtKYpj0a+4yliwAc3PX2O3sBn0Zg8+2qa0Yz0L07zIXppeegUST7p7i0Fb+l X-Received: by 2002:a17:902:ed8f:b0:1c3:21ae:7a4a with SMTP id e15-20020a170902ed8f00b001c321ae7a4amr5174491plj.38.1696067326666; Sat, 30 Sep 2023 02:48:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696067326; cv=none; d=google.com; s=arc-20160816; b=boK0gCmt3KG2mdh46FnAC2K6IulI7UE5ENhPLgXLiLrM5ZRb/j5vn7LyhK7xXOF5fr v6dUiXPZxD/Ow1UYoeZv5hzd6rkKQc01V6+fUkq69qZwVlsU+aZ92KCT6QcWkud8yEq7 jlVrmvHsKIMTCYer8hbBNXeBWvzghb2bLYHUI6AAFwzbtnzP0dRQEmeTk6Iznmu7YySu Dvfxtvv12n+vFX4CfInFU4CKtPBMLa+k0gLeZ0nAG1BgUawP1fp5v6BoWNBE2yXUGcNE Rm7lZtInJ4ov8WwzQnFPC8Mxc9GU3vmAHckn9rERA949ELN4jpV/3Rv5RUpLnEsqUY9d iFUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=Naxm9oTFatb2xIDG9q2KAGbarRhctcJ38PpFJyBdl0E=; fh=sV+5yuSdR1kbe1RXoa8fAVpr7xPbP1SePAXLwWZbLl0=; b=FFRHCH2s452nROPN5ZhNH7/XD7eeFc1hVVjZflMNbf2qaMf3KFRU7T0caJKhoGmehC 5sblVUarYOmzSxdm2dDfdtplGbyeTWSV7dBmlyxP+5GMkPFS8+Pu/cV3OiSm6ATCJYpU RcGpOiFkdCzP0UY2TpaRnFKLY44MFy8aBZ4N/fSoDcLE1PDK/EvNo4t5k6Qlj2IHIEqV JuQ1NW0ykSrK/yMS2kmRsKb/awFxhvSygnz8yLp1O7LiKUVjGfdKYyPcI5IGmYLxa6hi 91ANa0aNI/IgFulTC6sYP4Kfqw1C9vYnnfaFEOyj7jqB8yQ0Ug+hI+ZMPMAgRu1Kkk8M YbxQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@alien8.de header.s=alien8 header.b=M3bO5BWF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=alien8.de Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id s8-20020a170902ea0800b001c3a2e70278si21790787plg.437.2023.09.30.02.48.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Sep 2023 02:48:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@alien8.de header.s=alien8 header.b=M3bO5BWF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=alien8.de Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 624CF80E73D0; Sat, 30 Sep 2023 00:18:33 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234126AbjI3HSV (ORCPT + 99 others); Sat, 30 Sep 2023 03:18:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46848 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234115AbjI3HSU (ORCPT ); Sat, 30 Sep 2023 03:18:20 -0400 Received: from mail.alien8.de (mail.alien8.de [65.109.113.108]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04C861B7 for ; Sat, 30 Sep 2023 00:18:16 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTP id 21E5D40E01A1; Sat, 30 Sep 2023 07:18:14 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at mail.alien8.de Authentication-Results: mail.alien8.de (amavisd-new); dkim=pass (4096-bit key) header.d=alien8.de Received: from mail.alien8.de ([127.0.0.1]) by localhost (mail.alien8.de [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id mFrFMCy--mhG; Sat, 30 Sep 2023 07:18:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=alien8; t=1696058291; bh=Naxm9oTFatb2xIDG9q2KAGbarRhctcJ38PpFJyBdl0E=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=M3bO5BWFPwdSRzEToXHMumY7lG2UPvdjPBoOO88JoZvd8HnELq8XHlWZupn9FpVNt Osva2o7uDK0+5P/OhyKtsMdRr1OepMNIMFfiJmDDbm7yvoFmMtusF/v8fwj3LWj3kg lrUTQfgil0MmTISHvVIsIji6f5oRetSY8gGk64+U5a4ED4XnLx/doLUF3epoXAqdML xtjrj3ougkIQLg0iNB8IgZiUow++rdn3nF2LL7Wqvfld3+pk4cpqzn+5VckPvuy60O +Nd8Oh5bJkhDZ3tyonLX4ewfK7ZXJRWnQ0NdP3ep/vYbWYF9UHgsb78kwUXakVN/Sh YS6RzCSpN1mbGhCvCPe3Ho+kvmJ6bDNlU+IzPhkjBTo2pfDGKqEatfb1ozPk3rFCed 0KPH0MnJFyIcN5537HrTchZbxim2gIl68AoJKzTFIegEveSOon1FftQXdOp8PdVL6H 3uaQ9A1l6PnN8yJinzBxXtbuN2OadiETDNXSzbMHdxacsOW4Pk+1+uAiscvxU0Gfbu YOWLPu2FuHx/pJNRnktsbMe8FOSYIMkl8twi2dKqBXVYLT0Ozty2BhNAPqwWCesTrn C40ctBysmugy7g7yvAN4F5EvMd7cbPFWArwyixzkYBjNy6eCeX5d1345WSjhAVm8mE /eIaCMBl1ICA7lXx1ushS/ls= Received: from zn.tnic (pd953036a.dip0.t-ipconnect.de [217.83.3.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id 718D140E014B; Sat, 30 Sep 2023 07:18:06 +0000 (UTC) Date: Sat, 30 Sep 2023 09:17:59 +0200 From: Borislav Petkov To: Alexey Kardashevskiy Cc: x86@kernel.org, linux-kernel@vger.kernel.org, Ingo Molnar , Tom Lendacky Subject: Re: [PATCH kernel v2] x86/compressed/64: reduce #VC nesting for intercepted CPUID for SEV-SNP guest Message-ID: <20230930071759.GAZRfLpz38AAITSZzW@fat_crate.local> References: <20230926040526.957240-1-aik@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20230926040526.957240-1-aik@amd.com> X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Sat, 30 Sep 2023 00:18:33 -0700 (PDT) On Tue, Sep 26, 2023 at 02:05:26PM +1000, Alexey Kardashevskiy wrote: > vc_raw_handle_exception #1: exit_code 72 (CPUID) eax d ecx 1 > We lock the main GHCB and while it is locked we get to Please use passive voice in your commit message: no "we" or "I", etc, and describe your changes in imperative mood. Also, pls read section "2) Describe your changes" in Documentation/process/submitting-patches.rst for more details. Also, see section "Changelog" in Documentation/process/maintainer-tip.rst Bottom line is: personal pronouns are ambiguous in text, especially with so many parties/companies/etc developing the kernel so let's avoid them please. > snp_cpuid_postprocess() which executes "rdmsr" of MSR_IA32_XSS==0xda0 which > triggers: > > vc_raw_handle_exception #2: exit_code 7c (MSR) ecx da0 > Here we lock the backup ghcb. > > And then PMC NMI comes which cannot complete as there is no GHCB page left > to use: > > CPU: 5 PID: 566 Comm: touch Not tainted 6.5.0-rc2-aik-ad9c-g7413e71d3dcf-dirty #27 > Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS unknown unknown > Call Trace: > > dump_stack_lvl+0x44/0x60 > panic+0x222/0x310 > ____sev_get_ghcb+0x21e/0x220 > __sev_es_nmi_complete+0x28/0xf0 > exc_nmi+0x1ac/0x1c0 > end_repeat_nmi+0x16/0x67 > ... > > > vc_raw_handle_exception+0x9e/0x2c0 > kernel_exc_vmm_communication+0x4d/0xa0 > asm_exc_vmm_communication+0x31/0x60 > RIP: 0010:snp_cpuid+0x2ad/0x420 Drop that splat like we talked. > +/* Paravirt SEV-ES rdmsr which avoids extra #VC event */ > +#define rdmsr_safe_GHCB(msr, low, high, ghcb, ctxt) ({ \ > + int __ret; \ > + \ > + ghcb_set_rcx((ghcb), (msr)); \ > + __ret = sev_es_ghcb_hv_call((ghcb), (ctxt), SVM_EXIT_MSR, 0, 0); \ > + if (__ret == ES_OK) { \ > + low = (ghcb)->save.rax; \ > + high = (ghcb)->save.rdx; \ > + /* Invalidate qwords for likely another following GHCB call */ \ > + vc_ghcb_invalidate(ghcb); \ > + } \ > + __ret; }) > + First of all, this should be a function, not a macro. Then, it should be defined only in sev-shared.c for now. Furthermore, it should not be called "rdmsr" or so but something like ghcb_prot_read_msr() or so to denote that it is using the GHCB protocol to read the MSR. I'm sure it'll gain more users with time. Thx. -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette