From: Tianyu Lan <ltykernel@gmail.com>
To: luto@kernel.org, tglx@linutronix.de, mingo@redhat.com,
bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org,
hpa@zytor.com, seanjc@google.com, pbonzini@redhat.com,
jgross@suse.com, tiala@microsoft.com, kirill@shutemov.name,
jiangshan.ljs@antgroup.com, peterz@infradead.org,
ashish.kalra@amd.com, srutherford@google.com,
akpm@linux-foundation.org, anshuman.khandual@arm.com,
pawan.kumar.gupta@linux.intel.com, adrian.hunter@intel.com,
daniel.sneddon@linux.intel.com,
alexander.shishkin@linux.intel.com, sandipan.das@amd.com,
ray.huang@amd.com, brijesh.singh@amd.com, michael.roth@amd.com,
thomas.lendacky@amd.com, venu.busireddy@oracle.com,
sterritt@google.com, tony.luck@intel.com,
samitolvanen@google.com, fenghua.yu@intel.com
Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
linux-hyperv@vger.kernel.org, linux-arch@vger.kernel.org
Subject: [RFC PATCH 01/17] x86/boot: Check boot param's cc_blob_address for direct boot mode
Date: Wed, 9 Nov 2022 15:53:36 -0500 [thread overview]
Message-ID: <20221109205353.984745-2-ltykernel@gmail.com> (raw)
In-Reply-To: <20221109205353.984745-1-ltykernel@gmail.com>
From: Tianyu Lan <tiala@microsoft.com>
Hypervisor may pass cc blob address directly into boot param's cc
blob address in the direct boot mode. Check cc blcb hdr magic first
in the sev_enable() and use it as cc blob address if check successfully.
Signed-off-by: Tianyu Lan <tiala@microsoft.com>
---
arch/x86/boot/compressed/sev.c | 27 ++++++++++++++++++++-------
1 file changed, 20 insertions(+), 7 deletions(-)
diff --git a/arch/x86/boot/compressed/sev.c b/arch/x86/boot/compressed/sev.c
index c93930d5ccbd..960968f8bf75 100644
--- a/arch/x86/boot/compressed/sev.c
+++ b/arch/x86/boot/compressed/sev.c
@@ -272,17 +272,24 @@ static void enforce_vmpl0(void)
void sev_enable(struct boot_params *bp)
{
+ struct cc_blob_sev_info *cc_info;
unsigned int eax, ebx, ecx, edx;
struct msr m;
bool snp;
/*
- * bp->cc_blob_address should only be set by boot/compressed kernel.
- * Initialize it to 0 to ensure that uninitialized values from
- * buggy bootloaders aren't propagated.
+ * bp->cc_blob_address should only be set by boot/compressed
+ * kernel and hypervisor with direct boot mode. Initialize it
+ * to 0 after checking in order to ensure that uninitialized
+ * values from buggy bootloaders aren't propagated.
*/
- if (bp)
- bp->cc_blob_address = 0;
+ if (bp) {
+ cc_info = (struct cc_blob_sev_info *)(unsigned long)
+ bp->cc_blob_address;
+
+ if (cc_info->magic != CC_BLOB_SEV_HDR_MAGIC)
+ bp->cc_blob_address = 0;
+ }
/*
* Setup/preliminary detection of SNP. This will be sanity-checked
@@ -374,6 +381,10 @@ static struct cc_blob_sev_info *find_cc_blob(struct boot_params *bp)
{
struct cc_blob_sev_info *cc_info;
+ /* Boot kernel would have passed the CC blob via boot_params. */
+ if (bp->cc_blob_address)
+ return (struct cc_blob_sev_info *)(unsigned long)bp->cc_blob_address;
+
cc_info = find_cc_blob_efi(bp);
if (cc_info)
goto found_cc_info;
@@ -416,9 +427,11 @@ bool snp_init(struct boot_params *bp)
/*
* Pass run-time kernel a pointer to CC info via boot_params so EFI
* config table doesn't need to be searched again during early startup
- * phase.
+ * phase. Hypervisor also may popualte cc_blob_address directyly
+ * in direct boot mode.
*/
- bp->cc_blob_address = (u32)(unsigned long)cc_info;
+ if (!bp->cc_blob_address)
+ bp->cc_blob_address = (u32)(unsigned long)cc_info;
return true;
}
--
2.25.1
next prev parent reply other threads:[~2022-11-09 20:54 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-09 20:53 [RFC PATCH 00/17] x86/hyperv/sev: Add AMD sev-snp enlightened guest support on hyperv Tianyu Lan
2022-11-09 20:53 ` Tianyu Lan [this message]
2022-11-09 23:39 ` [RFC PATCH 01/17] x86/boot: Check boot param's cc_blob_address for direct boot mode Michael Roth
2022-11-10 15:01 ` Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 02/17] x86/sev: Pvalidate memory gab for decompressing kernel Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 03/17] x86/hyperv: Add sev-snp enlightened guest specific config Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 04/17] x86/hyperv: apic change for sev-snp enlightened guest Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 05/17] x86/hyperv: Decrypt hv vp assist page in " Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 06/17] x86/hyperv: Get Virtual Trust Level via hvcall Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 07/17] x86/hyperv: Use vmmcall to implement hvcall in sev-snp enlightened guest Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 08/17] clocksource: hyper-v: decrypt hyperv tsc page " Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 09/17] x86/hyperv: decrypt vmbus pages for " Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 10/17] x86/hyperv: set target vtl in the vmbus init message Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 11/17] drivers: hv: Decrypt percpu hvcall input arg page in sev-snp enlightened guest Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 12/17] Drivers: hv: vmbus: Decrypt vmbus ring buffer Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 13/17] x86/hyperv: Initialize cpu and memory for sev-snp enlightened guest Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 14/17] x86/hyperv: Add smp support for sev-snp guest Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 15/17] x86/hyperv: Add hyperv-specific hadling for VMMCALL under SEV-ES Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 16/17] x86/sev: Add a #HV exception handler Tianyu Lan
2022-11-10 20:38 ` Kalra, Ashish
2022-11-14 1:28 ` Tianyu Lan
2022-11-09 20:53 ` [RFC PATCH 17/17] x86/sev: Initialize #HV doorbell and handle interrupt requests Tianyu Lan
2022-11-10 21:36 ` Kalra, Ashish
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=20221109205353.984745-2-ltykernel@gmail.com \
--to=ltykernel@gmail.com \
--cc=adrian.hunter@intel.com \
--cc=akpm@linux-foundation.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=anshuman.khandual@arm.com \
--cc=ashish.kalra@amd.com \
--cc=bp@alien8.de \
--cc=brijesh.singh@amd.com \
--cc=daniel.sneddon@linux.intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=fenghua.yu@intel.com \
--cc=hpa@zytor.com \
--cc=jgross@suse.com \
--cc=jiangshan.ljs@antgroup.com \
--cc=kirill@shutemov.name \
--cc=kvm@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=michael.roth@amd.com \
--cc=mingo@redhat.com \
--cc=pawan.kumar.gupta@linux.intel.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=ray.huang@amd.com \
--cc=samitolvanen@google.com \
--cc=sandipan.das@amd.com \
--cc=seanjc@google.com \
--cc=srutherford@google.com \
--cc=sterritt@google.com \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=tiala@microsoft.com \
--cc=tony.luck@intel.com \
--cc=venu.busireddy@oracle.com \
--cc=x86@kernel.org \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.