https://bugzilla.kernel.org/show_bug.cgi?id=109081

--- Comment #11 from Ludovic Magerand <[email protected]> ---
I investigated this more in depth this week-end.

First, there was a EC firmware update on MSI website that I missed when I
flashed the bios, so I applied it, but it haven't change a single thing, not
even the ACPI tables.

I also switched to the latest 4.4-rc5 kernel version and did a full review of
the configuration, the new configuration is given in previous attachements,
along with the new dmesg for boot options acpi=off and nolapic.

I tried to use the microcode update module of the kernel, but it seems that the
latest intel microcode data package does not contain the microcode for this
processor, when running iucode_tool to generate an initrd file, I get 
iucode_tool -S --write-earlyfw=/boot/ucode.cpio /lib/firmware/intel-ucode/*
iucode_tool: system has processor(s) with signature 0x000506e3
iucode_tool: No valid microcodes were selected, nothing to do...

I have been able to finaly decompile the ACPI tables, which allowed me to make
a guess on what the problem might be.
There is two error in the kernel log when using nolapic that seems big enought
to me to result in real troubles.

First error is
[    0.000027] ACPI: Core revision 20150930
[    0.019261] ACPI Error: [\_SB_.PCI0.XHC_.RHUB.HS11] Namespace lookup
failure, AE_NOT_FOUND (20150930/dswload-210)
[    0.019268] ACPI Exception: AE_NOT_FOUND, During name lookup/catalog
(20150930/psobject-227)
[    0.019294] ACPI Exception: AE_NOT_FOUND, (SSDT:xh_rvp11) while loading
table (20150930/tbxfload-193)
[    0.026871] ACPI Error: 1 table load failures, 9 successful
(20150930/tbxfload-214)

The error itself appears to happen when parsing the SSDT5 table (xh_rvp11)
which seems to be related to USB/XHCI.
It says that the device HS11 is not found, but when I decompiled the SSDT5
table, HS11 is resolved as an external DeviceObj, coming from the DSDT
probably.
iasl has no problem to compile this file back without any errors.

I guess the error happens because in the DSDT, the HS11 Device is created
inside an If at the root of the table (meaning not in any Scope or Method, or
nothing) :
    If (LEqual (PCHV (), SPTH))
    {
        Scope (_SB.PCI0.XHC.RHUB)
        {
            Device (HS11)
            {
                Name (_ADR, 0x0B)  // _ADR: Address
                Device (CAM0)
It seems to be related to the laptop webcam by the way (the webcam appears as
Bus 001 Device 011 in lsusb), which can be deactived by a switch and is
deactivated at boot time.
The PCHV Method is declared at the root of the table also
    Name (SPTH, One)
    Name (SPTL, 0x02)
    Method (PCHV, 0, NotSerialized)
    {
        If (LEqual (PCHS, One))
        {
            Return (SPTH) /* \SPTH */
        }

        If (LEqual (PCHS, 0x02))
        {
            Return (SPTL) /* \SPTL */
        }

        Return (Zero)
    }
PCHS appears in
    OperationRegion (PNVA, SystemMemory, PNVB, PNVL)
    Field (PNVA, AnyAcc, Lock, Preserve)
    {
        RCRV,   32, 
        PCHS,   16, 
        PCHG,   16, 
also at the root of the table.
If I get it correctly, it means that PCHS is some value that is read from the
memory and/or hardware ?
So it might be possible that it is not already initialized when the DSDT table
is loading ? Or if it corresponds to the activation status of the webcam, it
might be deactivated and being SPTL. It would make the device not created when
parsing the DSDT, and result in the error later when parsing the SSDT5 table.

For the second error, it might be the same kind of problem.
[    0.204210] ACPI : EC: EC description table is found, configuring boot EC
[    0.204224] ACPI : EC: EC started
[    0.213212] ACPI Error: [^^^PEG0.PEGP.EASP] Namespace lookup failure,
AE_NOT_FOUND (20150930/psargs-359)
[    0.213218] ACPI Error: Method parse/execution failed
[\_SB.PCI0.LPCB.EC._REG] (Node ffff8804730d2af0), AE_NOT_FOUND
(20150930/psparse-542)
[    0.213231] ACPI : EC: Fail in evaluating the _REG object of EC device.
Broken bios is suspected.
[    0.217187] ACPI Error: [^^^PEG0.PEGP.EASP] Namespace lookup failure,
AE_NOT_FOUND (20150930/psargs-359)
[    0.217192] ACPI Error: Method parse/execution failed
[\_SB.PCI0.LPCB.EC._REG] (Node ffff8804730d2af0), AE_NOT_FOUND
(20150930/psparse-542)

Apparently the ECDT is loading correctly and when activating it, using the _REG
method of the EC device defined in the DSDT, it fails because EASP is not
found.
When I decompile the DSDT, using the SSDTs as external tables with the -e
switch, ^^^PEG0.PEGP.EASP is resolved as an external _SB_.PCI0.PEG0.PEGP.EASP
of type UnknownObj.
I think it comes from the SSDT6 table (SaSsdt), which seems to be related
mostly to PCI and graphical devices.
Note that I can't compile back neither the DSDT nor the SSDT6 table because
when decompiling it there are some unresolved external methods.

In the SSDT6 table, EASP is defined inside an If at the root of the table
    If (CondRefOf (\_SB.PCI0.PEG0.PEGP))
    {
        Scope (\_SB.PCI0.PEG0.PEGP)
        {
            OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
            Field (PCIS, AnyAcc, NoLock, Preserve)
            {
                PVID,   16, 
                PDID,   16, 
                Offset (0x88), 
                EASP,   2,
\_SB.PCI0.PEG0.PEGP is resolved as a external DeviceObj, which is defined in
the DSDT, without any condition this time.

I have no idea if my reasoning is correct, and/or if it might help solve the
problem, and how if so.
But again, if you need more information I'm still available.

-- 
You are receiving this mail because:
You are watching the assignee of the bug.

------------------------------------------------------------------------------
_______________________________________________
acpi-bugzilla mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla

Reply via email to