Patchwork acpi: initialize s4_val used in s4 shutdown

login
register
mail settings
Submitter Bruce Rogers
Date April 1, 2013, 4:57 p.m.
Message ID <1364835469-9317-1-git-send-email-brogers@suse.com>
Download mbox | patch
Permalink /patch/232784/
State New
Headers show

Comments

Bruce Rogers - April 1, 2013, 4:57 p.m.
While investigating why a 32 bit Windows 2003 guest wasn't able to
successfully perform a shutdown /h, it was discovered that commit
afafe4bbe0cf7d3318e1ac7b40925561f86a6bd4 inadvertently dropped the
initialization of the s4_val used to handle s4 shutdown.
Initialize the value as before.

Signed-off-by: Bruce Rogers <brogers@suse.com>
---
 hw/acpi.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
Gerd Hoffmann - April 2, 2013, 10:03 a.m.
On 04/01/13 18:57, Bruce Rogers wrote:
> While investigating why a 32 bit Windows 2003 guest wasn't able to
> successfully perform a shutdown /h, it was discovered that commit
> afafe4bbe0cf7d3318e1ac7b40925561f86a6bd4 inadvertently dropped the
> initialization of the s4_val used to handle s4 shutdown.
> Initialize the value as before.

> --- a/hw/acpi.c
> +++ b/hw/acpi.c
> @@ -474,6 +474,7 @@ static const MemoryRegionOps acpi_pm_cnt_ops = {
>  
>  void acpi_pm1_cnt_init(ACPIREGS *ar, MemoryRegion *parent)
>  {
> +    ar->pm1.cnt.s4_val = 2;

The '2' used to come from PIIX4PMState->s4_val before commit
afafe4bbe0cf7d3318e1ac7b40925561f86a6bd4, see piix4_pm_properties, this
behavior should be maintained IMHO.

cheers,
  Gerd
Bruce Rogers - April 2, 2013, 5:57 p.m.
>>> On 4/2/2013 at 04:03 AM, Gerd Hoffmann <kraxel@redhat.com> wrote: 
> On 04/01/13 18:57, Bruce Rogers wrote:
>> While investigating why a 32 bit Windows 2003 guest wasn't able to
>> successfully perform a shutdown /h, it was discovered that commit
>> afafe4bbe0cf7d3318e1ac7b40925561f86a6bd4 inadvertently dropped the
>> initialization of the s4_val used to handle s4 shutdown.
>> Initialize the value as before.
> 
>> --- a/hw/acpi.c
>> +++ b/hw/acpi.c
>> @@ -474,6 +474,7 @@ static const MemoryRegionOps acpi_pm_cnt_ops = {
>>  
>>  void acpi_pm1_cnt_init(ACPIREGS *ar, MemoryRegion *parent)
>>  {
>> +    ar->pm1.cnt.s4_val = 2;
> 
> The '2' used to come from PIIX4PMState->s4_val before commit
> afafe4bbe0cf7d3318e1ac7b40925561f86a6bd4, see piix4_pm_properties, this
> behavior should be maintained IMHO.

OK, I'll send out another patch with another parameter to acpi_pm1_cnt_init to
use to init the s4 value, pass in PIIX4PMState->s4_val for the piix4 case, and simply
pass a 2 in the ich9 and vt82c686 cases then. It looks like ich9 and vt82c686 are
not fully set up for doing s4 shutdown from what I can see.

Bruce

Patch

diff --git a/hw/acpi.c b/hw/acpi.c
index 53e47d5..26b67a8 100644
--- a/hw/acpi.c
+++ b/hw/acpi.c
@@ -474,6 +474,7 @@  static const MemoryRegionOps acpi_pm_cnt_ops = {
 
 void acpi_pm1_cnt_init(ACPIREGS *ar, MemoryRegion *parent)
 {
+    ar->pm1.cnt.s4_val = 2;
     ar->wakeup.notify = acpi_notify_wakeup;
     qemu_register_wakeup_notifier(&ar->wakeup);
     memory_region_init_io(&ar->pm1.cnt.io, &acpi_pm_cnt_ops, ar, "acpi-cnt", 2);