Davem suggested to get the node-affinity information directly from struct device instead of having the caller extreact it from the pci_dev. This patch adds dev_to_node() to the topology API for that. The implementation is rather ugly as we need to compare the bus operations which we can't do inline in a header without pulling all kinds of mess in.
Thus provide an out of line dev_to_node for ppc and let everyone else use the dummy variant in asm-generic.h for now. Signed-off-by: Christoph Hellwig <[EMAIL PROTECTED]> Index: linux-2.6/include/asm-generic/topology.h =================================================================== --- linux-2.6.orig/include/asm-generic/topology.h 2006-10-10 14:53:52.000000000 +0200 +++ linux-2.6/include/asm-generic/topology.h 2006-10-30 13:42:22.000000000 +0100 @@ -45,11 +45,14 @@ #define pcibus_to_node(node) (-1) #endif +#ifndef dev_to_node +#define dev_to_node(dev) (-1) +#endif + #ifndef pcibus_to_cpumask #define pcibus_to_cpumask(bus) (pcibus_to_node(bus) == -1 ? \ CPU_MASK_ALL : \ node_to_cpumask(pcibus_to_node(bus)) \ ) #endif - #endif /* _ASM_GENERIC_TOPOLOGY_H */ Index: linux-2.6/include/asm-powerpc/topology.h =================================================================== --- linux-2.6.orig/include/asm-powerpc/topology.h 2006-10-10 14:53:52.000000000 +0200 +++ linux-2.6/include/asm-powerpc/topology.h 2006-10-30 14:03:44.000000000 +0100 @@ -5,6 +5,7 @@ struct sys_device; struct device_node; +struct device; #ifdef CONFIG_NUMA @@ -33,6 +34,7 @@ struct pci_bus; extern int pcibus_to_node(struct pci_bus *bus); +int dev_to_node(struct device *dev); #define pcibus_to_cpumask(bus) (pcibus_to_node(bus) == -1 ? \ CPU_MASK_ALL : \ Index: linux-2.6/arch/powerpc/kernel/pci_64.c =================================================================== --- linux-2.6.orig/arch/powerpc/kernel/pci_64.c 2006-10-23 17:21:43.000000000 +0200 +++ linux-2.6/arch/powerpc/kernel/pci_64.c 2006-10-30 14:02:40.000000000 +0100 @@ -1424,4 +1424,12 @@ return phb->node; } EXPORT_SYMBOL(pcibus_to_node); + +int dev_to_node(struct device *dev) +{ + if (dev->bus == &pci_bus_type) + return pcibus_to_node(to_pci_dev(dev)->bus); + return -1; +} +EXPORT_SYMBOL(dev_to_node); #endif - 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