diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2022-07-16 12:07:56 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2022-07-16 12:07:56 +0000 |
commit | a86c336ad095c9f3cb9013d14c3f14898f488501 (patch) | |
tree | afe84a56dfb9083fe6ee5a67d52bf3f3e17e320d /sys | |
parent | cc4dccbd3e1ceb4f8c1cf8dc81157af01be64b11 (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.c | 4 |
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); |