Bug 18412

Summary: Intel DP43BF requires "pci=assign-busses" to discover some devices
Product: Drivers Reporter: Bjorn Helgaas (bjorn.helgaas)
Component: PCIAssignee: drivers_pci (drivers_pci)
Status: RESOLVED CODE_FIX    
Severity: normal CC: alan, bjorn, vl
Priority: P1    
Hardware: All   
OS: Linux   
URL: http://marc.info/?l=linux-pci&m=128329011210489&w=2
Kernel Version: 3.4.9 Subsystem:
Regression: No Bisected commit-id:
Attachments: dmesg (devices not detected)
dmesg (devices detected)
check bus range to reject invalid one.
dmesg, lspci and other info on old and tested kernels
full dmesg,lspci,lshw,uname with adn without suggested patch

Description Bjorn Helgaas 2010-09-13 15:24:53 UTC
Brian C. Huffman <bhuffman@graze.net> reports:

> I have an Intel DP43BF motherboard with 4 PCI slots, 2 PCIe x1 and 1 PCIe x16
> slots.  With 2.6.36-rc2-git5 (as well as stable 2.6.34 and .35), the kernel
> doesn't see my conventional PCI devices.  They can be seen with dmidecode
> but do not show up with lspci.  I've tried pci=noacpi, pci=use_crs and while
> it takes the options, it doesn't change the visibility of the devices.

> These same devices (a PVR250,Maudio Delta DiO, and Fusion HD DVB card)
> previously worked with another motherboard.

Brian determined that the devices work correctly under Windows XP SP2,
and they also work under Linux if we use "pci=assign-busses".

The bug here is that Linux should be smart enough to work even without
"pci=assign-busses".
Comment 1 Bjorn Helgaas 2010-09-13 15:27:05 UTC
Created attachment 29802 [details]
dmesg (devices not detected)

dmesg where we don't find the conventional PCI devices.
Comment 2 Bjorn Helgaas 2010-09-13 15:28:41 UTC
Created attachment 29812 [details]
dmesg (devices detected)

Here's a log with "pci=assign-busses", where we do detect the devices.
Comment 3 Alan 2012-08-13 16:31:57 UTC
If this is still seen with modern kernels please update/re-open the bug, thanks
Comment 4 Khomutov Vladimir 2012-09-07 21:40:04 UTC
The bug is still there with behaviour exactly as specified by reporter.

Tested with linux-3.4.9 (gentoo), DP43BF motherboard and Intel PRO/1000 NICs.
With pci=assign-busses lspci shows devices properly, without it nothing
is in the list.
Comment 5 Bjorn Helgaas 2012-09-07 21:53:04 UTC
On Fri, Sep 7, 2012 at 2:40 PM,  <bugzilla-daemon@bugzilla.kernel.org> wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=18412

> --- Comment #4 from VL <vl.homutov@gmail.com>  2012-09-07 21:40:04 ---
> The bug is still there with behaviour exactly as specified by reporter.
>
> Tested with linux-3.4.9 (gentoo), DP43BF motherboard and Intel PRO/1000 NICs.
> With pci=assign-busses lspci shows devices properly, without it nothing
> is in the list.

Anybody who wants to help with bugs like this, feel free :)  There are
a number of open regressions and bugs in the PCI subsystem of
https://bugzilla.kernel.org/

I spend a lot of time looking at these bugs, and that reduces the time
I have to review and apply patches.
Comment 6 Yinghai Lu 2012-09-07 22:15:54 UTC
On Fri, Sep 7, 2012 at 2:52 PM, Bjorn Helgaas <bhelgaas@google.com> wrote:
> On Fri, Sep 7, 2012 at 2:40 PM,  <bugzilla-daemon@bugzilla.kernel.org> wrote:
>> https://bugzilla.kernel.org/show_bug.cgi?id=18412
>
>> --- Comment #4 from VL <vl.homutov@gmail.com>  2012-09-07 21:40:04 ---
>> The bug is still there with behaviour exactly as specified by reporter.
>>
>> Tested with linux-3.4.9 (gentoo), DP43BF motherboard and Intel PRO/1000
>> NICs.
>> With pci=assign-busses lspci shows devices properly, without it nothing
>> is in the list.

VL,

I rebased for-pci-busn-alloc branch to current pci-next

please check if could fix the problem.

git://git.kernel.org/pub/scm/linux/kernel/git/yinghai/linux-yinghai.git
for-pci-busn-alloc

http://git.kernel.org/?p=linux/kernel/git/yinghai/linux-yinghai.git;a=shortlog;h=refs/heads/for-pci-busn-alloc

Thanks

Yinghai
Comment 7 Khomutov Vladimir 2012-09-07 22:25:36 UTC
Thank you, I'll give it a try and report results
Comment 8 Yinghai Lu 2012-09-07 22:35:59 UTC
On Fri, Sep 7, 2012 at 3:15 PM, Yinghai Lu <yinghai@kernel.org> wrote:
> On Fri, Sep 7, 2012 at 2:52 PM, Bjorn Helgaas <bhelgaas@google.com> wrote:
>> On Fri, Sep 7, 2012 at 2:40 PM,  <bugzilla-daemon@bugzilla.kernel.org>
>> wrote:
>>> https://bugzilla.kernel.org/show_bug.cgi?id=18412
>>
>>> --- Comment #4 from VL <vl.homutov@gmail.com>  2012-09-07 21:40:04 ---
>>> The bug is still there with behaviour exactly as specified by reporter.
>>>
>>> Tested with linux-3.4.9 (gentoo), DP43BF motherboard and Intel PRO/1000
>>> NICs.
>>> With pci=assign-busses lspci shows devices properly, without it nothing
>>> is in the list.
>
> VL,
>
> I rebased for-pci-busn-alloc branch to current pci-next
>
> please check if could fix the problem.
>
> git://git.kernel.org/pub/scm/linux/kernel/git/yinghai/linux-yinghai.git
> for-pci-busn-alloc
>
>
> http://git.kernel.org/?p=linux/kernel/git/yinghai/linux-yinghai.git;a=shortlog;h=refs/heads/for-pci-busn-alloc
>

also you could try attached patch

Thanks

Yinghai
Comment 9 Yinghai Lu 2012-09-07 22:50:36 UTC
Created attachment 79461 [details]
check bus range to reject invalid one.

it seems attachment from mail get dropped by bugzilla.
Comment 10 Khomutov Vladimir 2012-09-08 10:07:05 UTC
I confirm that this kernel: git://git.kernel.org/pub/scm/linux/kernel/git/yinghai/linux-yinghai.git
solves problem.
Comment 11 Khomutov Vladimir 2012-09-08 10:09:19 UTC
Created attachment 79481 [details]
dmesg, lspci and other info on old and tested kernels

The tarball contains output of dmesg, lspci, lshw, dmidecode and uname
commands for 3.4.9 with and without pci-assign-busses option passed
and 3.5 from git provided by yinghai
Comment 12 Bjorn Helgaas 2012-09-08 18:14:05 UTC
Thanks!  The dmesg logs are incomplete and don't start early enough to show exactly what fixed the problem.  But I suspect the problem is that the BIOS left the 00:1e.0 bridge programmed like this (from the gentoo-3.4.9 kernel):

pci 0000:00:1e.0: PCI bridge to [bus 20-08] (subtractive decode)

where the bus number range is clearly wrong.  With Yinghai's kernel we reset that to [bus 08].

I assume you're using the "for-pci-busn-alloc" branch of Yinghai's tree.  There are things on that branch that I'm not comfortable with yet, so we need to identify the specific change that fixes your box.

Given the [bus 20-08] range, I suspect that the patch in comment #9 may fix it, and that's something we could apply.  Can you try just that patch on top of a 3.5 or 3.6-rc4 kernel?
Comment 13 Khomutov Vladimir 2012-09-09 08:15:30 UTC
Created attachment 79521 [details]
full dmesg,lspci,lshw,uname with adn without suggested patch

Two sets of outputs for 3.5.3 gentoo kernel with and without
suggested patch applied.
Comment 14 Khomutov Vladimir 2012-09-09 08:27:17 UTC
> Given the [bus 20-08] range, I suspect that the patch in comment #9 may fix
> it,
> and that's something we could apply.  Can you try just that patch on top of a
> 3.5 or 3.6-rc4 kernel?

yes, this patch fixes the problem.
I've increased kernel buffer length and got full dmesg outputs -attached.

In which kernel version do you think we'll have this patch applied? 

Thank you!
Comment 15 Bjorn Helgaas 2012-09-24 23:25:29 UTC
This patch should appear in v3.7 if everything goes well.
Comment 16 Bjorn Helgaas 2012-10-05 16:54:00 UTC
Merged to upstream here, will appear in v3.7-rc1:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=1965f66e7db08d1ebccd24a59043eba826cc1ce8
Comment 17 Bjorn Helgaas 2013-02-28 18:39:16 UTC
Now upstream in v3.7.
Comment 18 Khomutov Vladimir 2013-02-28 19:56:45 UTC
yes, works great with 3.7.9 here.

Thanks again for great work!