Patchwork [2/2] of: move definition of of_find_next_cache_node into common code.

login
register
mail settings
Submitter Sudeep.KarkadaNagesha@arm.com
Date Sept. 18, 2013, 10:53 a.m.
Message ID <1379501585-12532-3-git-send-email-Sudeep.KarkadaNagesha@arm.com>
Download mbox | patch
Permalink /patch/275670/
State Accepted
Commit a3e31b4588443f37d82195096c6b30dff1c152c2
Headers show

Comments

Sudeep.KarkadaNagesha@arm.com - Sept. 18, 2013, 10:53 a.m.
From: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>

Since the definition of_find_next_cache_node is architecture independent,
the existing definition in powerpc can be moved to driver/of/base.c

Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Grant Likely <grant.likely@linaro.org>
Cc: Rob Herring <rob.herring@calxeda.com>
Signed-off-by: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
---
 arch/powerpc/include/asm/prom.h |  3 ---
 arch/powerpc/kernel/prom.c      | 31 -------------------------------
 drivers/of/base.c               | 31 +++++++++++++++++++++++++++++++
 include/linux/of.h              |  2 ++
 4 files changed, 33 insertions(+), 34 deletions(-)
Benjamin Herrenschmidt - Oct. 31, 2013, 5:20 a.m.
On Wed, 2013-09-18 at 11:53 +0100, Sudeep KarkadaNagesha wrote:
> From: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
> 
> Since the definition of_find_next_cache_node is architecture independent,
> the existing definition in powerpc can be moved to driver/of/base.c
> 
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Cc: Grant Likely <grant.likely@linaro.org>
> Cc: Rob Herring <rob.herring@calxeda.com>
> Signed-off-by: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>

I've seen no follow up on that, I'm happy to stick it in powerpc-next
with some other late stuff.

Cheers,
Ben.

> ---
>  arch/powerpc/include/asm/prom.h |  3 ---
>  arch/powerpc/kernel/prom.c      | 31 -------------------------------
>  drivers/of/base.c               | 31 +++++++++++++++++++++++++++++++
>  include/linux/of.h              |  2 ++
>  4 files changed, 33 insertions(+), 34 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/prom.h b/arch/powerpc/include/asm/prom.h
> index 7d0c7f3..bf09e5a 100644
> --- a/arch/powerpc/include/asm/prom.h
> +++ b/arch/powerpc/include/asm/prom.h
> @@ -44,9 +44,6 @@ void of_parse_dma_window(struct device_node *dn, const __be32 *dma_window,
>  
>  extern void kdump_move_device_tree(void);
>  
> -/* cache lookup */
> -struct device_node *of_find_next_cache_node(struct device_node *np);
> -
>  #ifdef CONFIG_NUMA
>  extern int of_node_to_nid(struct device_node *device);
>  #else
> diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
> index 09be275..4432fd8 100644
> --- a/arch/powerpc/kernel/prom.c
> +++ b/arch/powerpc/kernel/prom.c
> @@ -761,37 +761,6 @@ void __init early_init_devtree(void *params)
>   *******/
>  
>  /**
> - *	of_find_next_cache_node - Find a node's subsidiary cache
> - *	@np:	node of type "cpu" or "cache"
> - *
> - *	Returns a node pointer with refcount incremented, use
> - *	of_node_put() on it when done.  Caller should hold a reference
> - *	to np.
> - */
> -struct device_node *of_find_next_cache_node(struct device_node *np)
> -{
> -	struct device_node *child;
> -	const phandle *handle;
> -
> -	handle = of_get_property(np, "l2-cache", NULL);
> -	if (!handle)
> -		handle = of_get_property(np, "next-level-cache", NULL);
> -
> -	if (handle)
> -		return of_find_node_by_phandle(be32_to_cpup(handle));
> -
> -	/* OF on pmac has nodes instead of properties named "l2-cache"
> -	 * beneath CPU nodes.
> -	 */
> -	if (!strcmp(np->type, "cpu"))
> -		for_each_child_of_node(np, child)
> -			if (!strcmp(child->type, "cache"))
> -				return child;
> -
> -	return NULL;
> -}
> -
> -/**
>   * of_get_ibm_chip_id - Returns the IBM "chip-id" of a device
>   * @np: device node of the device
>   *
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index 865d3f6..b2cee3d 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -1884,3 +1884,34 @@ int of_device_is_stdout_path(struct device_node *dn)
>  	return of_stdout == dn;
>  }
>  EXPORT_SYMBOL_GPL(of_device_is_stdout_path);
> +
> +/**
> + *	of_find_next_cache_node - Find a node's subsidiary cache
> + *	@np:	node of type "cpu" or "cache"
> + *
> + *	Returns a node pointer with refcount incremented, use
> + *	of_node_put() on it when done.  Caller should hold a reference
> + *	to np.
> + */
> +struct device_node *of_find_next_cache_node(const struct device_node *np)
> +{
> +	struct device_node *child;
> +	const phandle *handle;
> +
> +	handle = of_get_property(np, "l2-cache", NULL);
> +	if (!handle)
> +		handle = of_get_property(np, "next-level-cache", NULL);
> +
> +	if (handle)
> +		return of_find_node_by_phandle(be32_to_cpup(handle));
> +
> +	/* OF on pmac has nodes instead of properties named "l2-cache"
> +	 * beneath CPU nodes.
> +	 */
> +	if (!strcmp(np->type, "cpu"))
> +		for_each_child_of_node(np, child)
> +			if (!strcmp(child->type, "cache"))
> +				return child;
> +
> +	return NULL;
> +}
> diff --git a/include/linux/of.h b/include/linux/of.h
> index f95aee3..c08c07e 100644
> --- a/include/linux/of.h
> +++ b/include/linux/of.h
> @@ -226,6 +226,8 @@ static inline int of_get_child_count(const struct device_node *np)
>  	return num;
>  }
>  
> +/* cache lookup */
> +extern struct device_node *of_find_next_cache_node(const struct device_node *);
>  extern struct device_node *of_find_node_with_property(
>  	struct device_node *from, const char *prop_name);
>  #define for_each_node_with_property(dn, prop_name) \
Sudeep.KarkadaNagesha@arm.com - Oct. 31, 2013, 10:32 a.m.
Hi Ben,

On 31/10/13 05:20, Benjamin Herrenschmidt wrote:
> On Wed, 2013-09-18 at 11:53 +0100, Sudeep KarkadaNagesha wrote:
>> From: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
>>
>> Since the definition of_find_next_cache_node is architecture independent,
>> the existing definition in powerpc can be moved to driver/of/base.c
>>
>> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
>> Cc: Grant Likely <grant.likely@linaro.org>
>> Cc: Rob Herring <rob.herring@calxeda.com>
>> Signed-off-by: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
> 
> I've seen no follow up on that, I'm happy to stick it in powerpc-next
> with some other late stuff.
> 

Thanks for the follow up. Grant wanted to see usage of this outside PPC and I
pointed him[0] to the RFC[1] I had posted to support cacheinfo on ARM.

These patches are based on v3.12-rc1, let me know if you want me to
rebase/repost on any particular version.

Regards,
Sudeep

[0] http://www.spinics.net/lists/devicetree/msg05174.html
[1] https://lkml.org/lkml/2013/9/18/340
Benjamin Herrenschmidt - Nov. 1, 2013, 8:16 a.m.
On Thu, 2013-10-31 at 10:32 +0000, Sudeep KarkadaNagesha wrote:

> Thanks for the follow up. Grant wanted to see usage of this outside PPC and I
> pointed him[0] to the RFC[1] I had posted to support cacheinfo on ARM.
> 
> These patches are based on v3.12-rc1, let me know if you want me to
> rebase/repost on any particular version.

I've applied them to powerpc-next

Cheers,
Ben.

Patch

diff --git a/arch/powerpc/include/asm/prom.h b/arch/powerpc/include/asm/prom.h
index 7d0c7f3..bf09e5a 100644
--- a/arch/powerpc/include/asm/prom.h
+++ b/arch/powerpc/include/asm/prom.h
@@ -44,9 +44,6 @@  void of_parse_dma_window(struct device_node *dn, const __be32 *dma_window,
 
 extern void kdump_move_device_tree(void);
 
-/* cache lookup */
-struct device_node *of_find_next_cache_node(struct device_node *np);
-
 #ifdef CONFIG_NUMA
 extern int of_node_to_nid(struct device_node *device);
 #else
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index 09be275..4432fd8 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -761,37 +761,6 @@  void __init early_init_devtree(void *params)
  *******/
 
 /**
- *	of_find_next_cache_node - Find a node's subsidiary cache
- *	@np:	node of type "cpu" or "cache"
- *
- *	Returns a node pointer with refcount incremented, use
- *	of_node_put() on it when done.  Caller should hold a reference
- *	to np.
- */
-struct device_node *of_find_next_cache_node(struct device_node *np)
-{
-	struct device_node *child;
-	const phandle *handle;
-
-	handle = of_get_property(np, "l2-cache", NULL);
-	if (!handle)
-		handle = of_get_property(np, "next-level-cache", NULL);
-
-	if (handle)
-		return of_find_node_by_phandle(be32_to_cpup(handle));
-
-	/* OF on pmac has nodes instead of properties named "l2-cache"
-	 * beneath CPU nodes.
-	 */
-	if (!strcmp(np->type, "cpu"))
-		for_each_child_of_node(np, child)
-			if (!strcmp(child->type, "cache"))
-				return child;
-
-	return NULL;
-}
-
-/**
  * of_get_ibm_chip_id - Returns the IBM "chip-id" of a device
  * @np: device node of the device
  *
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 865d3f6..b2cee3d 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -1884,3 +1884,34 @@  int of_device_is_stdout_path(struct device_node *dn)
 	return of_stdout == dn;
 }
 EXPORT_SYMBOL_GPL(of_device_is_stdout_path);
+
+/**
+ *	of_find_next_cache_node - Find a node's subsidiary cache
+ *	@np:	node of type "cpu" or "cache"
+ *
+ *	Returns a node pointer with refcount incremented, use
+ *	of_node_put() on it when done.  Caller should hold a reference
+ *	to np.
+ */
+struct device_node *of_find_next_cache_node(const struct device_node *np)
+{
+	struct device_node *child;
+	const phandle *handle;
+
+	handle = of_get_property(np, "l2-cache", NULL);
+	if (!handle)
+		handle = of_get_property(np, "next-level-cache", NULL);
+
+	if (handle)
+		return of_find_node_by_phandle(be32_to_cpup(handle));
+
+	/* OF on pmac has nodes instead of properties named "l2-cache"
+	 * beneath CPU nodes.
+	 */
+	if (!strcmp(np->type, "cpu"))
+		for_each_child_of_node(np, child)
+			if (!strcmp(child->type, "cache"))
+				return child;
+
+	return NULL;
+}
diff --git a/include/linux/of.h b/include/linux/of.h
index f95aee3..c08c07e 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -226,6 +226,8 @@  static inline int of_get_child_count(const struct device_node *np)
 	return num;
 }
 
+/* cache lookup */
+extern struct device_node *of_find_next_cache_node(const struct device_node *);
 extern struct device_node *of_find_node_with_property(
 	struct device_node *from, const char *prop_name);
 #define for_each_node_with_property(dn, prop_name) \