From b6a0dcb7a035aef12e1466fd1017194b9430c948 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Tue, 13 Dec 2022 10:31:05 +0100 Subject: Revert "OvmfPkg/PlatformDxe: Handle all requests in ExtractConfig and RouteConfig" This reverts commit aefcc91805fd69e4aad4bc08a9f708db11cae5f0. Fixes regression, patch breaks setting display resolution via ovmf platform config. Signed-off-by: Gerd Hoffmann --- OvmfPkg/PlatformDxe/Platform.c | 115 +-------------------------- OvmfPkg/PlatformDxe/PlatformConfig.c | 2 +- OvmfPkg/PlatformDxe/PlatformConfig.h | 2 - 3 files changed, 3 insertions(+), 116 deletions(-) diff --git a/OvmfPkg/PlatformDxe/Platform.c b/OvmfPkg/PlatformDxe/Platform.c index ac31fafbdc..4d432f18df 100644 --- a/OvmfPkg/PlatformDxe/Platform.c +++ b/OvmfPkg/PlatformDxe/Platform.c @@ -108,11 +108,6 @@ STATIC EFI_EVENT mGopEvent; // STATIC VOID *mGopTracker; -// -// The driver image handle, used to obtain the device path for . -// -STATIC EFI_HANDLE mImageHandle; - // // Cache the resolutions we get from the GOP. // @@ -234,10 +229,6 @@ ExtractConfig ( { MAIN_FORM_STATE MainFormState; EFI_STATUS Status; - EFI_STRING ConfigRequestHdr; - EFI_STRING ConfigRequest; - UINTN Size; - BOOLEAN AllocatedRequest; DEBUG ((DEBUG_VERBOSE, "%a: Request=\"%s\"\n", __FUNCTION__, Request)); @@ -245,73 +236,18 @@ ExtractConfig ( return EFI_INVALID_PARAMETER; } - ConfigRequestHdr = NULL; - ConfigRequest = NULL; - Size = 0; - AllocatedRequest = FALSE; - - // - // Check if matches the GUID and name - // - *Progress = Request; - if ((Request != NULL) && - !HiiIsConfigHdrMatch ( - Request, - &gOvmfPlatformConfigGuid, - mVariableName - ) - ) - { - return EFI_NOT_FOUND; - } - Status = PlatformConfigToFormState (&MainFormState); if (EFI_ERROR (Status)) { + *Progress = Request; return Status; } - if ((Request == NULL) || (StrStr (Request, L"OFFSET") == NULL)) { - // - // Request has no , so construct full request string. - // Allocate and fill a buffer large enough to hold - // followed by "&OFFSET=0&WIDTH=WWWWWWWWWWWWWWWW" followed by a - // null terminator. - // - ConfigRequestHdr = HiiConstructConfigHdr ( - &gOvmfPlatformConfigGuid, - mVariableName, - mImageHandle - ); - if (ConfigRequestHdr == NULL) { - return EFI_OUT_OF_RESOURCES; - } - - Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); - ConfigRequest = AllocateZeroPool (Size); - AllocatedRequest = TRUE; - if (ConfigRequest == NULL) { - FreePool (ConfigRequestHdr); - return EFI_OUT_OF_RESOURCES; - } - - UnicodeSPrint ( - ConfigRequest, - Size, - L"%s&OFFSET=0&WIDTH=%016LX", - ConfigRequestHdr, - sizeof MainFormState - ); - FreePool (ConfigRequestHdr); - } else { - ConfigRequest = Request; - } - // // Answer the textual request keying off the binary form state. // Status = gHiiConfigRouting->BlockToConfig ( gHiiConfigRouting, - ConfigRequest, + Request, (VOID *)&MainFormState, sizeof MainFormState, Results, @@ -329,33 +265,6 @@ ExtractConfig ( DEBUG ((DEBUG_VERBOSE, "%a: Results=\"%s\"\n", __FUNCTION__, *Results)); } - // - // If we used a newly allocated ConfigRequest, update Progress to point to - // original Request instead of ConfigRequest. - // - if (Request == NULL) { - *Progress = NULL; - } else if (StrStr (Request, L"OFFSET") == NULL) { - if (EFI_ERROR (Status)) { - // - // Since we constructed ConfigRequest, failure can only occur if there - // is not enough memory. In this case, we point Progress to the first - // character of Request. - // - *Progress = Request; - } else { - // - // In case of success, we point Progress to the null terminator of - // Request. - // - *Progress = Request + StrLen (Request); - } - } - - if (AllocatedRequest) { - FreePool (ConfigRequest); - } - return Status; } @@ -439,21 +348,6 @@ RouteConfig ( return EFI_INVALID_PARAMETER; } - // - // Check if matches the GUID and name - // - *Progress = Configuration; - if ((Configuration != NULL) && - !HiiIsConfigHdrMatch ( - Configuration, - &gOvmfPlatformConfigGuid, - mVariableName - ) - ) - { - return EFI_NOT_FOUND; - } - // // the "read" step in RMW // @@ -972,11 +866,6 @@ PlatformInit ( return Status; } - // - // Save the driver image handle. - // - mImageHandle = ImageHandle; - // // Publish the HII package list to HII Database. // diff --git a/OvmfPkg/PlatformDxe/PlatformConfig.c b/OvmfPkg/PlatformDxe/PlatformConfig.c index f5ac2d0609..e202ac5b47 100644 --- a/OvmfPkg/PlatformDxe/PlatformConfig.c +++ b/OvmfPkg/PlatformDxe/PlatformConfig.c @@ -21,7 +21,7 @@ // // Name of the UEFI variable that we use for persistent storage. // -CHAR16 mVariableName[] = L"PlatformConfig"; +STATIC CHAR16 mVariableName[] = L"PlatformConfig"; /** Serialize and persistently save platform configuration. diff --git a/OvmfPkg/PlatformDxe/PlatformConfig.h b/OvmfPkg/PlatformDxe/PlatformConfig.h index 5d9b457b1b..902c9b2ce0 100644 --- a/OvmfPkg/PlatformDxe/PlatformConfig.h +++ b/OvmfPkg/PlatformDxe/PlatformConfig.h @@ -50,6 +50,4 @@ PlatformConfigLoad ( #define PLATFORM_CONFIG_F_GRAPHICS_RESOLUTION BIT0 #define PLATFORM_CONFIG_F_DOWNGRADE BIT63 -extern CHAR16 mVariableName[]; - #endif // _PLATFORM_CONFIG_H_ -- 2.38.1