Re: Minor xhci issues (failed to peer) on Dell XPS 13 9350 (Skylake)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux