Page MenuHomeFreeBSD

D40474.diff
No OneTemporary

D40474.diff

diff --git a/sys/arm/arm/gic.c b/sys/arm/arm/gic.c
--- a/sys/arm/arm/gic.c
+++ b/sys/arm/arm/gic.c
@@ -205,6 +205,9 @@
struct arm_gic_softc *sc = device_get_softc(dev);
u_int irq, cpu;
+ if (root_type >= INTR_ROOT_COUNT)
+ return;
+
/* Set the mask so we can find this CPU to send it IPIs */
cpu = PCPU_GET(cpuid);
MPASS(cpu < GIC_MAXCPU);
diff --git a/sys/arm/broadcom/bcm2835/bcm2836.c b/sys/arm/broadcom/bcm2835/bcm2836.c
--- a/sys/arm/broadcom/bcm2835/bcm2836.c
+++ b/sys/arm/broadcom/bcm2835/bcm2836.c
@@ -543,6 +543,9 @@
u_int cpu;
struct bcm_lintc_softc *sc;
+ if (root_type >= INTR_ROOT_COUNT)
+ return;
+
cpu = PCPU_GET(cpuid);
sc = device_get_softc(dev);
diff --git a/sys/arm64/arm64/gic_v3.c b/sys/arm64/arm64/gic_v3.c
--- a/sys/arm64/arm64/gic_v3.c
+++ b/sys/arm64/arm64/gic_v3.c
@@ -1103,6 +1103,9 @@
u_int cpu, irq;
int err, i;
+ if (root_type >= INTR_ROOT_COUNT)
+ return;
+
sc = device_get_softc(dev);
cpu = PCPU_GET(cpuid);
diff --git a/sys/arm64/arm64/gicv3_its.c b/sys/arm64/arm64/gicv3_its.c
--- a/sys/arm64/arm64/gicv3_its.c
+++ b/sys/arm64/arm64/gicv3_its.c
@@ -1297,6 +1297,9 @@
{
struct gicv3_its_softc *sc;
+ if (root_type >= INTR_ROOT_COUNT)
+ return;
+
sc = device_get_softc(dev);
/*
diff --git a/sys/kern/subr_intr.c b/sys/kern/subr_intr.c
--- a/sys/kern/subr_intr.c
+++ b/sys/kern/subr_intr.c
@@ -1570,12 +1570,10 @@
void
intr_pic_init_secondary(void)
{
+ struct intr_pic *pic;
device_t dev;
enum root_type root_type;
- /*
- * QQQ: Only root PICs are aware of other CPUs ???
- */
//mtx_lock(&isrc_table_lock);
for (root_type = 0; root_type < INTR_ROOT_COUNT; root_type++) {
dev = intr_irq_roots[root_type].dev;
@@ -1583,6 +1581,9 @@
PIC_INIT_SECONDARY(dev, root_type);
}
}
+
+ STAILQ_FOREACH(pic, &pic_list, pic_next)
+ PIC_INIT_SECONDARY(pic->pic_dev, INTR_ROOT_COUNT);
//mtx_unlock(&isrc_table_lock);
}
#endif

File Metadata

Mime Type
text/plain
Expires
Sun, Jan 18, 4:35 PM (15 h, 31 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27712193
Default Alt Text
D40474.diff (1 KB)

Event Timeline