aboutsummaryrefslogtreecommitdiffstats
path: root/rust/helpers/bug.c
diff options
context:
space:
mode:
authorRob Herring <[email protected]>2025-07-11 18:27:41 +0000
committerGreg Kroah-Hartman <[email protected]>2025-07-16 13:04:16 +0000
commit6b585f4ce6e4cde967bffae4f6cd9066094967ac (patch)
tree08a6a441b4eaa4d6869423c101c5a2aa51e568a1 /rust/helpers/bug.c
parentcontainer_of: Document container_of() is not to be used in new code (diff)
downloadkernel-6b585f4ce6e4cde967bffae4f6cd9066094967ac.tar.gz
kernel-6b585f4ce6e4cde967bffae4f6cd9066094967ac.zip
cacheinfo: Set cache 'id' based on DT data
Use the minimum CPU h/w id of the CPUs associated with the cache for the cache 'id'. This will provide a stable id value for a given system. As we need to check all possible CPUs, we can't use the shared_cpu_map which is just online CPUs. As there's not a cache to CPUs mapping in DT, we have to walk all CPU nodes and then walk cache levels. The cache_id exposed to user-space has historically been 32 bits, and is too late to change. This value is parsed into a u32 by user-space libraries such as libvirt: https://github.com/libvirt/libvirt/blob/master/src/util/virresctrl.c#L1588 Give up on assigning cache-id's if a CPU h/w id greater than 32 bits is found. match_cache_node() does not make use of the __free() cleanup helpers because of_find_next_cache_node(prev) does not drop a reference to prev, and its too easy to accidentally drop the reference on cpu, which belongs to for_each_of_cpu_node(). Cc: "Rafael J. Wysocki" <[email protected]> Signed-off-by: Rob Herring <[email protected]> [ ben: converted to use the __free cleanup idiom ] Signed-off-by: Ben Horgan <[email protected]> [ morse: Add checks to give up if a value larger than 32 bits is seen. ] Signed-off-by: James Morse <[email protected]> Reviewed-by: Jonathan Cameron <[email protected]> Reviewed-by: Gavin Shan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'rust/helpers/bug.c')
0 files changed, 0 insertions, 0 deletions