Re: [PATCH] cacheinfo: Keep the old value if of_property_read_u32 fails

2018-10-18 Thread Sudeep Holla
Hi Huacai,

On Thu, Oct 18, 2018 at 09:28:11AM +0800, Huacai Chen wrote:
> Hi, Sudeep,
> 
> Please see this call-graph:
> 
> static int detect_cache_attributes(unsigned int cpu)
> 
> ret = populate_cache_leaves(cpu);
> 
> ret = cache_shared_cpu_map_setup(cpu); -->
> cache_setup_of_node() --> cache_of_set_props() -->
> cache_size()/cache_nr_sets
> 
> populate_cache_leaves() is arch-specific, All archs except arm64 have
> provide initial values to cacheinfo:size and cacheinfo:number_of_sets.
> 
> Related files:
> arch/nds32/kernel/cacheinfo.c
> arch/mips/kernel/cacheinfo.c

Only above 2 could be affected, but I want to be sure. I wasn't aware
of MIPS arch setting values elsewhere, assumed DT, my bad.
You have still not answered my question. Which arch are you facing issue ?
Or are you proposing this by code inspection ? I changes look fine, but
want to be sure if the issue you are seeing is in above architectures.

--
Regards,
Sudeep


Re: [PATCH] cacheinfo: Keep the old value if of_property_read_u32 fails

2018-10-18 Thread Sudeep Holla
Hi Huacai,

On Thu, Oct 18, 2018 at 09:28:11AM +0800, Huacai Chen wrote:
> Hi, Sudeep,
> 
> Please see this call-graph:
> 
> static int detect_cache_attributes(unsigned int cpu)
> 
> ret = populate_cache_leaves(cpu);
> 
> ret = cache_shared_cpu_map_setup(cpu); -->
> cache_setup_of_node() --> cache_of_set_props() -->
> cache_size()/cache_nr_sets
> 
> populate_cache_leaves() is arch-specific, All archs except arm64 have
> provide initial values to cacheinfo:size and cacheinfo:number_of_sets.
> 
> Related files:
> arch/nds32/kernel/cacheinfo.c
> arch/mips/kernel/cacheinfo.c

Only above 2 could be affected, but I want to be sure. I wasn't aware
of MIPS arch setting values elsewhere, assumed DT, my bad.
You have still not answered my question. Which arch are you facing issue ?
Or are you proposing this by code inspection ? I changes look fine, but
want to be sure if the issue you are seeing is in above architectures.

--
Regards,
Sudeep


Re: [PATCH] cacheinfo: Keep the old value if of_property_read_u32 fails

2018-10-17 Thread Huacai Chen
Hi, Sudeep,

Please see this call-graph:

static int detect_cache_attributes(unsigned int cpu)

ret = populate_cache_leaves(cpu);

ret = cache_shared_cpu_map_setup(cpu); -->
cache_setup_of_node() --> cache_of_set_props() -->
cache_size()/cache_nr_sets

populate_cache_leaves() is arch-specific, All archs except arm64 have
provide initial values to cacheinfo:size and cacheinfo:number_of_sets.

Related files:
arch/nds32/kernel/cacheinfo.c
arch/riscv/kernel/cacheinfo.c
arch/s390/kernel/cache.c
arch/mips/kernel/cacheinfo.c
arch/x86/kernel/cpu/cacheinfo.c

Regards,
Huacai

On Wed, Oct 17, 2018 at 5:35 PM Sudeep Holla  wrote:
>
> On Wed, Oct 17, 2018 at 09:26:03AM +0800, Huacai Chen wrote:
> > Commit 448a5a552f336bd7b847b1951 ("drivers: base: cacheinfo: use OF
> > property_read_u32 instead of get_property,read_number") makes cache
> > size and number_of_sets be 0 if DT doesn't provide there values. I
> > think this is unreasonable so make them keep the old values, which is
> > the same as old kernels.
> >
>
> What old values does the kernel have ? Which architecture are you referring ?
> If DT doesn't have entry then we can't expose sysfs, hence 0.
> Please provide more details on the issue you are seeing.
>
> --
> Regards,
> Sudeep


Re: [PATCH] cacheinfo: Keep the old value if of_property_read_u32 fails

2018-10-17 Thread Huacai Chen
Hi, Sudeep,

Please see this call-graph:

static int detect_cache_attributes(unsigned int cpu)

ret = populate_cache_leaves(cpu);

ret = cache_shared_cpu_map_setup(cpu); -->
cache_setup_of_node() --> cache_of_set_props() -->
cache_size()/cache_nr_sets

populate_cache_leaves() is arch-specific, All archs except arm64 have
provide initial values to cacheinfo:size and cacheinfo:number_of_sets.

Related files:
arch/nds32/kernel/cacheinfo.c
arch/riscv/kernel/cacheinfo.c
arch/s390/kernel/cache.c
arch/mips/kernel/cacheinfo.c
arch/x86/kernel/cpu/cacheinfo.c

Regards,
Huacai

On Wed, Oct 17, 2018 at 5:35 PM Sudeep Holla  wrote:
>
> On Wed, Oct 17, 2018 at 09:26:03AM +0800, Huacai Chen wrote:
> > Commit 448a5a552f336bd7b847b1951 ("drivers: base: cacheinfo: use OF
> > property_read_u32 instead of get_property,read_number") makes cache
> > size and number_of_sets be 0 if DT doesn't provide there values. I
> > think this is unreasonable so make them keep the old values, which is
> > the same as old kernels.
> >
>
> What old values does the kernel have ? Which architecture are you referring ?
> If DT doesn't have entry then we can't expose sysfs, hence 0.
> Please provide more details on the issue you are seeing.
>
> --
> Regards,
> Sudeep


Re: [PATCH] cacheinfo: Keep the old value if of_property_read_u32 fails

2018-10-17 Thread Sudeep Holla
On Wed, Oct 17, 2018 at 09:26:03AM +0800, Huacai Chen wrote:
> Commit 448a5a552f336bd7b847b1951 ("drivers: base: cacheinfo: use OF
> property_read_u32 instead of get_property,read_number") makes cache
> size and number_of_sets be 0 if DT doesn't provide there values. I
> think this is unreasonable so make them keep the old values, which is
> the same as old kernels.
>

What old values does the kernel have ? Which architecture are you referring ?
If DT doesn't have entry then we can't expose sysfs, hence 0.
Please provide more details on the issue you are seeing.

--
Regards,
Sudeep


Re: [PATCH] cacheinfo: Keep the old value if of_property_read_u32 fails

2018-10-17 Thread Sudeep Holla
On Wed, Oct 17, 2018 at 09:26:03AM +0800, Huacai Chen wrote:
> Commit 448a5a552f336bd7b847b1951 ("drivers: base: cacheinfo: use OF
> property_read_u32 instead of get_property,read_number") makes cache
> size and number_of_sets be 0 if DT doesn't provide there values. I
> think this is unreasonable so make them keep the old values, which is
> the same as old kernels.
>

What old values does the kernel have ? Which architecture are you referring ?
If DT doesn't have entry then we can't expose sysfs, hence 0.
Please provide more details on the issue you are seeing.

--
Regards,
Sudeep


[PATCH] cacheinfo: Keep the old value if of_property_read_u32 fails

2018-10-16 Thread Huacai Chen
Commit 448a5a552f336bd7b847b1951 ("drivers: base: cacheinfo: use OF
property_read_u32 instead of get_property,read_number") makes cache
size and number_of_sets be 0 if DT doesn't provide there values. I
think this is unreasonable so make them keep the old values, which is
the same as old kernels.

Signed-off-by: Huacai Chen 
---
 drivers/base/cacheinfo.c | 6 ++
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/base/cacheinfo.c b/drivers/base/cacheinfo.c
index 5d5b598..dd6a685 100644
--- a/drivers/base/cacheinfo.c
+++ b/drivers/base/cacheinfo.c
@@ -79,8 +79,7 @@ static void cache_size(struct cacheinfo *this_leaf, struct 
device_node *np)
ct_idx = get_cacheinfo_idx(this_leaf->type);
propname = cache_type_info[ct_idx].size_prop;
 
-   if (of_property_read_u32(np, propname, _leaf->size))
-   this_leaf->size = 0;
+   of_property_read_u32(np, propname, _leaf->size);
 }
 
 /* not cache_line_size() because that's a macro in include/linux/cache.h */
@@ -114,8 +113,7 @@ static void cache_nr_sets(struct cacheinfo *this_leaf, 
struct device_node *np)
ct_idx = get_cacheinfo_idx(this_leaf->type);
propname = cache_type_info[ct_idx].nr_sets_prop;
 
-   if (of_property_read_u32(np, propname, _leaf->number_of_sets))
-   this_leaf->number_of_sets = 0;
+   of_property_read_u32(np, propname, _leaf->number_of_sets);
 }
 
 static void cache_associativity(struct cacheinfo *this_leaf)
-- 
2.7.0



[PATCH] cacheinfo: Keep the old value if of_property_read_u32 fails

2018-10-16 Thread Huacai Chen
Commit 448a5a552f336bd7b847b1951 ("drivers: base: cacheinfo: use OF
property_read_u32 instead of get_property,read_number") makes cache
size and number_of_sets be 0 if DT doesn't provide there values. I
think this is unreasonable so make them keep the old values, which is
the same as old kernels.

Signed-off-by: Huacai Chen 
---
 drivers/base/cacheinfo.c | 6 ++
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/base/cacheinfo.c b/drivers/base/cacheinfo.c
index 5d5b598..dd6a685 100644
--- a/drivers/base/cacheinfo.c
+++ b/drivers/base/cacheinfo.c
@@ -79,8 +79,7 @@ static void cache_size(struct cacheinfo *this_leaf, struct 
device_node *np)
ct_idx = get_cacheinfo_idx(this_leaf->type);
propname = cache_type_info[ct_idx].size_prop;
 
-   if (of_property_read_u32(np, propname, _leaf->size))
-   this_leaf->size = 0;
+   of_property_read_u32(np, propname, _leaf->size);
 }
 
 /* not cache_line_size() because that's a macro in include/linux/cache.h */
@@ -114,8 +113,7 @@ static void cache_nr_sets(struct cacheinfo *this_leaf, 
struct device_node *np)
ct_idx = get_cacheinfo_idx(this_leaf->type);
propname = cache_type_info[ct_idx].nr_sets_prop;
 
-   if (of_property_read_u32(np, propname, _leaf->number_of_sets))
-   this_leaf->number_of_sets = 0;
+   of_property_read_u32(np, propname, _leaf->number_of_sets);
 }
 
 static void cache_associativity(struct cacheinfo *this_leaf)
-- 
2.7.0