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

Reply via email to