diff options
author | Shaokun Zhang <zhangshaokun@hisilicon.com> | 2019-05-28 10:16:53 +0800 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2019-06-04 13:42:54 +0100 |
commit | 9a83c84c3a491cbe7fc9dea3c43e26a8e67204d2 (patch) | |
tree | bebcbd62f6bf2dc9a10aa46d6232669bac62f1ee /drivers/base/cacheinfo.c | |
parent | 6dcdefcde413c1068b394eeabdfdf6a85213ebe2 (diff) | |
download | linux-stable-9a83c84c3a491cbe7fc9dea3c43e26a8e67204d2.tar.gz linux-stable-9a83c84c3a491cbe7fc9dea3c43e26a8e67204d2.tar.bz2 linux-stable-9a83c84c3a491cbe7fc9dea3c43e26a8e67204d2.zip |
drivers: base: cacheinfo: Add variable to record max cache line size
Add coherency_max_size variable to record the maximum cache line size
for different cache levels. If it is available, we will synchronize
it as cache line size, otherwise we will use CTR_EL0.CWG reporting
in cache_line_size() for arm64.
Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Jeremy Linton <jeremy.linton@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'drivers/base/cacheinfo.c')
-rw-r--r-- | drivers/base/cacheinfo.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/base/cacheinfo.c b/drivers/base/cacheinfo.c index a7359535caf5..8827c60f51e2 100644 --- a/drivers/base/cacheinfo.c +++ b/drivers/base/cacheinfo.c @@ -213,6 +213,8 @@ int __weak cache_setup_acpi(unsigned int cpu) return -ENOTSUPP; } +unsigned int coherency_max_size; + static int cache_shared_cpu_map_setup(unsigned int cpu) { struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(cpu); @@ -251,6 +253,9 @@ static int cache_shared_cpu_map_setup(unsigned int cpu) cpumask_set_cpu(i, &this_leaf->shared_cpu_map); } } + /* record the maximum cache line size */ + if (this_leaf->coherency_line_size > coherency_max_size) + coherency_max_size = this_leaf->coherency_line_size; } return 0; |