On Sun, Mar 13, 2016 at 7:29 PM, Mario Limonciello
<[email protected]> wrote:
>
>
> On 03/12/2016 02:33 PM, Andy Lutomirski wrote:
>> On Sat, Mar 12, 2016 at 11:35 AM, Andy Lutomirski <[email protected]>
>> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html