Page MenuHomeFreeBSD

D32504.id117837.diff
No OneTemporary

D32504.id117837.diff

diff --git a/sys/arm/mv/gpio.c b/sys/arm/mv/gpio.c
--- a/sys/arm/mv/gpio.c
+++ b/sys/arm/mv/gpio.c
@@ -428,7 +428,7 @@
} else if (sc->gpio_setup[pin].gp_flags & MV_GPIO_IN_IRQ_DOUBLE_EDGE)
mv_gpio_double_edge_init(dev, pin);
MV_GPIO_UNLOCK();
- error = intr_event_create(&event, (void *)s, 0, pin,
+ error = intr_event_create(&event, (void *)s, 0,
(void (*)(void *))mv_gpio_intr_mask,
(void (*)(void *))mv_gpio_intr_unmask,
(void (*)(void *))mv_gpio_int_ack,
diff --git a/sys/compat/linuxkpi/common/include/linux/hardirq.h b/sys/compat/linuxkpi/common/include/linux/hardirq.h
--- a/sys/compat/linuxkpi/common/include/linux/hardirq.h
+++ b/sys/compat/linuxkpi/common/include/linux/hardirq.h
@@ -38,7 +38,9 @@
#include <sys/bus.h>
#include <sys/interrupt.h>
-#define synchronize_irq(irq) _intr_drain((irq))
+#include <machine/intr.h>
+
+#define synchronize_irq(irq) _intr_drain(intr2event(intrtab_lookup((irq))))
/*
* FIXME: In the i915 driver's `intel_engine_cs.c` file,
diff --git a/sys/compat/linuxkpi/common/include/linux/interrupt.h b/sys/compat/linuxkpi/common/include/linux/interrupt.h
--- a/sys/compat/linuxkpi/common/include/linux/interrupt.h
+++ b/sys/compat/linuxkpi/common/include/linux/interrupt.h
@@ -40,6 +40,8 @@
#include <sys/param.h>
#include <sys/interrupt.h>
+#include <machine/intr.h>
+
typedef irqreturn_t (*irq_handler_t)(int, void *);
#define IRQF_SHARED RF_SHAREABLE
@@ -133,11 +135,12 @@
irq_set_affinity_hint(int vector, const cpumask_t *mask)
{
int error;
+ struct intr_event *event = intr2event(intrtab_lookup(vector));
if (mask != NULL)
- error = intr_setaffinity(vector, CPU_WHICH_IRQ, __DECONST(cpumask_t *, mask));
+ error = intr_setaffinity(event, CPU_WHICH_IRQ, __DECONST(cpumask_t *, mask));
else
- error = intr_setaffinity(vector, CPU_WHICH_IRQ, cpuset_root);
+ error = intr_setaffinity(event, CPU_WHICH_IRQ, cpuset_root);
return (-error);
}
diff --git a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
--- a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
+++ b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
@@ -35,6 +35,7 @@
#include <sys/eventhandler.h>
#include <sys/sockio.h>
#include <machine/atomic.h>
+#include <machine/intr.h>
#include <net/debugnet.h>
@@ -2549,7 +2550,8 @@
CPU_ZERO(&cpuset);
CPU_SET(cpu, &cpuset);
- intr_setaffinity(irq, CPU_WHICH_INTRHANDLER, &cpuset);
+ intr_setaffinity(intr2event(intrtab_lookup(irq)),
+ CPU_WHICH_INTRHANDLER, &cpuset);
}
}
diff --git a/sys/kern/kern_cpuset.c b/sys/kern/kern_cpuset.c
--- a/sys/kern/kern_cpuset.c
+++ b/sys/kern/kern_cpuset.c
@@ -75,6 +75,8 @@
#include <vm/vm_phys.h>
#include <vm/vm_pagequeue.h>
+#include <machine/intr.h>
+
#ifdef DDB
#include <ddb/ddb.h>
#endif /* DDB */
@@ -2030,7 +2032,8 @@
case CPU_WHICH_IRQ:
case CPU_WHICH_INTRHANDLER:
case CPU_WHICH_ITHREAD:
- error = intr_getaffinity(id, which, mask);
+ error = intr_getaffinity(intr2event(intrtab_lookup(id)),
+ which, mask);
break;
case CPU_WHICH_DOMAIN:
if (id < 0 || id >= MAXMEMDOM)
@@ -2191,7 +2194,8 @@
case CPU_WHICH_IRQ:
case CPU_WHICH_INTRHANDLER:
case CPU_WHICH_ITHREAD:
- error = intr_setaffinity(id, which, mask);
+ error = intr_setaffinity(intr2event(intrtab_lookup(id)),
+ which, mask);
break;
default:
error = EINVAL;
diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c
--- a/sys/kern/kern_intr.c
+++ b/sys/kern/kern_intr.c
@@ -283,7 +283,7 @@
}
int
-intr_event_create(struct intr_event **event, void *source, int flags, int irq,
+intr_event_create(struct intr_event **event, void *source, int flags,
void (*pre_ithread)(void *), void (*post_ithread)(void *),
void (*post_filter)(void *), int (*assign_cpu)(void *, int),
const char *fmt, ...)
@@ -302,7 +302,6 @@
ie->ie_post_filter = post_filter;
ie->ie_assign_cpu = assign_cpu;
ie->ie_flags = flags;
- ie->ie_irq = irq;
ie->ie_cpu = NOCPU;
/* ->ie_stray and ->ie_intrcnt[] handled by M_ZERO */
CK_SLIST_INIT(&ie->ie_handlers);
@@ -439,25 +438,9 @@
return (ENODEV);
}
-static struct intr_event *
-intr_lookup(int irq)
-{
- struct intr_event *ie;
-
- sx_slock(&event_lock);
- TAILQ_FOREACH(ie, &event_list, ie_list)
- if (ie->ie_irq == irq &&
- (ie->ie_flags & IE_SOFT) == 0 &&
- CK_SLIST_FIRST(&ie->ie_handlers) != NULL)
- break;
- sx_sunlock(&event_lock);
- return (ie);
-}
-
int
-intr_setaffinity(int irq, int mode, void *m)
+intr_setaffinity(struct intr_event *ie, int mode, void *m)
{
- struct intr_event *ie;
cpuset_t *mask;
int cpu, n;
@@ -476,7 +459,6 @@
cpu = n;
}
}
- ie = intr_lookup(irq);
if (ie == NULL)
return (ESRCH);
switch (mode) {
@@ -492,9 +474,8 @@
}
int
-intr_getaffinity(int irq, int mode, void *m)
+intr_getaffinity(struct intr_event *ie, int mode, void *m)
{
- struct intr_event *ie;
struct thread *td;
struct proc *p;
cpuset_t *mask;
@@ -502,7 +483,6 @@
int error;
mask = m;
- ie = intr_lookup(irq);
if (ie == NULL)
return (ESRCH);
@@ -828,13 +808,11 @@
* Do not use in BSD code.
*/
void
-_intr_drain(int irq)
+_intr_drain(struct intr_event *ie)
{
- struct intr_event *ie;
struct intr_thread *ithd;
struct thread *td;
- ie = intr_lookup(irq);
if (ie == NULL)
return;
if (ie->ie_thread == NULL)
@@ -1083,8 +1061,8 @@
if (!(ie->ie_flags & IE_SOFT))
return (EINVAL);
} else {
- error = intr_event_create(&ie, NULL, IE_SOFT, 0,
- NULL, NULL, NULL, swi_assign_cpu, "swi%d:", pri);
+ error = intr_event_create(&ie, NULL, IE_SOFT, NULL, NULL, NULL,
+ swi_assign_cpu, "swi%d:", pri);
if (error)
return (error);
if (eventp != NULL)
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
@@ -414,6 +414,18 @@
return (intr_event_destroy(isrc->isrc_event));
}
+/*
+ * Lookup an interrupt source by number.
+ */
+interrupt_t *
+intrtab_lookup(u_int irq)
+{
+
+ if (irq >= intr_nirq)
+ return (NULL);
+ return (irq_sources[irq]);
+}
+
#ifdef SMP
/*
* A support function for a PIC to decide if provided ISRC should be inited
@@ -559,7 +571,7 @@
if (isrc->isrc_flags & INTR_ISRCF_PPI)
flags |= IE_MULTIPROC;
- error = intr_event_create(&ie, isrc, flags, isrc->isrc_irq,
+ error = intr_event_create(&ie, isrc, flags,
intr_isrc_pre_ithread, intr_isrc_post_ithread, intr_isrc_post_filter,
intr_isrc_assign_cpu, "%s:", isrc->isrc_name);
if (error)
diff --git a/sys/powerpc/include/intr.h b/sys/powerpc/include/intr.h
--- a/sys/powerpc/include/intr.h
+++ b/sys/powerpc/include/intr.h
@@ -30,6 +30,16 @@
#ifndef _MACHINE_INTR_MACHDEP_H_
#define _MACHINE_INTR_MACHDEP_H_
+/* FreeBSD standard interrupt controller interface */
+
+typedef struct powerpc_intr interrupt_t;
+
+extern interrupt_t *intrtab_lookup(u_int intr);
+
+extern struct intr_event *intr2event(interrupt_t *intr);
+
+/* FreeBSD standard interrupt controller interface */
+
#define INTR_VECTORS 256
#define MAX_PICS 32
diff --git a/sys/powerpc/powerpc/intr_machdep.c b/sys/powerpc/powerpc/intr_machdep.c
--- a/sys/powerpc/powerpc/intr_machdep.c
+++ b/sys/powerpc/powerpc/intr_machdep.c
@@ -274,6 +274,30 @@
return (i);
}
+interrupt_t *
+intrtab_lookup(u_int intr)
+{
+ struct powerpc_intr *i;
+ int vector;
+
+ for (vector = 0; vector < nvectors; vector++) {
+ i = powerpc_intrs[vector];
+ if (i != NULL && i->irq == intr)
+ return (i);
+ }
+
+ return (NULL);
+}
+
+struct intr_event *
+intr2event(interrupt_t *intr)
+{
+
+ if (intr == NULL)
+ return (NULL);
+ return (intr->event);
+}
+
static int
powerpc_map_irq(struct powerpc_intr *i)
{
@@ -511,7 +535,7 @@
return (ENOMEM);
if (i->event == NULL) {
- error = intr_event_create(&i->event, (void *)i, 0, irq,
+ error = intr_event_create(&i->event, (void *)i, 0,
powerpc_intr_pre_ithread, powerpc_intr_post_ithread,
powerpc_intr_eoi, powerpc_assign_intr_cpu, "irq%u:", irq);
if (error)
diff --git a/sys/riscv/riscv/intr_machdep.c b/sys/riscv/riscv/intr_machdep.c
--- a/sys/riscv/riscv/intr_machdep.c
+++ b/sys/riscv/riscv/intr_machdep.c
@@ -126,7 +126,7 @@
isrc = &isrcs[irq].isrc;
if (isrc->isrc_event == NULL) {
- error = intr_event_create(&isrc->isrc_event, isrc, 0, irq,
+ error = intr_event_create(&isrc->isrc_event, isrc, 0,
riscv_mask_irq, riscv_unmask_irq, NULL, NULL, "int%d", irq);
if (error)
return (error);
diff --git a/sys/sys/interrupt.h b/sys/sys/interrupt.h
--- a/sys/sys/interrupt.h
+++ b/sys/sys/interrupt.h
@@ -130,7 +130,6 @@
int ie_count; /* Loop counter. */
int ie_warncnt; /* Rate-check interrupt storm warns. */
struct timeval ie_warntm;
- int ie_irq; /* Physical irq number if !SOFT. */
int ie_cpu; /* CPU this event is bound to. */
volatile int ie_phase; /* Switched to establish a barrier. */
volatile int ie_active[2]; /* Filters in ISR context. */
@@ -181,10 +180,10 @@
int intr_event_bind_ithread_cpuset(struct intr_event *ie,
struct _cpuset *mask);
int intr_event_create(struct intr_event **event, void *source,
- int flags, int irq, void (*pre_ithread)(void *),
+ int flags, void (*pre_ithread)(void *),
void (*post_ithread)(void *), void (*post_filter)(void *),
int (*assign_cpu)(void *, int), const char *fmt, ...)
- __printflike(9, 10);
+ __printflike(8, 9);
int intr_event_describe_handler(struct intr_event *ie, void *cookie,
const char *descr);
int intr_event_destroy(struct intr_event *ie);
@@ -192,10 +191,10 @@
int intr_event_remove_handler(void *cookie);
int intr_event_suspend_handler(void *cookie);
int intr_event_resume_handler(void *cookie);
-int intr_getaffinity(int irq, int mode, void *mask);
+int intr_getaffinity(struct intr_event *ie, int mode, void *mask);
void *intr_handler_source(void *cookie);
-int intr_setaffinity(int irq, int mode, void *mask);
-void _intr_drain(int irq); /* LinuxKPI only. */
+int intr_setaffinity(struct intr_event *ie, int mode, void *mask);
+void _intr_drain(struct intr_event *ie); /* LinuxKPI only. */
int swi_add(struct intr_event **eventp, const char *name,
driver_intr_t handler, void *arg, int pri, enum intr_type flags,
void **cookiep);
diff --git a/sys/sys/intr.h b/sys/sys/intr.h
--- a/sys/sys/intr.h
+++ b/sys/sys/intr.h
@@ -37,6 +37,16 @@
#include <sys/interrupt.h>
+/* FreeBSD standard interrupt controller interface */
+
+typedef struct intr_irqsrc interrupt_t;
+
+extern interrupt_t *intrtab_lookup(u_int irq);
+
+#define intr2event(intr) ((intr) == NULL ? NULL : (intr)->isrc_event)
+
+/* FreeBSD standard interrupt controller interface */
+
#define INTR_IRQ_INVALID 0xFFFFFFFF
enum intr_map_data_type {
@@ -60,7 +70,7 @@
struct intr_map_data_msi {
struct intr_map_data hdr;
- struct intr_irqsrc *isrc;
+ interrupt_t *isrc;
};
#ifdef notyet
@@ -95,15 +105,15 @@
};
/* Intr interface for PIC. */
-int intr_isrc_deregister(struct intr_irqsrc *);
-int intr_isrc_register(struct intr_irqsrc *, device_t, u_int, const char *, ...)
+int intr_isrc_deregister(interrupt_t *);
+int intr_isrc_register(interrupt_t *, device_t, u_int, const char *, ...)
__printflike(4, 5);
#ifdef SMP
-bool intr_isrc_init_on_cpu(struct intr_irqsrc *isrc, u_int cpu);
+bool intr_isrc_init_on_cpu(interrupt_t *isrc, u_int cpu);
#endif
-int intr_isrc_dispatch(struct intr_irqsrc *, struct trapframe *);
+int intr_isrc_dispatch(interrupt_t *, struct trapframe *);
u_int intr_irq_next_cpu(u_int current_cpu, cpuset_t *cpumask);
struct intr_pic *intr_pic_register(device_t, intptr_t);
diff --git a/sys/x86/include/intr.h b/sys/x86/include/intr.h
--- a/sys/x86/include/intr.h
+++ b/sys/x86/include/intr.h
@@ -32,6 +32,16 @@
#ifdef _KERNEL
+/* FreeBSD standard interrupt controller interface */
+
+typedef struct intsrc interrupt_t;
+
+extern interrupt_t *intrtab_lookup(u_int irq);
+
+#define intr2event(intr) ((intr) == NULL ? NULL : (intr)->is_event)
+
+/* FreeBSD standard interrupt controller interface */
+
/*
* Values used in determining the allocation of IRQ values among
* different types of I/O interrupts. These values are used as
@@ -146,11 +156,10 @@
int intr_config_intr(int vector, enum intr_trigger trig,
enum intr_polarity pol);
int intr_describe(u_int vector, void *ih, const char *descr);
-void intr_execute_handlers(struct intsrc *isrc, struct trapframe *frame);
+void intr_execute_handlers(interrupt_t *isrc, struct trapframe *frame);
u_int intr_next_cpu(int domain);
-struct intsrc *intr_lookup_source(int vector);
int intr_register_pic(struct pic *pic);
-int intr_register_source(struct intsrc *isrc);
+int intr_register_source(interrupt_t *isrc);
int intr_remove_handler(void *cookie);
void intr_resume(bool suspend_cancelled);
void intr_suspend(void);
diff --git a/sys/x86/isa/atpic.c b/sys/x86/isa/atpic.c
--- a/sys/x86/isa/atpic.c
+++ b/sys/x86/isa/atpic.c
@@ -228,7 +228,7 @@
if (ap != &atpics[MASTER])
return;
for (i = 0; i < NUM_ISA_IRQS; i++)
- if (intr_lookup_source(i) != NULL)
+ if (intrtab_lookup(i) != NULL)
return;
/* Loop through all interrupt sources and add them. */
diff --git a/sys/x86/isa/clock.c b/sys/x86/isa/clock.c
--- a/sys/x86/isa/clock.c
+++ b/sys/x86/isa/clock.c
@@ -581,7 +581,7 @@
if (!(sc->port_res = bus_alloc_resource(dev, SYS_RES_IOPORT,
&sc->port_rid, IO_TIMER1, IO_TIMER1 + 3, 4, RF_ACTIVE)))
device_printf(dev,"Warning: Couldn't map I/O.\n");
- i8254_intsrc = intr_lookup_source(0);
+ i8254_intsrc = intrtab_lookup(0);
if (i8254_intsrc != NULL)
i8254_pending = i8254_intsrc->is_pic->pic_source_pending;
resource_int_value(device_get_name(dev), device_get_unit(dev),
diff --git a/sys/x86/x86/intr_machdep.c b/sys/x86/x86/intr_machdep.c
--- a/sys/x86/x86/intr_machdep.c
+++ b/sys/x86/x86/intr_machdep.c
@@ -216,7 +216,7 @@
num_io_irqs));
if (interrupt_sources[vector] != NULL)
return (EEXIST);
- error = intr_event_create(&isrc->is_event, isrc, 0, vector,
+ error = intr_event_create(&isrc->is_event, isrc, 0,
intr_disable_src, (mask_fn)isrc->is_pic->pic_enable_source,
(mask_fn)isrc->is_pic->pic_eoi_source, intr_assign_cpu, "irq%d:",
vector);
@@ -234,11 +234,11 @@
return (0);
}
-struct intsrc *
-intr_lookup_source(int vector)
+interrupt_t *
+intrtab_lookup(u_int vector)
{
- if (vector < 0 || vector >= num_io_irqs)
+ if (vector >= num_io_irqs)
return (NULL);
return (interrupt_sources[vector]);
}
@@ -251,7 +251,7 @@
struct intsrc *isrc;
int error;
- isrc = intr_lookup_source(vector);
+ isrc = intrtab_lookup(vector);
if (isrc == NULL)
return (EINVAL);
error = intr_event_add_handler(isrc->is_event, name, filter, handler,
@@ -294,7 +294,7 @@
{
struct intsrc *isrc;
- isrc = intr_lookup_source(vector);
+ isrc = intrtab_lookup(vector);
if (isrc == NULL)
return (EINVAL);
return (isrc->is_pic->pic_config_intr(isrc, trig, pol));
@@ -485,7 +485,7 @@
{
struct intsrc *isrc;
- isrc = intr_lookup_source(vector);
+ isrc = intrtab_lookup(vector);
if (isrc == NULL)
return (EINVAL);
return (intr_event_describe_handler(isrc->is_event, ih, descr));
@@ -588,7 +588,7 @@
{
struct intsrc *isrc;
- isrc = intr_lookup_source(vector);
+ isrc = intrtab_lookup(vector);
if (isrc == NULL)
return (EINVAL);
return (intr_event_bind(isrc->is_event, cpu));
diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c
--- a/sys/x86/x86/local_apic.c
+++ b/sys/x86/x86/local_apic.c
@@ -1298,8 +1298,7 @@
kmsan_mark(frame, sizeof(*frame), KMSAN_STATE_INITED);
trap_check_kstack();
- isrc = intr_lookup_source(apic_idt_to_irq(PCPU_GET(apic_id),
- vector));
+ isrc = intrtab_lookup(apic_idt_to_irq(PCPU_GET(apic_id), vector));
intr_execute_handlers(isrc, frame);
}
@@ -1743,7 +1742,7 @@
if (irq == IRQ_TIMER)
db_printf("lapic timer\n");
else if (irq < num_io_irqs) {
- isrc = intr_lookup_source(irq);
+ isrc = intrtab_lookup(irq);
if (isrc == NULL || verbose == 0)
db_printf("IRQ %u\n", irq);
else
diff --git a/sys/x86/x86/msi.c b/sys/x86/x86/msi.c
--- a/sys/x86/x86/msi.c
+++ b/sys/x86/x86/msi.c
@@ -285,7 +285,7 @@
msi->msi_msix ? "MSI-X" : "MSI", msi->msi_irq,
msi->msi_cpu, msi->msi_vector);
for (i = 1; i < msi->msi_count; i++) {
- sib = (struct msi_intsrc *)intr_lookup_source(msi->msi_irqs[i]);
+ sib = (struct msi_intsrc *)intrtab_lookup(msi->msi_irqs[i]);
sib->msi_cpu = apic_id;
sib->msi_vector = vector + i;
if (sib->msi_intsrc.is_handlers > 0)
@@ -306,7 +306,7 @@
apic_disable_vector(old_id, old_vector);
apic_free_vector(old_id, old_vector, msi->msi_irq);
for (i = 1; i < msi->msi_count; i++) {
- sib = (struct msi_intsrc *)intr_lookup_source(msi->msi_irqs[i]);
+ sib = (struct msi_intsrc *)intrtab_lookup(msi->msi_irqs[i]);
if (sib->msi_intsrc.is_handlers > 0)
apic_disable_vector(old_id, old_vector + i);
apic_free_vector(old_id, old_vector + i, msi->msi_irqs[i]);
@@ -405,7 +405,7 @@
/* Try to find 'count' free IRQs. */
cnt = 0;
for (i = first_msi_irq; i < first_msi_irq + num_msi_irqs; i++) {
- msi = (struct msi_intsrc *)intr_lookup_source(i);
+ msi = (struct msi_intsrc *)intrtab_lookup(i);
/* End of allocated sources, so break. */
if (msi == NULL)
@@ -463,15 +463,15 @@
return (error);
}
for (i = 0; i < count; i++) {
- msi = (struct msi_intsrc *)intr_lookup_source(irqs[i]);
+ msi = (struct msi_intsrc *)intrtab_lookup(irqs[i]);
msi->msi_remap_cookie = cookies[i];
}
#endif
/* Assign IDT vectors and make these messages owned by 'dev'. */
- fsrc = (struct msi_intsrc *)intr_lookup_source(irqs[0]);
+ fsrc = (struct msi_intsrc *)intrtab_lookup(irqs[0]);
for (i = 0; i < count; i++) {
- msi = (struct msi_intsrc *)intr_lookup_source(irqs[i]);
+ msi = (struct msi_intsrc *)intrtab_lookup(irqs[i]);
msi->msi_cpu = cpu;
msi->msi_dev = dev;
msi->msi_vector = vector + i;
@@ -499,7 +499,7 @@
int i;
mtx_lock(&msi_lock);
- first = (struct msi_intsrc *)intr_lookup_source(irqs[0]);
+ first = (struct msi_intsrc *)intrtab_lookup(irqs[0]);
if (first == NULL) {
mtx_unlock(&msi_lock);
return (ENOENT);
@@ -529,7 +529,7 @@
/* Clear all the extra messages in the group. */
for (i = 1; i < count; i++) {
- msi = (struct msi_intsrc *)intr_lookup_source(irqs[i]);
+ msi = (struct msi_intsrc *)intrtab_lookup(irqs[i]);
KASSERT(msi->msi_first == first, ("message not in group"));
KASSERT(msi->msi_dev == first->msi_dev, ("owner mismatch"));
#ifdef IOMMU
@@ -571,7 +571,7 @@
#endif
mtx_lock(&msi_lock);
- msi = (struct msi_intsrc *)intr_lookup_source(irq);
+ msi = (struct msi_intsrc *)intrtab_lookup(irq);
if (msi == NULL) {
mtx_unlock(&msi_lock);
return (ENOENT);
@@ -602,7 +602,7 @@
i < first_msi_irq + num_msi_irqs; i++) {
if (i == msi->msi_irq)
continue;
- msi1 = (struct msi_intsrc *)intr_lookup_source(i);
+ msi1 = (struct msi_intsrc *)intrtab_lookup(i);
if (!msi1->msi_msix && msi1->msi_first == msi) {
mtx_unlock(&msi_lock);
iommu_map_msi_intr(msi1->msi_dev,
@@ -650,7 +650,7 @@
/* Find a free IRQ. */
for (i = first_msi_irq; i < first_msi_irq + num_msi_irqs; i++) {
- msi = (struct msi_intsrc *)intr_lookup_source(i);
+ msi = (struct msi_intsrc *)intrtab_lookup(i);
/* End of allocated sources, so break. */
if (msi == NULL)
@@ -725,7 +725,7 @@
struct msi_intsrc *msi;
mtx_lock(&msi_lock);
- msi = (struct msi_intsrc *)intr_lookup_source(irq);
+ msi = (struct msi_intsrc *)intrtab_lookup(irq);
if (msi == NULL) {
mtx_unlock(&msi_lock);
return (ENOENT);
diff --git a/sys/x86/x86/nexus.c b/sys/x86/x86/nexus.c
--- a/sys/x86/x86/nexus.c
+++ b/sys/x86/x86/nexus.c
@@ -238,7 +238,7 @@
* resource manager.
*/
for (irq = 0; irq < num_io_irqs; irq++)
- if (intr_lookup_source(irq) != NULL)
+ if (intrtab_lookup(irq) != NULL)
if (rman_manage_region(&irq_rman, irq, irq) != 0)
panic("nexus_init_resources irq_rman add");
diff --git a/sys/x86/xen/xen_arch_intr.c b/sys/x86/xen/xen_arch_intr.c
--- a/sys/x86/xen/xen_arch_intr.c
+++ b/sys/x86/xen/xen_arch_intr.c
@@ -350,7 +350,7 @@
vector = first_evtchn_irq + xen_intr_auto_vector_count;
xen_intr_auto_vector_count++;
- KASSERT((intr_lookup_source(vector) == NULL),
+ KASSERT((intrtab_lookup(vector) == NULL),
("Trying to use an already allocated vector"));
mtx_unlock(&xen_intr_x86_lock);

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 18, 4:37 AM (4 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29880062
Default Alt Text
D32504.id117837.diff (19 KB)

Event Timeline