qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] OvmfPkg/PlatformPei: Initialise RCBA (B0:D31:F0 0xf0) register
@ 2015-06-06 19:10 Paulo Alcantara
  2015-06-07  5:13 ` [Qemu-devel] [edk2] " Jordan Justen
                   ` (2 more replies)
  0 siblings, 3 replies; 16+ messages in thread
From: Paulo Alcantara @ 2015-06-06 19:10 UTC (permalink / raw)
  To: edk2-devel; +Cc: Paulo Alcantara, pbonzini, lersek, qemu-devel, mst

This patch initialises root complex register block BAR in order to
support TCO watchdog emulation features (e.g. reboot upon NO_REBOOT bit
not set) on QEMU.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Paulo Alcantara <pcacjr@zytor.com>
---
 OvmfPkg/Include/IndustryStandard/Q35MchIch9.h | 6 ++++++
 OvmfPkg/OvmfPkg.dec                           | 4 ++++
 OvmfPkg/PlatformPei/Platform.c                | 7 +++++++
 OvmfPkg/PlatformPei/PlatformPei.inf           | 1 +
 4 files changed, 18 insertions(+)

diff --git a/OvmfPkg/Include/IndustryStandard/Q35MchIch9.h b/OvmfPkg/Include/IndustryStandard/Q35MchIch9.h
index 4f59a7c..4d42dfa 100644
--- a/OvmfPkg/Include/IndustryStandard/Q35MchIch9.h
+++ b/OvmfPkg/Include/IndustryStandard/Q35MchIch9.h
@@ -90,4 +90,10 @@
 #define ICH9_SMI_EN_APMC_EN      BIT5
 #define ICH9_SMI_EN_GBL_SMI_EN   BIT0
 
+//
+// Root Complex Base Address register
+//
+#define ICH9_RCBA     0xf0
+#define ICH9_RCBA_EN  BIT0
+
 #endif
diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec
index 4cb70dc..a6586f3 100644
--- a/OvmfPkg/OvmfPkg.dec
+++ b/OvmfPkg/OvmfPkg.dec
@@ -78,6 +78,10 @@
   #  to PIIX4 function 3 offset 0x40-0x43 bits [15:6].
   gUefiOvmfPkgTokenSpaceGuid.PcdAcpiPmBaseAddress|0xB000|UINT16|5
 
+  ## This flag determines the Root Complex Register Block BAR, written to Q35
+  #  function 31 offset 0xf0-0xf3 bits [31:14]
+  gUefiOvmfPkgTokenSpaceGuid.PcdRootComplexBaseAddress|0xfed1c000|UINT32|0x1e
+
   ## When VirtioScsiDxe is instantiated for a HBA, the numbers of targets and
   #  LUNs are retrieved from the host during virtio-scsi setup.
   #  MdeModulePkg/Bus/Scsi/ScsiBusDxe then scans all MaxTarget * MaxLun
diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c
index 1126c65..09c9a2c 100644
--- a/OvmfPkg/PlatformPei/Platform.c
+++ b/OvmfPkg/PlatformPei/Platform.c
@@ -261,6 +261,13 @@ MiscInitialization (
       Pmba       = POWER_MGMT_REGISTER_Q35 (ICH9_PMBASE);
       AcpiCtlReg = POWER_MGMT_REGISTER_Q35 (ICH9_ACPI_CNTL);
       AcpiEnBit  = ICH9_ACPI_CNTL_ACPI_EN;
+
+      //
+      // Set Root Complex Register Block BAR
+      //
+      PciWrite32 (POWER_MGMT_REGISTER_Q35 (ICH9_RCBA),
+                  PcdGet32 (PcdRootComplexBaseAddress) | (UINT32)ICH9_RCBA_EN
+                 );
       break;
     default:
       DEBUG ((EFI_D_ERROR, "%a: Unknown Host Bridge Device ID: 0x%04x\n",
diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf b/OvmfPkg/PlatformPei/PlatformPei.inf
index 0307bca..4aa47cc 100644
--- a/OvmfPkg/PlatformPei/PlatformPei.inf
+++ b/OvmfPkg/PlatformPei/PlatformPei.inf
@@ -74,6 +74,7 @@
   gUefiOvmfPkgTokenSpaceGuid.PcdOvmfLockBoxStorageSize
   gUefiOvmfPkgTokenSpaceGuid.PcdGuidedExtractHandlerTableSize
   gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId
+  gUefiOvmfPkgTokenSpaceGuid.PcdRootComplexBaseAddress
   gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdS3AcpiReservedMemorySize
   gEfiMdePkgTokenSpaceGuid.PcdGuidedExtractHandlerTableAddress
   gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2015-06-08 23:54 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-06 19:10 [Qemu-devel] [PATCH] OvmfPkg/PlatformPei: Initialise RCBA (B0:D31:F0 0xf0) register Paulo Alcantara
2015-06-07  5:13 ` [Qemu-devel] [edk2] " Jordan Justen
2015-06-07 14:37   ` Paulo Alcantara
2015-06-07 15:03 ` [Qemu-devel] [PATCH v2] " Paulo Alcantara
2015-06-08 22:07   ` [Qemu-devel] [PATCH v3] " Paulo Alcantara
2015-06-08 22:29     ` Laszlo Ersek
2015-06-08 22:42     ` [Qemu-devel] [PATCH v4] " Paulo Alcantara
2015-06-08 22:46       ` Laszlo Ersek
2015-06-08 22:49     ` [Qemu-devel] [edk2] [PATCH v3] " Jordan Justen
2015-06-08 23:09       ` Laszlo Ersek
2015-06-08 23:30         ` Paulo Alcantara
2015-06-08 23:46           ` Laszlo Ersek
2015-06-08  9:06 ` [Qemu-devel] [PATCH] " Laszlo Ersek
2015-06-08 19:07   ` [Qemu-devel] [edk2] " Jordan Justen
2015-06-08 21:02     ` Laszlo Ersek
2015-06-08 21:26   ` [Qemu-devel] " Paulo Alcantara

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).