On Wed, 6 Jul 2005 19:37:21 +0200 Andi Kleen <[EMAIL PROTECTED]> wrote:
> Hallo, > > I did a recent patch to make PCI driver ->probe run on the local node > of a PCI device. This gives better NUMA locality. One problem is that > most network drivers do a lot of initialization and memory allocation > not in ->probe, but in ->open. One way to fix them would be to do > the same net/core/dev.c when opening a device. Unfortunately the code > there only knows the net_device, not the pci_dev because a device > might not have one. But the pci_dev is needed to figure out the > bus and then from that the node the device belongs to. > > One hackish way would be to search all pci devices and check their > driver data field and if it matches the netdevice do the initialization > on that node. I think that could even work, but it has a small > probability to malfunction if someone reuses driver data for non pointer > data and the data in there looks like the current netdevice. Even that case > wouldn't be too bad because the code would not crash, just possibly > run on the wrong node. Anyways, it would be still not very clean. > > Has anybody any better suggestion to do this mapping? > I would prefer a way that does not require driver patching. > You could have alloc_netdev record the node id in a new field in the netdevice structure. Assuming you want to run the open code on the same node that it was allocated on during probe. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html