summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2022-07-16 12:07:56 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2022-07-16 12:07:56 +0000
commita86c336ad095c9f3cb9013d14c3f14898f488501 (patch)
treeafe84a56dfb9083fe6ee5a67d52bf3f3e17e320d /sys
parentcc4dccbd3e1ceb4f8c1cf8dc81157af01be64b11 (diff)
Fix IPIs on systems with multiple clusters where the CPU interface
numbers don't necessarily match the CPU numbers used by our kernel. Seen on an Amlogic S922X SoC where cluster 0 consists of two Cortex-A53 cores and cluster 1 consists of four Cortes-A73 cores. ok anton@
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/arm64/dev/ampintc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/arch/arm64/dev/ampintc.c b/sys/arch/arm64/dev/ampintc.c
index 45a15dd2d57..df59eaf8635 100644
--- a/sys/arch/arm64/dev/ampintc.c
+++ b/sys/arch/arm64/dev/ampintc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ampintc.c,v 1.28 2022/07/13 09:28:18 kettenis Exp $ */
+/* $OpenBSD: ampintc.c,v 1.29 2022/07/16 12:07:55 kettenis Exp $ */
/*
* Copyright (c) 2007,2009,2011 Dale Rahn <drahn@openbsd.org>
*
@@ -1104,7 +1104,7 @@ ampintc_send_ipi(struct cpu_info *ci, int id)
sc->sc_ipi_reason[ci->ci_cpuid] = id;
/* currently will only send to one cpu */
- sendmask = 1 << (16 + ci->ci_cpuid);
+ sendmask = sc->sc_cpu_mask[ci->ci_cpuid] << 16;
sendmask |= sc->sc_ipi_num[id];
bus_space_write_4(sc->sc_iot, sc->sc_d_ioh, ICD_SGIR, sendmask);