From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DFC083DD87A for ; Tue, 2 Jun 2026 14:32:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780410725; cv=none; b=rC6kIe62VSacrNP2Hh2N6gJjwRe0sjssYOtI6lpOi22qqVW13ENsDkYLgT92xDX3wHgypfTnMbz0un00dvtUp9OcKnG9/hf4LaSDedAfL3R3MIJ/qJ/vumRNxBi3bQ05ocPDx2rM/ANTd1FrighLo9jZY7QwNdQ6nBrXOG31840= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780410725; c=relaxed/simple; bh=INm3vf5DC+vwMLktOV9r3TfVA4RPJsJgoLGxXorIyys=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=adUSLgnQen3ODLPOibAihJCR2Nzt1SxXtLT2Wgpjvvjy3f8RhKfLxIVfL2r0iXsqScDuZ/6XNr6YAwH39zLP/BdIIxpLxaonap8S0YfHqmV242t+2Ch1lu3akXYScusvCw79ACGayOwKMqCDxGXmeqwo8dmNoAKtRaVzsJre29s= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=PZn9O3P4; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=a7aSBYza; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="PZn9O3P4"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="a7aSBYza" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1780410722; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JFOlMoZLgQnzCkQE9GiR1XVr30XojbF7TAtnbzsdBck=; b=PZn9O3P4EyePQTcpBG6jwLzBA+C3qXMKY1HQrvCvzwXJTmJlIi+oZrCmiBoxCo0KIs32gv OIBrS1H6n+e52v+0H57EMwgHSd9O/xnpfgG4fWxOe1ktyuCRFBE3NSqdUIkPf55LOLfLk/ FH9oKpsuPF/Z5b26gUdBczms+vi51VI= Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-440-YTjHwnQFPZq1kvUEfZnnxA-1; Tue, 02 Jun 2026 10:32:00 -0400 X-MC-Unique: YTjHwnQFPZq1kvUEfZnnxA-1 X-Mimecast-MFC-AGG-ID: YTjHwnQFPZq1kvUEfZnnxA_1780410720 Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-91586cdd642so48497085a.3 for ; Tue, 02 Jun 2026 07:32:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1780410720; x=1781015520; darn=vger.kernel.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=JFOlMoZLgQnzCkQE9GiR1XVr30XojbF7TAtnbzsdBck=; b=a7aSBYzaAlOlihp0/K6wjtoyoAvFVCEYBMtLJ7UKgCH/GWb544RkVpjFuf356BbIm/ 0O32vhN3On0QbOcugn6GjmXEnV4QEUuelF3hLd4O/xB/SIF0ITXFWGtlBTLGFvEyV6pK G7/tIpAqyfrBh5NvYSX7x9otMkr0IXTYs86sNPIox+AtlUrAMLmrmqc5oJMAjio1j+PG j3K8x1IEvGgapC9wrmCCx3q/21OgHt55sbRTCkRpMZvHv6X0rX9pi63Tcus+lMyiTCwA 2T4JHel3ALUj8bVwomaLvNZ0W/fpq7i/P7wvI2cyhFrhr+5jPKY7B2xpNs/K20Ii0dtL PhMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780410720; x=1781015520; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=JFOlMoZLgQnzCkQE9GiR1XVr30XojbF7TAtnbzsdBck=; b=HBpMF1ofiUSOXE6nJIBYDfBBXCaaTSAKsQMfN8djNQuhXgXZR3eUszpo8lZ4j644mx QMsbXsbdxSyE35BtBhHVDroSe0hnKnz1aTDSZzWXH1BAEEPCrUcg6Qp+pY75YC88tHP0 fiuRDbecJr6eo5IdO4zM3BIcC8zl89wPwnT6VZHGBGWj1RwW+8c4jel/sFf/jBYtUmm0 BWOhXZb1npFv97d1QxwJz/MaVqfzu3NsC/v1DFAB/BKLK5GRGSAi/+2RhTMQrvrAnMIj 96lOtTcPdM32HoN7QAxTC2LP6FHuffX+mUUX2UncjcfuHI+VIN6h/M8uUuVvi8lU9HnL 9vqw== X-Forwarded-Encrypted: i=1; AFNElJ84guhV33swMFBW+oLAPzTmMZ4P9qg4JVzUHNqwYKmWlnl1xJ+9P113W14t6AF50zDiYoRiOn2ow3h6VBM=@vger.kernel.org X-Gm-Message-State: AOJu0YyHT2t8XWx7f2/KeArR+cgxEJvXOs72qp5/GFdaX0+l/bNex3Qr jKGex4hAgWOT24Fi3vzeJm2rBZhWbLNyxX96GEKaJlRTnVjO+J3QvVuOoTcYTHxfWDdOq2KHjGm jTjSrR2430QWtr1pOFwDi3v5SRnMO/8zBUMf0jkpoPp+n7GQsSo7R9k8nbh5/s9K/Uw== X-Gm-Gg: Acq92OF+EbpzQHO7ZACONvIrabjj9ddJPonHcTP5BVwskpMRdhmpN3ec477cHNL4WRa Gi8CNydln6Eeprl2YE7JBmkdcIsod3Vk+nKtk8wzTDi4WBMiF06Vdq3rkPt0EOau/ojAGzMFeX5 Y7Q415WxTKb1MM6wHa3AlH9g3XhIvzhCH+K7B0NJntih4PPoerTwG7mgw/9UfDsK3a78EFuNOeB XSdIM8wOuRG8i7Kb9OP9OdLlsihWA4kvxYXoT9nGC3fz8F/P2d3jcGTv1RFWxRL+vVsOpYi+HuC eYYhWLJVxlvwvS6kc//dAioET1HyGzu7iOtxRB/jx0At0VV9J3lLgnRhjPdmjeFuyWYNd5Ge894 gA6T5UEbqUEqaBePumaRfsNemQ3r+qgp+Q/BiqSM= X-Received: by 2002:a05:620a:29d5:b0:915:29cd:306f with SMTP id af79cd13be357-9153dbca062mr2493808185a.55.1780410719468; Tue, 02 Jun 2026 07:31:59 -0700 (PDT) X-Received: by 2002:a05:620a:29d5:b0:915:29cd:306f with SMTP id af79cd13be357-9153dbca062mr2493804085a.55.1780410718922; Tue, 02 Jun 2026 07:31:58 -0700 (PDT) Received: from intellaptop.lan ([2607:fea8:fc01:88aa:f1de:f35:7935:804f]) by smtp.gmail.com with ESMTPSA id af79cd13be357-91532650e85sm1286151485a.42.2026.06.02.07.31.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 07:31:57 -0700 (PDT) Message-ID: Subject: Re: [PATCH 27/28] KVM: SVM: work around errata 1218 From: mlevitsk@redhat.com To: Paolo Bonzini , linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: d.riley@proxmox.com, jon@nutanix.com Date: Tue, 02 Jun 2026 10:31:57 -0400 In-Reply-To: <20260505195226.563317-28-pbonzini@redhat.com> References: <20260505195226.563317-1-pbonzini@redhat.com> <20260505195226.563317-28-pbonzini@redhat.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.52.4 (3.52.4-2.fc40) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 On Tue, 2026-05-05 at 21:52 +0200, Paolo Bonzini wrote: > According to AMD, the hypervisor may not be able to determine whether a > fault was a GMET fault or an NX fault based on EXITINFO1, and software > "must read the relevant VMCB to determine whether a fault was a GMET > fault or an NX fault".=C2=A0 The APM further details that they meant the > CPL field. >=20 > KVM uses the page fault error code to distinguish the causes of a > nested page fault, so recalculate the PFERR_USER_MASK bit of the > vmexit information.=C2=A0 Only do it for fetches and only if GMET is in > use, because KVM does not differentiate based on PFERR_USER_MASK > for other nested NPT page faults. >=20 > Tested-by: David Riley > Signed-off-by: Paolo Bonzini > --- > =C2=A0arch/x86/kvm/svm/svm.c | 12 ++++++++++++ > =C2=A01 file changed, 12 insertions(+) >=20 > diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c > index 3895d8794366..fd79874c5f4b 100644 > --- a/arch/x86/kvm/svm/svm.c > +++ b/arch/x86/kvm/svm/svm.c > @@ -1993,6 +1993,18 @@ static int npf_interception(struct kvm_vcpu *vcpu) > =C2=A0 } > =C2=A0 } > =C2=A0 > + if (!is_sev_es_guest(vcpu) && > + =C2=A0=C2=A0=C2=A0 (svm->vmcb->control.misc_ctl & SVM_MISC_ENABLE_GMET)= && > + =C2=A0=C2=A0=C2=A0 (error_code & PFERR_FETCH_MASK)) { > + /* > + * Work around errata 1218: EXITINFO1[2] May Be Incorrectly Set > + * When GMET (Guest Mode Execute Trap extension) is Enabled > + */ > + error_code |=3D PFERR_USER_MASK; > + if (svm_get_cpl(vcpu) !=3D 3) > + error_code &=3D ~PFERR_USER_MASK; > + } > + Hi! I wonder if we can limit this workaround to a range of Zen families at leas= t. For example, maybe limit this workaround to CPUs older than Zen5? (Assuming that this errata is not present on Zen5) The workaround does look harmless but still each workaround=C2=A0 is an extra piece of code to worry about. > =C2=A0 if (is_sev_snp_guest(vcpu) && (error_code & PFERR_GUEST_ENC_MASK)) > =C2=A0 error_code |=3D PFERR_PRIVATE_ACCESS; > =C2=A0 Reviewed-by: Maxim Levitsky Best regards, Maxim Levitsky