/linux/tools/testing/selftests/kvm/x86/ ! |
H A D | cpuid_test.c | 5 * Generic tests for KVM CPUID set/get ioctls 73 * CPUID.0xD.{0,1}.EBX enumerate XSAVE size based on the current in get_const_cpuid_mask() 90 "CPUID nent mismatch: %d vs. %d", cpuid1->nent, cpuid2->nent); in compare_cpuids() 100 "CPUID entries[%d] mismtach: 0x%x.%d.%x vs. 0x%x.%d.%x", in compare_cpuids() 111 "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() 143 struct kvm_cpuid2 *vcpu_alloc_cpuid(struct kvm_vm *vm, vm_vaddr_t *p_gva, struct kvm_cpuid2 *cpuid) in vcpu_alloc_cpuid() argument 145 int size = sizeof(*cpuid) + cpuid->nent * sizeof(cpuid->entries[0]); in vcpu_alloc_cpuid() 149 memcpy(guest_cpuids, cpuid, size); in vcpu_alloc_cpuid() 161 /* Setting unmodified CPUID is allowed */ in set_cpuid_after_run() 163 TEST_ASSERT(!rc, "Setting unmodified CPUID after KVM_RUN failed: %d", rc); in set_cpuid_after_run() [all …]
|
/linux/arch/riscv/kernel/ ! |
H A D | smpboot.c | 46 int cpuid; in smp_prepare_cpus() local 60 for_each_possible_cpu(cpuid) { in smp_prepare_cpus() 61 if (cpuid == curr_cpuid) in smp_prepare_cpus() 63 set_cpu_present(cpuid, true); in smp_prepare_cpus() 64 numa_store_cpu_info(cpuid); in smp_prepare_cpus() 126 int cpuid = 1; in of_parse_and_init_cpus() local 140 if (cpuid >= NR_CPUS) { in of_parse_and_init_cpus() 141 pr_warn("Invalid cpuid [%d] for hartid [%lu]\n", in of_parse_and_init_cpus() 142 cpuid, hart); in of_parse_and_init_cpus() 146 cpuid_to_hartid_map(cpuid) = hart; in of_parse_and_init_cpus() [all …]
|
/linux/arch/sparc/kernel/ ! |
H A 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 …]
|
H A 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 …]
|
/linux/lib/zstd/common/ ! |
H A D | cpu.h | 16 * Implementation taken from folly/CpuId.h 17 * https://github.com/facebook/folly/blob/master/folly/CpuId.h 36 /* The following block like the normal cpuid branch below, but gcc in ZSTD_cpuid() 43 "cpuid\n\t" in ZSTD_cpuid() 52 "cpuid\n\t" in ZSTD_cpuid() 60 "cpuid\n\t" in ZSTD_cpuid() 69 __asm__("cpuid" : "=a"(n) : "a"(0) : "ebx", "ecx", "edx"); in ZSTD_cpuid() 72 __asm__("cpuid" : "=a"(f1a), "=c"(f1c), "=d"(f1d) : "a"(1) : "ebx"); in ZSTD_cpuid() 76 __asm__("cpuid" in ZSTD_cpuid() 83 ZSTD_cpuid_t cpuid; in ZSTD_cpuid() local [all …]
|
/linux/arch/x86/include/asm/cpuid/ ! |
H A D | api.h | 5 #include <asm/cpuid/types.h> 13 * Raw CPUID accessors: 29 asm volatile("cpuid" in native_cpuid() 49 * Native CPUID functions returning a single datum: 63 * Generic CPUID function in NATIVE_CPUID_REG() 68 static inline void cpuid(u32 op, in NATIVE_CPUID_REG() 77 /* Some CPUID calls want 'count' to be placed in ECX */ 88 * CPUID functions returning a single datum: 95 cpuid(op, &eax, &ebx, &ecx, &edx); in cpuid_eax() 104 cpuid(op, &eax, &ebx, &ecx, &edx); in cpuid_ebx() [all …]
|
/linux/arch/parisc/kernel/ ! |
H A 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 …]
|
H A 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/include/soc/tegra/ ! |
H A 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/arch/x86/boot/compressed/ ! |
H A 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/drivers/soc/tegra/ ! |
H A 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/tools/perf/arch/loongarch/util/ ! |
H A D | header.c | 46 char *line, *model, *cpuid; in _get_cpuid() local 53 line = model = cpuid = NULL; in _get_cpuid() 64 if (model && (asprintf(&cpuid, "%s", model) < 0)) in _get_cpuid() 65 cpuid = NULL; in _get_cpuid() 70 return cpuid; in _get_cpuid() 76 char *cpuid = _get_cpuid(); in get_cpuid() local 78 if (!cpuid) in get_cpuid() 81 if (sz < strlen(cpuid)) { in get_cpuid() 86 scnprintf(buffer, sz, "%s", cpuid); in get_cpuid() 89 free(cpuid); in get_cpuid()
|
/linux/drivers/dma/ ! |
H A D | cv1800b-dmamux.c | 47 #define DMAMUX_INT_BIT(chid, cpuid) \ argument 48 BIT((cpuid) * DMAMUX_INT_BIT_PER_CPU + (chid)) 49 #define DMAMUX_INTEN_BIT(cpuid) \ argument 50 DMAMUX_INT_BIT(8, cpuid) 51 #define DMAMUX_INT_CH_BIT(chid, cpuid) \ argument 52 (DMAMUX_INT_BIT(chid, cpuid) | DMAMUX_INTEN_BIT(cpuid)) 57 #define DMAMUX_INT_CH_MASK(chid, cpuid) \ argument 58 (DMAMUX_INT_MASK(chid) | DMAMUX_INTEN_BIT(cpuid)) 104 unsigned int chid, devid, cpuid; in cv1800_dmamux_route_allocate() local 113 cpuid = dma_spec->args[1]; in cv1800_dmamux_route_allocate() [all …]
|
/linux/rust/kernel/ ! |
H A D | cpu.rs | 35 /// use kernel::cpu::CpuId; 40 /// let id = unsafe { CpuId::from_u32_unchecked(cpu) }; 43 /// assert!(CpuId::from_i32(0).is_some()); 44 /// assert!(CpuId::from_i32(-1).is_none()); 47 pub struct CpuId(u32); struct 49 impl CpuId { implementation 50 /// Creates a new [`CpuId`] from the given `id` without checking bounds. 64 /// Creates a new [`CpuId`] from the given `id`, checking that it is valid. 74 /// Creates a new [`CpuId`] from the given `id` without checking bounds. 90 /// Creates a new [`CpuId`] from the given `id`, checking that it is valid. [all …]
|
/linux/drivers/firmware/arm_scmi/vendors/imx/ ! |
H A D | imx-sm-cpu.c | 45 __le32 cpuid; member 66 u32 cpuid) in scmi_imx_cpu_validate_cpuid() argument 70 if (cpuid >= info->nr_cpu) in scmi_imx_cpu_validate_cpuid() 77 u32 cpuid, bool start) in scmi_imx_cpu_start() argument 83 ret = scmi_imx_cpu_validate_cpuid(ph, cpuid); in scmi_imx_cpu_start() 96 put_unaligned_le32(cpuid, t->tx.buf); in scmi_imx_cpu_start() 105 u32 cpuid, u64 vector, bool start, in scmi_imx_cpu_reset_vector_set() argument 112 ret = scmi_imx_cpu_validate_cpuid(ph, cpuid); in scmi_imx_cpu_reset_vector_set() 122 in->cpuid = cpu_to_le32(cpuid); in scmi_imx_cpu_reset_vector_set() 139 static int scmi_imx_cpu_started(const struct scmi_protocol_handle *ph, u32 cpuid, in scmi_imx_cpu_started() argument [all …]
|
/linux/arch/x86/kernel/ ! |
H A D | verify_cpu.S | 44 pushfl # standard way to check for cpuid 53 jz .Lverify_cpu_no_longmode # cpu has no cpuid 56 movl $0x0,%eax # See if cpuid 1 is implemented 57 cpuid 59 jb .Lverify_cpu_no_longmode # no cpuid 1 82 cpuid 105 cpuid 110 movl $0x80000000,%eax # See if extended cpuid is implemented 111 cpuid 113 jb .Lverify_cpu_no_longmode # no extended cpuid [all …]
|
/linux/arch/x86/kvm/ ! |
H A D | cpuid.c | 4 * cpuid support routines 24 #include <asm/cpuid/api.h> 25 #include "cpuid.h" 91 * KVM has a semi-arbitrary rule that querying the guest's CPUID model in kvm_find_cpuid_entry2() 92 * with IRQs disabled is disallowed. The CPUID model can legitimately in kvm_find_cpuid_entry2() 98 * of the hotpath, e.g. by caching information during CPUID updates. in kvm_find_cpuid_entry2() 119 * lookup (as opposed to emulating CPUID) for a function that's in kvm_find_cpuid_entry2() 172 /* Check whether the supplied CPUID data is equal to what is already set for the vCPU. */ 180 * Apply runtime CPUID updates to the incoming CPUID entries to avoid in kvm_cpuid_check_equal() 183 * Note! @e2 and @nent track the _old_ CPUID entries! in kvm_cpuid_check_equal() [all …]
|
H A D | cpuid.h | 17 * Magic value used by KVM when querying userspace-provided CPUID entries and 21 * to avoid false positives when processing guest CPUID input. 42 int kvm_dev_ioctl_get_cpuid(struct kvm_cpuid2 *cpuid, 46 struct kvm_cpuid *cpuid, 49 struct kvm_cpuid2 *cpuid, 52 struct kvm_cpuid2 *cpuid, 97 const struct cpuid_reg cpuid = x86_feature_cpuid(x86_feature); in guest_cpuid_has() local 109 * honor userspace's CPUID), KVM needs to check the raw guest CPUID, in guest_cpuid_has() 117 entry = kvm_find_cpuid_entry_index(vcpu, cpuid.function, cpuid.index); in guest_cpuid_has() 121 reg = __cpuid_entry_get_reg(entry, cpuid.reg); in guest_cpuid_has() [all …]
|
/linux/arch/alpha/kernel/ ! |
H A D | smp.c | 69 /* Set to a secondary's cpuid when it comes online. */ 81 smp_store_cpu_info(int cpuid) in smp_store_cpu_info() argument 83 cpu_data[cpuid].loops_per_jiffy = loops_per_jiffy; in smp_store_cpu_info() 84 cpu_data[cpuid].last_asn = ASN_FIRST_VERSION; in smp_store_cpu_info() 85 cpu_data[cpuid].need_new_asn = 0; in smp_store_cpu_info() 86 cpu_data[cpuid].asn_lock = 0; in smp_store_cpu_info() 93 smp_setup_percpu_timer(int cpuid) in smp_setup_percpu_timer() argument 95 cpu_data[cpuid].prof_counter = 1; in smp_setup_percpu_timer() 96 cpu_data[cpuid].prof_multiplier = 1; in smp_setup_percpu_timer() 100 wait_boot_cpu_to_stop(int cpuid) in wait_boot_cpu_to_stop() argument [all …]
|
/linux/tools/testing/selftests/kvm/lib/x86/ ! |
H A D | hyperv.c | 13 static struct kvm_cpuid2 *cpuid; in kvm_get_supported_hv_cpuid() local 16 if (cpuid) in kvm_get_supported_hv_cpuid() 17 return cpuid; in kvm_get_supported_hv_cpuid() 19 cpuid = allocate_kvm_cpuid2(MAX_NR_CPUID_ENTRIES); in kvm_get_supported_hv_cpuid() 22 kvm_ioctl(kvm_fd, KVM_GET_SUPPORTED_HV_CPUID, cpuid); in kvm_get_supported_hv_cpuid() 25 return cpuid; in kvm_get_supported_hv_cpuid() 44 /* Need to skip KVM CPUID leaves 0x400000xx */ in vcpu_set_hv_cpuid() 63 struct kvm_cpuid2 *cpuid = allocate_kvm_cpuid2(MAX_NR_CPUID_ENTRIES); in vcpu_get_supported_hv_cpuid() local 65 vcpu_ioctl(vcpu, KVM_GET_SUPPORTED_HV_CPUID, cpuid); in vcpu_get_supported_hv_cpuid() 67 return cpuid; in vcpu_get_supported_hv_cpuid()
|
/linux/arch/x86/kernel/cpu/ ! |
H A D | tsx.c | 34 * Ensure TSX support is not enumerated in CPUID. in tsx_disable() 54 * Ensure TSX support is enumerated in CPUID. in tsx_enable() 74 * First of all, there's a CPUID bit: X86_FEATURE_RTM_ALWAYS_ABORT 82 * the MSR is present only when *two* CPUID bits are set: 90 * CPUID bit X86_FEATURE_RTM_ALWAYS_ABORT set and for those the same strategy 97 * which, when done, may cause for the X86_FEATURE_RTM_ALWAYS_ABORT CPUID 101 * cause for the supported CPUID feature bits to get re-detected and, if 104 * short: the kernel doesn't modify CPUID feature bits after booting. 114 * MSR_TFA_TSX_CPUID_CLEAR bit is only present when both CPUID in tsx_clear_cpuid() 167 * Hardware will always abort a TSX transaction when the CPUID bit in tsx_init() [all …]
|
/linux/drivers/firmware/imx/ ! |
H A D | sm-cpu.c | 16 int scmi_imx_cpu_reset_vector_set(u32 cpuid, u64 vector, bool start, bool boot, in scmi_imx_cpu_reset_vector_set() argument 22 return imx_cpu_ops->cpu_reset_vector_set(ph, cpuid, vector, start, in scmi_imx_cpu_reset_vector_set() 27 int scmi_imx_cpu_start(u32 cpuid, bool start) in scmi_imx_cpu_start() argument 33 return imx_cpu_ops->cpu_start(ph, cpuid, true); in scmi_imx_cpu_start() 35 return imx_cpu_ops->cpu_start(ph, cpuid, false); in scmi_imx_cpu_start() 39 int scmi_imx_cpu_started(u32 cpuid, bool *started) in scmi_imx_cpu_started() argument 47 return imx_cpu_ops->cpu_started(ph, cpuid, started); in scmi_imx_cpu_started()
|
/linux/tools/perf/arch/x86/util/ ! |
H A 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() 77 /* Full CPUID format for x86 is vendor-family-model-stepping */ 103 * Full CPUID format is required to identify a platform. in strcmp_cpuid_str() 104 * Error out if the cpuid string is incomplete. in strcmp_cpuid_str() 107 pr_info("Invalid CPUID %s. Full CPUID is required, " in strcmp_cpuid_str() 124 /* If the full CPUID format isn't required, in strcmp_cpuid_str()
|
/linux/Documentation/arch/x86/ ! |
H A 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 Feature flags can be derived from the contents of CPUID leaves 85 These feature definitions are organized mirroring the layout of CPUID 93 Flags can be from scattered CPUID-based features 96 Hardware features enumerated in sparsely populated CPUID leaves get [all …]
|
/linux/include/uapi/misc/ ! |
H A D | amd-apml.h | 30 * CPUID input 31 * [0]...[3] cpuid func, 32 * [4][5] cpuid: thread 33 * [6] cpuid: ext function & read eax/ebx or ecx/edx 36 * CPUID output 40 * Status code for CPUID read 110 * The IOCTL provides userspace access to AMD sideband cpuid protocol 111 * - CPUID protocol to get CPU details for Function/Ext Function
|