On Sun, Mar 13, 2016 at 7:29 PM, Mario Limonciello <mario_limonciello@xxxxxxxx> wrote: > > > On 03/12/2016 02:33 PM, Andy Lutomirski wrote: >> On Sat, Mar 12, 2016 at 11:35 AM, Andy Lutomirski <luto@xxxxxxxxxxxxxx> wrote: >> Got it. I was barking up the wrong tree. >> >> Q: What happens if _Q66 runs concurrently with itself: >> >> A: >> >> Method (_Q66, 0, NotSerialized) // _Qxx: EC Query >> { >> Acquire (PATM, 0x0064) >> If ((ECRD != One)) >> { >> Return (Zero) >> } >> >> NEVT () >> Release (PATM) >> Return (Zero) >> } >> >> The first one acquires PATM. The second one fails to acquire PATM due >> to the timeout, does something potentially harmful when it reenters >> NEVT (not sure -- maybe it's fine), then blows up when it tries to >> release PATM, which it doesn't hold. >> >> --Andy > Andy, > > Our team has confirmed this mistake and will issue a fix in a future > BIOS. For now if you want to build your own DSDT to see if this is > causing your type-C problems the Release(PATM) will be inserted in the > obvious location. > > FWIW this issue will affect many platforms in this generation. (XPS > 9550, XPS 9350, Precision 5510, and more) I've applied this patch: DefinitionBlock ("q66patch", "DSDT", 2, "ANDY ", "LUTO ", 0x01072009) { External (ECRD, IntObj) External (PATM, UnknownObj) External (NEVT, MethodObj) Method (\_SB.PCI0.LPCB._Q66, 0, NotSerialized) // _Qxx: EC Query { if (Acquire (PATM, 0x03e8) != Zero) { return (Zero) } If ((ECRD != One)) { Release (PATM) Return (Zero) } NEVT () Release (PATM) Return (Zero) } } IOW, I've increased the timeout, handled the timeout, and added the missing release. Still no luck with USB-C. Maybe I'll try to find a way to apply that Alpine Ridge firmware update. But I also could easily have screwed up the patching process. --Andy -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html