From: Anthony PERARD <anthony.perard@xxxxxxxxxx>
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.
Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
---
tools/firmware/hvmloader/acpi/dsdt.asl | 12 ++++++------
tools/firmware/hvmloader/hvmloader.c | 11 +++++++++++
2 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/tools/firmware/hvmloader/acpi/dsdt.asl
b/tools/firmware/hvmloader/acpi/dsdt.asl
index 03799d3..ea8e324 100644
--- a/tools/firmware/hvmloader/acpi/dsdt.asl
+++ b/tools/firmware/hvmloader/acpi/dsdt.asl
@@ -33,22 +33,22 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0)
*/
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 --git a/tools/firmware/hvmloader/hvmloader.c
b/tools/firmware/hvmloader/hvmloader.c
index c4c5ddc..bf23f80 100644
--- a/tools/firmware/hvmloader/hvmloader.c
+++ b/tools/firmware/hvmloader/hvmloader.c
@@ -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 )
@@ -759,8 +763,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();
--
1.7.1
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|