linux/arch/mips
Paul Burton 1a3529f36f MIPS: pm-cps: Use per-CPU variables as per-CPU, not per-core
[ Upstream commit 00a134fc2b ]

The pm-cps code has up until now used per-CPU variables indexed by core,
rather than CPU number, in order to share data amongst sibling CPUs (ie.
VPs/threads in a core). This works fine for single cluster systems, but
with multi-cluster systems a core number is no longer unique in the
system, leading to sharing between CPUs that are not actually siblings.

Avoid this issue by using per-CPU variables as they are more generally
used - ie. access them using CPU numbers rather than core numbers.
Sharing between siblings is then accomplished by:
 - Assigning the same pointer to entries for each sibling CPU for the
   nc_asm_enter & ready_count variables, which allow this by virtue of
   being per-CPU pointers.

 - Indexing by the first CPU set in a CPUs cpu_sibling_map in the case
   of pm_barrier, for which we can't use the previous approach because
   the per-CPU variable is not a pointer.

Signed-off-by: Paul Burton <paulburton@kernel.org>
Signed-off-by: Dragan Mladjenovic <dragan.mladjenovic@syrmia.com>
Signed-off-by: Aleksandar Rikalo <arikalo@gmail.com>
Tested-by: Serge Semin <fancer.lancer@gmail.com>
Tested-by: Gregory CLEMENT <gregory.clement@bootlin.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-05-29 11:02:41 +02:00
..
alchemy MIPS: Remove unused function dump_au1000_dma_channel() in dma.c 2024-08-29 10:38:18 +02:00
ath25 MIPS: ath25: Constify static irq_domain_ops 2022-02-22 09:39:03 +01:00
ath79 MIPS: ath79: remove obsolete ATH79_DEV_* configs 2023-03-17 10:28:04 +01:00
bcm47xx mips: bmips: setup: make CBR address configurable 2024-06-27 10:44:32 +02:00
bcm63xx gpiolib: legacy: Kill GPIOF_INIT_* definitions 2024-09-02 11:47:06 +02:00
bmips mips: bmips: setup: make CBR address configurable 2024-06-27 10:44:32 +02:00
boot MIPS: Loongson64: DTS: Really fix PCIe port nodes for ls7a 2024-12-14 20:04:08 +01:00
cavium-octeon Just cleanups and fixes 2024-01-17 11:20:50 -08:00
cobalt MIPS: Cobalt: Fix missing prototypes 2024-01-22 10:32:21 +01:00
configs mips: configs: enable I2C_DESIGNWARE_CORE with I2C_DESIGNWARE_PLATFORM 2024-09-10 00:36:52 +02:00
crypto crypto: lib/Kconfig - Hide arch options from user 2025-05-02 07:59:32 +02:00
dec MIPS: dec: Declare which_prom() as static 2025-04-25 10:48:06 +02:00
fw MIPS: fw arc: Fix missing prototypes 2024-01-22 11:12:01 +01:00
generic mips: generic: add fdt fixup for Realtek reference board 2024-07-12 13:12:13 +02:00
include MIPS: Use arch specific syscall name match function 2025-05-29 11:02:40 +02:00
ingenic MIPS: Kconfig: ingenic: Ensure MACH_INGENIC_GENERIC selects all SoCs 2021-06-01 11:44:47 +02:00
jazz mips/jazz: remove unused jazz_handle_int() declaration 2024-08-29 10:39:00 +02:00
kernel MIPS: pm-cps: Use per-CPU variables as per-CPU, not per-core 2025-05-29 11:02:41 +02:00
kvm KVM: MIPS: Rename virtualization {en,dis}abling APIs to match common KVM 2024-09-04 11:02:33 -04:00
lantiq MIPS: lantiq: improve USB initialization 2024-07-12 13:04:24 +02:00
lib mips: implement xor_unlock_is_negative_byte 2023-10-18 14:34:17 -07:00
loongson2ef MIPS: Fix typos 2024-01-08 10:39:12 +01:00
loongson32 MIPS: loongson32: Remove dma.h and nand.h 2023-10-06 10:10:13 +02:00
loongson64 MIPS: Loongson64: remove ROM Size unit in boardinfo 2025-02-17 10:05:18 +01:00
math-emu mips/math-emu: fix emulation of the prefx instruction 2025-02-17 10:05:19 +01:00
mm mm: make arch_get_unmapped_area() take vm_flags by default 2024-09-09 16:39:13 -07:00
mobileye MIPS: mobileye: Add EyeQ6H support 2024-06-11 10:15:50 +02:00
mti-malta vgacon: clean up global screen_info instances 2023-10-17 10:17:02 +02:00
n64 mips: Add N64 machine type 2021-01-22 11:40:00 +01:00
net bpf: Take return from set_memory_rox() into account with bpf_jit_binary_lock_ro() 2024-03-14 19:28:52 -07:00
pci MIPS: pci-legacy: Override pci_address_to_pio 2025-02-17 10:05:19 +01:00
pic32 MIPS: Fixup explicit DT include clean-up 2023-07-28 11:41:09 +02:00
power mips: suspend: include linux/suspend.h as needed 2023-12-10 17:21:41 -08:00
ralink MIPS: ralink: Fix missing get_c0_perfcount_int prototype 2024-08-29 10:29:28 +02:00
rb532 MIPS: RB532: Declare prom_setup_cmdline() and rb532_gpio_init() static 2024-04-15 10:21:52 +02:00
sgi-ip22 mips: sgi-ip22: Fix the build 2024-08-13 11:34:55 +02:00
sgi-ip27 arch, mm: move definition of node_data to generic code 2024-09-03 21:15:28 -07:00
sgi-ip30 MIPS: ip30: ip30-console: Add missing include 2024-06-19 13:09:35 +02:00
sgi-ip32 MIPS: sgi-ip32: Fix missing prototypes 2024-01-22 11:12:19 +01:00
sibyte mips: sibyte: add missing MODULE_DESCRIPTION() macro 2024-07-23 09:47:40 +02:00
sni vgacon: clean up global screen_info instances 2023-10-17 10:17:02 +02:00
tools MIPS: fix typos in comments 2022-05-04 22:22:59 +02:00
txx9 mips: txx9: make txx9_sramc_subsys const 2024-02-20 13:36:34 +01:00
vdso Makefile: remove redundant tool coverage variables 2024-05-14 23:35:48 +09:00
Kbuild MIPS: Share generic kernel code with other architecture 2024-02-20 13:36:25 +01:00
Kbuild.platforms MIPS: mobileye: Add EyeQ6H support 2024-06-11 10:15:50 +02:00
Kconfig Revert "MIPS: csrc-r4k: Select HAVE_UNSTABLE_SCHED_CLOCK if SMP && 64BIT" 2025-02-17 10:05:19 +01:00
Kconfig.debug tracing: Refactor TRACE_IRQFLAGS_SUPPORT in Kconfig 2021-08-16 11:37:21 -04:00
Makefile MIPS: Fix fallback march for SB1 2024-07-15 18:16:23 +02:00
Makefile.postlink kbuild: remove ARCH_POSTLINK from module builds 2023-10-28 21:10:08 +09:00