From owner-svn-src-all@freebsd.org Wed May 18 15:05:47 2016 Return-Path: Delivered-To: svn-src-all@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 CABB6B416B0; Wed, 18 May 2016 15:05:47 +0000 (UTC) (envelope-from andrew@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 9844E1BB7; Wed, 18 May 2016 15:05:47 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4IF5kXa018851; Wed, 18 May 2016 15:05:46 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4IF5ixZ018827; Wed, 18 May 2016 15:05:44 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201605181505.u4IF5ixZ018827@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Wed, 18 May 2016 15:05:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r300149 - in head/sys: arm/allwinner arm/allwinner/a10 arm/arm arm/broadcom/bcm2835 arm/mv arm/nvidia arm/ti arm/ti/omap4 arm64/arm64 kern mips/mediatek mips/mips sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 May 2016 15:05:47 -0000 Author: andrew Date: Wed May 18 15:05:44 2016 New Revision: 300149 URL: https://svnweb.freebsd.org/changeset/base/300149 Log: Return the struct intr_pic pointer from intr_pic_register. This will be needed in later changes where we may not be able to lock the pic list lock to perform a lookup, e.g. from within interrupt context. Obtained from: ABT Systems Ltd Sponsored by: The FreeBSD Foundation Modified: head/sys/arm/allwinner/a10/a10_intc.c head/sys/arm/allwinner/aw_nmi.c head/sys/arm/arm/gic.c head/sys/arm/broadcom/bcm2835/bcm2835_gpio.c head/sys/arm/broadcom/bcm2835/bcm2835_intr.c head/sys/arm/broadcom/bcm2835/bcm2836.c head/sys/arm/mv/mpic.c head/sys/arm/nvidia/tegra_gpio.c head/sys/arm/nvidia/tegra_lic.c head/sys/arm/ti/aintc.c head/sys/arm/ti/omap4/omap4_wugen.c head/sys/arm/ti/ti_gpio.c head/sys/arm64/arm64/gic_v3_fdt.c head/sys/kern/subr_intr.c head/sys/mips/mediatek/mtk_gpio_v1.c head/sys/mips/mediatek/mtk_gpio_v2.c head/sys/mips/mediatek/mtk_intr_gic.c head/sys/mips/mediatek/mtk_intr_v1.c head/sys/mips/mediatek/mtk_intr_v2.c head/sys/mips/mediatek/mtk_pcie.c head/sys/mips/mips/mips_pic.c head/sys/sys/intr.h Modified: head/sys/arm/allwinner/a10/a10_intc.c ============================================================================== --- head/sys/arm/allwinner/a10/a10_intc.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/arm/allwinner/a10/a10_intc.c Wed May 18 15:05:44 2016 (r300149) @@ -250,6 +250,7 @@ a10_intr(void *arg) static int a10_intr_pic_attach(struct a10_aintc_softc *sc) { + struct intr_pic *pic; int error; uint32_t irq; const char *name; @@ -266,9 +267,9 @@ a10_intr_pic_attach(struct a10_aintc_sof } xref = OF_xref_from_node(ofw_bus_get_node(sc->sc_dev)); - error = intr_pic_register(sc->sc_dev, xref); - if (error != 0) - return (error); + pic = intr_pic_register(sc->sc_dev, xref); + if (pic == NULL) + return (ENXIO); return (intr_pic_claim_root(sc->sc_dev, xref, a10_intr, sc, 0)); } Modified: head/sys/arm/allwinner/aw_nmi.c ============================================================================== --- head/sys/arm/allwinner/aw_nmi.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/arm/allwinner/aw_nmi.c Wed May 18 15:05:44 2016 (r300149) @@ -362,7 +362,7 @@ aw_nmi_attach(device_t dev) device_get_nameunit(sc->dev), sc->intr.irq) != 0) goto error; - if (intr_pic_register(dev, (intptr_t)xref) != 0) { + if (intr_pic_register(dev, (intptr_t)xref) == NULL) { device_printf(dev, "could not register pic\n"); goto error; } Modified: head/sys/arm/arm/gic.c ============================================================================== --- head/sys/arm/arm/gic.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/arm/arm/gic.c Wed May 18 15:05:44 2016 (r300149) @@ -711,7 +711,7 @@ arm_gic_attach(device_t dev) * Now, when everything is initialized, it's right time to * register interrupt controller to interrupt framefork. */ - if (intr_pic_register(dev, xref) != 0) { + if (intr_pic_register(dev, xref) == NULL) { device_printf(dev, "could not register PIC\n"); goto cleanup; } Modified: head/sys/arm/broadcom/bcm2835/bcm2835_gpio.c ============================================================================== --- head/sys/arm/broadcom/bcm2835/bcm2835_gpio.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/arm/broadcom/bcm2835/bcm2835_gpio.c Wed May 18 15:05:44 2016 (r300149) @@ -1045,8 +1045,11 @@ bcm_gpio_pic_attach(struct bcm_gpio_soft if (error != 0) return (error); /* XXX deregister ISRCs */ } - return (intr_pic_register(sc->sc_dev, - OF_xref_from_node(ofw_bus_get_node(sc->sc_dev)))); + if (intr_pic_register(sc->sc_dev, + OF_xref_from_node(ofw_bus_get_node(sc->sc_dev))) == NULL) + return (ENXIO); + + return (0); } static int Modified: head/sys/arm/broadcom/bcm2835/bcm2835_intr.c ============================================================================== --- head/sys/arm/broadcom/bcm2835/bcm2835_intr.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/arm/broadcom/bcm2835/bcm2835_intr.c Wed May 18 15:05:44 2016 (r300149) @@ -341,7 +341,10 @@ bcm_intc_pic_register(struct bcm_intc_so if (error != 0) return (error); } - return (intr_pic_register(sc->sc_dev, xref)); + if (intr_pic_register(sc->sc_dev, xref) == NULL) + return (ENXIO); + + return (0); } #endif Modified: head/sys/arm/broadcom/bcm2835/bcm2836.c ============================================================================== --- head/sys/arm/broadcom/bcm2835/bcm2836.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/arm/broadcom/bcm2835/bcm2836.c Wed May 18 15:05:44 2016 (r300149) @@ -598,6 +598,7 @@ static int bcm_lintc_pic_attach(struct bcm_lintc_softc *sc) { struct bcm_lintc_irqsrc *bisrcs; + struct intr_pic *pic; int error; u_int flags; uint32_t irq; @@ -653,9 +654,9 @@ bcm_lintc_pic_attach(struct bcm_lintc_so } xref = OF_xref_from_node(ofw_bus_get_node(sc->bls_dev)); - error = intr_pic_register(sc->bls_dev, xref); - if (error != 0) - return (error); + pic = intr_pic_register(sc->bls_dev, xref); + if (pic == NULL) + return (ENXIO); return (intr_pic_claim_root(sc->bls_dev, xref, bcm_lintc_intr, sc, 0)); } Modified: head/sys/arm/mv/mpic.c ============================================================================== --- head/sys/arm/mv/mpic.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/arm/mv/mpic.c Wed May 18 15:05:44 2016 (r300149) @@ -274,7 +274,7 @@ mv_mpic_attach(device_t dev) bus_release_resources(dev, mv_mpic_spec, sc->mpic_res); return (ENXIO); } - if (intr_pic_register(dev, OF_xref_from_device(dev)) != 0) { + if (intr_pic_register(dev, OF_xref_from_device(dev)) == NULL) { device_printf(dev, "could not register PIC\n"); bus_release_resources(dev, mv_mpic_spec, sc->mpic_res); return (ENXIO); Modified: head/sys/arm/nvidia/tegra_gpio.c ============================================================================== --- head/sys/arm/nvidia/tegra_gpio.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/arm/nvidia/tegra_gpio.c Wed May 18 15:05:44 2016 (r300149) @@ -452,8 +452,11 @@ tegra_gpio_pic_attach(struct tegra_gpio_ if (error != 0) return (error); /* XXX deregister ISRCs */ } - return (intr_pic_register(sc->dev, - OF_xref_from_node(ofw_bus_get_node(sc->dev)))); + if (intr_pic_register(sc->dev, + OF_xref_from_node(ofw_bus_get_node(sc->dev))) == NULL) + return (ENXIO); + + return (0); } static int Modified: head/sys/arm/nvidia/tegra_lic.c ============================================================================== --- head/sys/arm/nvidia/tegra_lic.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/arm/nvidia/tegra_lic.c Wed May 18 15:05:44 2016 (r300149) @@ -233,7 +233,7 @@ tegra_lic_attach(device_t dev) } - if (intr_pic_register(dev, OF_xref_from_node(node)) != 0) { + if (intr_pic_register(dev, OF_xref_from_node(node)) == NULL) { device_printf(dev, "Cannot register PIC\n"); goto fail; } Modified: head/sys/arm/ti/aintc.c ============================================================================== --- head/sys/arm/ti/aintc.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/arm/ti/aintc.c Wed May 18 15:05:44 2016 (r300149) @@ -220,6 +220,7 @@ ti_aintc_post_filter(device_t dev, struc static int ti_aintc_pic_attach(struct ti_aintc_softc *sc) { + struct intr_pic *pic; int error; uint32_t irq; const char *name; @@ -236,9 +237,9 @@ ti_aintc_pic_attach(struct ti_aintc_soft } xref = OF_xref_from_node(ofw_bus_get_node(sc->sc_dev)); - error = intr_pic_register(sc->sc_dev, xref); - if (error != 0) - return (error); + pic = intr_pic_register(sc->sc_dev, xref); + if (pic == NULL) + return (ENXIO); return (intr_pic_claim_root(sc->sc_dev, xref, ti_aintc_intr, sc, 0)); } Modified: head/sys/arm/ti/omap4/omap4_wugen.c ============================================================================== --- head/sys/arm/ti/omap4/omap4_wugen.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/arm/ti/omap4/omap4_wugen.c Wed May 18 15:05:44 2016 (r300149) @@ -210,7 +210,7 @@ omap4_wugen_attach(device_t dev) return (ENXIO); } - if (intr_pic_register(dev, OF_xref_from_node(node)) != 0) { + if (intr_pic_register(dev, OF_xref_from_node(node)) == NULL) { device_printf(dev, "can't register PIC\n"); goto fail; } Modified: head/sys/arm/ti/ti_gpio.c ============================================================================== --- head/sys/arm/ti/ti_gpio.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/arm/ti/ti_gpio.c Wed May 18 15:05:44 2016 (r300149) @@ -904,8 +904,11 @@ ti_gpio_pic_attach(struct ti_gpio_softc if (error != 0) return (error); /* XXX deregister ISRCs */ } - return (intr_pic_register(sc->sc_dev, - OF_xref_from_node(ofw_bus_get_node(sc->sc_dev)))); + if (intr_pic_register(sc->sc_dev, + OF_xref_from_node(ofw_bus_get_node(sc->sc_dev))) == NULL) + return (ENXIO); + + return (0); } static int Modified: head/sys/arm64/arm64/gic_v3_fdt.c ============================================================================== --- head/sys/arm64/arm64/gic_v3_fdt.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/arm64/arm64/gic_v3_fdt.c Wed May 18 15:05:44 2016 (r300149) @@ -139,7 +139,7 @@ gic_v3_fdt_attach(device_t dev) #ifdef INTRNG xref = OF_xref_from_node(ofw_bus_get_node(dev)); - if (intr_pic_register(dev, xref) != 0) { + if (intr_pic_register(dev, xref) == NULL) { device_printf(dev, "could not register PIC\n"); goto error; } @@ -172,7 +172,7 @@ error: /* Failure so free resources */ gic_v3_detach(dev); - return (err); + return (ENXIO); } /* OFW bus interface */ Modified: head/sys/kern/subr_intr.c ============================================================================== --- head/sys/kern/subr_intr.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/kern/subr_intr.c Wed May 18 15:05:44 2016 (r300149) @@ -911,22 +911,22 @@ pic_destroy(device_t dev, intptr_t xref) /* * Register interrupt controller. */ -int +struct intr_pic * intr_pic_register(device_t dev, intptr_t xref) { struct intr_pic *pic; if (dev == NULL) - return (EINVAL); + return (NULL); pic = pic_create(dev, xref); if (pic == NULL) - return (ENOMEM); + return (NULL); pic->pic_flags |= FLAG_PIC; debugf("PIC %p registered for %s \n", pic, device_get_nameunit(dev), dev, xref); - return (0); + return (pic); } /* Modified: head/sys/mips/mediatek/mtk_gpio_v1.c ============================================================================== --- head/sys/mips/mediatek/mtk_gpio_v1.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/mips/mediatek/mtk_gpio_v1.c Wed May 18 15:05:44 2016 (r300149) @@ -308,7 +308,7 @@ mtk_gpio_attach(device_t dev) goto fail; } - if (intr_pic_register(dev, OF_xref_from_node(node)) != 0) { + if (intr_pic_register(dev, OF_xref_from_node(node)) == NULL) { device_printf(dev, "could not register PIC\n"); goto fail; } Modified: head/sys/mips/mediatek/mtk_gpio_v2.c ============================================================================== --- head/sys/mips/mediatek/mtk_gpio_v2.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/mips/mediatek/mtk_gpio_v2.c Wed May 18 15:05:44 2016 (r300149) @@ -299,7 +299,7 @@ mtk_gpio_attach(device_t dev) goto fail; } - if (intr_pic_register(dev, OF_xref_from_node(node)) != 0) { + if (intr_pic_register(dev, OF_xref_from_node(node)) == NULL) { device_printf(dev, "could not register PIC\n"); goto fail; } Modified: head/sys/mips/mediatek/mtk_intr_gic.c ============================================================================== --- head/sys/mips/mediatek/mtk_intr_gic.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/mips/mediatek/mtk_intr_gic.c Wed May 18 15:05:44 2016 (r300149) @@ -213,7 +213,7 @@ mtk_gic_attach(device_t dev) * Now, when everything is initialized, it's right time to * register interrupt controller to interrupt framefork. */ - if (intr_pic_register(dev, xref) != 0) { + if (intr_pic_register(dev, xref) == NULL) { device_printf(dev, "could not register PIC\n"); goto cleanup; } Modified: head/sys/mips/mediatek/mtk_intr_v1.c ============================================================================== --- head/sys/mips/mediatek/mtk_intr_v1.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/mips/mediatek/mtk_intr_v1.c Wed May 18 15:05:44 2016 (r300149) @@ -201,7 +201,7 @@ mtk_pic_attach(device_t dev) * Now, when everything is initialized, it's right time to * register interrupt controller to interrupt framefork. */ - if (intr_pic_register(dev, xref) != 0) { + if (intr_pic_register(dev, xref) == NULL) { device_printf(dev, "could not register PIC\n"); goto cleanup; } Modified: head/sys/mips/mediatek/mtk_intr_v2.c ============================================================================== --- head/sys/mips/mediatek/mtk_intr_v2.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/mips/mediatek/mtk_intr_v2.c Wed May 18 15:05:44 2016 (r300149) @@ -196,7 +196,7 @@ mtk_pic_attach(device_t dev) * Now, when everything is initialized, it's right time to * register interrupt controller to interrupt framefork. */ - if (intr_pic_register(dev, xref) != 0) { + if (intr_pic_register(dev, xref) == NULL) { device_printf(dev, "could not register PIC\n"); goto cleanup; } Modified: head/sys/mips/mediatek/mtk_pcie.c ============================================================================== --- head/sys/mips/mediatek/mtk_pcie.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/mips/mediatek/mtk_pcie.c Wed May 18 15:05:44 2016 (r300149) @@ -319,7 +319,7 @@ mtk_pci_attach(device_t dev) } /* Register ourselves as an interrupt controller */ - if (intr_pic_register(dev, xref) != 0) { + if (intr_pic_register(dev, xref) == NULL) { device_printf(dev, "could not register PIC\n"); goto cleanup_rman; } Modified: head/sys/mips/mips/mips_pic.c ============================================================================== --- head/sys/mips/mips/mips_pic.c Wed May 18 14:43:17 2016 (r300148) +++ head/sys/mips/mips/mips_pic.c Wed May 18 15:05:44 2016 (r300149) @@ -223,7 +223,7 @@ mips_pic_attach(device_t dev) * Now, when everything is initialized, it's right time to * register interrupt controller to interrupt framefork. */ - if (intr_pic_register(dev, xref) != 0) { + if (intr_pic_register(dev, xref) == NULL) { device_printf(dev, "could not register PIC\n"); goto cleanup; } Modified: head/sys/sys/intr.h ============================================================================== --- head/sys/sys/intr.h Wed May 18 14:43:17 2016 (r300148) +++ head/sys/sys/intr.h Wed May 18 15:05:44 2016 (r300149) @@ -110,7 +110,7 @@ bool intr_isrc_init_on_cpu(struct intr_i int intr_isrc_dispatch(struct intr_irqsrc *, struct trapframe *); u_int intr_irq_next_cpu(u_int current_cpu, cpuset_t *cpumask); -int intr_pic_register(device_t, intptr_t); +struct intr_pic *intr_pic_register(device_t, intptr_t); int intr_pic_deregister(device_t, intptr_t); int intr_pic_claim_root(device_t, intptr_t, intr_irq_filter_t *, void *, u_int);