[v3,1/2] drivers: base: cacheinfo: Do not populate sysfs for unknown cache types
diff mbox series

Message ID 1538103477-15513-2-git-send-email-jhugo@codeaurora.org
State Superseded
Headers show
Series
  • PPTT handle Handle architecturally unknown cache types
Related show

Commit Message

Jeffrey Hugo Sept. 28, 2018, 2:57 a.m. UTC
If a cache has an unknown type because neither the hardware nor the
firmware told us, an entry in the sysfs tree will be made, but the type
file will not be present.  lscpu depends on the type file being present
for every entry, and will error out without printing system information
if lscpu cannot open the type file.

Presenting information about a cache without indicating its type is not
useful, therefore if we hit a cache with an unknown type, stop populating
sysfs so that userspace has the maximum amount of useful information.

This addresses the following lscpu error, which prevents any output.
lscpu: cannot open /sys/devices/system/cpu/cpu0/cache/index3/type: No such
file or directory

Suggested-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Jeffrey Hugo <jhugo@codeaurora.org>
Reviewed-by: Jeremy Linton <jeremy.linton@arm.com>
---
 drivers/base/cacheinfo.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Sudeep Holla Oct. 2, 2018, 10:49 a.m. UTC | #1
On Thu, Sep 27, 2018 at 08:57:56PM -0600, Jeffrey Hugo wrote:
> If a cache has an unknown type because neither the hardware nor the
> firmware told us, an entry in the sysfs tree will be made, but the type
> file will not be present.  lscpu depends on the type file being present
> for every entry, and will error out without printing system information
> if lscpu cannot open the type file.
> 
> Presenting information about a cache without indicating its type is not
> useful, therefore if we hit a cache with an unknown type, stop populating
> sysfs so that userspace has the maximum amount of useful information.
> 
> This addresses the following lscpu error, which prevents any output.
> lscpu: cannot open /sys/devices/system/cpu/cpu0/cache/index3/type: No such
> file or directory
> 
> Suggested-by: Sudeep Holla <sudeep.holla@arm.com>
> Signed-off-by: Jeffrey Hugo <jhugo@codeaurora.org>
> Reviewed-by: Jeremy Linton <jeremy.linton@arm.com>

Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>

--
Regards,
Sudeep
Rafael J. Wysocki Oct. 3, 2018, 9:35 a.m. UTC | #2
On Friday, September 28, 2018 4:57:56 AM CEST Jeffrey Hugo wrote:
> If a cache has an unknown type because neither the hardware nor the
> firmware told us, an entry in the sysfs tree will be made, but the type
> file will not be present.  lscpu depends on the type file being present
> for every entry, and will error out without printing system information
> if lscpu cannot open the type file.
> 
> Presenting information about a cache without indicating its type is not
> useful, therefore if we hit a cache with an unknown type, stop populating
> sysfs so that userspace has the maximum amount of useful information.
> 
> This addresses the following lscpu error, which prevents any output.
> lscpu: cannot open /sys/devices/system/cpu/cpu0/cache/index3/type: No such
> file or directory
> 
> Suggested-by: Sudeep Holla <sudeep.holla@arm.com>
> Signed-off-by: Jeffrey Hugo <jhugo@codeaurora.org>
> Reviewed-by: Jeremy Linton <jeremy.linton@arm.com>
> ---
>  drivers/base/cacheinfo.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/base/cacheinfo.c b/drivers/base/cacheinfo.c
> index 5d5b598..cf78fa6 100644
> --- a/drivers/base/cacheinfo.c
> +++ b/drivers/base/cacheinfo.c
> @@ -615,6 +615,8 @@ static int cache_add_dev(unsigned int cpu)
>  		this_leaf = this_cpu_ci->info_list + i;
>  		if (this_leaf->disable_sysfs)
>  			continue;
> +		if (this_leaf->type == CACHE_TYPE_NOCACHE)
> +			break;
>  		cache_groups = cache_get_attribute_groups(this_leaf);
>  		ci_dev = cpu_device_create(parent, this_leaf, cache_groups,
>  					   "index%1u", i);
> 

Can you please resend this patch with all tags collected so far?

Patchwork doesn't seem to have picked it up.

Thanks,
Rafael
Jeffrey Hugo Oct. 3, 2018, 1:47 p.m. UTC | #3
On 10/3/2018 3:35 AM, Rafael J. Wysocki wrote:
> On Friday, September 28, 2018 4:57:56 AM CEST Jeffrey Hugo wrote:
>> If a cache has an unknown type because neither the hardware nor the
>> firmware told us, an entry in the sysfs tree will be made, but the type
>> file will not be present.  lscpu depends on the type file being present
>> for every entry, and will error out without printing system information
>> if lscpu cannot open the type file.
>>
>> Presenting information about a cache without indicating its type is not
>> useful, therefore if we hit a cache with an unknown type, stop populating
>> sysfs so that userspace has the maximum amount of useful information.
>>
>> This addresses the following lscpu error, which prevents any output.
>> lscpu: cannot open /sys/devices/system/cpu/cpu0/cache/index3/type: No such
>> file or directory
>>
>> Suggested-by: Sudeep Holla <sudeep.holla@arm.com>
>> Signed-off-by: Jeffrey Hugo <jhugo@codeaurora.org>
>> Reviewed-by: Jeremy Linton <jeremy.linton@arm.com>
>> ---
>>   drivers/base/cacheinfo.c | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/drivers/base/cacheinfo.c b/drivers/base/cacheinfo.c
>> index 5d5b598..cf78fa6 100644
>> --- a/drivers/base/cacheinfo.c
>> +++ b/drivers/base/cacheinfo.c
>> @@ -615,6 +615,8 @@ static int cache_add_dev(unsigned int cpu)
>>   		this_leaf = this_cpu_ci->info_list + i;
>>   		if (this_leaf->disable_sysfs)
>>   			continue;
>> +		if (this_leaf->type == CACHE_TYPE_NOCACHE)
>> +			break;
>>   		cache_groups = cache_get_attribute_groups(this_leaf);
>>   		ci_dev = cpu_device_create(parent, this_leaf, cache_groups,
>>   					   "index%1u", i);
>>
> 
> Can you please resend this patch with all tags collected so far?

Will do.

Patch
diff mbox series

diff --git a/drivers/base/cacheinfo.c b/drivers/base/cacheinfo.c
index 5d5b598..cf78fa6 100644
--- a/drivers/base/cacheinfo.c
+++ b/drivers/base/cacheinfo.c
@@ -615,6 +615,8 @@  static int cache_add_dev(unsigned int cpu)
 		this_leaf = this_cpu_ci->info_list + i;
 		if (this_leaf->disable_sysfs)
 			continue;
+		if (this_leaf->type == CACHE_TYPE_NOCACHE)
+			break;
 		cache_groups = cache_get_attribute_groups(this_leaf);
 		ci_dev = cpu_device_create(parent, this_leaf, cache_groups,
 					   "index%1u", i);