On Sun, Feb 06, 2022 at 08:38:19PM +0100, Borislav Petkov wrote: > On Fri, Jan 28, 2022 at 11:17:58AM -0600, Brijesh Singh wrote: > > +static __init struct cc_blob_sev_info *snp_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) { > > + cc_info = (struct cc_blob_sev_info *)(unsigned long)bp->cc_blob_address; > > + goto found_cc_info; > > + } > > What is the difference here, why aren't you looking for the blob in an > EFI table? > > Even if you're booted directly by firmware, there should still be EFI > there or? > > And if so, then I think you should share some of the code through > sev-shared.c so that there's not so much duplication... In order to scan EFI this early in the boot of kernel proper, we'd need to pull in the helpers from arch/x86/boot/compressed/efi.c, since the normal EFI facilities don't get set up until later. It's doable, but since any entry via boot/compressed kernel will have already done that work and stashed it in boot_params->cc_blob_address, it seems like it would only introduce more complexity and potential for breakage. For direct entry to kernel proper, our thinking is that it would be for things like the PVH entry path: https://stefano-garzarella.github.io/posts/2019-08-23-qemu-linux-kernel-pvh/ which doesn't use EFI, or other container-focused applications which use lightweight non-EFI firmwares like qboot. So to support direct entry into kernel proper, relying on the CC blob setup_data structure instead seems more suited for these cases, so that's why kernel proper only uses the setup_data structure and relies on boot/compressed to handle EFI entry. > > -- > Regards/Gruss, > Boris. > > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpeople.kernel.org%2Ftglx%2Fnotes-about-netiquette&data=04%7C01%7Cmichael.roth%40amd.com%7Ccb8e665b2ed14dbd400c08d9e9a841ff%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637797731199858639%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=5Pd7PA4BdfnfWzcXpah8HkrtVfu4h6nUIR8b3mB%2BIxM%3D&reserved=0