of: Provide default of_node_to_nid() when CONFIG_NUMA is not set
Subsystems (5)
PATCH 1/1 of: Provide default of_node_to_nid() when CONFIG_NUMA is not set
of_node_to_nid() is only relevant for NUMA. Don't force architectures to implement it if CONFIG_NUMA is not set.
--- arch/microblaze/include/asm/topology.h | 10 ---------- arch/powerpc/include/asm/topology.h | 7 ------- arch/sparc/include/asm/prom.h | 5 ----- include/linux/of.h | 8 ++++++++ 4 files changed, 8 insertions(+), 22 deletions(-)
arch/microblaze/include/asm/topology.h +0 -10
@@ -1,11 +1 @@#include <asm-generic/topology.h> - -#ifndef _ASM_MICROBLAZE_TOPOLOGY_H -#define _ASM_MICROBLAZE_TOPOLOGY_H - -struct device_node ; -static inline int of_node_to_nid (struct device_node *device) -{ -return 0 ; -} -#endif /* _ASM_MICROBLAZE_TOPOLOGY_H */
arch/powerpc/include/asm/topology.h +0 -7
@@ -41,8 +41,6 @@ static inline int cpu_to_node(int cpu) cpu_all_mask : \ node_to_cpumask_map[node]) -int of_node_to_nid (struct device_node *device); - struct pci_bus;#ifdef CONFIG_PCI extern int pcibus_to_node (struct pci_bus *bus);
@@ -94,11 +92,6 @@ extern void sysfs_remove_device_from_node(struct sys_device *dev, int nid);#else -static inline int of_node_to_nid (struct device_node *device) -{ -return 0 ; -} -static inline void dump_numa_cpu_topology (void ) {}static inline int sysfs_add_device_to_node (struct sys_device *dev,int nid)
arch/sparc/include/asm/prom.h +0 -5
@@ -41,11 +41,6 @@ extern int of_getintprop_default(struct device_node *np,const char *name, int def);extern int of_find_in_proplist (const char *list,const char *match,int len); -#ifdef CONFIG_NUMA -extern int of_node_to_nid (struct device_node *dp); -#else -#define of_node_to_nid (dp) (-1) -#endif extern void prom_build_devicetree (void );extern void of_populate_present_mask (void );
include/linux/of.h +8 -0
@@ -205,6 +205,14 @@ extern int of_parse_phandles_with_args(struct device_node *np,extern int of_machine_is_compatible (const char *compat); +#if defined(CONFIG_NUMA ) +extern int of_node_to_nid (struct device_node *device); +#elif defined(CONFIG_SPARC ) +static inline int of_node_to_nid (struct device_node *device) {return -1 ; } +#else +static inline int of_node_to_nid (struct device_node *device) {return 0 ; } +#endif +extern int prom_add_property (struct device_node * np,struct property * prop);extern int prom_remove_property (struct device_node *np,struct property *prop); extern int prom_update_property(struct device_node *np,
Hi Grant,
Quoted 3 lines · On Sat, 24 Jul 2010 09:43:31 -0600 Grant Likely…
of_node_to_nid()is only relevant for NUMA. Don't force architectures to implement it ifCONFIG_NUMAis not set.
Why not just do:
#ifndef of_node_to_nid
static inline int of_node_to_nid(struct device_node *device) { return 0; }
#define of_node_to_nid of_node_to_nid
#endif
in include/linux/of.h
and then add:
#define of_node_to_nid of_node_to_nid
Where it is declared/defined for each arch ...
(it would be nice if all the archs were consistent in where it was declared).
Signature · 3 lines
Cheers, Stephen Rothwell [email protected] http://www.canb.auug.org.au/~sfr/
_______________________________________________
devicetree-discuss mailing list devicetree-discuss-uLR06cmDAlY/[email protected]
https://lists.ozlabs.org/listinfo/devicetree-discuss
Quoted 16 lines · Stephen Rothwell
Hi Grant,
Quoted 3 lines · On Sat, 24 Jul 2010 09:43:31 -0600 Grant Likely <[email protected]>…
of_node_to_nid()is only relevant for NUMA. Don't force architectures to implement it ifCONFIG_NUMAis not set.Why not just do:
#ifndef
of_node_to_nid
static inline intof_node_to_nid(struct device_node *device){ return 0; } #defineof_node_to_nidof_node_to_nid
#endifin
include/linux/of.h
Quoted 7 lines
and then add:
#define
of_node_to_nidof_node_to_nidWhere it is declared/defined for each arch ...
(it would be nice if all the archs were consistent in where it was declared).
Two reasons; I had started doing that in topology.h, but it caused a bunch of collateral damage with files missing the include, so I punted and took the easy way out. Also, I didn't know if that was an acceptable or safe pattern for override symbols.
I'll spin it again with this pattern and see what it looks.
g.
Quoted 5 lines
--
Cheers,
Stephen Rothwell [email protected]
http://www.canb.auug.org.au/~sfr/
Signature · 6 lines
Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
[cc'ing Arnd]
Quoted 25 lines · Grant Likely
Quoted 16 lines · Stephen Rothwell
Hi Grant,
Quoted 3 lines · On Sat, 24 Jul 2010 09:43:31 -0600 Grant Likely <[email protected]>…
of_node_to_nid()is only relevant for NUMA. Don't force architectures to implement it ifCONFIG_NUMAis not set.Why not just do:
#ifndef
of_node_to_nid
static inline intof_node_to_nid(struct device_node *device){ return 0; } #defineof_node_to_nidof_node_to_nid
#endifin
include/linux/of.hQuoted 7 lines
and then add:
#define
of_node_to_nidof_node_to_nidWhere it is declared/defined for each arch ...
(it would be nice if all the archs were consistent in where it was declared).
Quoted 8 lines
Two reasons; I had started doing that in
topology.h, but it caused a bunch of collateral damage with files missing the include, so I punted and took the easy way out. Also, I didn't know if that was an acceptable or safe pattern for override symbols.I'll spin it again with this pattern and see what it looks.
g.
Should I use asm-generic for this and other similar symbols? How does the following look?
---
Quoted 1 line
From
1ac16ad91d4752b49ff0644854dd2cbe593bbfa8Mon Sep 17 00:00:00 2001
From: Grant Likely <grant.likely-s3s/[email protected]>
Date: Fri, 23 Jul 2010 20:11:18 -0600
Subject: [PATCH] of: Create asm-generic/of.h and provide default of_node_to_nid()
of_node_to_nid() is only relevant in a few architectures. Don't force everyone to implement it anyway. This patch also adds asm-generic/of.h which will be used to contain other overrideable symbols.
--- arch/microblaze/include/asm/prom.h | 3 +++ arch/microblaze/include/asm/topology.h | 10 ---------- arch/powerpc/include/asm/prom.h | 6 ++++++ arch/powerpc/include/asm/topology.h | 7 ------- arch/sparc/include/asm/prom.h | 4 ++++ include/asm-generic/of.h | 19 +++++++++++++++++++ 6 files changed, 32 insertions(+), 17 deletions(-) create mode 100644 include/asm-generic/of.h
arch/microblaze/include/asm/prom.h +3 -0
@@ -103,4 +103,7 @@ extern int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq);#endif /* __ASSEMBLY__ */ #endif /* __KERNEL__ */ + +#include <asm-generic/of.h> +#endif /* _ASM_MICROBLAZE_PROM_H */
arch/microblaze/include/asm/topology.h +0 -10
@@ -1,11 +1 @@#include <asm-generic/topology.h> - -#ifndef _ASM_MICROBLAZE_TOPOLOGY_H -#define _ASM_MICROBLAZE_TOPOLOGY_H - -struct device_node ; -static inline int of_node_to_nid (struct device_node *device) -{ -return 0 ; -} -#endif /* _ASM_MICROBLAZE_TOPOLOGY_H */
arch/powerpc/include/asm/prom.h +6 -0
@@ -103,6 +103,9 @@ struct device_node *of_find_next_cache_node(struct device_node *np);/* Get the MAC address */ extern const void *of_get_mac_address (struct device_node *np); +extern int of_node_to_nid (struct device_node *device); +#define of_node_to_nid of_node_to_nid +/** * of_irq_map_pci - Resolve the interrupt for a PCI device * @pdev: the device whose interrupt is to be resolved
@@ -120,4 +123,7 @@ extern int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq);extern void of_instantiate_rtc (void );#endif /* __KERNEL__ */ + +#include <asm-generic/of.h> +#endif /* _POWERPC_PROM_H */
arch/powerpc/include/asm/topology.h +0 -7
@@ -41,8 +41,6 @@ static inline int cpu_to_node(int cpu) cpu_all_mask : \ node_to_cpumask_map[node]) -int of_node_to_nid (struct device_node *device); - struct pci_bus;#ifdef CONFIG_PCI extern int pcibus_to_node (struct pci_bus *bus);
@@ -94,11 +92,6 @@ extern void sysfs_remove_device_from_node(struct sys_device *dev, int nid);#else -static inline int of_node_to_nid (struct device_node *device) -{ -return 0 ; -} -static inline void dump_numa_cpu_topology (void ) {}static inline int sysfs_add_device_to_node (struct sys_device *dev,int nid)
arch/sparc/include/asm/prom.h +4 -0
@@ -43,6 +43,7 @@ extern int of_getintprop_default(struct device_node *np,extern int of_find_in_proplist (const char *list,const char *match,int len);#ifdef CONFIG_NUMA extern int of_node_to_nid (struct device_node *dp); +#define of_node_to_nid of_node_to_nid#else #define of_node_to_nid (dp) (-1)#endif
@@ -72,4 +73,7 @@ extern void (*prom_build_more)(struct device_node *dp, struct device_node ***nexextern char *build_full_name (struct device_node *dp);#endif /* __KERNEL__ */ + +#include <asm-generic/of.h> +#endif /* _SPARC_PROM_H */
include/asm-generic/of.h new file +19 -0
@@ -0,0 +1,19 @@ +/* +* Generic OpenFirmware/Flattened Device Tree definitions +* +* Copyright (C) 2010, Secret Lab Technologies Ltd. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of version 2 of the GNU General Public License as +* published by the Free Software Foundation. +* +*/ +#ifndef __ASM_GENERIC_OF_H +#define __ASM_GENERIC_OF_H + +#ifndef of_node_to_nid +static inline int of_node_to_nid (struct device_node *np) {return 0 ; } +#define of_node_to_nid of_node_to_nid +#endif + +#endif /* __ASM_GENERIC_OF_H */
Signature · 1 line
1.7.0.4