qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH RFC] acpi: add reset register to fadt


From: Laszlo Ersek
Subject: Re: [Qemu-devel] [PATCH RFC] acpi: add reset register to fadt
Date: Wed, 1 Feb 2017 17:27:04 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0

On 02/01/17 17:17, Michael S. Tsirkin wrote:
> On Wed, Feb 01, 2017 at 05:03:38PM +0100, Laszlo Ersek wrote:
>> On 02/01/17 16:16, Igor Mammedov wrote:
>>> On Wed, 1 Feb 2017 14:03:52 +0100
>>> Laszlo Ersek <address@hidden> wrote:
>>>
>>>> On 02/01/17 13:52, Laszlo Ersek wrote:
>>>>> On 02/01/17 12:37, Igor Mammedov wrote:  
>>>>>> On Tue, 31 Jan 2017 20:17:02 +0200
>>>>>> "Michael S. Tsirkin" <address@hidden> wrote:
>>>>>>  
>>>>>>> On Tue, Jan 31, 2017 at 05:28:57PM +0100, Laszlo Ersek wrote:  
>>>>>>>> The ACPI 6.1 spec says,
>>>>>>>>
>>>>>>>> - DSDT: [...] If the X_DSDT field contains a non-zero value then this
>>>>>>>>   field must be zero.
>>>>>>>> - X_DSDT: [...] If the DSDT field contains a non-zero value then this
>>>>>>>>   field must be zero.    
>>>>>>>
>>>>>>> But that's only 6.1. 6.0 and earlier did not say this.
>>>>>>> The errata they wanted to address was:
>>>>>>> 1393 In FADT: if X_DSDT field is non-zero, DSDT
>>>>>>> field should be ignored or deprecated
>>>>>>>
>>>>>>> I would class this as a spec bug.
>>>>>>>  
>>>>>>
>>>>>> The same applies to X_PM1a_EVT_BLK and co,
>>>>>> for example 5.1 spec "This is a required
>>>>>> field."
>>>>>>
>>>>>> And looks like Windows implemented it as mandatory
>>>>>> to boot perhaps to be compatible with 5.1 and earlier
>>>>>> specs.
>>>>>>
>>>>>> It appears fw would be forced to fill fields depending
>>>>>> on table revision.  
>>>>>
>>>>> Sounds like a valid point.
>>>>>
>>>>> I compared the FADT defintion between ACPI 5.1 and ACPI 6.1. Indeed, the
>>>>> former says:
>>>>>
>>>>> - FADT Major Version: 5; Major Version of this FADT structure, [...]
>>>>> - DSDT: Physical memory address (0-4 GB) of the DSDT.
>>>>> - X_DSDT: 64bit physical address of the DSDT.
>>>>>
>>>>> the latter says:
>>>>>
>>>>> - FADT Major Version: 6; Major Version of this FADT structure, [...]
>>>>>
>>>>> - DSDT: Physical memory address of the DSDT. If the X_DSDT field
>>>>>   contains a non-zero value then this field must be zero.
>>>>>
>>>>> - X_DSDT: Extended physical address of the DSDT. If the DSDT field
>>>>>   contains a non-zero value then this field must be zero.
>>>>>
>>>>> I will ask on edk2-devel whether the
>>>>> "MdeModulePkg/Universal/Acpi/AcpiTableDxe" maintainers can think of a
>>>>> way to accommodate this.  
>>>>
>>>> Sigh, this looks nasty.
>>>>
>>>> Considering specifically the DSDT <-> X_DSDT question, Mantis ticket
>>>> #1393 (which requires the mutual exclusion) went into 5.1B. In version
>>>> 5.1A, the mutual exclusion is not required.
>>>>
>>>> Unfortuantely, the FADT Major.Minor version, as reported through the
>>>> bytes at offsets 8 and 131 decimal in the table, is "5.1" for *both*
>>>> 5.1A and 5.1B. In other words, looking at just Major.Minor, it cannot be
>>>> determined with full precision whether the DSDT and X_DSDT fields should
>>>> be exclusive or not. :/
>>> The same applies to 6.0 vs 6.0A 
>>
>> Thanks for the info; I've updated the patch!
>>
>> Laszlo
> 
> Same applies for firmware control. There, the difference would be
> between 3.0 and 4.0 where they made the incompatible change.
> 

Let's see first how the DSDT / X_DSDT patch fares...



reply via email to

[Prev in Thread] Current Thread [Next in Thread]