From owner-svn-src-head@freebsd.org Tue Jun 7 09:03:28 2016 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C0F27B6A965; Tue, 7 Jun 2016 09:03:28 +0000 (UTC) (envelope-from skra@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 7A2F21312; Tue, 7 Jun 2016 09:03:28 +0000 (UTC) (envelope-from skra@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u5793RGw081952; Tue, 7 Jun 2016 09:03:27 GMT (envelope-from skra@FreeBSD.org) Received: (from skra@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u5793Rt4081950; Tue, 7 Jun 2016 09:03:27 GMT (envelope-from skra@FreeBSD.org) Message-Id: <201606070903.u5793Rt4081950@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: skra set sender to skra@FreeBSD.org using -f From: Svatopluk Kraus Date: Tue, 7 Jun 2016 09:03:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r301543 - in head/sys: kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jun 2016 09:03:28 -0000 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 #include @@ -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);