On 02/19/13 16:29, David Woodhouse wrote:
On Mon, 2013-02-18 at 17:37 -0500, Kevin O'Connor wrote:
The ACPI v2 spec describes a "hard" reset register. SeaBIOS could extract it from the FADT and then use it. Of course, we'd probably want to update the QEMU ACPI tables to implement ACPI v2 then.
This sounded great until I actually came to implement it.
The PIIX reset at 0xcf9 requires *two* writes; one to set the reset type and then a second write with bit 2 set to actually do the reset.
The ACPI RESET_REG definition only allows for *one* value to be written.
Is that because the PIIX will actually do a hard reset when you write 0x06 to it *anyway*, despite theoretically saying that you should write 0x02 first? Or is the ACPI definition of RESET_REG simply incapable of being used on the PIIX?
The linux kernel actually considers BOOT_ACPI and BOOT_CF9 separate things; see
- native_machine_emergency_restart() [arch/x86/kernel/reboot.c], - acpi_reboot() [drivers/acpi/reboot.c], - acpi_reset() [drivers/acpi/acpica/hwxface.c].
BOOT_ACPI looks like a single write in any case (io space, memory, pci config).
Funnily enough, on my Thinkpad ( acpidump --table FACP --binary -o fadt.aml iasl -d fadt.aml ):
/* * Intel ACPI Component Architecture * AML Disassembler version 20090123 * * Disassembly of fadt.aml, Tue Feb 19 17:13:43 2013 * * ACPI Data Table [FACP] * * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue */
[000h 000 4] Signature : "FACP" /* Fixed ACPI Description Table */
[070h 112 4] Flags (decoded below) : 0000C2AD Reset Register Supported (V2) : 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
Same on my HP Z400. "Reset register is not supported, but you could still write 6 to 0xcf9" :)
I'd say "6 to 0xCF9" is good enough; rcr_write() in qemu is OK with it too (including your patch at http://thread.gmane.org/gmane.comp.emulators.qemu/195351/focus=195387.)
Laszlo