Patches 1 to 6 upgrade the FADT to ACPI 2.0 and present the PIIX3 Reset
Control Register in it.
Patches 7 and 8 make sure that the ResetSystem(EfiResetCold) runtime
service provided by OVMF utilizes the PIIX3 RCR too.
The series is bisectable.
I have tested the end result with Fedora 18, RHEL-6.3, and Windows 8
guests. At the end of this email the guest-visible FADTs are compared
(dumped in F18). Reset continues to work too when invoked from the Boot
Maintenance Manager.
Laszlo Ersek (8):
OvmfPkg: bump commonly used ACPI table revision numbers
OvmfPkg: fold macros of unsupported PM1b register blocks into
Facp.aslc
OvmfPkg: fold macros of unsupported PM2 control reg. block into
Facp.aslc
OvmfPkg: fold macros of unsupported GPE1 register block into
Facp.aslc
OvmfPkg: upgrade the FADT to ACPI 2.0 without functional changes
OvmfPkg: report support for the PIIX3 reset register in the FADT
OvmfPkg: attempt to trigger cold reset through PIIX3 reset control
register
OvmfPkg: make sure ResetCold() and ResetWarm() never return
OvmfPkg/AcpiTables/Platform.h | 34 ++++++++++-----
OvmfPkg/Library/ResetSystemLib/ResetSystemLib.c | 8 +++-
OvmfPkg/AcpiTables/Facp.aslc | 46 +++++++++++++-------
OvmfPkg/Library/ResetSystemLib/ResetSystemLib.inf | 2 +-
4 files changed, 60 insertions(+), 30 deletions(-)
--- before/FACP.dsl 2013-02-22 02:20:48.000000000 +0100
+++ after/FACP.dsl 2013-02-22 03:54:30.000000000 +0100
@@ -1,95 +1,171 @@
/*
* Intel ACPI Component Architecture
* AML Disassembler version 20090123
*
- * Disassembly of FACP.aml, Fri Feb 22 02:20:48 2013
+ * Disassembly of FACP.aml, Fri Feb 22 03:54:30 2013
*
* ACPI Data Table [FACP]
*
* Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue
*/
[000h 000 4] Signature : "FACP" /* Fixed ACPI
Description Table */
-[004h 004 4] Table Length : 00000074
-[008h 008 1] Revision : 01
-[009h 009 1] Checksum : 98
+[004h 004 4] Table Length : 000000F4
+[008h 008 1] Revision : 03
+[009h 009 1] Checksum : 23
[00Ah 010 6] Oem ID : "OVMF "
[010h 016 8] Oem Table ID : "OVMFEDK2"
-[018h 024 4] Oem Revision : 20120804
+[018h 024 4] Oem Revision : 20130221
[01Ch 028 4] Asl Compiler ID : "OVMF"
-[020h 032 4] Asl Compiler Revision : 00000098
+[020h 032 4] Asl Compiler Revision : 00000099
[024h 036 4] FACS Address : 3FB63000
[028h 040 4] DSDT Address : 3FB5B000
-[02Ch 044 1] Model : 01
+[02Ch 044 1] Model : 00
[02Dh 045 1] PM Profile : 00
[02Eh 046 2] SCI Interrupt : 0009
[030h 048 4] SMI Command Port : 000000B2
[034h 052 1] ACPI Enable Value : F1
[035h 053 1] ACPI Disable Value : F0
[036h 054 1] S4BIOS Command : 00
[037h 055 1] P-State Control : 00
[038h 056 4] PM1A Event Block Address : 0000B000
[03Ch 060 4] PM1B Event Block Address : 00000000
[040h 064 4] PM1A Control Block Address : 0000B004
[044h 068 4] PM1B Control Block Address : 00000000
[048h 072 4] PM2 Control Block Address : 00000000
[04Ch 076 4] PM Timer Block Address : 0000B008
[050h 080 4] GPE0 Block Address : 0000AFE0
[054h 084 4] GPE1 Block Address : 00000000
[058h 088 1] PM1 Event Block Length : 04
[059h 089 1] PM1 Control Block Length : 02
[05Ah 090 1] PM2 Control Block Length : 00
[05Bh 091 1] PM Timer Block Length : 04
[05Ch 092 1] GPE0 Block Length : 04
[05Dh 093 1] GPE1 Block Length : 00
[05Eh 094 1] GPE1 Base Offset : 00
[05Fh 095 1] _CST Support : 00
[060h 096 2] C2 Latency : 0065
[062h 098 2] C3 Latency : 03E9
[064h 100 2] CPU Cache Size : 0000
[066h 102 2] Cache Flush Stride : 0000
[068h 104 1] Duty Cycle Offset : 00
[069h 105 1] Duty Cycle Width : 00
[06Ah 106 1] RTC Day Alarm Index : 00
[06Bh 107 1] RTC Month Alarm Index : 00
[06Ch 108 1] RTC Century Index : 00
[06Dh 109 2] Boot Flags (decoded below) : 0000
Legacy Devices Supported (V2) : 0
8042 Present on ports 60/64 (V2) : 0
VGA Not Present (V4) : 0
MSI Not Supported (V4) : 0
PCIe ASPM Not Supported (V4) : 0
[06Fh 111 1] Reserved : 00
-[070h 112 4] Flags (decoded below) : 000000A5
+[070h 112 4] Flags (decoded below) : 000004A5
WBINVD instruction is operational (V1) : 1
WBINVD flushes all caches (V1) : 0
All CPUs support C1 (V1) : 1
C2 works on MP system (V1) : 0
Control Method Power Button (V1) : 0
Control Method Sleep Button (V1) : 1
RTC wakeup reg not in fixed space (V1) : 0
RTC can wake system from S4 (V1) : 1
32-bit PM Timer (V1) : 0
Docking Supported (V1) : 0
- Reset Register Supported (V2) : 0
+ Reset Register Supported (V2) : 1
Sealed Case (V3) : 0
Headless - No Video (V3) : 0
Use native instr after SLP_TYPx (V3) : 0
PCIEXP_WAK Bits Supported (V4) : 0
Use Platform Timer (V4) : 0
RTC_STS valid on S4 wake (V4) : 0
Remote Power-on capable (V4) : 0
Use APIC Cluster Model (V4) : 0
Use APIC Physical Destination Mode (V4) : 0
+[074h 116 12] Reset Register : <Generic Address Structure>
+[074h 116 1] Space ID : 01 (SystemIO)
+[075h 117 1] Bit Width : 08
+[076h 118 1] Bit Offset : 00
+[077h 119 1] Access Width : 00
+[078h 120 8] Address : 0000000000000CF9
+
+[080h 128 1] Value to cause reset : 06
+[081h 129 3] Reserved : 000000
+[084h 132 8] FACS Address : 0000000000000000
+[08Ch 140 8] DSDT Address : 000000003FB5B000
+[094h 148 12] PM1A Event Block : <Generic Address Structure>
+[094h 148 1] Space ID : 01 (SystemIO)
+[095h 149 1] Bit Width : 20
+[096h 150 1] Bit Offset : 00
+[097h 151 1] Access Width : 00
+[098h 152 8] Address : 000000000000B000
+
+[0A0h 160 12] PM1B Event Block : <Generic Address Structure>
+[0A0h 160 1] Space ID : 00 (SystemMemory)
+[0A1h 161 1] Bit Width : 00
+[0A2h 162 1] Bit Offset : 00
+[0A3h 163 1] Access Width : 00
+[0A4h 164 8] Address : 0000000000000000
+
+[0ACh 172 12] PM1A Control Block : <Generic Address Structure>
+[0ACh 172 1] Space ID : 01 (SystemIO)
+[0ADh 173 1] Bit Width : 10
+[0AEh 174 1] Bit Offset : 00
+[0AFh 175 1] Access Width : 00
+[0B0h 176 8] Address : 000000000000B004
+
+[0B8h 184 12] PM1B Control Block : <Generic Address Structure>
+[0B8h 184 1] Space ID : 00 (SystemMemory)
+[0B9h 185 1] Bit Width : 00
+[0BAh 186 1] Bit Offset : 00
+[0BBh 187 1] Access Width : 00
+[0BCh 188 8] Address : 0000000000000000
+
+[0C4h 196 12] PM2 Control Block : <Generic Address Structure>
+[0C4h 196 1] Space ID : 00 (SystemMemory)
+[0C5h 197 1] Bit Width : 00
+[0C6h 198 1] Bit Offset : 00
+[0C7h 199 1] Access Width : 00
+[0C8h 200 8] Address : 0000000000000000
+
+[0D0h 208 12] PM Timer Block : <Generic Address Structure>
+[0D0h 208 1] Space ID : 01 (SystemIO)
+[0D1h 209 1] Bit Width : 20
+[0D2h 210 1] Bit Offset : 00
+[0D3h 211 1] Access Width : 00
+[0D4h 212 8] Address : 000000000000B008
+
+[0DCh 220 12] GPE0 Block : <Generic Address Structure>
+[0DCh 220 1] Space ID : 01 (SystemIO)
+[0DDh 221 1] Bit Width : 20
+[0DEh 222 1] Bit Offset : 00
+[0DFh 223 1] Access Width : 00
+[0E0h 224 8] Address : 000000000000AFE0
+
+[0E8h 232 12] GPE1 Block : <Generic Address Structure>
+[0E8h 232 1] Space ID : 00 (SystemMemory)
+[0E9h 233 1] Bit Width : 00
+[0EAh 234 1] Bit Offset : 00
+[0EBh 235 1] Access Width : 00
+[0ECh 236 8] Address : 0000000000000000
+
+
Raw Table Data
- 0000: 46 41 43 50 74 00 00 00 01 98 4F 56 4D 46 20 20 FACPt.....OVMF
- 0010: 4F 56 4D 46 45 44 4B 32 04 08 12 20 4F 56 4D 46 OVMFEDK2... OVMF
- 0020: 98 00 00 00 00 30 B6 3F 00 B0 B5 3F 01 00 09 00 .....0.?...?....
+ 0000: 46 41 43 50 F4 00 00 00 03 23 4F 56 4D 46 20 20 FACP.....#OVMF
+ 0010: 4F 56 4D 46 45 44 4B 32 21 02 13 20 4F 56 4D 46 OVMFEDK2!.. OVMF
+ 0020: 99 00 00 00 00 30 B6 3F 00 B0 B5 3F 00 00 09 00 .....0.?...?....
0030: B2 00 00 00 F1 F0 00 00 00 B0 00 00 00 00 00 00 ................
0040: 04 B0 00 00 00 00 00 00 00 00 00 00 08 B0 00 00 ................
0050: E0 AF 00 00 00 00 00 00 04 02 00 04 04 00 00 00 ................
0060: 65 00 E9 03 00 00 00 00 00 00 00 00 00 00 00 00 e...............
- 0070: A5 00 00 00 ....
+ 0070: A5 04 00 00 01 08 00 00 F9 0C 00 00 00 00 00 00 ................
+ 0080: 06 00 00 00 00 00 00 00 00 00 00 00 00 B0 B5 3F ...............?
+ 0090: 00 00 00 00 01 20 00 00 00 B0 00 00 00 00 00 00 ..... ..........
+ 00A0: 00 00 00 00 00 00 00 00 00 00 00 00 01 10 00 00 ................
+ 00B0: 04 B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+ 00C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+ 00D0: 01 20 00 00 08 B0 00 00 00 00 00 00 01 20 00 00 . ........... ..
+ 00E0: E0 AF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+ 00F0: 00 00 00 00 ....
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel