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

Parag Warudkar
2014-03-29T15:04:17Z

On Sat, Mar 29, 2014 at 3:11 AM, Yinghai Lu <yinghai@kernel.org> wrote:
>
> 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]

OK. I got that part.

> 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).
>
Why are things different at resume time though? Is there a fix here -
to detect at resume time that parent bridge for 02:00.0 has no
resources and to skip trying to assign resources to it?
Or is it that pci_configure_slot should not be called at resume time
and that's what is causing this message?

Thanks for taking a look at this.

Parag