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. 

-Andi
-
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

Reply via email to