Lines Matching refs:id4
223 static int cpuid4_info_fill_done(struct _cpuid4_info *id4, union _cpuid4_leaf_eax eax, in cpuid4_info_fill_done() argument
229 id4->eax = eax; in cpuid4_info_fill_done()
230 id4->ebx = ebx; in cpuid4_info_fill_done()
231 id4->ecx = ecx; in cpuid4_info_fill_done()
232 id4->size = (ecx.split.number_of_sets + 1) * in cpuid4_info_fill_done()
240 static int amd_fill_cpuid4_info(int index, struct _cpuid4_info *id4) in amd_fill_cpuid4_info() argument
252 return cpuid4_info_fill_done(id4, eax, ebx, ecx); in amd_fill_cpuid4_info()
255 static int intel_fill_cpuid4_info(int index, struct _cpuid4_info *id4) in intel_fill_cpuid4_info() argument
264 return cpuid4_info_fill_done(id4, eax, ebx, ecx); in intel_fill_cpuid4_info()
267 static int fill_cpuid4_info(int index, struct _cpuid4_info *id4) in fill_cpuid4_info() argument
272 amd_fill_cpuid4_info(index, id4) : in fill_cpuid4_info()
273 intel_fill_cpuid4_info(index, id4); in fill_cpuid4_info()
404 static unsigned int calc_cache_topo_id(struct cpuinfo_x86 *c, const struct _cpuid4_info *id4) in calc_cache_topo_id() argument
409 num_threads_sharing = 1 + id4->eax.split.num_threads_sharing; in calc_cache_topo_id()
434 struct _cpuid4_info id4 = {}; in intel_cacheinfo_0x4() local
437 ret = intel_fill_cpuid4_info(i, &id4); in intel_cacheinfo_0x4()
441 switch (id4.eax.split.level) { in intel_cacheinfo_0x4()
443 if (id4.eax.split.type == CTYPE_DATA) in intel_cacheinfo_0x4()
444 l1d = id4.size / 1024; in intel_cacheinfo_0x4()
445 else if (id4.eax.split.type == CTYPE_INST) in intel_cacheinfo_0x4()
446 l1i = id4.size / 1024; in intel_cacheinfo_0x4()
449 l2 = id4.size / 1024; in intel_cacheinfo_0x4()
450 l2_id = calc_cache_topo_id(c, &id4); in intel_cacheinfo_0x4()
453 l3 = id4.size / 1024; in intel_cacheinfo_0x4()
454 l3_id = calc_cache_topo_id(c, &id4); in intel_cacheinfo_0x4()
480 const struct _cpuid4_info *id4) in __cache_amd_cpumap_setup() argument
506 nshared = id4->eax.split.num_threads_sharing + 1; in __cache_amd_cpumap_setup()
539 const struct _cpuid4_info *id4) in __cache_cpumap_setup() argument
548 if (__cache_amd_cpumap_setup(cpu, index, id4)) in __cache_cpumap_setup()
553 num_threads_sharing = 1 + id4->eax.split.num_threads_sharing; in __cache_cpumap_setup()
575 static void ci_info_init(struct cacheinfo *ci, const struct _cpuid4_info *id4, in ci_info_init() argument
578 ci->id = id4->id; in ci_info_init()
580 ci->level = id4->eax.split.level; in ci_info_init()
581 ci->type = cache_type_map[id4->eax.split.type]; in ci_info_init()
582 ci->coherency_line_size = id4->ebx.split.coherency_line_size + 1; in ci_info_init()
583 ci->ways_of_associativity = id4->ebx.split.ways_of_associativity + 1; in ci_info_init()
584 ci->size = id4->size; in ci_info_init()
585 ci->number_of_sets = id4->ecx.split.number_of_sets + 1; in ci_info_init()
586 ci->physical_line_partition = id4->ebx.split.physical_line_partition + 1; in ci_info_init()
606 static void get_cache_id(int cpu, struct _cpuid4_info *id4) in get_cache_id() argument
612 num_threads_sharing = 1 + id4->eax.split.num_threads_sharing; in get_cache_id()
614 id4->id = c->topo.apicid >> index_msb; in get_cache_id()
623 struct _cpuid4_info id4 = {}; in populate_cache_leaves() local
627 ret = fill_cpuid4_info(idx, &id4); in populate_cache_leaves()
631 get_cache_id(cpu, &id4); in populate_cache_leaves()
636 ci_info_init(ci++, &id4, nb); in populate_cache_leaves()
637 __cache_cpumap_setup(cpu, idx, &id4); in populate_cache_leaves()