qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] acpi: change CPU container node _HID to compati


From: Igor Mammedov
Subject: Re: [Qemu-devel] [PATCH] acpi: change CPU container node _HID to compatible PNP0A05
Date: Mon, 22 May 2017 12:35:24 +0200

On Mon, 22 May 2017 12:50:30 +0300
Evgeny Yakovlev <address@hidden> wrote:

> 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.
I'd say NACK to it.
It's Windows server 2016 bug that violates spec and
it's been reported to them before RTM has been released.
So complain to Microsoft support and make them fix it.

Meanwhile there is MS suggested workaround to fix issue,
one can use https://bugzilla.redhat.com/show_bug.cgi?id=1377155#c17

Perhaps I should add workaround link as comment above line:

aml_append(cpus_dev, aml_name_decl("_HID", aml_string("ACPI0010")));

> 
> 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);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]