Re: [PATCH] Add pci=assign-busses quirk to Dell Latitude D505

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

 



On Wed, Sep 10, 2014 at 8:08 PM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote:
> [+cc Andreas]
>
> On Fri, Aug 29, 2014 at 11:36 AM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote:
>> On Fri, Aug 29, 2014 at 8:44 AM, David Henningsson
>> <david.henningsson@xxxxxxxxxxxxx> wrote:
>>>
>>>
>>> On 2014-08-29 16:22, Bjorn Helgaas wrote:
>>>>
>>>> On Fri, Aug 29, 2014 at 3:10 AM, David Henningsson
>>>> <david.henningsson@xxxxxxxxxxxxx> wrote:
>>>>>
>>>>> Under a 3.16 based kernel (Ubuntu 3.16.0-031600-lowlatency),
>>>>> CardBus is not working unless pci=assign-buses is added to the
>>>>> kernel boot parameters.
>>>>>
>>>>> Signed-off-by: David Henningsson <david.henningsson@xxxxxxxxxxxxx>
>>>>> ---
>>>>>   arch/x86/pci/common.c | 8 ++++++++
>>>>>   1 file changed, 8 insertions(+)
>>>>>
>>>>> It was working OOTB on a 3.2 based kernel (Ubuntu 3.2.0-67-generic),
>>>>> and I have not thoroughly bisected what made it stop working.
>>>>> Still I'm suggesting to just a quirk to make it work regardless of
>>>>> kernel - it's a ~8 year old laptop, so being a bit lazy about it is
>>>>> probably okay, I hope. :-)
>>>>
>>>>
>>>> Please open a bugzilla and attach complete "lspci -vv" output and
>>>> dmesg logs from the working 3.2 kernel and a non-working current
>>>> kernel.
>>>>
>>>> The quirk might be OK, but it would be better if we could make a
>>>> generic fix that would work on more machines than just this one.
>>>
>>>
>>> All right, you can now find the requested information in this bug:
>>>
>>> https://bugzilla.kernel.org/show_bug.cgi?id=83441
>>
>> Thanks very much.
>>
>> I'm going to resist adding a quirk as long as I can, because quirks
>> tend to paper over issues on individual systems without actually
>> fixing the underlying problem.  Unfortunately, I'm swamped at the
>> moment and won't be able to work on this for a while.  It would be
>> ideal if we could bisect this and pinpoint where the problem started.
>> Bisecting changes to drivers/pci would be sufficient.
>>
>>>>> Extract from dmidecode:
>>>>>
>>>>> Handle 0x0100, DMI type 1, 25 bytes
>>>>> System Information
>>>>>          Manufacturer: Dell Inc.
>>>>>          Product Name: Latitude D505
>>>>>
>>>>> diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
>>>>> index 059a76c..1849e39 100644
>>>>> --- a/arch/x86/pci/common.c
>>>>> +++ b/arch/x86/pci/common.c
>>>>> @@ -262,6 +262,14 @@ static const struct dmi_system_id
>>>>> pciprobe_dmi_table[] = {
>>>>>                          DMI_MATCH(DMI_PRODUCT_NAME, "SX20S"),
>>>>>                  },
>>>>>          },
>>>>> +       {
>>>>> +               .callback = assign_all_busses,
>>>>> +               .ident = "Dell Latitude D505 Laptop",
>>>>> +               .matches = {
>>>>> +                       DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
>>>>> +                       DMI_MATCH(DMI_PRODUCT_NAME, "Latitude D505"),
>>>>> +               },
>>>>> +       },
>>>>>   #endif         /* __i386__ */
>>>>>          {
>>>>>                  .callback = set_bf_sort,
>
> v3.16 fails with:
>
>   pci 0000:01:01.0: can't allocate child bus 01 from [bus 01]
>
> which Andreas added with fc1b253141b3 ("PCI: Don't scan random busses
> in pci_scan_bridge()").  But I don't understand that code well enough
> to know whether this commit is actually the cause of the problem.
Looks like my commit is at fault. The parent bridge 00:1e has
secondary=subordinate=1 assigned by the BIOS. My commit then refuses
to assign a secondary bus to 01:01 because the parent's bus window has
been exhausted.

Before fc1b253141b3, we ignored the parent's bus window and simply
created a new bus #2. If bus #2 had already existed elsewhere then we
would have rescanned it, which was the (potential) problem patch was
trying to address. Much later yenta_socket fixes the parent bridge.
See http://lxr.free-electrons.com/source/drivers/pcmcia/yenta_socket.c#L1077

Could move the yenta quirk to pci_scan_bridge or trigger a rescan from
the yenta driver after the fixup is done?


> And I also haven't figured out how "pci=assign-busses" makes a difference.
I'd guess that with pci=assign-busses we set size the parent bridge correctly.


> David, would you mind turning on CONFIG_DYNAMIC_DEBUG=y in your v3.16
> kernel, adding  'dyndbg="file probe.c +p"' to your boot arguments, and
> collecting another dmesg log?
>
> Bjorn
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux