Ben/all, I have had some luck reserving some memory (via in this autoscan (which reserves the resources)) which in this hack code - I reserve an appropriate amount of resources for the bridge (by detecting this special type of port).
The problem comes later on - when the Hotplug event comes - and it still can't allocate the resources... A member of this group (who is away from the office right now) had the following comments: >> In your case, if the only problem that you are running into is >> that the resources cannot be assigned to the FPGA, it may be >> sufficient to hardcode the forwarding addresses and subordinate >> bridge number for port 6 of your 8616. The reason you are seeing >> that error message is because the parent bridge device for the >> detected FPGA (port 6 of the 8616) does not have forwarded >> resource regions that match what the FPGA is trying to claim. I guess the question I am asking is my friend's statement possibly true. And, if he is correct - I am a little confused as to exactly where/how do I determine and configure this forwarding addresses/subordinate bridge number (I'm really a newbie at this level of PCI configuration). Thank you in advance to any/all who can help me figure this out! Tom >> -----Original Message----- [Morrison, Tom] >> >> There's a few things you can do, though I don't have time just right now >> to give you a detailed answer. I'll try again later. >> >> In the meantime, some of the answers could be around not using full >> automatic resource assignment, but instead, pre-initializing the top >> bridge with some resources that are going to be enough for the device. >> >> You can also try to get the bridge to re-allocate. There's various funky >> locking issues with doing that though as long as it's during boot time, >> it's not too much of a problem. >> >> There are other more or less hackish ways to do it, but I'll have to >> give it more thought. >> >> I'm quite stretched at the moment so if you don't hear back from me in >> the upcoming few days, don't hesitate to ping me again. >> >> Cheers, >> Ben. >> >> > >> > I am running Linux (2.6.23x (and 2.6.27.x)) on a MPC8572 based system. >> > >> > >> > >> > I have an 8616 switch that has a Port (6) connected to a FPGA that is >> > >> > NOT loaded at before Linux boots (note: this port is configured for >> > HOTPLUG >> > >> > events - which we do get after FPGA is loaded). We are NOT using a >> > >> > static device tree map (because the devices in the system are very >> > dynamic). >> > >> > >> > We use instead the pci auto scan mechanism(s) to scan/assign >> > resources >> > >> > (including into the BAR registers) at bootup to all of the devices >> > that are >> > >> > attached to this MPC8572... >> > >> > >> > >> > Here is the port that is attached to the device (note: there are NO >> > >> > resources assigned at this point this port): >> > >> > >> > >> > ----------------------------------------------------------------------- >> -------------------------- >> > >> > 02:06.0 PCI bridge: PLX Technology, Inc.: Unknown device 8616 (rev bb) >> > (prog-if 00 [Normal decode]) >> > >> > Flags: bus master, fast devsel, latency 0 >> > >> > Bus: primary=02, secondary=05, subordinate=05, sec-latency=0 >> > >> > Capabilities: [40] Power Management version 3 >> > >> > Capabilities: [48] Message Signalled Interrupts: 64bit+ >> > Queue=0/2 Enable+ >> > >> > Capabilities: [68] #10 [0162] >> > >> > Capabilities: [a4] #0d [0000] >> > >> > >> > >> > r...@slave7 ~ # lspci -t >> > >> > -+-[01]---00.0-[02-05]--+-01.0 >> > >> > | +-04.0-[03]-- >> > >> > | +-05.0-[04]-- >> > >> > | \-06.0-[05]- >> > >> > >> > >> > ----------------------------------------------------------------------- >> -------------------------- >> > >> > >> > >> > Later, after I detect there is an FPGA to load - I load it. At >> > completion of the >> > >> > loading of the FPGA - the 8616 detects the FPGA - and creates a >> > HotPlug >> > >> > event that the PCI Express HotPlug Driver handles: >> > >> > ----------------------------------------------------------------------- >> -------------------------- >> > >> > >> > >> > r...@slave7 ~ # pciehp: pcie_isr: intr_loc 8 >> > >> > pciehp: pciehp: Presence/Notify input change. >> > >> > pciehp: Card present on Slot(0005_0070) >> > >> > pciehp: Surprise Removal >> > >> > pciehp: hpc_get_power_status: SLOTCTRL 80 value read 8 >> > >> > pciehp: hpc_get_attention_status: SLOTCTRL 80, value read 8 >> > >> > pciehp: board_added: slot device, slot offset, hp slot = 0, 0 ,0 >> > >> > pciehp: hpc_check_lnk_status: lnk_status = 2021 >> > >> > PCI: Found 0000:05:00.0 [1172/0004] 00ff00 00 >> > >> > PCI: Calling quirk c0012d3c for 0000:05:00.0 >> > >> > program_fw_provided_values: Could not get hotplug parameters >> > >> > entering assign resources (size: 2000000) >> > >> > PCI: Failed to allocate mem resource #0:2000...@0 for 0000:05:00.0 >> > >> > bus pci: add device 0000:05:00.0 >> > >> > entering uevent >> > >> > pci: Trying to Match Device 0000:05:00.0 with Driver pcieport-driver >> > >> > pci: Trying to Match Device 0000:05:00.0 with Driver serial >> > >> > pci: Trying to Match Device 0000:05:00.0 with Driver pexntb >> > >> > pciehp: hpc_get_power_status: SLOTCTRL 80 value read 8 >> > >> > pciehp: hpc_get_attention_status: SLOTCTRL 80, value read 8 >> > >> > >> > >> > 02:06.0 PCI bridge: PLX Technology, Inc.: Unknown device 8616 (rev bb) >> > (prog-if 00 [Normal decode]) >> > >> > Flags: bus master, fast devsel, latency 0 >> > >> > Bus: primary=02, secondary=05, subordinate=05, sec-latency=0 >> > >> > Capabilities: [40] Power Management version 3 >> > >> > Capabilities: [48] Message Signalled Interrupts: 64bit+ >> > Queue=0/2 Enable+ >> > >> > Capabilities: [68] #10 [0162] >> > >> > Capabilities: [a4] #0d [0000] >> > >> > >> > >> > 05:00.0 Class ff00: Altera Corporation: Unknown device 0004 (rev 01) >> > >> > Subsystem: Altera Corporation: Unknown device 0004 >> > >> > Flags: fast devsel >> > >> > Capabilities: [50] Message Signalled Interrupts: 64bit+ >> > Queue=0/5 Enable- >> > >> > Capabilities: [78] Power Management version 3 >> > >> > Capabilities: [80] #10 [0001] >> > >> > >> > >> > r...@slave7 ~ # lspci -t >> > >> > -+-[01]---00.0-[02-05]--+-01.0 >> > >> > | +-04.0-[03]-- >> > >> > | +-05.0-[04]-- >> > >> > | \-06.0-[05]----00.0 >> > >> > \-[00]---00.0 >> > >> > >> > >> > ----------------------------------------------------------------------- >> -------------------------- >> > >> > >> > >> > So, as you can see - the device has been read - and it requires 32M of >> > resources, but >> > >> > because its parent doesn't have any resources allocated - it seemingly >> > can't allocate and >> > >> > use any additional resources. >> > >> > >> > >> > How do I 'customize' and/or add resources at this point for this >> > device (using semi-standard mechanisms)? >> > >> > >> > >> > Thanks in advance for any/all ideas... >> > >> > >> > >> > >> > >> > I >> > >> > >> > >> > Tom Morrison >> > Principal Software Engineer >> > >> > EMPIRIX >> > 20 Crosby Drive - Bedford, MA 01730 >> > p: 781.266.3567 f: 781.266.3670 >> > email: tmorri...@empirix.com >> > www.empirix.com >> > >> > >> > >> > >> > >> > >> > >> > _______________________________________________ >> > Linuxppc-dev mailing list >> > Linuxppc-dev@lists.ozlabs.org >> > https://lists.ozlabs.org/listinfo/linuxppc-dev >> _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev