Re: [Bug 42606] New: PCI I/O range not assigned under newer kernels

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

 



On Thu, Jan 19, 2012 at 4:22 AM,  <bugzilla-daemon@xxxxxxxxxxxxxxxxxxx> wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=42606

> Observed a problem with a PCI Express card in a certain server PC with 8 PCI
> Express slots on the mainboard. There are no other PCI slots than the PCIe
> ones, and all slots are empty except the one with the card under test, which
> requires a legacy I/O address range for base address 0.
>
> In some of the slots the card works properly, but in some other slots on the
> same
> machine the card doesn't work since it is not accessible by the associated
> kernel
> driver. In case it doesn't work lspci -v says for the I/O base address 0:
>
>  Region 0: I/O ports at <ignored>
>
> Found out that this problem did *not* occur with kernels 2.6.32.6 and earlier,
> but *does* occur with kernels 2.6.36.1 and later, up to at least 3.4.1, on the
> same hardware.

The 2.6.32.6 dmesg is truncated and doesn't include the parts of
interest (the early part that contains PCI enumeration).  But this
looks related to "pci=use_crs" being turned on by default, which I
think happened in 2.6.34.  That means that booting with "pci=nocrs"
might be a workaround while we figure out a better solution.

Here's the 3.1.4 dmesg:

  ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-7f])
  pci_root PNP0A08:00: host bridge window [io  0xf000-0xffff]
  ...
  ACPI: PCI Root Bridge [BR50] (domain 0000 [bus 80-fb])
  pci_root PNP0A08:01: host bridge window [io  0xf000-0xffff]
  pci 0000:80:07.0: PCI bridge to [bus 85-85]
  pci 0000:80:07.0:   bridge window [io  0xf000-0xffff]
  pci 0000:85:00.0: reg 10: [io  0xfc00-0xfcff]
  pci 0000:80:07.0: address space collision: [io  0xf000-0xffff]
conflicts with PCI Bus 0000:00 [io  0xf000-0xffff]
  pci 0000:85:00.0: no compatible bridge window for [io  0xfc00-0xfcff]

The BIOS is telling us that [io  0xf000-0xffff] is routed to both root
buses (00 and 80), which Linux assumes is not possible.  In the posted
dmesg, it looks like your device is at 85:00.0, and it doesn't work.
This is because we think the [io  0xf000-0xffff] area is already
consumed by host bridge PCI0 and hence not available for bridge BR50.

What are the device addresses that work and those that don't work?  My
guess is the working slots might be under PCI0 (buses 00-7f) and the
broken ones under BR50 (buses 80-fb).  Can you collect a dmesg log
with a working slot, too?

Can you boot with Windows with the card in the same slot (one that
doesn't work under Linux) and use AIDA64 (free trial version at
http://www.aida64.com/downloads) to collect a log?  This should show
where Windows puts the device.
--
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