]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg: introduce PcdQ35SmramAtDefaultSmbase
authorLaszlo Ersek <lersek@redhat.com>
Fri, 20 Sep 2019 08:56:47 +0000 (10:56 +0200)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Wed, 5 Feb 2020 12:59:32 +0000 (12:59 +0000)
For supporting VCPU hotplug with SMM enabled/required, QEMU offers the
(dynamically detectable) feature called "SMRAM at default SMBASE". When
the feature is enabled, the firmware can lock down the 128 KB range
starting at the default SMBASE; that is, the [0x3_0000, 0x4_FFFF]
interval. The goal is to shield the very first SMI handler of the
hotplugged VCPU from OS influence.

Multiple modules in OVMF will have to inter-operate for locking down this
range. Introduce a dynamic PCD that will reflect the feature (to be
negotiated by PlatformPei), for coordination between drivers.

Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1512
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Message-Id: <20200129214412.2361-2-lersek@redhat.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
OvmfPkg/OvmfPkg.dec
OvmfPkg/OvmfPkgIa32.dsc
OvmfPkg/OvmfPkgIa32X64.dsc
OvmfPkg/OvmfPkgX64.dsc

index d5fee805ef4a12d7c469377be92b157c8d58e813..57034c784f88b2757736bdcaa6afe64fd4c64d66 100644 (file)
   #  This PCD is only accessed if PcdSmmSmramRequire is TRUE (see below).\r
   gUefiOvmfPkgTokenSpaceGuid.PcdQ35TsegMbytes|8|UINT16|0x20\r
 \r
+  ## Set to TRUE by PlatformPei if the Q35 board supports the "SMRAM at default\r
+  #  SMBASE" feature.\r
+  #\r
+  #  This PCD is only accessed if PcdSmmSmramRequire is TRUE (see below).\r
+  gUefiOvmfPkgTokenSpaceGuid.PcdQ35SmramAtDefaultSmbase|FALSE|BOOLEAN|0x34\r
+\r
 [PcdsFeatureFlag]\r
   gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderPciTranslation|TRUE|BOOLEAN|0x1c\r
   gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderMmioTranslation|FALSE|BOOLEAN|0x1d\r
index 4568b78cadf180506dcd33c79f74eb487d325fa4..43ff51933609fdcf063905a7887fde381038a16c 100644 (file)
 \r
 !if $(SMM_REQUIRE) == TRUE\r
   gUefiOvmfPkgTokenSpaceGuid.PcdQ35TsegMbytes|8\r
+  gUefiOvmfPkgTokenSpaceGuid.PcdQ35SmramAtDefaultSmbase|FALSE\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode|0x01\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmApSyncTimeout|100000\r
 !endif\r
index 152b5d067116eda47ae9adce7a9e776ef9c12131..5b3e217e9220c7589952dc396ef2bbc4cd856900 100644 (file)
 \r
 !if $(SMM_REQUIRE) == TRUE\r
   gUefiOvmfPkgTokenSpaceGuid.PcdQ35TsegMbytes|8\r
+  gUefiOvmfPkgTokenSpaceGuid.PcdQ35SmramAtDefaultSmbase|FALSE\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode|0x01\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmApSyncTimeout|100000\r
 !endif\r
index 4bfad441bd9fa425e316b0d3679e6b259b41d79a..a378d0a449aaa21866c22ddf5637798571bdce26 100644 (file)
 \r
 !if $(SMM_REQUIRE) == TRUE\r
   gUefiOvmfPkgTokenSpaceGuid.PcdQ35TsegMbytes|8\r
+  gUefiOvmfPkgTokenSpaceGuid.PcdQ35SmramAtDefaultSmbase|FALSE\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode|0x01\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmApSyncTimeout|100000\r
 !endif\r