Index: sys/arm/mv/gpio.c =================================================================== --- sys/arm/mv/gpio.c +++ sys/arm/mv/gpio.c @@ -531,9 +531,6 @@ MV_GPIO_ASSERT_LOCKED(); -#ifdef INTR_SOLO - isrc.isrc_filter = NULL; -#endif isrc.isrc_event = sc->gpio_events[pin]; if (isrc.isrc_event == NULL || Index: sys/kern/subr_intr.c =================================================================== --- sys/kern/subr_intr.c +++ sys/kern/subr_intr.c @@ -367,15 +367,6 @@ isrc_increment_count(isrc); -#ifdef INTR_SOLO - if (isrc->isrc_filter != NULL) { - int error; - error = isrc->isrc_filter(isrc->isrc_arg, tf); - PIC_POST_FILTER(isrc->isrc_dev, isrc); - if (error == FILTER_HANDLED) - return (0); - } else -#endif if (isrc->isrc_event != NULL) { if (intr_event_handle(isrc->isrc_event, tf) == 0) return (0); @@ -544,37 +535,6 @@ } #endif -#ifdef INTR_SOLO -/* - * Setup filter into interrupt source. - */ -static int -iscr_setup_filter(struct intr_irqsrc *isrc, const char *name, - intr_irq_filter_t *filter, void *arg, void **cookiep) -{ - - if (filter == NULL) - return (EINVAL); - - mtx_lock(&isrc_table_lock); - /* - * Make sure that we do not mix the two ways - * how we handle interrupt sources. - */ - if (isrc->isrc_filter != NULL || isrc->isrc_event != NULL) { - mtx_unlock(&isrc_table_lock); - return (EBUSY); - } - isrc->isrc_filter = filter; - isrc->isrc_arg = arg; - isrc_update_name(isrc, name); - mtx_unlock(&isrc_table_lock); - - *cookiep = isrc; - return (0); -} -#endif - /* * Interrupt source pre_ithread method for MI interrupt framework. */ @@ -665,14 +625,9 @@ mtx_lock(&isrc_table_lock); /* - * Make sure that we do not mix the two ways - * how we handle interrupt sources. Let contested event wins. + * Let contested event win. */ -#ifdef INTR_SOLO - if (isrc->isrc_filter != NULL || isrc->isrc_event != NULL) { -#else if (isrc->isrc_event != NULL) { -#endif mtx_unlock(&isrc_table_lock); intr_event_destroy(ie); return (isrc->isrc_event != NULL ? EBUSY : 0); @@ -1066,34 +1021,8 @@ data = rman_get_virtual(res); name = device_get_nameunit(dev); -#ifdef INTR_SOLO - /* - * Standard handling is done through MI interrupt framework. However, - * some interrupts could request solely own special handling. This - * non standard handling can be used for interrupt controllers without - * handler (filter only), so in case that interrupt controllers are - * chained, MI interrupt framework is called only in leaf controller. - * - * Note that root interrupt controller routine is served as well, - * however in intr_irq_handler(), i.e. main system dispatch routine. - */ - if (flags & INTR_SOLO && hand != NULL) { - debugf("irq %u cannot solo on %s\n", irq, name); - return (EINVAL); - } - - if (flags & INTR_SOLO) { - error = iscr_setup_filter(isrc, name, (intr_irq_filter_t *)filt, - arg, cookiep); - debugf("irq %u setup filter error %d on %s\n", isrc->isrc_irq, error, - name); - } else -#endif - { - error = isrc_add_handler(isrc, name, filt, hand, arg, flags, - cookiep); - debugf("irq %u add handler error %d on %s\n", isrc->isrc_irq, error, name); - } + error = isrc_add_handler(isrc, name, filt, hand, arg, flags, cookiep); + debugf("irq %u add handler error %d on %s\n", isrc->isrc_irq, error, name); if (error != 0) return (error); @@ -1128,22 +1057,6 @@ data = rman_get_virtual(res); -#ifdef INTR_SOLO - if (isrc->isrc_filter != NULL) { - if (isrc != cookie) - return (EINVAL); - - mtx_lock(&isrc_table_lock); - isrc->isrc_filter = NULL; - isrc->isrc_arg = NULL; - isrc->isrc_handlers = 0; - PIC_DISABLE_INTR(isrc->isrc_dev, isrc); - PIC_TEARDOWN_INTR(isrc->isrc_dev, isrc, res, data); - isrc_update_name(isrc, NULL); - mtx_unlock(&isrc_table_lock); - return (0); - } -#endif if (isrc != intr_handler_source(cookie)) return (EINVAL); @@ -1175,17 +1088,7 @@ isrc = intr_map_get_isrc(res_id); if (isrc == NULL || isrc->isrc_handlers == 0) return (EINVAL); -#ifdef INTR_SOLO - if (isrc->isrc_filter != NULL) { - if (isrc != cookie) - return (EINVAL); - mtx_lock(&isrc_table_lock); - isrc_update_name(isrc, descr); - mtx_unlock(&isrc_table_lock); - return (0); - } -#endif error = intr_event_describe_handler(isrc->isrc_event, cookie, descr); if (error == 0) { mtx_lock(&isrc_table_lock); @@ -1209,10 +1112,6 @@ isrc = intr_map_get_isrc(res_id); if (isrc == NULL || isrc->isrc_handlers == 0) return (EINVAL); -#ifdef INTR_SOLO - if (isrc->isrc_filter != NULL) - return (intr_isrc_assign_cpu(isrc, cpu)); -#endif return (intr_event_bind(isrc->isrc_event, cpu)); } Index: sys/sys/intr.h =================================================================== --- sys/sys/intr.h +++ sys/sys/intr.h @@ -63,12 +63,7 @@ struct intr_irqsrc *isrc; }; -#ifdef notyet -#define INTR_SOLO INTR_MD1 -typedef int intr_irq_filter_t(void *arg, struct trapframe *tf); -#else typedef int intr_irq_filter_t(void *arg); -#endif typedef int intr_child_irq_filter_t(void *arg, uintptr_t irq); #define INTR_ISRC_NAMELEN (MAXCOMLEN + 1) @@ -90,10 +85,6 @@ u_long * isrc_count; u_int isrc_handlers; struct intr_event * isrc_event; -#ifdef INTR_SOLO - intr_irq_filter_t * isrc_filter; - void * isrc_arg; -#endif /* Used by MSI interrupts to store the iommu details */ void * isrc_iommu; };