[edk2-devel] [PATCH v2 2/6] OvmfPkg/AmdSev: add Grub Firmware Volume Package

James Bottomley jejb at linux.ibm.com
Wed Nov 25 17:09:28 UTC 2020


On Wed, 2020-11-25 at 08:02 -0800, James Bottomley wrote:
> On Wed, 2020-11-25 at 15:01 +0100, Laszlo Ersek wrote:
> > This upgrade gave me kernel 5.8.18-100.fc31.x86_64 in the guest --
> > and this one does *not* crash. From your boot log below, I see your
> > guest kernel is 5.5.0; I suggest upgrading it.
> 
> Heh, that's easier said than done ... I always make my encrypted
> images too small to upgrade a kernel easily.  Anyway, after doing the
> remove and add stuff dance, I finally got it upgraded to the latest
> debian testing linux-image-5.8.0-3 it's still crashing although with
> a slightly different traceback.  It looks like there might be
> something additional in the fedora 5.8 kernel that fixes this.  I'm
> going to try out upstream kernels next.

I've got the upstream kernel booting through OVMF with a qemu -kernel
command line.  I also have a fix: it's not to delete the dummy variable
which was part of the ancient x86 anti bricking code (which is also why
arm64 doesn't have the problem).

If you remove the set variable in arch/x86/platform/efi/quirks.c:

/*
 * Deleting the dummy variable which kicks off garbage collection
*/
void efi_delete_dummy_variable(void)
{
	efi.set_variable_nonblocking((efi_char16_t *)efi_dummy_name,
				     &EFI_DUMMY_GUID,
				     EFI_VARIABLE_NON_VOLATILE |
				     EFI_VARIABLE_BOOTSERVICE_ACCESS |
				     EFI_VARIABLE_RUNTIME_ACCESS, 0, NULL);
}

The kernel will boot.  I'm not sure why we have this deletion
unconditionally in efi_enter_virtual_mode, but removing the call with
the patch below allows the kernel to boot.

However, once the kernel has booted, any attempt to write to an EFI
variable results in this:

[  975.440240] [Firmware Bug]: Page fault caused by firmware at PA: 0x7e450020

And then the efi runtime gets disabled.

James

---

diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index 8a26e705cb06..dfae61f07196 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -844,7 +844,7 @@ static void __init __efi_enter_virtual_mode(void)
 	efi_runtime_update_mappings();
 
 	/* clean DUMMY object */
-	efi_delete_dummy_variable();
+	//efi_delete_dummy_variable();
 	return;
 
 err:



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#67991): https://edk2.groups.io/g/devel/message/67991
Mute This Topic: https://groups.io/mt/78455898/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list