]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/XenResetVector: Saving start of day pointer for PVH guests
authorAnthony PERARD <anthony.perard@citrix.com>
Tue, 13 Aug 2019 11:30:51 +0000 (12:30 +0100)
committerLaszlo Ersek <lersek@redhat.com>
Wed, 21 Aug 2019 16:03:49 +0000 (18:03 +0200)
As described in the Xen PVH documentation [1], "ebx: contains the
physical memory address where the loader has placed the boot start info
structure". To have this pointer saved to be able to use it later in the
PEI phase, we allocate some space in the MEMFD for it. We use 'XPVH' as
a signature (for "Xen PVH").

[1] https://xenbits.xenproject.org/docs/unstable/misc/pvh.html

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1689
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <20190813113119.14804-8-anthony.perard@citrix.com>

OvmfPkg/OvmfPkg.dec
OvmfPkg/OvmfXen.fdf
OvmfPkg/XenResetVector/Ia32/XenPVHMain.asm
OvmfPkg/XenResetVector/XenResetVector.inf
OvmfPkg/XenResetVector/XenResetVector.nasmb

index 9640360f62455aeeb6f455bb5d3c982a62823e02..c2a2ebfb958740d1c6942d1fc977b55f67ee4984 100644 (file)
   #  The value should be a multiple of 4KB.\r
   gUefiOvmfPkgTokenSpaceGuid.PcdHighPmmMemorySize|0x400000|UINT32|0x31\r
 \r
+  gUefiOvmfPkgTokenSpaceGuid.PcdXenPvhStartOfDayStructPtr|0x0|UINT32|0x17\r
+  gUefiOvmfPkgTokenSpaceGuid.PcdXenPvhStartOfDayStructPtrSize|0x0|UINT32|0x32\r
+\r
 [PcdsDynamic, PcdsDynamicEx]\r
   gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2\r
   gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10\r
index 43c268f6cb4e2b3fd963426e3644ba494691a9ce..49997fee9b79a4e6ed25e0dbea4542742d53903a 100644 (file)
@@ -172,6 +172,10 @@ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfLockBoxStorageBase|gUefiOvmfPkgTokenSpaceGuid.
 0x007000|0x001000\r
 gEfiMdePkgTokenSpaceGuid.PcdGuidedExtractHandlerTableAddress|gUefiOvmfPkgTokenSpaceGuid.PcdGuidedExtractHandlerTableSize\r
 \r
+0x008000|0x001000\r
+# Used by XenResetVector to communicate with XenPlatformPei\r
+gUefiOvmfPkgTokenSpaceGuid.PcdXenPvhStartOfDayStructPtr|gUefiOvmfPkgTokenSpaceGuid.PcdXenPvhStartOfDayStructPtrSize\r
+\r
 0x010000|0x010000\r
 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize\r
 \r
index 2a17fed52fe378ff04647a56f510011daea9e1f4..f42df3dba2c0f8acb1f967ee68acf89e3d32e303 100644 (file)
@@ -22,6 +22,12 @@ xenPVHMain:
     ;\r
     xor     esp, esp\r
 \r
+    ;\r
+    ; Store "Start of day" struct pointer for later use\r
+    ;\r
+    mov     dword[PVH_SPACE (0)], ebx\r
+    mov     dword[PVH_SPACE (4)], 'XPVH'\r
+\r
     mov     ebx, ADDR_OF(gdtr)\r
     lgdt    [ebx]\r
 \r
index 097fc9b5b4110ad2ff915db24bd5012c92679151..46b133a834de92480f68d7084dc62b22433aaf4b 100644 (file)
@@ -36,3 +36,6 @@
 [Pcd]\r
   gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase\r
   gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize\r
+\r
+  gUefiOvmfPkgTokenSpaceGuid.PcdXenPvhStartOfDayStructPtr\r
+  gUefiOvmfPkgTokenSpaceGuid.PcdXenPvhStartOfDayStructPtrSize\r
index 0dbc4f2c1dea3bb4869e61dea8778eac9b5b1b43..b2cb405d5465ffe79d800024625636ddbb2a6c6f 100644 (file)
@@ -34,6 +34,8 @@
 \r
 %include "CommonMacros.inc"\r
 \r
+%define PVH_SPACE(Offset) (FixedPcdGet32 (PcdXenPvhStartOfDayStructPtr) + (Offset))\r
+\r
 %include "PostCodes.inc"\r
 \r
 %ifdef DEBUG_PORT80\r