Re: BAR 14: can't assign mem (size 0x200000)

Yinghai Lu
2014-03-29T07:11:51Z

On Fri, Mar 28, 2014 at 6:55 PM, Parag Warudkar <parag.lkml@gmail.com> wrote:
>> Can you send out whole boot log (include init booting and from resume) and
>> lspci -tv and lspci -vvxxxx ?
>
> lspci -tv
> -----------
> ~# lspci -tv
> -[0000:00]-+-00.0 Intel Corporation Xeon E3-1200 v3 Processor DRAM Controller
> +-02.0 Intel Corporation Xeon E3-1200 v3 Processor
> Integrated Graphics Controller
> +-03.0 Intel Corporation Xeon E3-1200 v3/4th Gen Core
> Processor HD Audio Controller
> +-14.0 Intel Corporation 8 Series/C220 Series Chipset
> Family USB xHCI
> +-16.0 Intel Corporation 8 Series/C220 Series Chipset
> Family MEI Controller #1
> +-16.3 Intel Corporation 8 Series/C220 Series Chipset
> Family KT Controller
> +-19.0 Intel Corporation Ethernet Connection I217-LM
> +-1a.0 Intel Corporation 8 Series/C220 Series Chipset
> Family USB EHCI #2
> +-1b.0 Intel Corporation 8 Series/C220 Series Chipset High
> Definition Audio Controller
> +-1c.0-[01]--
> +-1c.3-[02-03]----00.0-[03]--
> +-1c.4-[04-3c]--
> +-1d.0 Intel Corporation 8 Series/C220 Series Chipset
> Family USB EHCI #1
> +-1f.0 Intel Corporation C226 Series Chipset Family Server
> Advanced SKU LPC Controller
> +-1f.2 Intel Corporation 8 Series/C220 Series Chipset
> Family 6-port SATA Controller 1 [AHCI mode]
> \-1f.3 Intel Corporation 8 Series/C220 Series Chipset
> Family SMBus Controller
>
> lspci -vvxxxx and dmesg output are kind of big, so attached.

Hi, Parag,

For the boot path, kernel is right.
BIOS does not assign resource for
00:1c.0, (io, mmio, mmio pref), 00:1c.3(io, mmio, mmio pref), 00:1c.4 (io).

but 00:1c.0 00:1c.4 support hotplug either in acpiphp or pcie slot cap.

[ 0.263398] acpiphp: Slot [1] registered
[ 0.263405] pci 0000:00:1c.0: PCI bridge to [bus 01]
[ 0.263884] acpiphp: Slot [1-1] registered
[ 0.263891] pci 0000:00:1c.4: PCI bridge to [bus 04-3c]

so kernel assign new resource to them.

[ 0.281764] pci 0000:00:1c.0: BAR 14: assigned [mem 0x9f200000-0x9f3fffff]
[ 0.281768] pci 0000:00:1c.0: BAR 15: assigned [mem
0x9f400000-0x9f5fffff 64bit pref]
[ 0.281770] pci 0000:00:1c.0: BAR 13: assigned [io 0x2000-0x2fff]
[ 0.281771] pci 0000:00:1c.4: BAR 13: assigned [io 0x3000-0x3fff]

but 00:1c.3 ==> 02:00.0 (bus 03) does not support hotplug.
so kernel does not assign resource 00:1c.3.

Later during resuming, kernel try to assign resource 02:00.0 but it will fail
as parent bridge 00:1c.3 has no resource.
(Not sure how pci_configure_slot get called with this resume path).

so you will have

[11548.934659] pci 0000:02:00.0: BAR 14: can't assign mem (size 0x200000)
[11548.934661] pci 0000:02:00.0: BAR 15: can't assign mem pref (size 0x200000)
[11548.934662] pci 0000:02:00.0: BAR 13: can't assign io (size 0x1000)
[11548.934664] pci 0000:02:00.0: BAR 14: can't assign mem (size 0x200000)
[11548.934666] pci 0000:02:00.0: BAR 15: can't assign mem pref (size 0x200000)
[11548.934667] pci 0000:02:00.0: BAR 13: can't assign io (size 0x1000)