* [PATCH 0/2] OvmfPkg/QemuBootOrderLib: StoreQemuBootOrder bugfix
@ 2022-09-21 5:30 Gerd Hoffmann
2022-09-21 5:30 ` [PATCH 1/2] OvmfPkg/QemuBootOrderLib: allow slash in rom filenames Gerd Hoffmann
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Gerd Hoffmann @ 2022-09-21 5:30 UTC (permalink / raw)
To: devel
Cc: Jordan Justen, Gerd Hoffmann, Oliver Steffen, Ard Biesheuvel,
Pawel Polawski, Jiewen Yao
Gerd Hoffmann (2):
OvmfPkg/QemuBootOrderLib: allow slash in rom filenames
OvmfPkg/QemuBootOrderLib: skip over unsupported entries in
StoreQemuBootOrder
.../QemuBootOrderLib/QemuBootOrderLib.c | 75 ++++++++++++-------
1 file changed, 48 insertions(+), 27 deletions(-)
--
2.37.3
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] OvmfPkg/QemuBootOrderLib: allow slash in rom filenames
2022-09-21 5:30 [PATCH 0/2] OvmfPkg/QemuBootOrderLib: StoreQemuBootOrder bugfix Gerd Hoffmann
@ 2022-09-21 5:30 ` Gerd Hoffmann
2022-09-21 5:30 ` [PATCH 2/2] OvmfPkg/QemuBootOrderLib: skip over unsupported entries in StoreQemuBootOrder Gerd Hoffmann
2022-09-28 10:49 ` [PATCH 0/2] OvmfPkg/QemuBootOrderLib: StoreQemuBootOrder bugfix Ard Biesheuvel
2 siblings, 0 replies; 4+ messages in thread
From: Gerd Hoffmann @ 2022-09-21 5:30 UTC (permalink / raw)
To: devel
Cc: Jordan Justen, Gerd Hoffmann, Oliver Steffen, Ard Biesheuvel,
Pawel Polawski, Jiewen Yao
See comment for details. Needed to avoid the parser abort,
so we can continue parsing the bootorder fw_cfg file.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
.../QemuBootOrderLib/QemuBootOrderLib.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.c b/OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.c
index 398de7fab4ba..374c6d8f5e91 100644
--- a/OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.c
+++ b/OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.c
@@ -432,6 +432,8 @@ ParseOfwNode (
OUT BOOLEAN *IsFinal
)
{
+ BOOLEAN AcceptSlash = FALSE;
+
//
// A leading slash is expected. End of string is tolerated.
//
@@ -464,6 +466,21 @@ ParseOfwNode (
return RETURN_INVALID_PARAMETER;
}
+ if (SubstringEq (OfwNode->DriverName, "rom")) {
+ //
+ // bug compatibility hack
+ //
+ // qemu passes fw_cfg filenames as rom unit address.
+ // The filenames have slashes:
+ // /rom@genroms/linuxboot_dma.bin
+ //
+ // Alow slashes in the unit address to avoid the parser trip up,
+ // so we can successfully parse the following lines (the rom
+ // entries themself are ignored).
+ //
+ AcceptSlash = TRUE;
+ }
+
//
// unit-address
//
@@ -475,7 +492,7 @@ ParseOfwNode (
OfwNode->UnitAddress.Ptr = *Ptr;
OfwNode->UnitAddress.Len = 0;
- while (IsPrintNotDelim (**Ptr)) {
+ while (IsPrintNotDelim (**Ptr) || (AcceptSlash && **Ptr == '/')) {
++*Ptr;
++OfwNode->UnitAddress.Len;
}
--
2.37.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] OvmfPkg/QemuBootOrderLib: skip over unsupported entries in StoreQemuBootOrder
2022-09-21 5:30 [PATCH 0/2] OvmfPkg/QemuBootOrderLib: StoreQemuBootOrder bugfix Gerd Hoffmann
2022-09-21 5:30 ` [PATCH 1/2] OvmfPkg/QemuBootOrderLib: allow slash in rom filenames Gerd Hoffmann
@ 2022-09-21 5:30 ` Gerd Hoffmann
2022-09-28 10:49 ` [PATCH 0/2] OvmfPkg/QemuBootOrderLib: StoreQemuBootOrder bugfix Ard Biesheuvel
2 siblings, 0 replies; 4+ messages in thread
From: Gerd Hoffmann @ 2022-09-21 5:30 UTC (permalink / raw)
To: devel
Cc: Jordan Justen, Gerd Hoffmann, Oliver Steffen, Ard Biesheuvel,
Pawel Polawski, Jiewen Yao
When finding an unsupported entry just skip over and continue
with the next entry instead of stop processing altogether.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
.../QemuBootOrderLib/QemuBootOrderLib.c | 56 ++++++++++---------
1 file changed, 30 insertions(+), 26 deletions(-)
diff --git a/OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.c b/OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.c
index 374c6d8f5e91..18646daa67e3 100644
--- a/OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.c
+++ b/OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.c
@@ -1775,35 +1775,39 @@ StoreQemuBootOrder (
Translated,
&TranslatedSize
);
- while (!RETURN_ERROR (Status)) {
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ while (Status == EFI_SUCCESS ||
+ Status == EFI_UNSUPPORTED)
+ {
+ if (Status == EFI_SUCCESS) {
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- //
- // Convert the UEFI devpath prefix to binary representation.
- //
- ASSERT (Translated[TranslatedSize] == L'\0');
- DevicePath = ConvertTextToDevicePath (Translated);
- if (DevicePath == NULL) {
- Status = RETURN_OUT_OF_RESOURCES;
- goto FreeExtraPciRoots;
+ //
+ // Convert the UEFI devpath prefix to binary representation.
+ //
+ ASSERT (Translated[TranslatedSize] == L'\0');
+ DevicePath = ConvertTextToDevicePath (Translated);
+ if (DevicePath == NULL) {
+ Status = RETURN_OUT_OF_RESOURCES;
+ goto FreeExtraPciRoots;
+ }
+
+ UnicodeSPrint (
+ VariableName,
+ sizeof (VariableName),
+ L"QemuBootOrder%04d",
+ VariableIndex++
+ );
+ DEBUG ((DEBUG_INFO, "%a: %s = %s\n", __FUNCTION__, VariableName, Translated));
+ gRT->SetVariable (
+ VariableName,
+ &gQemuBootOrderGuid,
+ EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
+ GetDevicePathSize (DevicePath),
+ DevicePath
+ );
+ FreePool (DevicePath);
}
- UnicodeSPrint (
- VariableName,
- sizeof (VariableName),
- L"QemuBootOrder%04d",
- VariableIndex++
- );
- DEBUG ((DEBUG_INFO, "%a: %s = %s\n", __FUNCTION__, VariableName, Translated));
- gRT->SetVariable (
- VariableName,
- &gQemuBootOrderGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
- GetDevicePathSize (DevicePath),
- DevicePath
- );
- FreePool (DevicePath);
-
//
// Move to the next OFW devpath.
//
--
2.37.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 0/2] OvmfPkg/QemuBootOrderLib: StoreQemuBootOrder bugfix
2022-09-21 5:30 [PATCH 0/2] OvmfPkg/QemuBootOrderLib: StoreQemuBootOrder bugfix Gerd Hoffmann
2022-09-21 5:30 ` [PATCH 1/2] OvmfPkg/QemuBootOrderLib: allow slash in rom filenames Gerd Hoffmann
2022-09-21 5:30 ` [PATCH 2/2] OvmfPkg/QemuBootOrderLib: skip over unsupported entries in StoreQemuBootOrder Gerd Hoffmann
@ 2022-09-28 10:49 ` Ard Biesheuvel
2 siblings, 0 replies; 4+ messages in thread
From: Ard Biesheuvel @ 2022-09-28 10:49 UTC (permalink / raw)
To: Gerd Hoffmann
Cc: devel, Jordan Justen, Oliver Steffen, Ard Biesheuvel,
Pawel Polawski, Jiewen Yao
On Wed, 21 Sept 2022 at 07:30, Gerd Hoffmann <kraxel@redhat.com> wrote:
>
>
>
> Gerd Hoffmann (2):
> OvmfPkg/QemuBootOrderLib: allow slash in rom filenames
> OvmfPkg/QemuBootOrderLib: skip over unsupported entries in
> StoreQemuBootOrder
>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Merged as #3425
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-09-28 10:49 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-21 5:30 [PATCH 0/2] OvmfPkg/QemuBootOrderLib: StoreQemuBootOrder bugfix Gerd Hoffmann
2022-09-21 5:30 ` [PATCH 1/2] OvmfPkg/QemuBootOrderLib: allow slash in rom filenames Gerd Hoffmann
2022-09-21 5:30 ` [PATCH 2/2] OvmfPkg/QemuBootOrderLib: skip over unsupported entries in StoreQemuBootOrder Gerd Hoffmann
2022-09-28 10:49 ` [PATCH 0/2] OvmfPkg/QemuBootOrderLib: StoreQemuBootOrder bugfix Ard Biesheuvel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox