RE: [PATCH]: ACPI : Set 32bit and 64bit waking vector in FCAS table

Li, Shaohua
2008-09-05T01:21:57Z

>-----Original Message-----
>From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
>owner@vger.kernel.org] On Behalf Of Zhao Yakui
>Sent: Friday, September 05, 2008 9:17 AM
>To: Matthew Garrett
>Cc: Rafael J. Wysocki; Zhang, Rui; lenb@kernel.org; linux-
>acpi@vger.kernel.org; andi@firstfloor.org
>Subject: Re: [PATCH]: ACPI : Set 32bit and 64bit waking vector in FCAS
>table
>
>On Thu, 2008-09-04 at 13:07 +0100, Matthew Garrett wrote:
>> On Thu, Sep 04, 2008 at 11:37:51AM +0200, Rafael J. Wysocki wrote:
>> > > so it seems that the BIOS sets ﻿facs->xfirmware_waking_vector during
>> > > POST, but uses ﻿﻿facs->firmware_waking_vector to get back during resume.
>> >
>> > So the BIOS is buggy, so let's add a quirk for it.
>>
>> Does the machine resume in Windows? If so, do we have any evidence that
>> Windows has a quirks list to handle this case? If not, then I suspect
>> that Windows sets both and this is what everyone has tested against.
>The laptop can be resumed on windows.(XP & Vista). And we don't know
>whether there exists the quirk list to handler this case on windows.
>Maybe what you said is right.
>In fact it is harmless when both 32bit and 64bit waking vector in FACS
>table are set. When the system is resumed, BIOS will transfer control to
>the predefined waking vector. As we set the same waking vector, either
>of them is OK.
>
>There exists the difference between 32bit and 64bit waking vector unless
>the waking address is above 4GB. But in fact the waking address is below
>1MB on most machines as the waking address needs to be accessed by BIOS.
>
>So in most cases the 32bit and 64bit waking vector are the same value.
>BIOS can transfer control to either of them.
There was discussion about this issue several months ago (intel's ml), looks people forgot to take action after the discussion. The spec owner said 64bit vector is used in protected mode. That is if OS sets it, wakeup code is called in protected mode by BIOS. So the 64-bit vector shouldn't be used.

Thanks,
Shaohua