diff options
-rw-r--r-- | arch/i386/kernel/cpu/intel_cacheinfo.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/arch/i386/kernel/cpu/intel_cacheinfo.c b/arch/i386/kernel/cpu/intel_cacheinfo.c index 9e0d5f83cb9f..c802206274c2 100644 --- a/arch/i386/kernel/cpu/intel_cacheinfo.c +++ b/arch/i386/kernel/cpu/intel_cacheinfo.c | |||
@@ -117,7 +117,6 @@ struct _cpuid4_info { | |||
117 | cpumask_t shared_cpu_map; | 117 | cpumask_t shared_cpu_map; |
118 | }; | 118 | }; |
119 | 119 | ||
120 | #define MAX_CACHE_LEAVES 4 | ||
121 | static unsigned short num_cache_leaves; | 120 | static unsigned short num_cache_leaves; |
122 | 121 | ||
123 | static int __devinit cpuid4_cache_lookup(int index, struct _cpuid4_info *this_leaf) | 122 | static int __devinit cpuid4_cache_lookup(int index, struct _cpuid4_info *this_leaf) |
@@ -144,20 +143,15 @@ static int __init find_num_cache_leaves(void) | |||
144 | { | 143 | { |
145 | unsigned int eax, ebx, ecx, edx; | 144 | unsigned int eax, ebx, ecx, edx; |
146 | union _cpuid4_leaf_eax cache_eax; | 145 | union _cpuid4_leaf_eax cache_eax; |
147 | int i; | 146 | int i = -1; |
148 | int retval; | ||
149 | 147 | ||
150 | retval = MAX_CACHE_LEAVES; | 148 | do { |
151 | /* Do cpuid(4) loop to find out num_cache_leaves */ | 149 | ++i; |
152 | for (i = 0; i < MAX_CACHE_LEAVES; i++) { | 150 | /* Do cpuid(4) loop to find out num_cache_leaves */ |
153 | cpuid_count(4, i, &eax, &ebx, &ecx, &edx); | 151 | cpuid_count(4, i, &eax, &ebx, &ecx, &edx); |
154 | cache_eax.full = eax; | 152 | cache_eax.full = eax; |
155 | if (cache_eax.split.type == CACHE_TYPE_NULL) { | 153 | } while (cache_eax.split.type != CACHE_TYPE_NULL); |
156 | retval = i; | 154 | return i; |
157 | break; | ||
158 | } | ||
159 | } | ||
160 | return retval; | ||
161 | } | 155 | } |
162 | 156 | ||
163 | unsigned int __devinit init_intel_cacheinfo(struct cpuinfo_x86 *c) | 157 | unsigned int __devinit init_intel_cacheinfo(struct cpuinfo_x86 *c) |