Lines Matching refs:info_p

247 cpuid_set_cache_info( i386_cpu_info_t * info_p )
257 DBG("cpuid_set_cache_info(%p)\n", info_p);
268 ((uint32_t *) info_p->cache_info)[j] = cpuid_result[j];
271 for (i = 1; i < info_p->cache_info[0]; i++) {
272 if (i*16 > sizeof(info_p->cache_info))
278 ((uint32_t *) info_p->cache_info)[4*i+j] =
313 info_p->cpuid_cores_per_package
345 info_p->cache_size[type] = cache_size;
346 info_p->cache_sharing[type] = cache_sharing;
347 info_p->cache_partitions[type] = cache_partitions;
363 info_p->cpuid_cache_L2_associativity = cache_associativity;
398 if (info_p->cpuid_cores_per_package == 0) {
399 info_p->cpuid_cores_per_package = 1;
402 info_p->cache_size[L2U] = info_p->cpuid_cache_size * 1024;
403 info_p->cache_sharing[L2U] = 1;
404 info_p->cache_partitions[L2U] = 1;
406 linesizes[L2U] = info_p->cpuid_cache_linesize;
409 info_p->cache_size[L2U]);
413 info_p->cpuid_cache_linesize);
421 info_p->cache_linesize = linesizes[L2U];
423 info_p->cache_linesize = linesizes[L1D];
425 DBG(" cache_linesize : %d\n", info_p->cache_linesize);
430 DBG(" %ld leaf2 descriptors:\n", sizeof(info_p->cache_info));
431 for (i = 1; i < sizeof(info_p->cache_info); i++) {
437 DBG(" 0x%02x", info_p->cache_info[i]);
438 descp = cpuid_leaf2_find(info_p->cache_info[i]);
466 info_p->cpuid_tlb[id][page][level] = descp->entries;
469 info_p->cpuid_stlb = descp->entries;
476 cpuid_set_generic_info(i386_cpu_info_t *info_p)
481 DBG("cpuid_set_generic_info(%p)\n", info_p);
485 info_p->cpuid_max_basic = reg[eax];
486 bcopy((char *)&reg[ebx], &info_p->cpuid_vendor[0], 4); /* ug */
487 bcopy((char *)&reg[ecx], &info_p->cpuid_vendor[8], 4);
488 bcopy((char *)&reg[edx], &info_p->cpuid_vendor[4], 4);
489 info_p->cpuid_vendor[12] = 0;
493 info_p->cpuid_max_ext = reg[eax];
496 if (info_p->cpuid_max_ext >= 0x80000004) {
510 strlcpy(info_p->cpuid_brand_string,
511 p, sizeof(info_p->cpuid_brand_string));
513 if (!strncmp(info_p->cpuid_brand_string, CPUID_STRING_UNKNOWN,
514 min(sizeof(info_p->cpuid_brand_string),
520 info_p->cpuid_brand_string[0] = '\0';
525 if (info_p->cpuid_max_ext >= 0x80000006) {
528 info_p->cpuid_cache_linesize = bitfield32(reg[ecx], 7, 0);
543 info_p->cpuid_cache_L2_associativity = assoc;
544 info_p->cpuid_cache_size = bitfield32(reg[ecx],31,16);
546 info_p->cpuid_address_bits_physical =
548 info_p->cpuid_address_bits_virtual =
559 info_p->cpuid_microcode_version =
561 info_p->cpuid_signature = reg[eax];
562 info_p->cpuid_stepping = bitfield32(reg[eax], 3, 0);
563 info_p->cpuid_model = bitfield32(reg[eax], 7, 4);
564 info_p->cpuid_family = bitfield32(reg[eax], 11, 8);
565 info_p->cpuid_type = bitfield32(reg[eax], 13, 12);
566 info_p->cpuid_extmodel = bitfield32(reg[eax], 19, 16);
567 info_p->cpuid_extfamily = bitfield32(reg[eax], 27, 20);
568 info_p->cpuid_brand = bitfield32(reg[ebx], 7, 0);
569 info_p->cpuid_features = quad(reg[ecx], reg[edx]);
572 info_p->cpuid_processor_flag = (rdmsr64(MSR_IA32_PLATFORM_ID)>> 50) & 0x7;
575 if (info_p->cpuid_family == 0x0f)
576 info_p->cpuid_family += info_p->cpuid_extfamily;
577 if (info_p->cpuid_family == 0x0f || info_p->cpuid_family == 0x06)
578 info_p->cpuid_model += (info_p->cpuid_extmodel << 4);
580 if (info_p->cpuid_features & CPUID_FEATURE_HTT)
581 info_p->cpuid_logical_per_package =
584 info_p->cpuid_logical_per_package = 1;
586 if (info_p->cpuid_max_ext >= 0x80000001) {
588 info_p->cpuid_extfeatures =
592 DBG(" max_basic : %d\n", info_p->cpuid_max_basic);
593 DBG(" max_ext : 0x%08x\n", info_p->cpuid_max_ext);
594 DBG(" vendor : %s\n", info_p->cpuid_vendor);
595 DBG(" brand_string : %s\n", info_p->cpuid_brand_string);
596 DBG(" signature : 0x%08x\n", info_p->cpuid_signature);
597 DBG(" stepping : %d\n", info_p->cpuid_stepping);
598 DBG(" model : %d\n", info_p->cpuid_model);
599 DBG(" family : %d\n", info_p->cpuid_family);
600 DBG(" type : %d\n", info_p->cpuid_type);
601 DBG(" extmodel : %d\n", info_p->cpuid_extmodel);
602 DBG(" extfamily : %d\n", info_p->cpuid_extfamily);
603 DBG(" brand : %d\n", info_p->cpuid_brand);
604 DBG(" features : 0x%016llx\n", info_p->cpuid_features);
605 DBG(" extfeatures : 0x%016llx\n", info_p->cpuid_extfeatures);
606 DBG(" logical_per_package : %d\n", info_p->cpuid_logical_per_package);
607 DBG(" microcode_version : 0x%08x\n", info_p->cpuid_microcode_version);
610 if (info_p->cpuid_max_ext >= 0x80000007) {
612 info_p->cpuid_extfeatures |=
615 info_p->cpuid_extfeatures);
618 if (info_p->cpuid_max_basic >= 0x5) {
619 cpuid_mwait_leaf_t *cmp = &info_p->cpuid_mwait_leaf;
629 info_p->cpuid_mwait_leafp = cmp;
638 if (info_p->cpuid_max_basic >= 0x6) {
639 cpuid_thermal_leaf_t *ctp = &info_p->cpuid_thermal_leaf;
655 info_p->cpuid_thermal_leafp = ctp;
670 if (info_p->cpuid_max_basic >= 0xa) {
671 cpuid_arch_perf_leaf_t *capp = &info_p->cpuid_arch_perf_leaf;
684 info_p->cpuid_arch_perf_leafp = capp;
696 if (info_p->cpuid_max_basic >= 0xd) {
697 cpuid_xsave_leaf_t *xsp = &info_p->cpuid_xsave_leaf;
701 cpuid_fn(0xd, info_p->cpuid_xsave_leaf.extended_state);
702 info_p->cpuid_xsave_leafp = xsp;
711 if (info_p->cpuid_model >= CPUID_MODEL_IVYBRIDGE) {
716 info_p->cpuid_leaf7_features = reg[ebx];
726 cpuid_set_cpufamily(i386_cpu_info_t *info_p)
730 switch (info_p->cpuid_family) {
732 switch (info_p->cpuid_model) {
767 info_p->cpuid_cpufamily = cpufamily;
768 DBG("cpuid_set_cpufamily(%p) returning 0x%x\n", info_p, cpufamily);
778 i386_cpu_info_t *info_p = &cpuid_cpu_info;
781 cpuid_set_generic_info(info_p);
784 if ((strncmp(CPUID_VID_INTEL, info_p->cpuid_vendor,
786 sizeof(info_p->cpuid_vendor)))) ||
787 (cpuid_set_cpufamily(info_p) == CPUFAMILY_UNKNOWN))
790 info_p->cpuid_cpu_type = CPU_TYPE_X86;
801 ((info_p->cpuid_features & CPUID_X86_64_H_FEATURE_SUBSET) == CPUID_X86_64_H_FEATURE_SUBSET) &&
802 ((info_p->cpuid_extfeatures & CPUID_X86_64_H_EXTFEATURE_SUBSET) == CPUID_X86_64_H_EXTFEATURE_SUBSET) &&
803 ((info_p->cpuid_leaf7_features & CPUID_X86_64_H_LEAF7_FEATURE_SUBSET) == CPUID_X86_64_H_LEAF7_FEATURE_SUBSET)) {
804 info_p->cpuid_cpu_subtype = CPU_SUBTYPE_X86_64_H;
806 info_p->cpuid_cpu_subtype = CPU_SUBTYPE_X86_ARCH1;
810 cpuid_set_cache_info(info_p);
816 switch (info_p->cpuid_cpufamily) {
819 info_p->core_count = bitfield32((uint32_t)msr, 19, 16);
820 info_p->thread_count = bitfield32((uint32_t)msr, 15, 0);
828 info_p->core_count = bitfield32((uint32_t)msr, 31, 16);
829 info_p->thread_count = bitfield32((uint32_t)msr, 15, 0);
833 if (info_p->core_count == 0) {
834 info_p->core_count = info_p->cpuid_cores_per_package;
835 info_p->thread_count = info_p->cpuid_logical_per_package;
838 DBG(" core_count : %d\n", info_p->core_count);
839 DBG(" thread_count : %d\n", info_p->thread_count);
840 DBG(" cpu_type: 0x%08x\n", info_p->cpuid_cpu_type);
841 DBG(" cpu_subtype: 0x%08x\n", info_p->cpuid_cpu_subtype);
843 info_p->cpuid_model_string = ""; /* deprecated */
1097 cpuid_init_vmm_info(i386_vmm_info_t *info_p)
1102 bzero(info_p, sizeof(*info_p));
1107 DBG("cpuid_init_vmm_info(%p)\n", info_p);
1112 bcopy((char *)&reg[ebx], &info_p->cpuid_vmm_vendor[0], 4);
1113 bcopy((char *)&reg[ecx], &info_p->cpuid_vmm_vendor[4], 4);
1114 bcopy((char *)&reg[edx], &info_p->cpuid_vmm_vendor[8], 4);
1115 info_p->cpuid_vmm_vendor[12] = '\0';
1117 if (0 == strcmp(info_p->cpuid_vmm_vendor, CPUID_VMM_ID_VMWARE)) {
1119 info_p->cpuid_vmm_family = CPUID_VMM_FAMILY_VMWARE;
1120 } else if (0 == strcmp(info_p->cpuid_vmm_vendor, CPUID_VMM_ID_PARALLELS)) {
1122 info_p->cpuid_vmm_family = CPUID_VMM_FAMILY_PARALLELS;
1124 info_p->cpuid_vmm_family = CPUID_VMM_FAMILY_UNKNOWN;
1131 info_p->cpuid_vmm_tsc_frequency = reg[eax];
1132 info_p->cpuid_vmm_bus_frequency = reg[ebx];
1135 DBG(" vmm_vendor : %s\n", info_p->cpuid_vmm_vendor);
1136 DBG(" vmm_family : %u\n", info_p->cpuid_vmm_family);
1137 DBG(" vmm_bus_frequency : %u\n", info_p->cpuid_vmm_bus_frequency);
1138 DBG(" vmm_tsc_frequency : %u\n", info_p->cpuid_vmm_tsc_frequency);