/linux-6.8/tools/testing/selftests/kvm/x86_64/ |
D | cpuid_test.c | 5 * Generic tests for KVM CPUID set/get ioctls 79 "CPUID nent mismatch: %d vs. %d", cpuid1->nent, cpuid2->nent); in compare_cpuids() 87 "CPUID entries[%d] mismtach: 0x%x.%d.%x vs. 0x%x.%d.%x", in compare_cpuids() 96 "CPUID 0x%x.%x differ: 0x%x:0x%x:0x%x:0x%x vs 0x%x:0x%x:0x%x:0x%x", in compare_cpuids() 126 struct kvm_cpuid2 *vcpu_alloc_cpuid(struct kvm_vm *vm, vm_vaddr_t *p_gva, struct kvm_cpuid2 *cpuid) in vcpu_alloc_cpuid() argument 128 int size = sizeof(*cpuid) + cpuid->nent * sizeof(cpuid->entries[0]); in vcpu_alloc_cpuid() 132 memcpy(guest_cpuids, cpuid, size); in vcpu_alloc_cpuid() 144 /* Setting unmodified CPUID is allowed */ in set_cpuid_after_run() 146 TEST_ASSERT(!rc, "Setting unmodified CPUID after KVM_RUN failed: %d", rc); in set_cpuid_after_run() 168 struct kvm_cpuid2 *cpuid = allocate_kvm_cpuid2(vcpu->cpuid->nent + 1); in test_get_cpuid2() local [all …]
|
/linux-6.8/arch/riscv/kernel/ |
D | smpboot.c | 51 int cpuid; in smp_prepare_cpus() local 65 for_each_possible_cpu(cpuid) { in smp_prepare_cpus() 66 if (cpuid == curr_cpuid) in smp_prepare_cpus() 68 set_cpu_present(cpuid, true); in smp_prepare_cpus() 69 numa_store_cpu_info(cpuid); in smp_prepare_cpus() 133 int cpuid = 1; in of_parse_and_init_cpus() local 147 if (cpuid >= NR_CPUS) { in of_parse_and_init_cpus() 148 pr_warn("Invalid cpuid [%d] for hartid [%lu]\n", in of_parse_and_init_cpus() 149 cpuid, hart); in of_parse_and_init_cpus() 153 cpuid_to_hartid_map(cpuid) = hart; in of_parse_and_init_cpus() [all …]
|
/linux-6.8/arch/sparc/kernel/ |
D | prom_64.c | 389 * 'portid', or 'cpuid' property. in arch_find_n_match_cpu_physical_id() 406 mid_prop = "cpuid"; in arch_find_n_match_cpu_physical_id() 441 int cpuid = of_getintprop_default(dp, mid_prop, -1); in of_iterate_over_cpus() local 445 if (cpuid < 0) { in of_iterate_over_cpus() 446 this_mid_prop = "cpuid"; in of_iterate_over_cpus() 447 cpuid = of_getintprop_default(dp, this_mid_prop, -1); in of_iterate_over_cpus() 449 if (cpuid < 0) { in of_iterate_over_cpus() 455 if (cpuid >= NR_CPUS) { in of_iterate_over_cpus() 458 cpuid, NR_CPUS); in of_iterate_over_cpus() 462 ret = func(dp, cpuid, arg); in of_iterate_over_cpus() [all …]
|
D | sun4d_smp.c | 45 static inline void show_leds(int cpuid) in show_leds() argument 47 cpuid &= 0x1e; in show_leds() 49 "r" ((cpu_leds[cpuid] << 4) | cpu_leds[cpuid+1]), in show_leds() 50 "r" (ECSR_BASE(cpuid) | BB_LEDS), in show_leds() 56 int cpuid = hard_smp_processor_id(); in sun4d_cpu_pre_starting() local 59 cpu_leds[cpuid] = 0x6; in sun4d_cpu_pre_starting() 60 show_leds(cpuid); in sun4d_cpu_pre_starting() 69 int cpuid; in sun4d_cpu_pre_online() local 71 cpuid = hard_smp_processor_id(); in sun4d_cpu_pre_online() 78 sun4d_swap((unsigned long *)&cpu_callin_map[cpuid], 1); in sun4d_cpu_pre_online() [all …]
|
D | sun4d_irq.c | 33 unsigned int cpuid; /* target cpu */ member 195 int cpuid = handler_data->cpuid; in sun4d_mask_irq() local 201 cc_set_imsk_other(cpuid, cc_get_imsk_other(cpuid) | (1 << real_irq)); in sun4d_mask_irq() 213 int cpuid = handler_data->cpuid; in sun4d_unmask_irq() local 220 cc_set_imsk_other(cpuid, cc_get_imsk_other(cpuid) & ~(1 << real_irq)); in sun4d_unmask_irq() 254 int cpuid = cpu_logical_map(1); in sun4d_distribute_irqs() local 256 if (cpuid == -1) in sun4d_distribute_irqs() 257 cpuid = cpu_logical_map(0); in sun4d_distribute_irqs() 261 board_to_cpu[board] = cpuid; in sun4d_distribute_irqs() 262 set_sbi_tid(devid, cpuid << 3); in sun4d_distribute_irqs() [all …]
|
D | smp_32.c | 179 int i, cpuid, extra; in smp_prepare_cpus() local 184 for (i = 0; !cpu_find_by_instance(i, NULL, &cpuid); i++) { in smp_prepare_cpus() 185 if (cpuid >= NR_CPUS) in smp_prepare_cpus() 239 int cpuid = hard_smp_processor_id(); in smp_prepare_boot_cpu() local 241 if (cpuid >= NR_CPUS) { in smp_prepare_boot_cpu() 245 if (cpuid != 0) in smp_prepare_boot_cpu() 248 current_thread_info()->cpu = cpuid; in smp_prepare_boot_cpu() 249 set_cpu_online(cpuid, true); in smp_prepare_boot_cpu() 250 set_cpu_possible(cpuid, true); in smp_prepare_boot_cpu() 311 unsigned int cpuid = hard_smp_processor_id(); in arch_cpu_pre_online() local [all …]
|
/linux-6.8/lib/zstd/common/ |
D | cpu.h | 15 * Implementation taken from folly/CpuId.h 16 * https://github.com/facebook/folly/blob/master/folly/CpuId.h 35 /* The following block like the normal cpuid branch below, but gcc in ZSTD_cpuid() 42 "cpuid\n\t" in ZSTD_cpuid() 51 "cpuid\n\t" in ZSTD_cpuid() 59 "cpuid\n\t" in ZSTD_cpuid() 68 __asm__("cpuid" : "=a"(n) : "a"(0) : "ebx", "ecx", "edx"); in ZSTD_cpuid() 71 __asm__("cpuid" : "=a"(f1a), "=c"(f1c), "=d"(f1d) : "a"(1) : "ebx"); in ZSTD_cpuid() 75 __asm__("cpuid" in ZSTD_cpuid() 82 ZSTD_cpuid_t cpuid; in ZSTD_cpuid() local [all …]
|
/linux-6.8/arch/parisc/kernel/ |
D | topology.c | 28 void store_cpu_topology(unsigned int cpuid) in store_cpu_topology() argument 30 struct cpu_topology *cpuid_topo = &cpu_topology[cpuid]; in store_cpu_topology() 40 per_cpu(cpu_devices, cpuid).hotpluggable = 1; in store_cpu_topology() 42 if (register_cpu(&per_cpu(cpu_devices, cpuid), cpuid)) in store_cpu_topology() 43 pr_warn("Failed to register CPU%d device", cpuid); in store_cpu_topology() 49 p = &per_cpu(cpu_data, cpuid); in store_cpu_topology() 53 if (cpu == cpuid) /* ignore current cpu */ in store_cpu_topology() 72 update_siblings_masks(cpuid); in store_cpu_topology() 75 cpuid, in store_cpu_topology() 76 cpu_topology[cpuid].core_id, in store_cpu_topology() [all …]
|
D | processor.c | 84 unsigned long cpuid; in processor_probe() local 103 cpuid = boot_cpu_data.cpu_count; in processor_probe() 105 cpu_info.cpu_num = cpu_info.cpu_loc = cpuid; in processor_probe() 136 cpuid, cpu_info.cpu_num, cpu_info.cpu_loc, in processor_probe() 141 /* We need contiguous numbers for cpuid. Firmware's notion in processor_probe() 142 * of cpuid is for physical CPUs and we just don't care yet. in processor_probe() 155 cpuid = cpu_info.cpu_num; in processor_probe() 161 p = &per_cpu(cpu_data, cpuid); in processor_probe() 165 if (cpuid) in processor_probe() 170 p->cpuid = cpuid; /* save CPU id */ in processor_probe() [all …]
|
/linux-6.8/arch/x86/boot/compressed/ |
D | mem_encrypt.S | 23 movl $0x80000000, %eax /* CPUID to check the highest leaf */ 24 cpuid 30 * CPUID Fn8000_001F[EAX] - Bit 1 31 * CPUID Fn8000_001F[EBX] - Bits 5:0 35 cpuid 57 * sev_es_req_cpuid - Request a CPUID value from the Hypervisor using 61 * @%edx: CPUID Function 64 * %edx returns CPUID value on success 99 /* Keep CPUID function in %ebx */ 106 movl $0, %eax # Request CPUID[fn].EAX [all …]
|
/linux-6.8/include/soc/tegra/ |
D | flowctrl.h | 44 u32 flowctrl_read_cpu_csr(unsigned int cpuid); 45 void flowctrl_write_cpu_csr(unsigned int cpuid, u32 value); 46 void flowctrl_write_cpu_halt(unsigned int cpuid, u32 value); 48 void flowctrl_cpu_suspend_enter(unsigned int cpuid); 49 void flowctrl_cpu_suspend_exit(unsigned int cpuid); 51 static inline u32 flowctrl_read_cpu_csr(unsigned int cpuid) in flowctrl_read_cpu_csr() argument 56 static inline void flowctrl_write_cpu_csr(unsigned int cpuid, u32 value) in flowctrl_write_cpu_csr() argument 60 static inline void flowctrl_write_cpu_halt(unsigned int cpuid, u32 value) {} in flowctrl_write_cpu_halt() argument 62 static inline void flowctrl_cpu_suspend_enter(unsigned int cpuid) in flowctrl_cpu_suspend_enter() argument 66 static inline void flowctrl_cpu_suspend_exit(unsigned int cpuid) in flowctrl_cpu_suspend_exit() argument
|
/linux-6.8/drivers/soc/tegra/ |
D | flowctrl.c | 51 u32 flowctrl_read_cpu_csr(unsigned int cpuid) in flowctrl_read_cpu_csr() argument 53 u8 offset = flowctrl_offset_cpu_csr[cpuid]; in flowctrl_read_cpu_csr() 62 void flowctrl_write_cpu_csr(unsigned int cpuid, u32 value) in flowctrl_write_cpu_csr() argument 64 return flowctrl_update(flowctrl_offset_cpu_csr[cpuid], value); in flowctrl_write_cpu_csr() 67 void flowctrl_write_cpu_halt(unsigned int cpuid, u32 value) in flowctrl_write_cpu_halt() argument 69 return flowctrl_update(flowctrl_offset_halt_cpu[cpuid], value); in flowctrl_write_cpu_halt() 72 void flowctrl_cpu_suspend_enter(unsigned int cpuid) in flowctrl_cpu_suspend_enter() argument 77 reg = flowctrl_read_cpu_csr(cpuid); in flowctrl_cpu_suspend_enter() 85 reg |= TEGRA20_FLOW_CTRL_CSR_WFE_CPU0 << cpuid; in flowctrl_cpu_suspend_enter() 106 reg |= TEGRA20_FLOW_CTRL_CSR_WFE_CPU0 << cpuid; in flowctrl_cpu_suspend_enter() [all …]
|
/linux-6.8/tools/perf/pmu-events/ |
D | empty-pmu-events.c | 198 * cpuid field, which is an arch-specific identifier for the CPU. 202 * The cpuid can contain any character other than the comma. 206 const char *cpuid; member 218 .cpuid = "testcpu", 224 .cpuid = 0, 338 char *cpuid = perf_pmu__getcpuid(pmu); in perf_pmu__find_events_table() local 341 /* on some platforms which uses cpus map, cpuid can be NULL for in perf_pmu__find_events_table() 344 if (!cpuid) in perf_pmu__find_events_table() 351 if (!map->cpuid) in perf_pmu__find_events_table() 354 if (!strcmp_cpuid_str(map->cpuid, cpuid)) { in perf_pmu__find_events_table() [all …]
|
/linux-6.8/arch/x86/kernel/ |
D | verify_cpu.S | 40 pushfl # standard way to check for cpuid 49 jz .Lverify_cpu_no_longmode # cpu has no cpuid 52 movl $0x0,%eax # See if cpuid 1 is implemented 53 cpuid 55 jb .Lverify_cpu_no_longmode # no cpuid 1 78 cpuid 101 cpuid 106 movl $0x80000000,%eax # See if extended cpuid is implemented 107 cpuid 109 jb .Lverify_cpu_no_longmode # no extended cpuid [all …]
|
D | cpuid.c | 9 * x86 CPUID access device 11 * This device is accessed by lseek() to the appropriate CPUID level 19 * This driver uses /dev/cpu/%d/cpuid where %d is the minor number, and on 111 return -EIO; /* CPUID not supported */ in cpuid_open() 128 return kasprintf(GFP_KERNEL, "cpu/%u/cpuid", MINOR(dev->devt)); in cpuid_devnode() 132 .name = "cpuid", 156 "cpu/cpuid", &cpuid_fops)) { in cpuid_init() 157 printk(KERN_ERR "cpuid: unable to get major %d for cpuid\n", in cpuid_init() 165 err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "x86/cpuid:online", in cpuid_init() 176 __unregister_chrdev(CPUID_MAJOR, 0, NR_CPUS, "cpu/cpuid"); in cpuid_init() [all …]
|
/linux-6.8/arch/x86/include/asm/ |
D | cpuid.h | 3 * CPUID-related helpers/definitions 34 asm volatile("cpuid" in native_cpuid() 54 * Native CPUID functions returning a single datum. 68 * Generic CPUID function in native_cpuid_reg() 72 static inline void cpuid(unsigned int op, in native_cpuid_reg() 81 /* Some CPUID calls want 'count' to be placed in ecx */ 92 * CPUID functions returning a single datum 98 cpuid(op, &eax, &ebx, &ecx, &edx); in cpuid_eax() 107 cpuid(op, &eax, &ebx, &ecx, &edx); in cpuid_ebx() 116 cpuid(op, &eax, &ebx, &ecx, &edx); in cpuid_ecx() [all …]
|
/linux-6.8/arch/alpha/kernel/ |
D | smp.c | 68 /* Set to a secondary's cpuid when it comes online. */ 80 smp_store_cpu_info(int cpuid) in smp_store_cpu_info() argument 82 cpu_data[cpuid].loops_per_jiffy = loops_per_jiffy; in smp_store_cpu_info() 83 cpu_data[cpuid].last_asn = ASN_FIRST_VERSION; in smp_store_cpu_info() 84 cpu_data[cpuid].need_new_asn = 0; in smp_store_cpu_info() 85 cpu_data[cpuid].asn_lock = 0; in smp_store_cpu_info() 92 smp_setup_percpu_timer(int cpuid) in smp_setup_percpu_timer() argument 94 cpu_data[cpuid].prof_counter = 1; in smp_setup_percpu_timer() 95 cpu_data[cpuid].prof_multiplier = 1; in smp_setup_percpu_timer() 99 wait_boot_cpu_to_stop(int cpuid) in wait_boot_cpu_to_stop() argument [all …]
|
/linux-6.8/tools/perf/arch/riscv/util/ |
D | header.c | 42 char *cpuid = NULL; in _get_cpuid() local 49 return cpuid; in _get_cpuid() 72 if (asprintf(&cpuid, "%s-%s-%s", mvendorid, marchid, mimpid) < 0) in _get_cpuid() 73 cpuid = NULL; in _get_cpuid() 81 return cpuid; in _get_cpuid() 86 char *cpuid = _get_cpuid(); in get_cpuid() local 89 if (sz < strlen(cpuid)) { in get_cpuid() 94 scnprintf(buffer, sz, "%s", cpuid); in get_cpuid() 96 free(cpuid); in get_cpuid()
|
/linux-6.8/arch/x86/kvm/ |
D | cpuid.c | 4 * cpuid support routines 24 #include <asm/cpuid.h> 25 #include "cpuid.h" 74 * Magic value used by KVM when querying userspace-provided CPUID entries and 78 * to avoid false positives when processing guest CPUID input. 89 * KVM has a semi-arbitrary rule that querying the guest's CPUID model in cpuid_entry2_find() 90 * with IRQs disabled is disallowed. The CPUID model can legitimately in cpuid_entry2_find() 96 * of the hotpath, e.g. by caching information during CPUID updates. in cpuid_entry2_find() 117 * lookup (as opposed to emulating CPUID) for a function that's in cpuid_entry2_find() 169 /* Check whether the supplied CPUID data is equal to what is already set for the vCPU. */ [all …]
|
D | reverse_cpuid.h | 10 * Hardware-defined CPUID leafs that are either scattered by the kernel or are 39 /* Intel-defined SGX sub-features, CPUID level 0x12 (EAX). */ 44 /* Intel-defined sub-features, CPUID level 0x00000007:1 (EDX) */ 50 /* Intel-defined sub-features, CPUID level 0x00000007:2 (EDX) */ 58 /* CPUID level 0x80000007 (EDX). */ 61 /* CPUID level 0x80000022 (EAX) */ 96 * Reverse CPUID and its derivatives can only be used for hardware-defined 97 * feature words, i.e. words whose bits directly correspond to a CPUID leaf. 98 * Retrieving a feature bit or masking guest CPUID from a Linux-defined word 184 const struct cpuid_reg cpuid = x86_feature_cpuid(x86_feature); in cpuid_entry_get_reg() local [all …]
|
/linux-6.8/arch/x86/kernel/cpu/ |
D | tsx.c | 33 * Ensure TSX support is not enumerated in CPUID. in tsx_disable() 53 * Ensure TSX support is enumerated in CPUID. in tsx_enable() 73 * First of all, there's a CPUID bit: X86_FEATURE_RTM_ALWAYS_ABORT 81 * the MSR is present only when *two* CPUID bits are set: 89 * CPUID bit X86_FEATURE_RTM_ALWAYS_ABORT set and for those the same strategy 96 * which, when done, may cause for the X86_FEATURE_RTM_ALWAYS_ABORT CPUID 100 * cause for the supported CPUID feature bits to get re-detected and, if 103 * short: the kernel doesn't modify CPUID feature bits after booting. 113 * MSR_TFA_TSX_CPUID_CLEAR bit is only present when both CPUID in tsx_clear_cpuid() 166 * Hardware will always abort a TSX transaction when the CPUID bit in tsx_init() [all …]
|
/linux-6.8/tools/perf/arch/x86/util/ |
D | header.c | 12 #include "cpuid.h" 18 cpuid(0, 0, lvl, &b, &c, &d); in get_cpuid_0() 36 cpuid(1, 0, &a, &b, &c, &d); in __get_cpuid() 78 /* Full CPUID format for x86 is vendor-family-model-stepping */ 104 * Full CPUID format is required to identify a platform. in strcmp_cpuid_str() 105 * Error out if the cpuid string is incomplete. in strcmp_cpuid_str() 108 pr_info("Invalid CPUID %s. Full CPUID is required, " in strcmp_cpuid_str() 125 /* If the full CPUID format isn't required, in strcmp_cpuid_str()
|
/linux-6.8/tools/testing/selftests/kvm/lib/x86_64/ |
D | processor.c | 621 if (vcpu->cpuid) in vcpu_arch_free() 622 free(vcpu->cpuid); in vcpu_arch_free() 645 static uint32_t __kvm_cpu_has(const struct kvm_cpuid2 *cpuid, in __kvm_cpu_has() argument 652 for (i = 0; i < cpuid->nent; i++) { in __kvm_cpu_has() 653 entry = &cpuid->entries[i]; in __kvm_cpu_has() 667 bool kvm_cpuid_has(const struct kvm_cpuid2 *cpuid, in kvm_cpuid_has() argument 670 return __kvm_cpu_has(cpuid, feature.function, feature.index, in kvm_cpuid_has() 674 uint32_t kvm_cpuid_property(const struct kvm_cpuid2 *cpuid, in kvm_cpuid_property() argument 677 return __kvm_cpu_has(cpuid, property.function, property.index, in kvm_cpuid_property() 738 void vcpu_init_cpuid(struct kvm_vcpu *vcpu, const struct kvm_cpuid2 *cpuid) in vcpu_init_cpuid() argument [all …]
|
/linux-6.8/drivers/firmware/psci/ |
D | psci.c | 216 static int __psci_cpu_on(u32 fn, unsigned long cpuid, unsigned long entry_point) in __psci_cpu_on() argument 220 err = invoke_psci_fn(fn, cpuid, entry_point, 0); in __psci_cpu_on() 224 static int psci_0_1_cpu_on(unsigned long cpuid, unsigned long entry_point) in psci_0_1_cpu_on() argument 226 return __psci_cpu_on(psci_0_1_function_ids.cpu_on, cpuid, entry_point); in psci_0_1_cpu_on() 229 static int psci_0_2_cpu_on(unsigned long cpuid, unsigned long entry_point) in psci_0_2_cpu_on() argument 231 return __psci_cpu_on(PSCI_FN_NATIVE(0_2, CPU_ON), cpuid, entry_point); in psci_0_2_cpu_on() 234 static int __psci_migrate(u32 fn, unsigned long cpuid) in __psci_migrate() argument 238 err = invoke_psci_fn(fn, cpuid, 0, 0); in __psci_migrate() 242 static int psci_0_1_migrate(unsigned long cpuid) in psci_0_1_migrate() argument 244 return __psci_migrate(psci_0_1_function_ids.migrate, cpuid); in psci_0_1_migrate() [all …]
|
/linux-6.8/Documentation/arch/x86/ |
D | cpuinfo.rst | 19 CPUID to find out what the target machine supports and what not. 23 said CPU supports CPUID faulting - userspace can simply probe for the 32 kernel has *enabled* and *supports*. As in: the CPUID feature flag is 64 tools/arch/x86/kcpuid and cpuid(1). 73 unlikely. KVM can synthesize the CPUID bit and the KVM guest can simply 74 query CPUID and figure out what the hypervisor supports and what not. As 82 a: Feature flags can be derived from the contents of CPUID leaves. 84 These feature definitions are organized mirroring the layout of CPUID 92 b: Flags can be from scattered CPUID-based features. 94 Hardware features enumerated in sparsely populated CPUID leaves get [all …]
|