mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
acpi/x86: define ACPI IO registers for PVH guests
Define VCPU available map address (used by AML's PRSC method) and GPE0 CPU hotplug event number. Use these definitions in mk_dsdt instead hardcoded values. These definitions will later be used by both the hypervisor and the toolstack (initially for PVH guests only), thus they are placed in public headers. Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
19fb14622e
commit
d6ac8e22c7
3 files changed
+16
-2
No files matched your search
@@ -18,6 +18,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
#if defined(CONFIG_X86)
|
||||
#include <xen/arch-x86/xen.h>
|
||||
#include <xen/hvm/hvm_info_table.h>
|
||||
#elif defined(CONFIG_ARM_64)
|
||||
#include <xen/arch-arm.h>
|
||||
@@ -244,7 +245,8 @@ int main(int argc, char **argv)
|
||||
#endif
|
||||
|
||||
/* Operation Region 'PRST': bitmask of online CPUs. */
|
||||
stmt("OperationRegion", "PRST, SystemIO, 0xaf00, 32");
|
||||
stmt("OperationRegion", "PRST, SystemIO, %#x, %d",
|
||||
XEN_ACPI_CPU_MAP, XEN_ACPI_CPU_MAP_LEN);
|
||||
push_block("Field", "PRST, ByteAcc, NoLock, Preserve");
|
||||
indent(); printf("PRS, %u\n", max_cpus);
|
||||
pop_block();
|
||||
@@ -283,7 +285,8 @@ int main(int argc, char **argv)
|
||||
/* Define GPE control method. */
|
||||
push_block("Scope", "\\_GPE");
|
||||
push_block("Method",
|
||||
dm_version == QEMU_XEN_TRADITIONAL ? "_L02" : "_E02");
|
||||
dm_version == QEMU_XEN_TRADITIONAL ? "_L%02d" : "_E%02d",
|
||||
XEN_ACPI_GPE0_CPUHP_BIT);
|
||||
stmt("\\_SB.PRSC ()", NULL);
|
||||
pop_block();
|
||||
pop_block();
|
||||
|
||||
@@ -31,6 +31,10 @@ struct acpi_20_facs Facs = {
|
||||
* Fixed ACPI Description Table (FADT).
|
||||
*/
|
||||
|
||||
/*
|
||||
* These values must match register definitions in struct hvm_hw_acpi
|
||||
* (in xen/include/public/arch-x86/hvm/save.h).
|
||||
*/
|
||||
#define ACPI_PM1A_EVT_BLK_BIT_WIDTH 0x20
|
||||
#define ACPI_PM1A_EVT_BLK_BIT_OFFSET 0x00
|
||||
#define ACPI_PM1A_CNT_BLK_BIT_WIDTH 0x10
|
||||
|
||||
@@ -291,6 +291,13 @@ struct xen_arch_domainconfig {
|
||||
XEN_X86_EMU_PIT)
|
||||
uint32_t emulation_flags;
|
||||
};
|
||||
|
||||
/* Location of online VCPU bitmap. */
|
||||
#define XEN_ACPI_CPU_MAP 0xaf00
|
||||
#define XEN_ACPI_CPU_MAP_LEN ((HVM_MAX_VCPUS + 7) / 8)
|
||||
|
||||
/* GPE0 bit set during CPU hotplug */
|
||||
#define XEN_ACPI_GPE0_CPUHP_BIT 2
|
||||
#endif
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||