[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] acpi: change CPU container node _HID to compatible
From: |
Evgeny Yakovlev |
Subject: |
[Qemu-devel] [PATCH] acpi: change CPU container node _HID to compatible PNP0A05 |
Date: |
Mon, 22 May 2017 12:50:30 +0300 |
When running windows 2016 server guests we have encountered a problem
with ACPI representation of CPU devices. This windows version contains a
hidinterrupt.sys driver which looks for ACPI device node with _HID set
to "ACPI0010" and "ACPI0011". ACPI0010 is also a valid id for CPU
container device which qemu uses.
hidinterrupt driver takes over (even though it fails) ACPI0010 node and
thus hides its children -- the CPUs -- from the regular ACPI
enumeration. So there are no processors in the Windows device tree
Device Manager or "!devnode 0 1" in the debugger.
hidinterrupt.inf as shipped with Windows 2016 has both ACPI0011 and
ACPI0010; the record for the latter is preceded with a comment "This Id
is not to be used. It will be removed once everyone has stopped using
it." So I guess the typo was not in the driver but in the ACPI tables
of some device(s) which the driver wanted to support despite the bug.
For reference this is a known issue:
https://bugzilla.redhat.com/show_bug.cgi?id=1377155#c31
This change works around this problem by setting qemu CPU container ACPI
_HID to compatible PNP0A05.
Signed-off-by: Evgeny Yakovlev <address@hidden>
---
hw/acpi/cpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c
index a233fe1..b93db40 100644
--- a/hw/acpi/cpu.c
+++ b/hw/acpi/cpu.c
@@ -397,7 +397,7 @@ void build_cpus_aml(Aml *table, MachineState *machine,
CPUHotplugFeatures opts,
Aml *rm_evt = aml_name("%s.%s", cphp_res_path, CPU_REMOVE_EVENT);
Aml *ej_evt = aml_name("%s.%s", cphp_res_path, CPU_EJECT_EVENT);
- aml_append(cpus_dev, aml_name_decl("_HID", aml_string("ACPI0010")));
+ aml_append(cpus_dev, aml_name_decl("_HID", aml_string("PNP0A05")));
aml_append(cpus_dev, aml_name_decl("_CID", aml_eisaid("PNP0A05")));
method = aml_method(CPU_NOTIFY_METHOD, 2, AML_NOTSERIALIZED);
--
1.8.3.1