Page MenuHomeFreeBSD

D59993.id187620.diff
No OneTemporary

D59993.id187620.diff

diff --git a/sys/arm64/arm64/gicv5_acpi.c b/sys/arm64/arm64/gicv5_acpi.c
--- a/sys/arm64/arm64/gicv5_acpi.c
+++ b/sys/arm64/arm64/gicv5_acpi.c
@@ -28,11 +28,12 @@
#include <sys/types.h>
#include <sys/systm.h>
#include <sys/bus.h>
+#include <sys/cpuset.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/module.h>
#include <sys/rman.h>
-#include <sys/cpuset.h>
+#include <sys/smp.h>
#include <machine/intr.h>
#include <machine/resource.h>
@@ -254,14 +255,24 @@
{
struct process_gicc_args *gicc_args;
ACPI_MADT_GENERIC_INTERRUPT *gicc;
+ struct pcpu *pcpu;
+ int cpu;
gicc_args = (struct process_gicc_args *)arg;
if (entry->Type == ACPI_MADT_TYPE_GENERIC_INTERRUPT) {
gicc = (ACPI_MADT_GENERIC_INTERRUPT *)entry;
- if (gicc->IrsId == gicc_args->irs_id)
- CPU_SET(gicc->CpuInterfaceNumber, &gicc_args->cpuset);
+ if (gicc->IrsId == gicc_args->irs_id) {
+ /* Find CPU ID from gicc->ArmMpidr */
+ CPU_FOREACH(cpu) {
+ pcpu = pcpu_find(cpu);
+ if (pcpu->pc_mpidr != gicc->ArmMpidr)
+ continue;
+ CPU_SET(pcpu->pc_cpuid, &gicc_args->cpuset);
+ break;
+ }
+ }
}
}

File Metadata

Mime Type
text/plain
Expires
Sat, Sep 26, 5:17 PM (8 h, 38 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
39604283
Default Alt Text
D59993.id187620.diff (1 KB)

Event Timeline