git: a73592e0d013 - stable/14 - intrng: Remove irq_root_ipicount and corresponding intr_pic_claim_root arg
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 07 Sep 2024 01:47:52 UTC
The branch stable/14 has been updated by jrtc27:
URL: https://cgit.FreeBSD.org/src/commit/?id=a73592e0d013275bd97d09d9cf168279688f7238
commit a73592e0d013275bd97d09d9cf168279688f7238
Author: Jessica Clarke <jrtc27@FreeBSD.org>
AuthorDate: 2024-01-24 23:49:53 +0000
Commit: Jessica Clarke <jrtc27@FreeBSD.org>
CommitDate: 2024-09-06 23:52:47 +0000
intrng: Remove irq_root_ipicount and corresponding intr_pic_claim_root arg
The static irq_root_ipicount variable is only ever written to (with the
value passed to irq_root_ipicount), never read. Moreover, the bcm2836
driver, as used by the Raspberry Pi 2B and 3A/B (but not 4, which uses a
GIC-400, though does have the legacy interrupt controller present too)
passes 0 as ipicount, despite implementing IPIs. It's thus inaccurate
and serves no purpose, so should be removed.
Reviewed by: mmel, imp, mhorne
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D35897
(cherry picked from commit e06afdb2856944d6db4e33d4bbe0e2dbbd057eb4)
---
sys/arm/allwinner/a10/a10_intc.c | 2 +-
sys/arm/arm/gic_acpi.c | 3 +--
sys/arm/arm/gic_fdt.c | 3 +--
sys/arm/broadcom/bcm2835/bcm2835_intr.c | 2 +-
sys/arm/broadcom/bcm2835/bcm2836.c | 2 +-
sys/arm/ti/aintc.c | 2 +-
sys/arm64/arm64/gic_v3_acpi.c | 4 ++--
sys/arm64/arm64/gic_v3_fdt.c | 3 +--
sys/kern/subr_intr.c | 4 +---
sys/riscv/riscv/plic.c | 2 +-
sys/sys/intr.h | 2 +-
11 files changed, 12 insertions(+), 17 deletions(-)
diff --git a/sys/arm/allwinner/a10/a10_intc.c b/sys/arm/allwinner/a10/a10_intc.c
index 22b29ececac5..410fba4b4728 100644
--- a/sys/arm/allwinner/a10/a10_intc.c
+++ b/sys/arm/allwinner/a10/a10_intc.c
@@ -236,7 +236,7 @@ a10_intr_pic_attach(struct a10_aintc_softc *sc)
if (pic == NULL)
return (ENXIO);
- return (intr_pic_claim_root(sc->sc_dev, xref, a10_intr, sc, 0));
+ return (intr_pic_claim_root(sc->sc_dev, xref, a10_intr, sc));
}
static void
diff --git a/sys/arm/arm/gic_acpi.c b/sys/arm/arm/gic_acpi.c
index 56ff78f9b685..67297f9879ca 100644
--- a/sys/arm/arm/gic_acpi.c
+++ b/sys/arm/arm/gic_acpi.c
@@ -228,8 +228,7 @@ gic_acpi_attach(device_t dev)
/*
* Controller is root:
*/
- if (intr_pic_claim_root(dev, xref, arm_gic_intr, sc,
- GIC_LAST_SGI - GIC_FIRST_SGI + 1) != 0) {
+ if (intr_pic_claim_root(dev, xref, arm_gic_intr, sc) != 0) {
device_printf(dev, "could not set PIC as a root\n");
intr_pic_deregister(dev, xref);
goto cleanup;
diff --git a/sys/arm/arm/gic_fdt.c b/sys/arm/arm/gic_fdt.c
index d6c657250ba3..e7fe503bf426 100644
--- a/sys/arm/arm/gic_fdt.c
+++ b/sys/arm/arm/gic_fdt.c
@@ -154,8 +154,7 @@ gic_fdt_attach(device_t dev)
*/
pxref = ofw_bus_find_iparent(ofw_bus_get_node(dev));
if (pxref == 0 || xref == pxref) {
- if (intr_pic_claim_root(dev, xref, arm_gic_intr, sc,
- GIC_LAST_SGI - GIC_FIRST_SGI + 1) != 0) {
+ if (intr_pic_claim_root(dev, xref, arm_gic_intr, sc) != 0) {
device_printf(dev, "could not set PIC as a root\n");
intr_pic_deregister(dev, xref);
goto cleanup;
diff --git a/sys/arm/broadcom/bcm2835/bcm2835_intr.c b/sys/arm/broadcom/bcm2835/bcm2835_intr.c
index b49c9041810d..5a8457bc4b67 100644
--- a/sys/arm/broadcom/bcm2835/bcm2835_intr.c
+++ b/sys/arm/broadcom/bcm2835/bcm2835_intr.c
@@ -405,7 +405,7 @@ bcm_intc_attach(device_t dev)
sc->intc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
RF_ACTIVE);
if (sc->intc_irq_res == NULL) {
- if (intr_pic_claim_root(dev, xref, bcm2835_intc_intr, sc, 0) != 0) {
+ if (intr_pic_claim_root(dev, xref, bcm2835_intc_intr, sc) != 0) {
/* XXX clean up */
device_printf(dev, "could not set PIC as a root\n");
return (ENXIO);
diff --git a/sys/arm/broadcom/bcm2835/bcm2836.c b/sys/arm/broadcom/bcm2835/bcm2836.c
index 60734abb40e3..f72bd9075982 100644
--- a/sys/arm/broadcom/bcm2835/bcm2836.c
+++ b/sys/arm/broadcom/bcm2835/bcm2836.c
@@ -646,7 +646,7 @@ bcm_lintc_pic_attach(struct bcm_lintc_softc *sc)
if (pic == NULL)
return (ENXIO);
- return (intr_pic_claim_root(sc->bls_dev, xref, bcm_lintc_intr, sc, 0));
+ return (intr_pic_claim_root(sc->bls_dev, xref, bcm_lintc_intr, sc));
}
static int
diff --git a/sys/arm/ti/aintc.c b/sys/arm/ti/aintc.c
index ce986b2d38bc..776d231c3c48 100644
--- a/sys/arm/ti/aintc.c
+++ b/sys/arm/ti/aintc.c
@@ -230,7 +230,7 @@ ti_aintc_pic_attach(struct ti_aintc_softc *sc)
if (pic == NULL)
return (ENXIO);
- return (intr_pic_claim_root(sc->sc_dev, xref, ti_aintc_intr, sc, 0));
+ return (intr_pic_claim_root(sc->sc_dev, xref, ti_aintc_intr, sc));
}
static int
diff --git a/sys/arm64/arm64/gic_v3_acpi.c b/sys/arm64/arm64/gic_v3_acpi.c
index fe13b9f15f71..199fddcbc20c 100644
--- a/sys/arm64/arm64/gic_v3_acpi.c
+++ b/sys/arm64/arm64/gic_v3_acpi.c
@@ -346,8 +346,8 @@ gic_v3_acpi_attach(device_t dev)
}
}
- if (intr_pic_claim_root(dev, ACPI_INTR_XREF, arm_gic_v3_intr, sc,
- GIC_LAST_SGI - GIC_FIRST_SGI + 1) != 0) {
+ if (intr_pic_claim_root(dev, ACPI_INTR_XREF, arm_gic_v3_intr, sc)
+ != 0) {
err = ENXIO;
goto error;
}
diff --git a/sys/arm64/arm64/gic_v3_fdt.c b/sys/arm64/arm64/gic_v3_fdt.c
index 9ca10167588a..f094bc6eb1fe 100644
--- a/sys/arm64/arm64/gic_v3_fdt.c
+++ b/sys/arm64/arm64/gic_v3_fdt.c
@@ -162,8 +162,7 @@ gic_v3_fdt_attach(device_t dev)
/* Register xref */
OF_device_register_xref(xref, dev);
- if (intr_pic_claim_root(dev, xref, arm_gic_v3_intr, sc,
- GIC_LAST_SGI - GIC_FIRST_SGI + 1) != 0) {
+ if (intr_pic_claim_root(dev, xref, arm_gic_v3_intr, sc) != 0) {
err = ENXIO;
goto error;
}
diff --git a/sys/kern/subr_intr.c b/sys/kern/subr_intr.c
index 6535c42f2404..e3ef2caf2291 100644
--- a/sys/kern/subr_intr.c
+++ b/sys/kern/subr_intr.c
@@ -100,7 +100,6 @@ void intr_irq_handler(struct trapframe *tf);
device_t intr_irq_root_dev;
static intr_irq_filter_t *irq_root_filter;
static void *irq_root_arg;
-static u_int irq_root_ipicount;
struct intr_pic_child {
SLIST_ENTRY(intr_pic_child) pc_next;
@@ -884,7 +883,7 @@ intr_pic_deregister(device_t dev, intptr_t xref)
*/
int
intr_pic_claim_root(device_t dev, intptr_t xref, intr_irq_filter_t *filter,
- void *arg, u_int ipicount)
+ void *arg)
{
struct intr_pic *pic;
@@ -916,7 +915,6 @@ intr_pic_claim_root(device_t dev, intptr_t xref, intr_irq_filter_t *filter,
intr_irq_root_dev = dev;
irq_root_filter = filter;
irq_root_arg = arg;
- irq_root_ipicount = ipicount;
debugf("irq root set to %s\n", device_get_nameunit(dev));
return (0);
diff --git a/sys/riscv/riscv/plic.c b/sys/riscv/riscv/plic.c
index 27c8f59b1a87..c7d9249b2231 100644
--- a/sys/riscv/riscv/plic.c
+++ b/sys/riscv/riscv/plic.c
@@ -369,7 +369,7 @@ plic_attach(device_t dev)
csr_set(sie, SIE_SEIE);
- return (intr_pic_claim_root(sc->dev, xref, plic_intr, sc, 0));
+ return (intr_pic_claim_root(sc->dev, xref, plic_intr, sc));
}
static void
diff --git a/sys/sys/intr.h b/sys/sys/intr.h
index e91a661673d0..bdc693e6cb60 100644
--- a/sys/sys/intr.h
+++ b/sys/sys/intr.h
@@ -110,7 +110,7 @@ u_int intr_irq_next_cpu(u_int current_cpu, cpuset_t *cpumask);
struct intr_pic *intr_pic_register(device_t, intptr_t);
int intr_pic_deregister(device_t, intptr_t);
-int intr_pic_claim_root(device_t, intptr_t, intr_irq_filter_t *, void *, u_int);
+int intr_pic_claim_root(device_t, intptr_t, intr_irq_filter_t *, void *);
int intr_pic_add_handler(device_t, struct intr_pic *,
intr_child_irq_filter_t *, void *, uintptr_t, uintptr_t);
bool intr_is_per_cpu(struct resource *);