Author: skra
Date: Tue Jun  7 09:03:27 2016
New Revision: 301543
URL: https://svnweb.freebsd.org/changeset/base/301543

Log:
  Remove temporary solution for storing interrupt mapping data as
  it's not needed after r301451 and follow-ups r301453, r301539.
  
  This makes INTRNG clean of all additions related to various buses.

Modified:
  head/sys/kern/subr_intr.c
  head/sys/sys/intr.h

Modified: head/sys/kern/subr_intr.c
==============================================================================
--- head/sys/kern/subr_intr.c   Tue Jun  7 07:48:36 2016        (r301542)
+++ head/sys/kern/subr_intr.c   Tue Jun  7 09:03:27 2016        (r301543)
@@ -35,10 +35,8 @@ __FBSDID("$FreeBSD$");
  *        - to complete things for removable PICs
  */
 
-#include "opt_acpi.h"
 #include "opt_ddb.h"
 #include "opt_hwpmc_hooks.h"
-#include "opt_platform.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -123,37 +121,6 @@ static struct mtx isrc_table_lock;
 static struct intr_irqsrc *irq_sources[NIRQ];
 u_int irq_next_free;
 
-/*
- *  XXX - All stuff around struct intr_dev_data is considered as temporary
- *  until better place for storing struct intr_map_data will be find.
- *
- *  For now, there are two global interrupt numbers spaces:
- *  <0, NIRQ)                      ... interrupts without config data
- *                                     managed in irq_sources[]
- *  IRQ_DDATA_BASE + <0, 2 * NIRQ) ... interrupts with config data
- *                                     managed in intr_ddata_tab[]
- *
- *  Read intr_ddata_lookup() to see how these spaces are worked with.
- *  Note that each interrupt number from second space duplicates some number
- *  from first space at this moment. An interrupt number from first space can
- *  be duplicated even multiple times in second space.
- */
-struct intr_dev_data {
-       device_t                idd_dev;
-       intptr_t                idd_xref;
-       u_int                   idd_irq;
-       struct intr_map_data *  idd_data;
-       struct intr_irqsrc *    idd_isrc;
-};
-
-static struct intr_dev_data *intr_ddata_tab[2 * NIRQ];
-#if 0
-static u_int intr_ddata_first_unused;
-#endif
-
-#define IRQ_DDATA_BASE 10000
-CTASSERT(IRQ_DDATA_BASE > nitems(irq_sources));
-
 #ifdef SMP
 static boolean_t irq_assign_cpu = FALSE;
 #endif
@@ -536,94 +503,6 @@ intr_isrc_init_on_cpu(struct intr_irqsrc
 }
 #endif
 
-#if 0
-static struct intr_dev_data *
-intr_ddata_alloc(u_int extsize)
-{
-       struct intr_dev_data *ddata;
-       size_t size;
-
-       size = sizeof(*ddata);
-       ddata = malloc(size + extsize, M_INTRNG, M_WAITOK | M_ZERO);
-
-       mtx_lock(&isrc_table_lock);
-       if (intr_ddata_first_unused >= nitems(intr_ddata_tab)) {
-               mtx_unlock(&isrc_table_lock);
-               free(ddata, M_INTRNG);
-               return (NULL);
-       }
-       intr_ddata_tab[intr_ddata_first_unused] = ddata;
-       ddata->idd_irq = IRQ_DDATA_BASE + intr_ddata_first_unused++;
-       mtx_unlock(&isrc_table_lock);
-
-       ddata->idd_data = (struct intr_map_data *)((uintptr_t)ddata + size);
-       return (ddata);
-}
-#endif
-
-static struct intr_irqsrc *
-intr_ddata_lookup(u_int irq, struct intr_map_data **datap)
-{
-       int error;
-       struct intr_irqsrc *isrc;
-       struct intr_dev_data *ddata;
-
-       isrc = isrc_lookup(irq);
-       if (isrc != NULL) {
-               if (datap != NULL)
-                       *datap = NULL;
-               return (isrc);
-       }
-
-       if (irq < IRQ_DDATA_BASE)
-               return (NULL);
-
-       irq -= IRQ_DDATA_BASE;
-       if (irq >= nitems(intr_ddata_tab))
-               return (NULL);
-
-       ddata = intr_ddata_tab[irq];
-       if (ddata->idd_isrc == NULL) {
-               error = intr_map_irq(ddata->idd_dev, ddata->idd_xref,
-                   ddata->idd_data, &irq);
-               if (error != 0)
-                       return (NULL);
-               ddata->idd_isrc = isrc_lookup(irq);
-       }
-       if (datap != NULL)
-               *datap = ddata->idd_data;
-       return (ddata->idd_isrc);
-}
-
-#ifdef DEV_ACPI
-/*
- *  Map interrupt source according to ACPI info into framework. If such mapping
- *  does not exist, create it. Return unique interrupt number (resource handle)
- *  associated with mapped interrupt source.
- */
-u_int
-intr_acpi_map_irq(device_t dev, u_int irq, enum intr_polarity pol,
-    enum intr_trigger trig)
-{
-       struct intr_map_data_acpi *daa;
-       struct intr_dev_data *ddata;
-
-       ddata = intr_ddata_alloc(sizeof(struct intr_map_data_acpi));
-       if (ddata == NULL)
-               return (INTR_IRQ_INVALID);      /* no space left */
-
-       ddata->idd_dev = dev;
-       ddata->idd_data->type = INTR_MAP_DATA_ACPI;
-
-       daa = (struct intr_map_data_acpi *)ddata->idd_data;
-       daa->irq = irq;
-       daa->pol = pol;
-       daa->trig = trig;
-
-       return (ddata->idd_irq);
-}
-#endif
-
 #ifdef INTR_SOLO
 /*
  *  Setup filter into interrupt source.
@@ -1054,14 +933,11 @@ intr_alloc_irq(device_t dev, struct reso
        KASSERT(rman_get_start(res) == rman_get_end(res),
            ("%s: more interrupts in resource", __func__));
 
-       data = rman_get_virtual(res);
-       if (data == NULL)
-               isrc = intr_ddata_lookup(rman_get_start(res), &data);
-       else
-               isrc = isrc_lookup(rman_get_start(res));
+       isrc = isrc_lookup(rman_get_start(res));
        if (isrc == NULL)
                return (EINVAL);
 
+       data = rman_get_virtual(res);
        return (PIC_ALLOC_INTR(isrc->isrc_dev, isrc, res, data));
 }
 
@@ -1074,14 +950,11 @@ intr_release_irq(device_t dev, struct re
        KASSERT(rman_get_start(res) == rman_get_end(res),
            ("%s: more interrupts in resource", __func__));
 
-       data = rman_get_virtual(res);
-       if (data == NULL)
-               isrc = intr_ddata_lookup(rman_get_start(res), &data);
-       else
-               isrc = isrc_lookup(rman_get_start(res));
+       isrc = isrc_lookup(rman_get_start(res));
        if (isrc == NULL)
                return (EINVAL);
 
+       data = rman_get_virtual(res);
        return (PIC_RELEASE_INTR(isrc->isrc_dev, isrc, res, data));
 }
 
@@ -1097,14 +970,11 @@ intr_setup_irq(device_t dev, struct reso
        KASSERT(rman_get_start(res) == rman_get_end(res),
            ("%s: more interrupts in resource", __func__));
 
-       data = rman_get_virtual(res);
-       if (data == NULL)
-               isrc = intr_ddata_lookup(rman_get_start(res), &data);
-       else
-               isrc = isrc_lookup(rman_get_start(res));
+       isrc = isrc_lookup(rman_get_start(res));
        if (isrc == NULL)
                return (EINVAL);
 
+       data = rman_get_virtual(res);
        name = device_get_nameunit(dev);
 
 #ifdef INTR_SOLO
@@ -1161,14 +1031,12 @@ intr_teardown_irq(device_t dev, struct r
        KASSERT(rman_get_start(res) == rman_get_end(res),
            ("%s: more interrupts in resource", __func__));
 
-       data = rman_get_virtual(res);
-       if (data == NULL)
-               isrc = intr_ddata_lookup(rman_get_start(res), &data);
-       else
-               isrc = isrc_lookup(rman_get_start(res));
+       isrc = isrc_lookup(rman_get_start(res));
        if (isrc == NULL || isrc->isrc_handlers == 0)
                return (EINVAL);
 
+       data = rman_get_virtual(res);
+
 #ifdef INTR_SOLO
        if (isrc->isrc_filter != NULL) {
                if (isrc != cookie)
@@ -1211,7 +1079,7 @@ intr_describe_irq(device_t dev, struct r
        KASSERT(rman_get_start(res) == rman_get_end(res),
            ("%s: more interrupts in resource", __func__));
 
-       isrc = intr_ddata_lookup(rman_get_start(res), NULL);
+       isrc = isrc_lookup(rman_get_start(res));
        if (isrc == NULL || isrc->isrc_handlers == 0)
                return (EINVAL);
 #ifdef INTR_SOLO
@@ -1243,7 +1111,7 @@ intr_bind_irq(device_t dev, struct resou
        KASSERT(rman_get_start(res) == rman_get_end(res),
            ("%s: more interrupts in resource", __func__));
 
-       isrc = intr_ddata_lookup(rman_get_start(res), NULL);
+       isrc = isrc_lookup(rman_get_start(res));
        if (isrc == NULL || isrc->isrc_handlers == 0)
                return (EINVAL);
 #ifdef INTR_SOLO

Modified: head/sys/sys/intr.h
==============================================================================
--- head/sys/sys/intr.h Tue Jun  7 07:48:36 2016        (r301542)
+++ head/sys/sys/intr.h Tue Jun  7 09:03:27 2016        (r301543)
@@ -34,15 +34,6 @@
 
 #define        INTR_IRQ_INVALID        0xFFFFFFFF
 
-#ifdef DEV_ACPI
-struct intr_map_data_acpi {
-       struct intr_map_data    hdr;
-       u_int                   irq;
-       enum intr_polarity      pol;
-       enum intr_trigger       trig;
-};
-#endif
-
 #ifdef notyet
 #define        INTR_SOLO       INTR_MD1
 typedef int intr_irq_filter_t(void *arg, struct trapframe *tf);
@@ -117,11 +108,6 @@ int intr_map_msi(device_t, device_t, int
 int intr_alloc_msix(device_t, device_t, intptr_t, int *);
 int intr_release_msix(device_t, device_t, intptr_t, int);
 
-#ifdef DEV_ACPI
-u_int intr_acpi_map_irq(device_t, u_int, enum intr_polarity,
-    enum intr_trigger);
-#endif
-
 #ifdef SMP
 int intr_bind_irq(device_t, struct resource *, int);
 
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to