summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Hugo <jhugo@codeaurora.org>2018-10-04 09:20:05 -0600
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2018-10-04 23:02:17 +0200
commitca388e436f588a7fa88fcdefcb0b2c55aff6836c (patch)
treea1416d6caedb84dd27abf90fa07cd34917682cbb
parent17b57b1883c1285f3d0dc2266e8f79286a7bef38 (diff)
downloadlwn-ca388e436f588a7fa88fcdefcb0b2c55aff6836c.tar.gz
lwn-ca388e436f588a7fa88fcdefcb0b2c55aff6836c.zip
drivers: base: cacheinfo: Do not populate sysfs for unknown cache types
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> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r--drivers/base/cacheinfo.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/base/cacheinfo.c b/drivers/base/cacheinfo.c
index 5d5b5988e88b..cf78fa6d470d 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);