My original question was in regard to the boot time warning:
+ACPI BIOS Warning (bug): 32/64X length mismatch in FADT/Gpe0Block: 64/32 (20150515/tbfadt-644)
Now that I have acpidump -dt from 10.1 to compare with 10.2 ...
Previously, Lowell very kindly did some work looking into the issue and
then posted:
>> I've looked at the code changes in enough detail to figure out that in
>> the case of the length mismatch in your BIOS, the changes from FreeBSD
>> 10.1 to 10.2 will give the possibility of different behaviour.
>> Specifically, the length from the 64-bit definition of the registers
>> will be used, where previously it would use the 32-bit definition.
>> Strangely enough, your system has 32 events in its 64-bit event block,
>> while it has 39 in the 32-bit version. [...] To check this would
>> likely require looking at the contents of the GPE Scope in the output
>> of acpidump -d from an older version of FreeBSD, assuming the the dump
>> code works the way I assume, ...
[It might use the smaller number. See below.]
I replied:
> It'll probably be around Labor Day weekend before I get time to try it,
> but I'll create a 10.1 memstick, boot from it, do acpidump -dt, and
> compare the result with the 10.2 output. [...] I'll post a follow up
> once I have those results.
This is that followup.
High order result:
There were many differences on a line-by-line basis including 32/64
bit pointer differences (e.g., X_FACS=0x00000000dfeb2000 vs.
X_FACS=0xdfeb2000), but I saw no structural difference between
the 10.1 and 10.2 acpidump -dt outputs. They both had the same
number of items with the same values.
That suggests to me there's no operational difference between 10.1
and 10.2 (my original concern).
Details:
There were lots of lines I had to compare "by eye" because the old/10.1
acpidump used what look like macros, while the new/10.2 acpidump
produced more "C"-like output and more comments. E.g.,
704,709c706,711
< Store (Arg0, Index (PRWP, Zero))
< Store (ShiftLeft (SS1, One), Local0)
< Or (Local0, ShiftLeft (SS2, 0x02), Local0)
< Or (Local0, ShiftLeft (SS3, 0x03), Local0)
< Or (Local0, ShiftLeft (SS4, 0x04), Local0)
< If (And (ShiftLeft (One, Arg1), Local0))
---
> Index (PRWP, Zero) = Arg0
> Local0 = (SS1 << One)
> Local0 |= (SS2 << 0x02)
> Local0 |= (SS3 << 0x03)
> Local0 |= (SS4 << 0x04)
> If (((One << Arg1) & Local0))
All those differences were pretty clear matches except six of the form:
5558,5562c5558
< If (LEqual (Arg0, Buffer (0x10)
< {
< /* 0000 */ 0x5B, 0x4D, 0xDB, 0x33, 0xF7, 0x1F, 0x1C, 0x40,
< /* 0008 */ 0x96, 0x57, 0x74, 0x41, 0xC0, 0x3D, 0xD7, 0x66
< }))
---
> If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */))
where I have no way of knowing whether ToUUID() interprets the byte
order the same way (though I expect it does).
As to GPE/GPE0, the "GPE"-related lines in both 10.1 and 10.2 said:
GPE0_BLK=0x820-0x827
X_GPE0_BLK=0x820:0[32] (IO)
OperationRegion (GPE0, SystemIO, GP0B, 0x10)
Field (GPE0, ByteAcc, NoLock, Preserve)
{
Offset (0x04),
, 27,
GPM6, 1
}
Also, aside from the addition of comments in the 10.2 version,
Scope (\_GPE) { ... } was exactly the same in both.
Since the two "acpidump -dt"s appear to match functionally, can it be
concluded that the warning message is just about the discrepancy between
(0x) "27" (=39) vs. 32 and that:
* 10.1 used the smaller number but didn't complain about the mismatch,
and
* the functional match between the acpidumps strongly indicates there's
no operational problem?
Thanks!
-WBE