diff options
Diffstat (limited to 'drivers/base/cacheinfo.c')
| -rw-r--r-- | drivers/base/cacheinfo.c | 16 | 
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/base/cacheinfo.c b/drivers/base/cacheinfo.c index f6573c335f4c..f3903d002819 100644 --- a/drivers/base/cacheinfo.c +++ b/drivers/base/cacheinfo.c @@ -474,12 +474,18 @@ int detect_cache_attributes(unsigned int cpu)  populate_leaves:  	/* -	 * populate_cache_leaves() may completely setup the cache leaves and -	 * shared_cpu_map or it may leave it partially setup. +	 * If LLC is valid the cache leaves were already populated so just go to +	 * update the cpu map.  	 */ -	ret = populate_cache_leaves(cpu); -	if (ret) -		goto free_ci; +	if (!last_level_cache_is_valid(cpu)) { +		/* +		 * populate_cache_leaves() may completely setup the cache leaves and +		 * shared_cpu_map or it may leave it partially setup. +		 */ +		ret = populate_cache_leaves(cpu); +		if (ret) +			goto free_ci; +	}  	/*  	 * For systems using DT for cache hierarchy, fw_token  |