From: Joerg Roedel <joro@8bytes.org> To: x86@kernel.org Cc: Joerg Roedel <joro@8bytes.org>, Joerg Roedel <jroedel@suse.de>, hpa@zytor.com, Andy Lutomirski <luto@kernel.org>, Dave Hansen <dave.hansen@linux.intel.com>, Peter Zijlstra <peterz@infradead.org>, Jiri Slaby <jslaby@suse.cz>, Dan Williams <dan.j.williams@intel.com>, Tom Lendacky <thomas.lendacky@amd.com>, Juergen Gross <jgross@suse.com>, Kees Cook <keescook@chromium.org>, David Rientjes <rientjes@google.com>, Cfir Cohen <cfir@google.com>, Erdem Aktas <erdemaktas@google.com>, Masami Hiramatsu <mhiramat@kernel.org>, Mike Stunes <mstunes@vmware.com>, Sean Christopherson <seanjc@google.com>, Martin Radev <martin.b.radev@gmail.com>, Arvind Sankar <nivedita@alum.mit.edu>, linux-coco@lists.linux.dev, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org Subject: [RFC PATCH 04/12] x86/sev: Do not hardcode GHCB protocol version Date: Mon, 5 Jul 2021 10:24:35 +0200 [thread overview] Message-ID: <20210705082443.14721-5-joro@8bytes.org> (raw) In-Reply-To: <20210705082443.14721-1-joro@8bytes.org> From: Joerg Roedel <jroedel@suse.de> Introduce the sev_get_ghcb_proto_ver() which will return the negotiated GHCB protocol version and use it to set the version field in the GHCB. Signed-off-by: Joerg Roedel <jroedel@suse.de> --- arch/x86/boot/compressed/sev.c | 5 +++++ arch/x86/kernel/sev-shared.c | 5 ++++- arch/x86/kernel/sev.c | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/arch/x86/boot/compressed/sev.c b/arch/x86/boot/compressed/sev.c index 1a2e49730f8b..101e08c67296 100644 --- a/arch/x86/boot/compressed/sev.c +++ b/arch/x86/boot/compressed/sev.c @@ -119,6 +119,11 @@ static enum es_result vc_read_mem(struct es_em_ctxt *ctxt, /* Include code for early handlers */ #include "../../kernel/sev-shared.c" +static u64 sev_get_ghcb_proto_ver(void) +{ + return GHCB_PROTOCOL_MAX; +} + static bool early_setup_sev_es(void) { if (!sev_es_negotiate_protocol(NULL)) diff --git a/arch/x86/kernel/sev-shared.c b/arch/x86/kernel/sev-shared.c index 73eeb5897d16..36eaac2773ed 100644 --- a/arch/x86/kernel/sev-shared.c +++ b/arch/x86/kernel/sev-shared.c @@ -28,6 +28,9 @@ struct sev_ghcb_protocol_info { unsigned int vm_proto; }; +/* Returns the negotiated GHCB Protocol version */ +static u64 sev_get_ghcb_proto_ver(void); + static bool __init sev_es_check_cpu_features(void) { if (!has_cpuflag(X86_FEATURE_RDRAND)) { @@ -122,7 +125,7 @@ static enum es_result sev_es_ghcb_hv_call(struct ghcb *ghcb, enum es_result ret; /* Fill in protocol and format specifiers */ - ghcb->protocol_version = GHCB_PROTOCOL_MAX; + ghcb->protocol_version = sev_get_ghcb_proto_ver(); ghcb->ghcb_usage = GHCB_DEFAULT_USAGE; ghcb_set_sw_exit_code(ghcb, exit_code); diff --git a/arch/x86/kernel/sev.c b/arch/x86/kernel/sev.c index 8084bfd7cce1..5d3422e8b25e 100644 --- a/arch/x86/kernel/sev.c +++ b/arch/x86/kernel/sev.c @@ -498,6 +498,11 @@ static enum es_result vc_slow_virt_to_phys(struct ghcb *ghcb, struct es_em_ctxt /* Negotiated GHCB protocol version */ static struct sev_ghcb_protocol_info ghcb_protocol_info __ro_after_init; +static u64 sev_get_ghcb_proto_ver(void) +{ + return ghcb_protocol_info.vm_proto; +} + static noinstr void __sev_put_ghcb(struct ghcb_state *state) { struct sev_es_runtime_data *data; -- 2.31.1
next prev parent reply other threads:[~2021-07-05 8:34 UTC|newest] Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-07-05 8:24 [RFC PATCH 00/12] x86/sev: KEXEC/KDUMP support for SEV-ES guests Joerg Roedel 2021-07-05 8:24 ` [RFC PATCH 01/12] kexec: Allow architecture code to opt-out at runtime Joerg Roedel 2021-07-05 8:24 ` [RFC PATCH 02/12] x86/kexec/64: Forbid kexec when running as an SEV-ES guest Joerg Roedel 2021-07-05 8:24 ` [RFC PATCH 03/12] x86/sev: Save and print negotiated GHCB protocol version Joerg Roedel 2021-07-05 8:24 ` Joerg Roedel [this message] 2021-07-05 8:24 ` [RFC PATCH 05/12] x86/sev: Use GHCB protocol version 2 if supported Joerg Roedel 2021-07-05 8:24 ` [RFC PATCH 06/12] x86/sev: Cache AP Jump Table Address Joerg Roedel 2021-07-05 8:24 ` [RFC PATCH 07/12] x86/sev: Setup code to park APs in the AP Jump Table Joerg Roedel 2021-07-05 8:24 ` [RFC PATCH 08/12] x86/sev: Park APs on AP Jump Table with GHCB protocol version 2 Joerg Roedel 2021-07-05 8:24 ` [RFC PATCH 09/12] x86/sev: Use AP Jump Table blob to stop CPU Joerg Roedel 2021-07-05 8:24 ` [RFC PATCH 10/12] x86/sev: Add MMIO handling support to boot/compressed/ code Joerg Roedel 2021-07-05 8:24 ` [RFC PATCH 11/12] x86/sev: Handle CLFLUSH MMIO events Joerg Roedel 2021-07-05 8:24 ` [RFC PATCH 12/12] x86/sev: Support kexec under SEV-ES with AP Jump Table blob Joerg Roedel
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210705082443.14721-5-joro@8bytes.org \ --to=joro@8bytes.org \ --cc=cfir@google.com \ --cc=dan.j.williams@intel.com \ --cc=dave.hansen@linux.intel.com \ --cc=erdemaktas@google.com \ --cc=hpa@zytor.com \ --cc=jgross@suse.com \ --cc=jroedel@suse.de \ --cc=jslaby@suse.cz \ --cc=keescook@chromium.org \ --cc=kvm@vger.kernel.org \ --cc=linux-coco@lists.linux.dev \ --cc=linux-kernel@vger.kernel.org \ --cc=luto@kernel.org \ --cc=martin.b.radev@gmail.com \ --cc=mhiramat@kernel.org \ --cc=mstunes@vmware.com \ --cc=nivedita@alum.mit.edu \ --cc=peterz@infradead.org \ --cc=rientjes@google.com \ --cc=seanjc@google.com \ --cc=thomas.lendacky@amd.com \ --cc=virtualization@lists.linux-foundation.org \ --cc=x86@kernel.org \ --subject='Re: [RFC PATCH 04/12] x86/sev: Do not hardcode GHCB protocol version' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).