diff mbox

[for-2.0] dsdt: tweak ACPI ID for hotplug resource device

Message ID 1396776125-5419-1-git-send-email-mst@redhat.com
State New
Headers show

Commit Message

Michael S. Tsirkin April 6, 2014, 9:47 a.m. UTC
ACPI0004 seems too new:
Windows XP complains about an unrecognized device.
This is a regression since 1.7.
Use PNP0A06 instead - Generic Container Device.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---

Note: Igor has RFC patches to use PNP0C02 under PCI0,
but that's not ready for 2.0.
Igor, could you comment on whether PNP0C02 is preferable for
some OS-es?

For PNP0A06 ACPI spec says:
    PNP0A06
    Generic Container Device. This device behaves exactly the same as the
    PNP0A05 device.
    This was originally known as Extended I/O Bus. This ID should only be
    used for containers
    that do not produce resources for consumption by child devices. Any
    system resources
    claimed by a PNP0A06 device’s _CRS object must be consumed by the
    container itself.

PNP0C02 is not in ACPI spec. It does appear in MicroSoft legacy PNP ID
document:
    PNP0C02         General ID for reserving resources required by Plug and
    Play motherboard registers. (Not specific to a particular device.)

Thoughts?

 hw/i386/acpi-dsdt-cpu-hotplug.dsl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Igor Mammedov April 7, 2014, 7:46 a.m. UTC | #1
On Sun, 6 Apr 2014 12:47:37 +0300
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> ACPI0004 seems too new:
> Windows XP complains about an unrecognized device.
> This is a regression since 1.7.
> Use PNP0A06 instead - Generic Container Device.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> 
> Note: Igor has RFC patches to use PNP0C02 under PCI0,
> but that's not ready for 2.0.
> Igor, could you comment on whether PNP0C02 is preferable for
> some OS-es?
> 
> For PNP0A06 ACPI spec says:
>     PNP0A06
>     Generic Container Device. This device behaves exactly the same as the
>     PNP0A05 device.
>     This was originally known as Extended I/O Bus. This ID should only be
>     used for containers
>     that do not produce resources for consumption by child devices. Any
>     system resources
>     claimed by a PNP0A06 device’s _CRS object must be consumed by the
>     container itself.
> 
> PNP0C02 is not in ACPI spec. It does appear in MicroSoft legacy PNP ID
> document:
>     PNP0C02         General ID for reserving resources required by Plug and
>     Play motherboard registers. (Not specific to a particular device.)
> 
> Thoughts?
From testing Windows doesn't check for conflicts _CRS provided by PNP0C02,
so while using it will let XP not to complain about unknown device, it will
also make later Windows OSes silently ignore conflicts if any.

When XP's complaining for the first time about unknown device, it could be
told to ignore it, so it would stop to complain in future. i.e. user have to
silence only once.

Wouldn't it be better to use ACPI0004 that gives minor annoyance to XP user
but provides error checking with later OS versions?

> 
>  hw/i386/acpi-dsdt-cpu-hotplug.dsl | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/i386/acpi-dsdt-cpu-hotplug.dsl b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> index dee4843..34aab5a 100644
> --- a/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> +++ b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> @@ -93,7 +93,7 @@ Scope(\_SB) {
>      }
>  
>      Device(CPU_HOTPLUG_RESOURCE_DEVICE) {
> -        Name(_HID, "ACPI0004")
> +        Name(_HID, EisaId("PNP0A06"))
>  
>          Name(_CRS, ResourceTemplate() {
>              IO(Decode16, CPU_STATUS_BASE, CPU_STATUS_BASE, 0, CPU_STATUS_LEN)
Michael S. Tsirkin April 7, 2014, 8:36 a.m. UTC | #2
On Mon, Apr 07, 2014 at 09:46:34AM +0200, Igor Mammedov wrote:
> On Sun, 6 Apr 2014 12:47:37 +0300
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > ACPI0004 seems too new:
> > Windows XP complains about an unrecognized device.
> > This is a regression since 1.7.
> > Use PNP0A06 instead - Generic Container Device.
> > 
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > ---
> > 
> > Note: Igor has RFC patches to use PNP0C02 under PCI0,
> > but that's not ready for 2.0.
> > Igor, could you comment on whether PNP0C02 is preferable for
> > some OS-es?
> > 
> > For PNP0A06 ACPI spec says:
> >     PNP0A06
> >     Generic Container Device. This device behaves exactly the same as the
> >     PNP0A05 device.
> >     This was originally known as Extended I/O Bus. This ID should only be
> >     used for containers
> >     that do not produce resources for consumption by child devices. Any
> >     system resources
> >     claimed by a PNP0A06 device’s _CRS object must be consumed by the
> >     container itself.
> > 
> > PNP0C02 is not in ACPI spec. It does appear in MicroSoft legacy PNP ID
> > document:
> >     PNP0C02         General ID for reserving resources required by Plug and
> >     Play motherboard registers. (Not specific to a particular device.)
> > 
> > Thoughts?
> From testing Windows doesn't check for conflicts _CRS provided by PNP0C02,
> so while using it will let XP not to complain about unknown device, it will
> also make later Windows OSes silently ignore conflicts if any.
> 
> When XP's complaining for the first time about unknown device, it could be
> told to ignore it, so it would stop to complain in future. i.e. user have to
> silence only once.
> 
> Wouldn't it be better to use ACPI0004 that gives minor annoyance to XP user
> but provides error checking with later OS versions?

OK I quickly tested with Win7 and it does check for conflicts
when EisaId("PNP0A06") is used.

Taking this into account, ack this patch?

> > 
> >  hw/i386/acpi-dsdt-cpu-hotplug.dsl | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/hw/i386/acpi-dsdt-cpu-hotplug.dsl b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > index dee4843..34aab5a 100644
> > --- a/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > +++ b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > @@ -93,7 +93,7 @@ Scope(\_SB) {
> >      }
> >  
> >      Device(CPU_HOTPLUG_RESOURCE_DEVICE) {
> > -        Name(_HID, "ACPI0004")
> > +        Name(_HID, EisaId("PNP0A06"))
> >  
> >          Name(_CRS, ResourceTemplate() {
> >              IO(Decode16, CPU_STATUS_BASE, CPU_STATUS_BASE, 0, CPU_STATUS_LEN)
Igor Mammedov April 7, 2014, 8:57 a.m. UTC | #3
On Sun, 6 Apr 2014 12:47:37 +0300
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> ACPI0004 seems too new:
> Windows XP complains about an unrecognized device.
> This is a regression since 1.7.
> Use PNP0A06 instead - Generic Container Device.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> 
> Note: Igor has RFC patches to use PNP0C02 under PCI0,
> but that's not ready for 2.0.
> Igor, could you comment on whether PNP0C02 is preferable for
> some OS-es?
> 
> For PNP0A06 ACPI spec says:
>     PNP0A06
>     Generic Container Device. This device behaves exactly the same as the
>     PNP0A05 device.
>     This was originally known as Extended I/O Bus. This ID should only be
>     used for containers
>     that do not produce resources for consumption by child devices. Any
>     system resources
>     claimed by a PNP0A06 device’s _CRS object must be consumed by the
>     container itself.
> 
> PNP0C02 is not in ACPI spec. It does appear in MicroSoft legacy PNP ID
> document:
>     PNP0C02         General ID for reserving resources required by Plug and
>     Play motherboard registers. (Not specific to a particular device.)
> 
> Thoughts?
> 
>  hw/i386/acpi-dsdt-cpu-hotplug.dsl | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/i386/acpi-dsdt-cpu-hotplug.dsl b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> index dee4843..34aab5a 100644
> --- a/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> +++ b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> @@ -93,7 +93,7 @@ Scope(\_SB) {
>      }
>  
>      Device(CPU_HOTPLUG_RESOURCE_DEVICE) {
> -        Name(_HID, "ACPI0004")
> +        Name(_HID, EisaId("PNP0A06"))
>  
>          Name(_CRS, ResourceTemplate() {
>              IO(Decode16, CPU_STATUS_BASE, CPU_STATUS_BASE, 0, CPU_STATUS_LEN)

Reviewed-By: Igor Mammedov <imammedo@redhat.com>
Michael S. Tsirkin April 7, 2014, 8:59 a.m. UTC | #4
On Mon, Apr 07, 2014 at 10:57:02AM +0200, Igor Mammedov wrote:
> On Sun, 6 Apr 2014 12:47:37 +0300
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > ACPI0004 seems too new:
> > Windows XP complains about an unrecognized device.
> > This is a regression since 1.7.
> > Use PNP0A06 instead - Generic Container Device.
> > 
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > ---
> > 
> > Note: Igor has RFC patches to use PNP0C02 under PCI0,
> > but that's not ready for 2.0.
> > Igor, could you comment on whether PNP0C02 is preferable for
> > some OS-es?
> > 
> > For PNP0A06 ACPI spec says:
> >     PNP0A06
> >     Generic Container Device. This device behaves exactly the same as the
> >     PNP0A05 device.
> >     This was originally known as Extended I/O Bus. This ID should only be
> >     used for containers
> >     that do not produce resources for consumption by child devices. Any
> >     system resources
> >     claimed by a PNP0A06 device’s _CRS object must be consumed by the
> >     container itself.
> > 
> > PNP0C02 is not in ACPI spec. It does appear in MicroSoft legacy PNP ID
> > document:
> >     PNP0C02         General ID for reserving resources required by Plug and
> >     Play motherboard registers. (Not specific to a particular device.)
> > 
> > Thoughts?
> > 
> >  hw/i386/acpi-dsdt-cpu-hotplug.dsl | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/hw/i386/acpi-dsdt-cpu-hotplug.dsl b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > index dee4843..34aab5a 100644
> > --- a/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > +++ b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > @@ -93,7 +93,7 @@ Scope(\_SB) {
> >      }
> >  
> >      Device(CPU_HOTPLUG_RESOURCE_DEVICE) {
> > -        Name(_HID, "ACPI0004")
> > +        Name(_HID, EisaId("PNP0A06"))
> >  
> >          Name(_CRS, ResourceTemplate() {
> >              IO(Decode16, CPU_STATUS_BASE, CPU_STATUS_BASE, 0, CPU_STATUS_LEN)
> 
> Reviewed-By: Igor Mammedov <imammedo@redhat.com>

Thanks!
Peter, could you pick this up for 2.0 please?
Michael S. Tsirkin April 7, 2014, 8:40 p.m. UTC | #5
On Sun, Apr 06, 2014 at 12:47:37PM +0300, Michael S. Tsirkin wrote:
> ACPI0004 seems too new:
> Windows XP complains about an unrecognized device.
> This is a regression since 1.7.
> Use PNP0A06 instead - Generic Container Device.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

ping

Just making sure we don't miss this for 2.0.

Pls apply.


> ---
> 
> Note: Igor has RFC patches to use PNP0C02 under PCI0,
> but that's not ready for 2.0.
> Igor, could you comment on whether PNP0C02 is preferable for
> some OS-es?
> 
> For PNP0A06 ACPI spec says:
>     PNP0A06
>     Generic Container Device. This device behaves exactly the same as the
>     PNP0A05 device.
>     This was originally known as Extended I/O Bus. This ID should only be
>     used for containers
>     that do not produce resources for consumption by child devices. Any
>     system resources
>     claimed by a PNP0A06 device’s _CRS object must be consumed by the
>     container itself.
> 
> PNP0C02 is not in ACPI spec. It does appear in MicroSoft legacy PNP ID
> document:
>     PNP0C02         General ID for reserving resources required by Plug and
>     Play motherboard registers. (Not specific to a particular device.)
> 
> Thoughts?
> 
>  hw/i386/acpi-dsdt-cpu-hotplug.dsl | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/i386/acpi-dsdt-cpu-hotplug.dsl b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> index dee4843..34aab5a 100644
> --- a/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> +++ b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> @@ -93,7 +93,7 @@ Scope(\_SB) {
>      }
>  
>      Device(CPU_HOTPLUG_RESOURCE_DEVICE) {
> -        Name(_HID, "ACPI0004")
> +        Name(_HID, EisaId("PNP0A06"))
>  
>          Name(_CRS, ResourceTemplate() {
>              IO(Decode16, CPU_STATUS_BASE, CPU_STATUS_BASE, 0, CPU_STATUS_LEN)
> -- 
> MST
diff mbox

Patch

diff --git a/hw/i386/acpi-dsdt-cpu-hotplug.dsl b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
index dee4843..34aab5a 100644
--- a/hw/i386/acpi-dsdt-cpu-hotplug.dsl
+++ b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
@@ -93,7 +93,7 @@  Scope(\_SB) {
     }
 
     Device(CPU_HOTPLUG_RESOURCE_DEVICE) {
-        Name(_HID, "ACPI0004")
+        Name(_HID, EisaId("PNP0A06"))
 
         Name(_CRS, ResourceTemplate() {
             IO(Decode16, CPU_STATUS_BASE, CPU_STATUS_BASE, 0, CPU_STATUS_LEN)