diff mbox

[7/9] pc: ACPI: expose PRST IO range via _CRS

Message ID 20140202131255.GB25713@redhat.com
State New
Headers show

Commit Message

Michael S. Tsirkin Feb. 2, 2014, 1:12 p.m. UTC
On Thu, Jan 09, 2014 at 05:36:37PM +0100, Igor Mammedov wrote:
> .. so OSPM could notice resource conflict if there is any.
> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>

Hi Igor,
I noticed an unpleasant side effect caused by this patch.
Now, windows xp prompts me for a driver for this device
every time I boot it.

If I click cancel it goes away, but it's annoying.
I think ACPI0004 is too new for winxp to recognize it.
I tried the following patch and it seems to work fine.
What do you think?





> ---
> v2:
>   * use define for DEVICE name to make it more descriptive
>   * define _STA as present,functioning, decoding, not shown in UI
> ---
>  hw/i386/acpi-dsdt-cpu-hotplug.dsl |   14 +++++++++++++-
>  1 files changed, 13 insertions(+), 1 deletions(-)
> 
> diff --git a/hw/i386/acpi-dsdt-cpu-hotplug.dsl b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> index 1dfbb4f..f91eafd 100644
> --- a/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> +++ b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> @@ -16,6 +16,7 @@
>  /****************************************************************
>   * CPU hotplug
>   ****************************************************************/
> +#define CPU_HOTPLUG_RESOURCE_DEVICE PRES
>  
>  Scope(\_SB) {
>      /* Objects filled in by run-time generated SSDT */
> @@ -52,7 +53,8 @@ Scope(\_SB) {
>          Sleep(200)
>      }
>  
> -    OperationRegion(PRST, SystemIO, CPU_STATUS_BASE, 32)
> +#define CPU_STATUS_LEN 32
> +    OperationRegion(PRST, SystemIO, CPU_STATUS_BASE, CPU_STATUS_LEN)
>      Field(PRST, ByteAcc, NoLock, Preserve) {
>          PRS, 256
>      }
> @@ -89,4 +91,14 @@ Scope(\_SB) {
>              Increment(Local0)
>          }
>      }
> +
> +    Device(CPU_HOTPLUG_RESOURCE_DEVICE) {
> +        Name(_HID, "ACPI0004")
> +
> +        Name(_CRS, ResourceTemplate() {
> +            IO(Decode16, CPU_STATUS_BASE, CPU_STATUS_BASE, 0, CPU_STATUS_LEN)
> +        })
> +
> +        Name(_STA, 0xB) /* present, functioning, decoding, not shown in UI */
> +    }
>  }
> -- 
> 1.7.1

Comments

Igor Mammedov Feb. 2, 2014, 1:27 p.m. UTC | #1
On Sun, 2 Feb 2014 15:12:55 +0200
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Thu, Jan 09, 2014 at 05:36:37PM +0100, Igor Mammedov wrote:
> > .. so OSPM could notice resource conflict if there is any.
> > 
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> 
> Hi Igor,
> I noticed an unpleasant side effect caused by this patch.
> Now, windows xp prompts me for a driver for this device
> every time I boot it.
> 
> If I click cancel it goes away, but it's annoying.
> I think ACPI0004 is too new for winxp to recognize it.
> I tried the following patch and it seems to work fine.
> What do you think?
I have patches that refactor static holes punching into
dynamic one using PNP0A02 device on PCI0 bus, but I still
testing it make sure all windows versions are happy with it,
and it's on top of hotplug refactoring series.
So I'll hold it off until hotplug refactoring series is in.

> 
> 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)
> 
> 
> 
> > ---
> > v2:
> >   * use define for DEVICE name to make it more descriptive
> >   * define _STA as present,functioning, decoding, not shown in UI
> > ---
> >  hw/i386/acpi-dsdt-cpu-hotplug.dsl |   14 +++++++++++++-
> >  1 files changed, 13 insertions(+), 1 deletions(-)
> > 
> > diff --git a/hw/i386/acpi-dsdt-cpu-hotplug.dsl b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > index 1dfbb4f..f91eafd 100644
> > --- a/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > +++ b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > @@ -16,6 +16,7 @@
> >  /****************************************************************
> >   * CPU hotplug
> >   ****************************************************************/
> > +#define CPU_HOTPLUG_RESOURCE_DEVICE PRES
> >  
> >  Scope(\_SB) {
> >      /* Objects filled in by run-time generated SSDT */
> > @@ -52,7 +53,8 @@ Scope(\_SB) {
> >          Sleep(200)
> >      }
> >  
> > -    OperationRegion(PRST, SystemIO, CPU_STATUS_BASE, 32)
> > +#define CPU_STATUS_LEN 32
> > +    OperationRegion(PRST, SystemIO, CPU_STATUS_BASE, CPU_STATUS_LEN)
> >      Field(PRST, ByteAcc, NoLock, Preserve) {
> >          PRS, 256
> >      }
> > @@ -89,4 +91,14 @@ Scope(\_SB) {
> >              Increment(Local0)
> >          }
> >      }
> > +
> > +    Device(CPU_HOTPLUG_RESOURCE_DEVICE) {
> > +        Name(_HID, "ACPI0004")
> > +
> > +        Name(_CRS, ResourceTemplate() {
> > +            IO(Decode16, CPU_STATUS_BASE, CPU_STATUS_BASE, 0, CPU_STATUS_LEN)
> > +        })
> > +
> > +        Name(_STA, 0xB) /* present, functioning, decoding, not shown in UI */
> > +    }
> >  }
> > -- 
> > 1.7.1
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)