diff mbox

[1/9] pc: acpi: fix WindowsXP BSOD when memory hotplug is enabled

Message ID 1418054888-11310-2-git-send-email-imammedo@redhat.com
State New
Headers show

Commit Message

Igor Mammedov Dec. 8, 2014, 4:08 p.m. UTC
ACPI parser in XP considers PNP0A06 devices of CPU and
memory hotplug as duplicates. Adding unique _UID
to CPU hotplug device fixes BSOD.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
 hw/i386/acpi-dsdt-cpu-hotplug.dsl | 1 +
 1 file changed, 1 insertion(+)

Comments

Michael S. Tsirkin Dec. 8, 2014, 8:57 p.m. UTC | #1
On Mon, Dec 08, 2014 at 04:08:00PM +0000, Igor Mammedov wrote:
> ACPI parser in XP considers PNP0A06 devices of CPU and
> memory hotplug as duplicates. Adding unique _UID
> to CPU hotplug device fixes BSOD.
> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>

And let's add them for memory hotplug as well?
Also, if we do stable branch release, we probably
want to only do it for memory hotplug in a separate
patch, right?
This way users who don't enable memory hotplug
are unaffected, reduces risk slightly.

> ---
>  hw/i386/acpi-dsdt-cpu-hotplug.dsl | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/hw/i386/acpi-dsdt-cpu-hotplug.dsl b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> index 34aab5a..268d870 100644
> --- a/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> +++ b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> @@ -94,6 +94,7 @@ Scope(\_SB) {
>  
>      Device(CPU_HOTPLUG_RESOURCE_DEVICE) {
>          Name(_HID, EisaId("PNP0A06"))
> +        Name(_UID, "CPU hotplug resources")
>  
>          Name(_CRS, ResourceTemplate() {
>              IO(Decode16, CPU_STATUS_BASE, CPU_STATUS_BASE, 0, CPU_STATUS_LEN)
> -- 
> 1.8.3.1
Igor Mammedov Dec. 9, 2014, 10:05 a.m. UTC | #2
On Mon, 8 Dec 2014 22:57:05 +0200
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Mon, Dec 08, 2014 at 04:08:00PM +0000, Igor Mammedov wrote:
> > ACPI parser in XP considers PNP0A06 devices of CPU and
> > memory hotplug as duplicates. Adding unique _UID
> > to CPU hotplug device fixes BSOD.
> > 
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> 
> And let's add them for memory hotplug as well?
XP doesn't support it.

> Also, if we do stable branch release, we probably
> want to only do it for memory hotplug in a separate
> patch, right?
> This way users who don't enable memory hotplug
> are unaffected, reduces risk slightly.
Memory hotplug device already has _UID, so it doesn't need patching.
This patch just fixes BSOD if QEMU has been started with
hotplug enabled i.e. for example -m 2G,slots=2,maxmem=4G,
and prevents clashing between memory hotplug and
cpu hotplug devices on XP (i.e. XP specific quirk).

I've tested it with XPsp3 and all later version upto WS2012R2.


> 
> > ---
> >  hw/i386/acpi-dsdt-cpu-hotplug.dsl | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/hw/i386/acpi-dsdt-cpu-hotplug.dsl b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > index 34aab5a..268d870 100644
> > --- a/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > +++ b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > @@ -94,6 +94,7 @@ Scope(\_SB) {
> >  
> >      Device(CPU_HOTPLUG_RESOURCE_DEVICE) {
> >          Name(_HID, EisaId("PNP0A06"))
> > +        Name(_UID, "CPU hotplug resources")
> >  
> >          Name(_CRS, ResourceTemplate() {
> >              IO(Decode16, CPU_STATUS_BASE, CPU_STATUS_BASE, 0, CPU_STATUS_LEN)
> > -- 
> > 1.8.3.1
Michael S. Tsirkin Dec. 9, 2014, 10:33 a.m. UTC | #3
On Tue, Dec 09, 2014 at 11:05:37AM +0100, Igor Mammedov wrote:
> On Mon, 8 Dec 2014 22:57:05 +0200
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Mon, Dec 08, 2014 at 04:08:00PM +0000, Igor Mammedov wrote:
> > > ACPI parser in XP considers PNP0A06 devices of CPU and
> > > memory hotplug as duplicates. Adding unique _UID
> > > to CPU hotplug device fixes BSOD.
> > > 
> > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > 
> > And let's add them for memory hotplug as well?
> XP doesn't support it.
> > Also, if we do stable branch release, we probably
> > want to only do it for memory hotplug in a separate
> > patch, right?
> > This way users who don't enable memory hotplug
> > are unaffected, reduces risk slightly.
> Memory hotplug device already has _UID, so it doesn't need patching.
> This patch just fixes BSOD if QEMU has been started with
> hotplug enabled i.e. for example -m 2G,slots=2,maxmem=4G,
> and prevents clashing between memory hotplug and
> cpu hotplug devices on XP (i.e. XP specific quirk).
> 
> I've tested it with XPsp3 and all later version upto WS2012R2.


I see, I misunderstood.
Thanks, I'll apply this one.

> 
> > 
> > > ---
> > >  hw/i386/acpi-dsdt-cpu-hotplug.dsl | 1 +
> > >  1 file changed, 1 insertion(+)
> > > 
> > > diff --git a/hw/i386/acpi-dsdt-cpu-hotplug.dsl b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > > index 34aab5a..268d870 100644
> > > --- a/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > > +++ b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
> > > @@ -94,6 +94,7 @@ Scope(\_SB) {
> > >  
> > >      Device(CPU_HOTPLUG_RESOURCE_DEVICE) {
> > >          Name(_HID, EisaId("PNP0A06"))
> > > +        Name(_UID, "CPU hotplug resources")
> > >  
> > >          Name(_CRS, ResourceTemplate() {
> > >              IO(Decode16, CPU_STATUS_BASE, CPU_STATUS_BASE, 0, CPU_STATUS_LEN)
> > > -- 
> > > 1.8.3.1
diff mbox

Patch

diff --git a/hw/i386/acpi-dsdt-cpu-hotplug.dsl b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
index 34aab5a..268d870 100644
--- a/hw/i386/acpi-dsdt-cpu-hotplug.dsl
+++ b/hw/i386/acpi-dsdt-cpu-hotplug.dsl
@@ -94,6 +94,7 @@  Scope(\_SB) {
 
     Device(CPU_HOTPLUG_RESOURCE_DEVICE) {
         Name(_HID, EisaId("PNP0A06"))
+        Name(_UID, "CPU hotplug resources")
 
         Name(_CRS, ResourceTemplate() {
             IO(Decode16, CPU_STATUS_BASE, CPU_STATUS_BASE, 0, CPU_STATUS_LEN)