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/arm64/xen/xen_arch_intr.c b/sys/arm64/xen/xen_arch_intr.c --- a/sys/arm64/xen/xen_arch_intr.c +++ b/sys/arm64/xen/xen_arch_intr.c @@ -89,7 +89,6 @@ return (NULL); error = intr_event_create(&isrc->xi_arch, isrc, 0, - port /* event channel number */, xen_intr_arch_disable_source /* mask */, xen_intr_arch_enable_source /* unmask */, xen_intr_arch_eoi_source /* EOI */, 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,6 +38,8 @@ #include #include -#define synchronize_irq(irq) _intr_drain((irq)) +#include + +#define synchronize_irq(irq) _intr_drain(intr2event(intr_lookup((irq)))) #endif /* _LINUXKPI_LINUX_HARDIRQ_H_ */ 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 #include +#include + typedef irqreturn_t (*irq_handler_t)(int, void *); #define IRQF_SHARED RF_SHAREABLE @@ -114,11 +116,12 @@ irq_set_affinity_hint(int vector, cpumask_t *mask) { int error; + struct intr_event *event = intr2event(intr_lookup(vector)); if (mask != NULL) - error = intr_setaffinity(vector, CPU_WHICH_IRQ, mask); + error = intr_setaffinity(event, CPU_WHICH_IRQ, 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 #include #include +#include #include @@ -2549,7 +2550,8 @@ CPU_ZERO(&cpuset); CPU_SET(cpu, &cpuset); - intr_setaffinity(irq, CPU_WHICH_INTRHANDLER, &cpuset); + intr_setaffinity(intr2event(intr_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 #include +#include + #ifdef DDB #include #endif /* DDB */ @@ -1955,7 +1957,8 @@ case CPU_WHICH_IRQ: case CPU_WHICH_INTRHANDLER: case CPU_WHICH_ITHREAD: - error = intr_getaffinity(id, which, mask); + error = intr_getaffinity(intr2event(intr_lookup(id)), + which, mask); break; case CPU_WHICH_DOMAIN: if (id < 0 || id >= MAXMEMDOM) @@ -2108,7 +2111,8 @@ case CPU_WHICH_IRQ: case CPU_WHICH_INTRHANDLER: case CPU_WHICH_ITHREAD: - error = intr_setaffinity(id, which, mask); + error = intr_setaffinity(intr2event(intr_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 @@ -279,7 +279,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, ...) @@ -297,7 +297,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; CK_SLIST_INIT(&ie->ie_handlers); mtx_init(&ie->ie_lock, "intr event", NULL, MTX_DEF); @@ -430,25 +429,9 @@ return (ENODEV); } -static struct intr_event * -intr_lookup(int irq) -{ - struct intr_event *ie; - - mtx_lock(&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; - mtx_unlock(&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; @@ -467,7 +450,6 @@ cpu = n; } } - ie = intr_lookup(irq); if (ie == NULL) return (ESRCH); switch (mode) { @@ -483,9 +465,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; @@ -493,7 +474,6 @@ int error; mask = m; - ie = intr_lookup(irq); if (ie == NULL) return (ESRCH); @@ -813,13 +793,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) @@ -1068,8 +1046,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 @@ -510,6 +510,18 @@ return (error); } +/* + * Lookup an interrupt source by number. + */ +interrupt_t * +intr_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 @@ -649,8 +661,8 @@ struct intr_event *ie; int error; - error = intr_event_create(&ie, isrc, 0, isrc->isrc_irq, - intr_isrc_pre_ithread, intr_isrc_post_ithread, intr_isrc_post_filter, + error = intr_event_create(&ie, isrc, 0, intr_isrc_pre_ithread, + intr_isrc_post_ithread, intr_isrc_post_filter, intr_isrc_assign_cpu, "%s:", isrc->isrc_name); if (error) return (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 *intr_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 @@ -226,7 +226,7 @@ extern void kdb_backtrace(void); static struct powerpc_intr * -intr_lookup(u_int irq) +intr_create(u_int irq) { char intrname[16]; struct powerpc_intr *i, *iscan; @@ -292,6 +292,30 @@ return (i); } +interrupt_t * +intr_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) { @@ -485,7 +509,7 @@ * Some subterfuge: disable late EOI and mark this * as an IPI to the dispatch layer. */ - i = intr_lookup(MAP_IRQ(piclist[n].node, + i = intr_create(MAP_IRQ(piclist[n].node, piclist[n].irqs)); i->event->ie_post_filter = NULL; i->ipi = 1; @@ -524,12 +548,12 @@ struct powerpc_intr *i; int error, enable = 0; - i = intr_lookup(irq); + i = intr_create(irq); if (i == NULL) 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) @@ -587,7 +611,7 @@ { struct powerpc_intr *i; - i = intr_lookup(irq); + i = intr_create(irq); if (i == NULL) return (ENOMEM); @@ -600,7 +624,7 @@ { struct powerpc_intr *i; - i = intr_lookup(irq); + i = intr_create(irq); if (i == NULL) return (ENOMEM); @@ -622,7 +646,7 @@ { struct powerpc_intr *i; - i = intr_lookup(irq); + i = intr_create(irq); if (i == NULL) return (ENOMEM); @@ -681,7 +705,7 @@ { struct powerpc_intr *i; - i = intr_lookup(irq); + i = intr_create(irq); if (i == NULL || i->pic == NULL) return; @@ -693,7 +717,7 @@ { struct powerpc_intr *i; - i = intr_lookup(irq); + i = intr_create(irq); if (i == NULL || i->pic == NULL) return; 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 @@ -123,7 +123,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. */ @@ -178,11 +177,10 @@ struct _cpuset; 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 *), - void (*post_ithread)(void *), void (*post_filter)(void *), - int (*assign_cpu)(void *, int), const char *fmt, ...) - __printflike(9, 10); +int 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, ...) __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); @@ -190,10 +188,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 +/* FreeBSD standard interrupt controller interface */ + +typedef struct intr_irqsrc interrupt_t; + +extern interrupt_t *intr_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 @@ -99,15 +109,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 -u_long intr_isrc_dispatch(struct intr_irqsrc *, struct trapframe *); +u_long 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 *intr_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 @@ -79,18 +89,18 @@ */ struct pic { void (*pic_register_sources)(struct pic *); - void (*pic_enable_source)(struct intsrc *); - void (*pic_disable_source)(struct intsrc *, int); - void (*pic_eoi_source)(struct intsrc *); - void (*pic_enable_intr)(struct intsrc *); - void (*pic_disable_intr)(struct intsrc *); - int (*pic_source_pending)(struct intsrc *); + void (*pic_enable_source)(interrupt_t *); + void (*pic_disable_source)(interrupt_t *, int); + void (*pic_eoi_source)(interrupt_t *); + void (*pic_enable_intr)(interrupt_t *); + void (*pic_disable_intr)(interrupt_t *); + int (*pic_source_pending)(interrupt_t *); void (*pic_suspend)(struct pic *); void (*pic_resume)(struct pic *, bool suspend_cancelled); - int (*pic_config_intr)(struct intsrc *, enum intr_trigger, + int (*pic_config_intr)(interrupt_t *, enum intr_trigger, enum intr_polarity); - int (*pic_assign_cpu)(struct intsrc *, u_int apic_id); - void (*pic_reprogram_pin)(struct intsrc *); + int (*pic_assign_cpu)(interrupt_t *, u_int apic_id); + void (*pic_reprogram_pin)(interrupt_t *); TAILQ_ENTRY(pic) pics; }; @@ -139,21 +149,20 @@ #ifdef SMP void intr_add_cpu(u_int cpu); #endif -int intr_add_handler(const char *name, struct intsrc *isrc, +int intr_add_handler(const char *name, interrupt_t *isrc, driver_filter_t filter, driver_intr_t handler, void *arg, enum intr_type flags, void **cookiep, int domain); #ifdef SMP -int intr_bind(struct intsrc *isrc, u_char cpu); +int intr_bind(interrupt_t *isrc, u_char cpu); #endif -int intr_config_intr(struct intsrc *isrc, enum intr_trigger trig, +int intr_config_intr(interrupt_t *isrc, enum intr_trigger trig, enum intr_polarity pol); -int intr_describe(struct intsrc *isrc, void *ih, const char *descr); -u_long intr_execute_handlers(u_int vector, struct intsrc *isrc, +int intr_describe(interrupt_t *isrc, void *ih, const char *descr); +u_long intr_execute_handlers(u_int vector, 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(u_int vector, struct intsrc *isrc); +int intr_register_source(u_int vector, 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 @@ -233,7 +233,7 @@ if (ap != &atpics[MASTER]) return; for (i = 0; i < NUM_ISA_IRQS; i++) - if (intr_lookup_source(i) != NULL) + if (intr_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 @@ -585,7 +585,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 = intr_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 @@ -233,7 +233,7 @@ } 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); @@ -252,11 +252,11 @@ return (0); } -struct intsrc * -intr_lookup_source(int vector) +interrupt_t * +intr_lookup(u_int vector) { - if (vector < 0 || vector >= num_io_irqs) + if (vector >= num_io_irqs) return (NULL); return (interrupt_sources[vector]); } 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 @@ -1303,7 +1303,7 @@ kmsan_mark(frame, sizeof(*frame), KMSAN_STATE_INITED); irq = apic_idt_to_irq(PCPU_GET(apic_id), vector); - isrc = intr_lookup_source(irq); + isrc = intr_lookup(irq); intr_execute_handlers(irq, isrc, frame); } @@ -1743,7 +1743,7 @@ if (irq == IRQ_TIMER) db_printf("lapic timer\n"); else if (irq < num_io_irqs) { - isrc = intr_lookup_source(irq); + isrc = intr_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 @@ -279,7 +279,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 *)intr_lookup(msi->msi_irqs[i]); sib->msi_cpu = apic_id; sib->msi_vector = vector + i; if (sib->msi_intsrc.is_handlers > 0) @@ -300,7 +300,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 *)intr_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]); @@ -399,7 +399,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 *)intr_lookup(i); /* End of allocated sources, so break. */ if (msi == NULL) @@ -457,15 +457,15 @@ return (error); } for (i = 0; i < count; i++) { - msi = (struct msi_intsrc *)intr_lookup_source(irqs[i]); + msi = (struct msi_intsrc *)intr_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 *)intr_lookup(irqs[0]); for (i = 0; i < count; i++) { - msi = (struct msi_intsrc *)intr_lookup_source(irqs[i]); + msi = (struct msi_intsrc *)intr_lookup(irqs[i]); msi->msi_cpu = cpu; msi->msi_dev = dev; msi->msi_vector = vector + i; @@ -493,7 +493,7 @@ int i; mtx_lock(&msi_lock); - first = (struct msi_intsrc *)intr_lookup_source(irqs[0]); + first = (struct msi_intsrc *)intr_lookup(irqs[0]); if (first == NULL) { mtx_unlock(&msi_lock); return (ENOENT); @@ -523,7 +523,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 *)intr_lookup(irqs[i]); KASSERT(msi->msi_first == first, ("message not in group")); KASSERT(msi->msi_dev == first->msi_dev, ("owner mismatch")); #ifdef IOMMU @@ -565,7 +565,7 @@ #endif mtx_lock(&msi_lock); - msi = (struct msi_intsrc *)intr_lookup_source(irq); + msi = (struct msi_intsrc *)intr_lookup(irq); if (msi == NULL) { mtx_unlock(&msi_lock); return (ENOENT); @@ -596,7 +596,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 *)intr_lookup(i); if (!msi1->msi_msix && msi1->msi_first == msi) { mtx_unlock(&msi_lock); iommu_map_msi_intr(msi1->msi_dev, @@ -644,7 +644,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 *)intr_lookup(i); /* End of allocated sources, so break. */ if (msi == NULL) @@ -719,7 +719,7 @@ struct msi_intsrc *msi; mtx_lock(&msi_lock); - msi = (struct msi_intsrc *)intr_lookup_source(irq); + msi = (struct msi_intsrc *)intr_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 @@ -242,7 +242,7 @@ * resource manager. */ for (irq = 0; irq < num_io_irqs; irq++) - if (intr_lookup_source(irq) != NULL) + if (intr_lookup(irq) != NULL) if (rman_manage_region(&irq_rman, irq, irq) != 0) panic("nexus_init_resources irq_rman add"); @@ -600,7 +600,7 @@ if (bus_get_domain(child, &domain) != 0) domain = 0; - isrc = intr_lookup_source(rman_get_start(irq)); + isrc = intr_lookup(rman_get_start(irq)); if (isrc == NULL) return (EINVAL); error = intr_add_handler(device_get_nameunit(child), isrc, @@ -640,7 +640,7 @@ { struct intsrc *isrc; - isrc = intr_lookup_source(rman_get_start(irq)); + isrc = intr_lookup(rman_get_start(irq)); if (isrc == NULL) return (EINVAL); return (intr_bind(isrc, cpu)); @@ -653,7 +653,7 @@ { struct intsrc *isrc; - isrc = intr_lookup_source(irq); + isrc = intr_lookup(irq); if (isrc == NULL) return (EINVAL); return (intr_config_intr(isrc, trig, pol)); @@ -665,7 +665,7 @@ { struct intsrc *isrc; - isrc = intr_lookup_source(rman_get_start(irq)); + isrc = intr_lookup(rman_get_start(irq)); if (isrc == NULL) return (EINVAL); return (intr_describe(isrc, cookie, descr)); 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 @@ -310,7 +310,7 @@ u_int vector; vector = first_evtchn_irq + isrc_idx; - isrc = (struct xenisrc *)intr_lookup_source(vector); + isrc = (struct xenisrc *)intr_lookup(vector); /* * Since intr_register_source() must be called while unlocked, * isrc == NULL *will* occur, though very infrequently. @@ -366,7 +366,7 @@ vector = first_evtchn_irq + xen_intr_auto_vector_count; xen_intr_auto_vector_count++; - KASSERT((intr_lookup_source(vector) == NULL), + KASSERT((intr_lookup(vector) == NULL), ("Trying to use an already allocated vector")); mtx_unlock(&xen_intr_x86_lock);