# HG changeset patch
# User Anthony Perard <anthony.perard@xxxxxxxxxx>
# Date 1289325835 0
# Node ID a564339357047b729c4eb61a5a1e9a00f4e52b13
# Parent c553d3035fd5d9c5d254102bd4001581356710de
firmware, qemu: Change ACPI IO values to match QEMU BIOS
As part of the QEMU/Xen merge, this patch comes to change the value of
sleep states and add some information in the PCI registers to match the
implementation of the BIOS of QEMU.
It also does a hypercall (HVM_PARAM_ACPI_IOPORTS_LOCATION) that tell the
Xen to use the new Port I/O instead of the old one.
[ Also, in this patch, update QEMU_TAG to the qemu-xen revision
with the corresponding qemu change. -iwj ]
Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
Config.mk | 6 +++---
tools/firmware/hvmloader/acpi/dsdt.asl | 12 ++++++------
tools/firmware/hvmloader/hvmloader.c | 11 +++++++++++
3 files changed, 20 insertions(+), 9 deletions(-)
diff -r c553d3035fd5 -r a56433935704 Config.mk
--- a/Config.mk Tue Nov 09 17:43:12 2010 +0000
+++ b/Config.mk Tue Nov 09 18:03:55 2010 +0000
@@ -185,9 +185,9 @@ endif
# CONFIG_QEMU ?= ../qemu-xen.git
CONFIG_QEMU ?= $(QEMU_REMOTE)
-QEMU_TAG ?= 0442ec23f9efc4f8f9259351f612194f8f42900c
-# Mon Nov 8 17:09:54 2010 +0000
-# stubdom: fix handing of dependency files
+QEMU_TAG ?= ce3b7ce68426ea6249bb411f26b376d459c45450
+# Tue Nov 9 18:01:13 2010 +0000
+# piix4acpi, xen: change in ACPI to match the change in the BIOS.
# Optional components
XENSTAT_XENTOP ?= y
diff -r c553d3035fd5 -r a56433935704 tools/firmware/hvmloader/acpi/dsdt.asl
--- a/tools/firmware/hvmloader/acpi/dsdt.asl Tue Nov 09 17:43:12 2010 +0000
+++ b/tools/firmware/hvmloader/acpi/dsdt.asl Tue Nov 09 18:03:55 2010 +0000
@@ -33,22 +33,22 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2,
*/
Name (\_S3, Package (0x04)
{
- 0x05, /* PM1a_CNT.SLP_TYP */
- 0x05, /* PM1b_CNT.SLP_TYP */
+ 0x01, /* PM1a_CNT.SLP_TYP */
+ 0x01, /* PM1b_CNT.SLP_TYP */
0x0, /* reserved */
0x0 /* reserved */
})
Name (\_S4, Package (0x04)
{
- 0x06, /* PM1a_CNT.SLP_TYP */
- 0x06, /* PM1b_CNT.SLP_TYP */
+ 0x00, /* PM1a_CNT.SLP_TYP */
+ 0x00, /* PM1b_CNT.SLP_TYP */
0x00, /* reserved */
0x00 /* reserved */
})
Name (\_S5, Package (0x04)
{
- 0x07, /* PM1a_CNT.SLP_TYP */
- 0x07, /* PM1b_CNT.SLP_TYP */
+ 0x00, /* PM1a_CNT.SLP_TYP */
+ 0x00, /* PM1b_CNT.SLP_TYP */
0x00, /* reserved */
0x00 /* reserved */
})
diff -r c553d3035fd5 -r a56433935704 tools/firmware/hvmloader/hvmloader.c
--- a/tools/firmware/hvmloader/hvmloader.c Tue Nov 09 17:43:12 2010 +0000
+++ b/tools/firmware/hvmloader/hvmloader.c Tue Nov 09 18:03:55 2010 +0000
@@ -31,6 +31,7 @@
#include "option_rom.h"
#include <xen/version.h>
#include <xen/hvm/params.h>
+#include <xen/hvm/ioreq.h>
#include <xen/memory.h>
asm (
@@ -222,9 +223,12 @@ static void pci_setup(void)
/* PIIX4 ACPI PM. Special device with special PCI config space. */
ASSERT((vendor_id == 0x8086) && (device_id == 0x7113));
pci_writew(devfn, 0x20, 0x0000); /* No smb bus IO enable */
+ pci_writew(devfn, 0xd2, 0x0000); /* No smb bus IO enable */
pci_writew(devfn, 0x22, 0x0000);
pci_writew(devfn, 0x3c, 0x0009); /* Hardcoded IRQ9 */
pci_writew(devfn, 0x3d, 0x0001);
+ pci_writel(devfn, 0x40, ACPI_PM1A_EVT_BLK_ADDRESS | 1);
+ pci_writeb(devfn, 0x80, 0x01); /* enable PM io space */
break;
case 0x0101:
if ( vendor_id == 0x8086 )
@@ -763,8 +767,15 @@ int main(void)
if ( hvm_info->acpi_enabled )
{
+ struct xen_hvm_param p = {
+ .domid = DOMID_SELF,
+ .index = HVM_PARAM_ACPI_IOPORTS_LOCATION,
+ .value = 1,
+ };
+
printf("Loading ACPI ...\n");
acpi_build_tables();
+ hypercall_hvm_op(HVMOP_set_param, &p);
}
init_vm86_tss();
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|