Re: [PATCH] ACPI:remove panic in case hardware has changed after S4

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

 



On Tuesday, July 16, 2013 03:32:01 PM joeyli wrote:
> 於 一,2013-07-15 於 13:43 +0200,oliver@xxxxxxxxxx 提到:
> > From: Oliver Neukum <oneukum@xxxxxxx>
> > 
> > Some BIOSes change hardware based on the state of
> > a laptop's lid. If the lid is closed, the touchpad is
> > disabled and the checksum changes. Windows 8 no longer
> > aborts resume if the checksum has changed.
> > 
> > Signed-off-by: Oliver Neukum <oneukum@xxxxxxx>
> > ---
> >  drivers/acpi/sleep.c | 8 +++-----
> >  1 file changed, 3 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
> > index 9c1a435..14744e5 100644
> > --- a/drivers/acpi/sleep.c
> > +++ b/drivers/acpi/sleep.c
> > @@ -664,11 +664,9 @@ static void acpi_hibernation_leave(void)
> >  	/* Reprogram control registers */
> >  	acpi_leave_sleep_state_prep(ACPI_STATE_S4);
> >  	/* Check the hardware signature */
> > -	if (facs && s4_hardware_signature != facs->hardware_signature) {
> > -		printk(KERN_EMERG "ACPI: Hardware changed while hibernated, "
> > -			"cannot resume!\n");
> > -		panic("ACPI S4 hardware signature mismatch");
> > -	}
> > +	if (facs && s4_hardware_signature != facs->hardware_signature)
> > +		printk(KERN_CRIT "ACPI: Hardware changed while hibernated, "
> > +			"success doubtful!\n");
> >  	/* Restore the NVS memory area */
> >  	suspend_nvs_restore();
> >  	/* Allow EC transactions to happen. */
> 
> This morning I tried to reproduce the hardware_signature change on my
> Acer notebook, I hope can monitor the change on Linux then use Windows 8
> to check the behavior.
> Unfortunately I can not reproduce the hardware_signature change by
> remove memory or PCI device(wifi module) with Linux kernel.
> 
> For PCI device, as ACPI spec's declare, it didn't causes
> hardware_signature change, I print out in acpi_hibernation_leave() to
> confirm it.
> 
> For memory size, before the S4 resume path run to
> acpi_hibernation_leave(), kernel check the physical memory pages number
> in snapshot_write_next() then -EPERM if physical pages change . So, it
> doesn't have chance to check the hardware_signature changed.
> 
> Base on the above testing, correct my originally thinking, the
> hardware_signature check could not detect the change of memory size
> because it's too late.
> 
> Sorry for I didn't find out the actual behavior of Windows 8 to confirm
> it ignore hardware_signature change. At least could not verify on my
> machine.

OK, so it looks like we still need somebody to confirm that indeed Windows 8
doesn't check the hardware signature during resume from hibernation, right?

It is kind of important, because the *reason* for doing that change is the
reported Windows 8 compatibility issue.

Thanks,
Rafael


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux