# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Node ID 430e06e2aa081d30ffbe272c35ea288d85252938
# Parent 63d58674596f3760c2b7837f9b61f239d15dd585
[HVM][IA64] Due to IPF Guest Firmware will enumerate PCI, shutdown in
IPF doesn't work This patch makes shutdown work for IPF.
Signed-off-by, Anthony Xu <anthony.xu@xxxxxxxxx>
---
tools/ioemu/hw/piix4acpi.c | 14 +++++++++++---
xen/include/public/hvm/ioreq.h | 2 +-
2 files changed, 12 insertions(+), 4 deletions(-)
diff -r 63d58674596f -r 430e06e2aa08 tools/ioemu/hw/piix4acpi.c
--- a/tools/ioemu/hw/piix4acpi.c Mon Nov 13 14:12:01 2006 +0000
+++ b/tools/ioemu/hw/piix4acpi.c Mon Nov 13 14:20:26 2006 +0000
@@ -398,8 +398,16 @@ void pci_piix4_acpi_init(PCIBus *bus, in
pci_conf[0x0e] = 0x00;
pci_conf[0x3d] = 0x01; /* Hardwired to PIRQA is used */
- pci_register_io_region((PCIDevice *)d, 4, 0x10,
- PCI_ADDRESS_SPACE_IO, acpi_map);
-
+
+ /* PMBA POWER MANAGEMENT BASE ADDRESS, hardcoded to 0x1f40
+ * to make shutdown work for IPF, due to IPF Guest Firmware
+ * will enumerate pci devices.
+ *
+ * TODO: if Guest Firmware or Guest OS will change this PMBA,
+ * More logic will be added.
+ */
+ pci_conf[0x40] = 0x41;
+ pci_conf[0x41] = 0x1f;
+ acpi_map(d, 0, 0x1f40, 0x10, PCI_ADDRESS_SPACE_IO);
acpi_reset(d);
}
diff -r 63d58674596f -r 430e06e2aa08 xen/include/public/hvm/ioreq.h
--- a/xen/include/public/hvm/ioreq.h Mon Nov 13 14:12:01 2006 +0000
+++ b/xen/include/public/hvm/ioreq.h Mon Nov 13 14:20:26 2006 +0000
@@ -80,7 +80,7 @@ struct buffered_iopage {
}; /* sizeof this structure must be in one page */
typedef struct buffered_iopage buffered_iopage_t;
-#define ACPI_PM1A_EVT_BLK_ADDRESS 0x000000000000c010
+#define ACPI_PM1A_EVT_BLK_ADDRESS 0x0000000000001f40
#define ACPI_PM1A_CNT_BLK_ADDRESS (ACPI_PM1A_EVT_BLK_ADDRESS + 0x04)
#define ACPI_PM_TMR_BLK_ADDRESS (ACPI_PM1A_EVT_BLK_ADDRESS + 0x08)
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|