.dsdt_anycpu = dsdt_anycpu_qemu_xen,
.dsdt_anycpu_len = dsdt_anycpu_qemu_xen_len,
.dsdt_15cpu = NULL,
- .dsdt_15cpu_len = 0
+ .dsdt_15cpu_len = 0,
+ .pm1a_evt = ACPI_PM1A_EVT_BLK_ADDRESS_V1,
+ .pm1a_cnt = ACPI_PM1A_CNT_BLK_ADDRESS_V1,
+ .pm_tmr = ACPI_PM_TMR_BLK_ADDRESS_V1,
+ .gpe0 = ACPI_GPE0_BLK_ADDRESS_V1,
+ .gpe0_len = ACPI_GPE0_BLK_LEN_V1,
};
hvm_param_set(HVM_PARAM_ACPI_IOPORTS_LOCATION, 1);
#include <libacpi.h>
#include <xen/hvm/params.h>
+#include <xen/hvm/ioreq.h>
#define ROM_INCLUDE_ROMBIOS
#define ROM_INCLUDE_VGABIOS
.dsdt_anycpu_len = dsdt_anycpu_len,
.dsdt_15cpu = dsdt_15cpu,
.dsdt_15cpu_len = dsdt_15cpu_len,
+ .pm1a_evt = ACPI_PM1A_EVT_BLK_ADDRESS_V0,
+ .pm1a_cnt = ACPI_PM1A_CNT_BLK_ADDRESS_V0,
+ .pm_tmr = ACPI_PM_TMR_BLK_ADDRESS_V0,
+ .gpe0 = ACPI_GPE0_BLK_ADDRESS_V0,
+ .gpe0_len = ACPI_GPE0_BLK_LEN_V0,
};
hvm_param_set(HVM_PARAM_ACPI_IOPORTS_LOCATION, 0);
.dsdt_anycpu_len = dsdt_anycpu_qemu_xen_len,
.dsdt_15cpu = NULL,
.dsdt_15cpu_len = 0,
+ .pm1a_evt = ACPI_PM1A_EVT_BLK_ADDRESS_V1,
+ .pm1a_cnt = ACPI_PM1A_CNT_BLK_ADDRESS_V1,
+ .pm_tmr = ACPI_PM_TMR_BLK_ADDRESS_V1,
+ .gpe0 = ACPI_GPE0_BLK_ADDRESS_V1,
+ .gpe0_len = ACPI_GPE0_BLK_LEN_V1,
};
hvm_param_set(HVM_PARAM_ACPI_IOPORTS_LOCATION, 1);
config->dsdt_anycpu_len = dsdt_anycpu_len;
config->dsdt_15cpu = dsdt_15cpu;
config->dsdt_15cpu_len = dsdt_15cpu_len;
+ config->pm1a_evt = ACPI_PM1A_EVT_BLK_ADDRESS_V0;
+ config->pm1a_cnt = ACPI_PM1A_CNT_BLK_ADDRESS_V0;
+ config->pm_tmr = ACPI_PM_TMR_BLK_ADDRESS_V0;
+ config->gpe0 = ACPI_GPE0_BLK_ADDRESS_V0;
+ config->gpe0_len = ACPI_GPE0_BLK_LEN_V0;
hvm_param_set(HVM_PARAM_ACPI_IOPORTS_LOCATION, 0);
}
config->dsdt_anycpu_len = dsdt_anycpu_qemu_xen_len;
config->dsdt_15cpu = NULL;
config->dsdt_15cpu_len = 0;
+ config->pm1a_evt = ACPI_PM1A_EVT_BLK_ADDRESS_V1;
+ config->pm1a_cnt = ACPI_PM1A_CNT_BLK_ADDRESS_V1;
+ config->pm_tmr = ACPI_PM_TMR_BLK_ADDRESS_V1;
+ config->gpe0 = ACPI_GPE0_BLK_ADDRESS_V1;
+ config->gpe0_len = ACPI_GPE0_BLK_LEN_V1;
hvm_param_set(HVM_PARAM_ACPI_IOPORTS_LOCATION, 1);
}
acpi_info->pci_hi_len = config->pci_hi_len;
}
+ /*
+ * Set location of the control/event registers.
+ */
+ Fadt.pm1a_evt_blk = config->pm1a_evt;
+ Fadt.pm1a_cnt_blk = config->pm1a_cnt;
+ Fadt.pm_tmr_blk = config->pm_tmr;
+ Fadt.gpe0_blk = config->gpe0;
+ Fadt.gpe0_blk_len = config->gpe0_len;
+
/*
* Fill in high-memory data structures, starting at @buf.
*/
uint32_t ioapic_base_address;
uint16_t pci_isa_irq_mask;
uint8_t ioapic_id;
+
+ /* Location of the control/event registers */
+ uint32_t pm1a_evt;
+ uint32_t pm1a_cnt;
+ uint32_t pm_tmr;
+ uint32_t gpe0;
+ uint8_t gpe0_len;
};
int acpi_build_tables(struct acpi_ctxt *ctxt, struct acpi_config *config);