Re: proper way to assign fixed PCI resources to a "hotplug" device

From: Kumar Gala
Date: Fri Mar 03 2006 - 18:11:21 EST



On Mar 3, 2006, at 4:07 PM, Greg KH wrote:

On Fri, Mar 03, 2006 at 11:42:03AM -0600, Kumar Gala wrote:
I was wondering what the proper way to assign and setup a single PCI
device that comes into existence after the system has booted. I have
an FPGA that we load from user space at which time it shows up on the
PCI bus.

Idealy your BIOS would set up this information :)

It has a single BAR and I need to assign it at a fixed address in PCI
MMIO space.

All of the exported interfaces I see have to do with having the
kernel assign the BAR automatically for me.

the following looks like what I want to do:

bus = pci_find_bus(0, 3);
dev = pci_scan_single_device(bus, devfn);
pci_bus_alloc_resource(...);
pci_update_resource(dev, dev->resource[0], 0);
pci_bus_add_devices(bus);

However, pci_update_resource() is not an exported symbol, so I could
replace that code with the need updates to the actual BAR.

Is this the "right" way to go about this or is there a better
mechanism to do this.

Take a look at how the compat pci hotplug driver does this, you probably
just need to do the same as it.

I found cpqhp_configure_device(), but I dont see anything about how to handle assigned a fixed address to the BAR.

I see I could use pci_find_slot()/pci_scan_slot(). Not sure I see how that is much better than pci_find_bus()/pci_scan_single_device().

- kumar
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/