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
