Blame SOURCES/0032-Revert-OvmfPkg-PlatformDxe-Handle-all-requests-in-Ex.patch

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