On Mon, Nov 16, 2009 at 7:40 AM, Thierry Reding <thierry.reding@xxxxxxxxxxxxxxxxx> wrote: > Hi, > > I have a setup where an FPGA is connected to a PCIe port. The FPGA itself > acts as a bridge and forwards PCI requests to some user logic that in turn > simulates multiple PCIe endpoints. The communication between the root complex > and the user logic works fine and all endpoints are visible to the BIOS and > Linux later on. > > One problem that we're facing now is that during PCIe enumeration, the BIOS > seems to correctly allocate and assign resources for all endpoints, but only > if all BARs are designated prefetchable. > > If the BARs are configured as non-prefetchable, however, the BIOS still seems > to allocate and assign resources correctly, but after the first assignment of > base addresses, it decides to overwrite these with 0, except for the very > first endpoint. Now when Linux comes up it reads those BARs and decodes them > again, then writes the original 0 back. Therefore when the BARs are marked > non-prefetchable, all endpoints except the first end up unusable in the > system. > > Does anyone have an idea what might be going on here? Is there some > restriction in PCIe that may be causing this behaviour? I've been going > through the specification looking for clues but so far haven't come up with > anything. > > Presuming I can't make the BIOS "do the right thing", is it possible to have > the Linux kernel redo the PCIe enumeration and ignore the BIOS completely? > Again I've been going through the code but all I've been able to find is those > places where Linux checks the resources as allocated by the BIOS. There seems > to be no code to override the BIOS. please send out bootlog and lspci -tv... now kernel doesn't touch BIOS assigned pci bridge resource. there will some patches that is trying to update those bridge in some bottom to up way. please check http://patchwork.kernel.org/patch/60025/ http://patchwork.kernel.org/patch/60027/ YH -- 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