| /OK3568_Linux_fs/kernel/arch/arm/kernel/ |
| H A D | sleep.S | 11 * Implementation of MPIDR hash algorithm through shifting 18 * @mpidr: register containing MPIDR value 19 * @mask: register containing MPIDR mask 25 *compute_mpidr_hash(u32 rs0, u32 rs1, u32 rs2, u32 mpidr, u32 mask) { 27 * u32 mpidr_masked = mpidr & mask; 33 * Input registers: rs0, rs1, rs2, mpidr, mask 36 (eg: a macro instance with mpidr = r1 and dst = r1 is invalid) 38 .macro compute_mpidr_hash dst, rs0, rs1, rs2, mpidr, mask 39 and \mpidr, \mpidr, \mask @ mask out MPIDR bits 40 and \dst, \mpidr, #0xff @ mask=aff0 [all …]
|
| H A D | topology.c | 188 unsigned int mpidr; in store_cpu_topology() local 193 mpidr = read_cpuid_mpidr(); in store_cpu_topology() 196 if ((mpidr & MPIDR_SMP_BITMASK) == MPIDR_SMP_VALUE) { in store_cpu_topology() 202 if (mpidr & MPIDR_MT_BITMASK) { in store_cpu_topology() 204 cpuid_topo->thread_id = MPIDR_AFFINITY_LEVEL(mpidr, 0); in store_cpu_topology() 205 cpuid_topo->core_id = MPIDR_AFFINITY_LEVEL(mpidr, 1); in store_cpu_topology() 206 cpuid_topo->package_id = MPIDR_AFFINITY_LEVEL(mpidr, 2); in store_cpu_topology() 210 cpuid_topo->core_id = MPIDR_AFFINITY_LEVEL(mpidr, 0); in store_cpu_topology() 211 cpuid_topo->package_id = MPIDR_AFFINITY_LEVEL(mpidr, 1); in store_cpu_topology() 226 pr_info("CPU%u: thread %d, cpu %d, socket %d, mpidr %x\n", in store_cpu_topology() [all …]
|
| H A D | devtree.c | 61 * and builds the cpu logical map array containing MPIDR values related to 71 * contain a list of MPIDR[23:0] values where MPIDR[31:24] must in arm_dt_init_cpu_maps() 77 u32 mpidr = is_smp() ? read_cpuid_mpidr() & MPIDR_HWID_BITMASK : 0; in arm_dt_init_cpu_maps() local 106 * defines the MPIDR[23:0]. in arm_dt_init_cpu_maps() 123 * to avoid matching valid MPIDR[23:0] values. in arm_dt_init_cpu_maps() 133 * Build a stashed array of MPIDR values. Numbering scheme in arm_dt_init_cpu_maps() 137 * boot CPU MPIDR is detected, this is recorded so that the in arm_dt_init_cpu_maps() 141 if (hwid == mpidr) { in arm_dt_init_cpu_maps() 170 pr_warn("DT missing boot CPU MPIDR[23:0], fall back to default cpu_logical_map\n"); in arm_dt_init_cpu_maps()
|
| /OK3568_Linux_fs/kernel/arch/arm64/kernel/ |
| H A D | sleep.S | 18 * @mpidr: register containing MPIDR_EL1 value 19 * @mask: register containing MPIDR mask 25 *compute_mpidr_hash(u32 rs0, u32 rs1, u32 rs2, u32 rs3, u64 mpidr, u64 mask) { 27 * u64 mpidr_masked = mpidr & mask; 34 * Input registers: rs0, rs1, rs2, rs3, mpidr, mask 37 (eg: a macro instance with mpidr = x1 and dst = x1 is invalid) 39 .macro compute_mpidr_hash dst, rs0, rs1, rs2, rs3, mpidr, mask 40 and \mpidr, \mpidr, \mask // mask out MPIDR bits 41 and \dst, \mpidr, #0xff // mask=aff0 43 and \mask, \mpidr, #0xff00 // mask = aff1 [all …]
|
| H A D | smp.c | 210 u64 mpidr = read_cpuid_mpidr() & MPIDR_HWID_BITMASK; in secondary_start_kernel() local 269 cpu, (unsigned long)mpidr, in secondary_start_kernel() 510 * matching valid MPIDR values. 565 pr_debug("skipping disabled CPU entry with 0x%llx MPIDR\n", hwid); in acpi_map_gic_cpu_interface() 570 pr_err("skipping CPU entry with invalid MPIDR 0x%llx\n", hwid); in acpi_map_gic_cpu_interface() 575 pr_err("duplicate CPU MPIDR 0x%llx in MADT\n", hwid); in acpi_map_gic_cpu_interface() 582 pr_err("duplicate boot CPU MPIDR: 0x%llx in MADT\n", in acpi_map_gic_cpu_interface() 594 /* map the logical cpu id to cpu MPIDR */ in acpi_map_gic_cpu_interface() 661 * cpu logical map array containing MPIDR values related to logical 719 * cpu logical map array containing MPIDR values related to logical [all …]
|
| H A D | setup.c | 87 u64 mpidr = read_cpuid_mpidr() & MPIDR_HWID_BITMASK; in smp_setup_processor_id() local 88 set_cpu_logical_map(0, mpidr); in smp_setup_processor_id() 97 (unsigned long)mpidr, read_cpuid_id()); in smp_setup_processor_id() 109 * MPIDR value. Resulting algorithm is a collision 156 pr_debug("MPIDR hash: aff0[%u] aff1[%u] aff2[%u] aff3[%u] mask[%#llx] bits[%u]\n", in smp_build_mpidr_hash() 168 pr_warn("Large number of MPIDR hash buckets detected\n"); in smp_build_mpidr_hash()
|
| /OK3568_Linux_fs/kernel/arch/arm/mach-milbeaut/ |
| H A D | platsmp.c | 25 unsigned int mpidr, cpu, cluster; in m10v_boot_secondary() local 30 mpidr = cpu_logical_map(l_cpu); in m10v_boot_secondary() 31 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); in m10v_boot_secondary() 32 cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); in m10v_boot_secondary() 48 unsigned int mpidr, cpu, cluster; in m10v_smp_init() local 59 mpidr = read_cpuid_mpidr(); in m10v_smp_init() 60 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); in m10v_smp_init() 61 cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); in m10v_smp_init() 78 unsigned int mpidr, cpu; in m10v_cpu_kill() local 80 mpidr = cpu_logical_map(l_cpu); in m10v_cpu_kill() [all …]
|
| /OK3568_Linux_fs/kernel/arch/arm/mach-hisi/ |
| H A D | platmcpm.c | 100 unsigned int mpidr, cpu, cluster; in hip04_boot_secondary() local 104 mpidr = cpu_logical_map(l_cpu); in hip04_boot_secondary() 105 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); in hip04_boot_secondary() 106 cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); in hip04_boot_secondary() 155 unsigned int mpidr, cpu, cluster; in hip04_cpu_die() local 158 mpidr = cpu_logical_map(l_cpu); in hip04_cpu_die() 159 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); in hip04_cpu_die() 160 cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); in hip04_cpu_die() 193 unsigned int mpidr, cpu, cluster; in hip04_cpu_kill() local 196 mpidr = cpu_logical_map(l_cpu); in hip04_cpu_kill() [all …]
|
| /OK3568_Linux_fs/kernel/arch/arm/common/ |
| H A D | mcpm_platsmp.c | 22 unsigned int mpidr; in cpu_to_pcpu() local 24 mpidr = cpu_logical_map(cpu); in cpu_to_pcpu() 25 *pcpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); in cpu_to_pcpu() 26 *pcluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); in cpu_to_pcpu() 73 unsigned int mpidr, pcpu, pcluster; in mcpm_cpu_die() local 74 mpidr = read_cpuid_mpidr(); in mcpm_cpu_die() 75 pcpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); in mcpm_cpu_die() 76 pcluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); in mcpm_cpu_die()
|
| H A D | mcpm_entry.c | 241 unsigned int mpidr, cpu, cluster; in mcpm_cpu_power_down() local 245 mpidr = read_cpuid_mpidr(); in mcpm_cpu_power_down() 246 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); in mcpm_cpu_power_down() 247 cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); in mcpm_cpu_power_down() 330 unsigned int mpidr = read_cpuid_mpidr(); in mcpm_cpu_suspend() local 331 unsigned int cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); in mcpm_cpu_suspend() 332 unsigned int cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); in mcpm_cpu_suspend() 342 unsigned int mpidr, cpu, cluster; in mcpm_cpu_powered_up() local 349 mpidr = read_cpuid_mpidr(); in mcpm_cpu_powered_up() 350 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); in mcpm_cpu_powered_up() [all …]
|
| H A D | bL_switcher.c | 46 * Use our own MPIDR accessors as the generic ones in asm/cputype.h have 124 unsigned int mpidr = read_mpidr(); in bL_switchpoint() local 125 unsigned int clusterid = MPIDR_AFFINITY_LEVEL(mpidr, 1); in bL_switchpoint() 149 unsigned int mpidr, this_cpu, that_cpu; in bL_switch_to() local 169 pr_debug("before switch: CPU %d MPIDR %#x -> %#x\n", in bL_switch_to() 236 mpidr = read_mpidr(); in bL_switch_to() 237 pr_debug("after switch: CPU %d MPIDR %#x\n", this_cpu, mpidr); in bL_switch_to() 238 BUG_ON(mpidr != ib_mpidr); in bL_switch_to() 515 int bL_switcher_get_logical_index(u32 mpidr) in bL_switcher_get_logical_index() argument 522 mpidr &= MPIDR_HWID_BITMASK; in bL_switcher_get_logical_index() [all …]
|
| /OK3568_Linux_fs/kernel/Documentation/virt/kvm/devices/ |
| H A D | arm-vgic-v3.rst | 83 values: | mpidr | offset | 93 specified by the mpidr. 104 The mpidr field is used to specify which 105 redistributor is accessed. The mpidr is ignored for the distributor. 107 The mpidr encoding is based on the affinity information in the 108 architecture defined MPIDR, and the field is encoded as follows:: 114 regardless of the mpidr used to access the register. 177 values: | mpidr | RES | instr | 179 The mpidr field encodes the CPU ID based on the affinity information in the 180 architecture defined MPIDR, and the field is encoded as follows:: [all …]
|
| /OK3568_Linux_fs/kernel/arch/arm64/include/asm/ |
| H A D | smp_plat.h | 29 * Retrieve logical cpu index corresponding to a given MPIDR.Aff* 30 * - mpidr: MPIDR.Aff* bits to be used for the look-up 34 static inline int get_logical_index(u64 mpidr) in get_logical_index() argument 38 if (cpu_logical_map(cpu) == mpidr) in get_logical_index()
|
| /OK3568_Linux_fs/kernel/drivers/bus/ |
| H A D | arm-cci.c | 117 u64 mpidr; member 132 static inline void init_cpu_port(struct cpu_port *port, u32 index, u64 mpidr) in init_cpu_port() argument 135 port->mpidr = mpidr; in init_cpu_port() 143 static inline bool cpu_port_match(struct cpu_port *port, u64 mpidr) in cpu_port_match() argument 145 return port->mpidr == (mpidr & MPIDR_HWID_BITMASK); in cpu_port_match() 254 * @mpidr: mpidr of the CPU whose CCI port should be disabled 265 int notrace cci_disable_port_by_cpu(u64 mpidr) in cci_disable_port_by_cpu() argument 271 if (is_valid && cpu_port_match(&cpu_port[cpu], mpidr)) { in cci_disable_port_by_cpu() 302 " mrc p15, 0, r0, c0, c0, 5 @ get MPIDR value \n" in cci_enable_port_for_self() 309 /* Loop over the cpu_port array looking for a matching MPIDR */ in cci_enable_port_for_self() [all …]
|
| /OK3568_Linux_fs/kernel/arch/arm/include/asm/ |
| H A D | smp_plat.h | 75 * Retrieve logical cpu index corresponding to a given MPIDR[23:0] 76 * - mpidr: MPIDR[23:0] to be used for the look-up 80 static inline int get_logical_index(u32 mpidr) in get_logical_index() argument 84 if (cpu_logical_map(cpu) == mpidr) in get_logical_index()
|
| /OK3568_Linux_fs/u-boot/arch/arm/cpu/armv8/fsl-layerscape/ |
| H A D | lowlevel.S | 441 * MPIDR[1:0] = AFF0_CPUID <- Core ID (0,1) 442 * MPIDR[7:2] = AFF0_RES 443 * MPIDR[15:8] = AFF1_CLUSTERID <- Cluster ID (0,1,2,3) 444 * MPIDR[23:16] = AFF2_CLUSTERID 445 * MPIDR[24] = MT 446 * MPIDR[29:25] = RES0 447 * MPIDR[30] = U 448 * MPIDR[31] = ME 449 * MPIDR[39:32] = AFF3 455 * LPID = MPIDR[15:8] | MPIDR[1:0] [all …]
|
| /OK3568_Linux_fs/kernel/arch/arm/mach-sunxi/ |
| H A D | mc_smp.c | 394 unsigned int mpidr, cpu, cluster; in sunxi_mc_smp_boot_secondary() local 396 mpidr = cpu_logical_map(l_cpu); in sunxi_mc_smp_boot_secondary() 397 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); in sunxi_mc_smp_boot_secondary() 398 cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); in sunxi_mc_smp_boot_secondary() 446 unsigned int mpidr, cpu, cluster; in sunxi_mc_smp_cpu_die() local 449 mpidr = cpu_logical_map(l_cpu); in sunxi_mc_smp_cpu_die() 450 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); in sunxi_mc_smp_cpu_die() 451 cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); in sunxi_mc_smp_cpu_die() 536 unsigned int mpidr, cpu, cluster; in sunxi_mc_smp_cpu_kill() local 541 mpidr = cpu_logical_map(l_cpu); in sunxi_mc_smp_cpu_kill() [all …]
|
| /OK3568_Linux_fs/kernel/arch/arm64/kvm/hyp/nvhe/ |
| H A D | psci-relay.c | 78 static unsigned int find_cpu_id(u64 mpidr) in find_cpu_id() argument 83 if (mpidr & ~MPIDR_HWID_BITMASK) in find_cpu_id() 87 if (cpu_logical_map(i) == mpidr) in find_cpu_id() 109 DECLARE_REG(u64, mpidr, host_ctxt, 1); in psci_cpu_on() 119 * Find the logical CPU ID for the given MPIDR. The search set is in psci_cpu_on() 125 cpu_id = find_cpu_id(mpidr); in psci_cpu_on() 140 ret = psci_call(func_id, mpidr, in psci_cpu_on()
|
| /OK3568_Linux_fs/kernel/arch/arm/mach-shmobile/ |
| H A D | headsmp.S | 48 mrc p15, 0, r0, c0, c0, 5 @ r0 = MPIDR 93 * Per-CPU SMP boot function/argument selection code based on MPIDR 97 mrc p15, 0, r1, c0, c0, 5 @ r1 = MPIDR 103 add r5, r5, r2 @ array of per-cpu mpidr values
|
| /OK3568_Linux_fs/kernel/arch/arm64/kvm/vgic/ |
| H A D | vgic-mmio-v3.c | 191 ret = extract_bytes(READ_ONCE(irq->mpidr), addr & 7, len); in vgic_mmio_read_irouter() 217 irq->mpidr = val & GENMASK(23, 0); in vgic_mmio_write_irouter() 218 irq->target_vcpu = kvm_mpidr_to_vcpu(vcpu->kvm, irq->mpidr); in vgic_mmio_write_irouter() 257 unsigned long mpidr = kvm_vcpu_get_mpidr_aff(vcpu); in vgic_mmio_read_v3r_typer() local 265 value = (u64)(mpidr & GENMASK(23, 0)) << 32; in vgic_mmio_read_v3r_typer() 279 unsigned long mpidr = kvm_vcpu_get_mpidr_aff(vcpu); in vgic_uaccess_read_v3r_typer() local 283 value = (u64)(mpidr & GENMASK(23, 0)) << 32; in vgic_uaccess_read_v3r_typer() 921 * If the VCPU's MPIDR matches, return the level0 affinity, otherwise 930 * Split the current VCPU's MPIDR into affinity level 0 and the in match_mpidr() 949 * The ICC_SGI* registers encode the affinity differently from the MPIDR, [all …]
|
| /OK3568_Linux_fs/kernel/drivers/irqchip/ |
| H A D | irq-gic-v3.c | 122 #define MPIDR_RS(mpidr) (((mpidr) & 0xF0UL) >> 4) argument 612 static u64 gic_mpidr_to_affinity(unsigned long mpidr) in gic_mpidr_to_affinity() argument 616 aff = ((u64)MPIDR_AFFINITY_LEVEL(mpidr, 3) << 32 | in gic_mpidr_to_affinity() 617 MPIDR_AFFINITY_LEVEL(mpidr, 2) << 16 | in gic_mpidr_to_affinity() 618 MPIDR_AFFINITY_LEVEL(mpidr, 1) << 8 | in gic_mpidr_to_affinity() 619 MPIDR_AFFINITY_LEVEL(mpidr, 0)); in gic_mpidr_to_affinity() 863 unsigned long mpidr = cpu_logical_map(smp_processor_id()); in __gic_populate_rdist() local 871 aff = (MPIDR_AFFINITY_LEVEL(mpidr, 3) << 24 | in __gic_populate_rdist() 872 MPIDR_AFFINITY_LEVEL(mpidr, 2) << 16 | in __gic_populate_rdist() 873 MPIDR_AFFINITY_LEVEL(mpidr, 1) << 8 | in __gic_populate_rdist() [all …]
|
| /OK3568_Linux_fs/kernel/arch/arm/mach-exynos/ |
| H A D | platsmp.c | 51 u32 mpidr = cpu_logical_map(cpu); in platform_do_lowpower() local 52 u32 core_id = MPIDR_AFFINITY_LEVEL(mpidr, 0); in platform_do_lowpower() 322 u32 mpidr = cpu_logical_map(cpu); in exynos_boot_secondary() local 323 u32 core_id = MPIDR_AFFINITY_LEVEL(mpidr, 0); in exynos_boot_secondary() 427 u32 mpidr = cpu_logical_map(cpu); in exynos_cpu_die() local 428 u32 core_id = MPIDR_AFFINITY_LEVEL(mpidr, 0); in exynos_cpu_die()
|
| /OK3568_Linux_fs/kernel/arch/arm/mach-vexpress/ |
| H A D | spc.c | 106 * It corresponds to A15 processors MPIDR[15:8] bitfield 154 * @cluster: mpidr[15:8] bitfield describing cluster affinity level 155 * @cpu: mpidr[7:0] bitfield describing cpu affinity level 183 * @cluster: mpidr[15:8] bitfield describing cluster affinity level 184 * @cpu: mpidr[7:0] bitfield describing cpu affinity level 209 * @cluster: mpidr[15:8] bitfield describing cluster affinity level 233 * @cpu: mpidr[7:0] bitfield describing CPU affinity level within cluster 234 * @cluster: mpidr[15:8] bitfield describing cluster affinity level
|
| H A D | tc2_pm.c | 204 unsigned int mpidr, cpu, cluster; in tc2_pm_init() local 244 mpidr = read_cpuid_mpidr(); in tc2_pm_init() 245 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); in tc2_pm_init() 246 cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); in tc2_pm_init()
|
| /OK3568_Linux_fs/kernel/include/ras/ |
| H A D | ras_event.h | 178 __field(u64, mpidr) 191 __entry->mpidr = proc->mpidr; 193 __entry->mpidr = 0ULL; 204 TP_printk("affinity level: %d; MPIDR: %016llx; MIDR: %016llx; " 206 __entry->affinity, __entry->mpidr, __entry->midr,
|