Module Name: src Committed By: bad Date: Sun Nov 17 17:16:25 UTC 2013
Modified Files: src/distrib/sets/lists/modules: md.evbppc mi src/sys/dev/pci: ubsec.c ubsecvar.h src/sys/modules: Makefile Added Files: src/sys/modules/ubsec: Makefile ubsec.ioconf Log Message: Make ubsec(4) loadable as kmod. To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.35 src/distrib/sets/lists/modules/md.evbppc cvs rdiff -u -r1.57 -r1.58 src/distrib/sets/lists/modules/mi cvs rdiff -u -r1.31 -r1.32 src/sys/dev/pci/ubsec.c cvs rdiff -u -r1.5 -r1.6 src/sys/dev/pci/ubsecvar.h cvs rdiff -u -r1.124 -r1.125 src/sys/modules/Makefile cvs rdiff -u -r0 -r1.1 src/sys/modules/ubsec/Makefile \ src/sys/modules/ubsec/ubsec.ioconf Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/lists/modules/md.evbppc diff -u src/distrib/sets/lists/modules/md.evbppc:1.34 src/distrib/sets/lists/modules/md.evbppc:1.35 --- src/distrib/sets/lists/modules/md.evbppc:1.34 Tue Oct 29 20:11:52 2013 +++ src/distrib/sets/lists/modules/md.evbppc Sun Nov 17 17:16:24 2013 @@ -1,4 +1,4 @@ -# $NetBSD: md.evbppc,v 1.34 2013/10/29 20:11:52 mbalmer Exp $ +# $NetBSD: md.evbppc,v 1.35 2013/11/17 17:16:24 bad Exp $ ./stand/powerpc-4xx base-kernel-modules kmod,compatmodules ./stand/powerpc-4xx/@OSRELEASE@ base-kernel-modules kmod,compatmodules ./stand/powerpc-4xx/@OSRELEASE@/modules base-kernel-modules kmod,compatmodules @@ -188,6 +188,8 @@ ./stand/powerpc-4xx/@OSRELEASE@/modules/tprof/tprof.kmod base-kernel-modules kmod,compatmodules ./stand/powerpc-4xx/@OSRELEASE@/modules/uatp base-kernel-modules kmod,compatmodules ./stand/powerpc-4xx/@OSRELEASE@/modules/uatp/uatp.kmod base-kernel-modules kmod,compatmodules +./stand/powerpc-4xx/@OSRELEASE@/modules/ubsec base-kernel-modules kmod,compatmodules +./stand/powerpc-4xx/@OSRELEASE@/modules/ubsec/ubsec.kmod base-kernel-modules kmod,compatmodules ./stand/powerpc-4xx/@OSRELEASE@/modules/udf base-kernel-modules kmod,compatmodules ./stand/powerpc-4xx/@OSRELEASE@/modules/udf/udf.kmod base-kernel-modules kmod,compatmodules ./stand/powerpc-4xx/@OSRELEASE@/modules/umap base-kernel-modules kmod,compatmodules @@ -393,6 +395,8 @@ ./stand/powerpc-booke/@OSRELEASE@/modules/tprof/tprof.kmod base-kernel-modules kmod,compatmodules ./stand/powerpc-booke/@OSRELEASE@/modules/uatp base-kernel-modules kmod,compatmodules ./stand/powerpc-booke/@OSRELEASE@/modules/uatp/uatp.kmod base-kernel-modules kmod,compatmodules +./stand/powerpc-booke/@OSRELEASE@/modules/ubsec base-kernel-modules kmod,compatmodules +./stand/powerpc-booke/@OSRELEASE@/modules/ubsec/ubsec.kmod base-kernel-modules kmod,compatmodules ./stand/powerpc-booke/@OSRELEASE@/modules/udf base-kernel-modules kmod,compatmodules ./stand/powerpc-booke/@OSRELEASE@/modules/udf/udf.kmod base-kernel-modules kmod,compatmodules ./stand/powerpc-booke/@OSRELEASE@/modules/umap base-kernel-modules kmod,compatmodules Index: src/distrib/sets/lists/modules/mi diff -u src/distrib/sets/lists/modules/mi:1.57 src/distrib/sets/lists/modules/mi:1.58 --- src/distrib/sets/lists/modules/mi:1.57 Sat Nov 16 16:59:03 2013 +++ src/distrib/sets/lists/modules/mi Sun Nov 17 17:16:24 2013 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.57 2013/11/16 16:59:03 skrll Exp $ +# $NetBSD: mi,v 1.58 2013/11/17 17:16:24 bad Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. # @@ -194,6 +194,8 @@ ./@MODULEDIR@/tprof/tprof.kmod base-kernel-modules kmod ./@MODULEDIR@/uatp base-kernel-modules kmod ./@MODULEDIR@/uatp/uatp.kmod base-kernel-modules kmod +./@MODULEDIR@/ubsec base-kernel-modules kmod +./@MODULEDIR@/ubsec/ubsec.kmod base-kernel-modules kmod ./@MODULEDIR@/udf base-kernel-modules kmod ./@MODULEDIR@/udf/udf.kmod base-kernel-modules kmod ./@MODULEDIR@/umap base-kernel-modules kmod Index: src/sys/dev/pci/ubsec.c diff -u src/sys/dev/pci/ubsec.c:1.31 src/sys/dev/pci/ubsec.c:1.32 --- src/sys/dev/pci/ubsec.c:1.31 Sun Nov 17 17:01:44 2013 +++ src/sys/dev/pci/ubsec.c Sun Nov 17 17:16:25 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: ubsec.c,v 1.31 2013/11/17 17:01:44 bad Exp $ */ +/* $NetBSD: ubsec.c,v 1.32 2013/11/17 17:16:25 bad Exp $ */ /* $FreeBSD: src/sys/dev/ubsec/ubsec.c,v 1.6.2.6 2003/01/23 21:06:43 sam Exp $ */ /* $OpenBSD: ubsec.c,v 1.127 2003/06/04 14:04:58 jason Exp $ */ @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ubsec.c,v 1.31 2013/11/17 17:01:44 bad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ubsec.c,v 1.32 2013/11/17 17:16:25 bad Exp $"); #undef UBSEC_DEBUG @@ -57,6 +57,7 @@ __KERNEL_RCSID(0, "$NetBSD: ubsec.c,v 1. #include <sys/kernel.h> #include <sys/mbuf.h> #include <sys/device.h> +#include <sys/module.h> #include <sys/queue.h> #include <opencrypto/cryptodev.h> @@ -82,6 +83,7 @@ __KERNEL_RCSID(0, "$NetBSD: ubsec.c,v 1. */ static int ubsec_probe(device_t, cfdata_t, void *); static void ubsec_attach(device_t, device_t, void *); +static int ubsec_detach(device_t, int); static void ubsec_reset_board(struct ubsec_softc *); static void ubsec_init_board(struct ubsec_softc *); static void ubsec_init_pciregs(struct pci_attach_args *pa); @@ -99,7 +101,7 @@ struct cfdriver ubsec_cd = { }; #else CFATTACH_DECL_NEW(ubsec, sizeof(struct ubsec_softc), ubsec_probe, ubsec_attach, - NULL, NULL); + ubsec_detach, NULL); extern struct cfdriver ubsec_cd; #endif @@ -310,6 +312,8 @@ ubsec_attach(device_t parent, device_t s u_int32_t cmd, i; sc->sc_dev = self; + sc->sc_pct = pc; + up = ubsec_lookup(pa); if (up == NULL) { printf("\n"); @@ -332,7 +336,7 @@ ubsec_attach(device_t parent, device_t s pci_conf_write(pc, pa->pa_tag, PCI_COMMAND_STATUS_REG, cmd); if (pci_mapreg_map(pa, BS_BAR, PCI_MAPREG_TYPE_MEM, 0, - &sc->sc_st, &sc->sc_sh, NULL, NULL)) { + &sc->sc_st, &sc->sc_sh, NULL, &sc->sc_memsize)) { aprint_error_dev(self, "can't find mem space"); return; } @@ -472,6 +476,82 @@ ubsec_attach(device_t parent, device_t s } } +static int +ubsec_detach(device_t self, int flags) +{ + struct ubsec_softc *sc = device_private(self); + struct ubsec_q *q, *qtmp; + + /* disable interrupts */ + /* XXX wait/abort current ops? where is DMAERR enabled? */ + WRITE_REG(sc, BS_CTRL, READ_REG(sc, BS_CTRL) &~ + (BS_CTRL_MCR2INT | BS_CTRL_MCR1INT | BS_CTRL_DMAERR)); + +#ifndef UBSEC_NO_RNG + if (sc->sc_flags & UBS_FLAGS_RNG) { + callout_halt(&sc->sc_rngto, NULL); + ubsec_dma_free(sc, &sc->sc_rng.rng_buf); + ubsec_dma_free(sc, &sc->sc_rng.rng_q.q_ctx); + ubsec_dma_free(sc, &sc->sc_rng.rng_q.q_mcr); + rnd_detach_source(&sc->sc_rnd_source); + } +#endif /* UBSEC_NO_RNG */ + + crypto_unregister_all(sc->sc_cid); + + mutex_spin_enter(&sc->sc_mtx); + + ubsec_totalreset(sc); /* XXX leaves the chip running */ + + SIMPLEQ_FOREACH_SAFE(q, &sc->sc_freequeue, q_next, qtmp) { + ubsec_dma_free(sc, &q->q_dma->d_alloc); + free(q, M_DEVBUF); + } + + mutex_spin_exit(&sc->sc_mtx); + + if (sc->sc_ih != NULL) { + pci_intr_disestablish(sc->sc_pct, sc->sc_ih); + sc->sc_ih = NULL; + } + + if (sc->sc_memsize != 0) { + bus_space_unmap(sc->sc_st, sc->sc_sh, sc->sc_memsize); + sc->sc_memsize = 0; + } + + return 0; +} + +MODULE(MODULE_CLASS_DRIVER, ubsec, "pci"); + +#ifdef _MODULE +#include "ioconf.c" +#endif + +static int +ubsec_modcmd(modcmd_t cmd, void *data) +{ + int error = 0; + + switch (cmd) { + case MODULE_CMD_INIT: +#ifdef _MODULE + error = config_init_component(cfdriver_ioconf_ubsec, + cfattach_ioconf_ubsec, cfdata_ioconf_ubsec); +#endif + return error; + case MODULE_CMD_FINI: +#ifdef _MODULE + error = config_fini_component(cfdriver_ioconf_ubsec, + cfattach_ioconf_ubsec, cfdata_ioconf_ubsec); +#endif + return error; + default: + return ENOTTY; + } +} + /* * UBSEC Interrupt routine */ Index: src/sys/dev/pci/ubsecvar.h diff -u src/sys/dev/pci/ubsecvar.h:1.5 src/sys/dev/pci/ubsecvar.h:1.6 --- src/sys/dev/pci/ubsecvar.h:1.5 Thu Jun 13 00:55:01 2013 +++ src/sys/dev/pci/ubsecvar.h Sun Nov 17 17:16:25 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: ubsecvar.h,v 1.5 2013/06/13 00:55:01 tls Exp $ */ +/* $NetBSD: ubsecvar.h,v 1.6 2013/11/17 17:16:25 bad Exp $ */ /* $OpenBSD: ubsecvar.h,v 1.36 2003/06/04 16:02:41 jason Exp $ */ /* @@ -150,6 +150,7 @@ struct ubsec_softc { device_t sc_dev; /* generic device */ void *sc_ih; /* interrupt handler cookie */ kmutex_t sc_mtx; + pci_chipset_tag_t sc_pct; /* pci chipset tag */ bus_space_handle_t sc_sh; /* memory handle */ bus_space_tag_t sc_st; /* memory tag */ bus_dma_tag_t sc_dmat; /* dma tag */ @@ -176,6 +177,7 @@ struct ubsec_softc { struct ubsec_dma sc_dmaa[UBS_MAX_NQUEUE]; struct ubsec_q *sc_queuea[UBS_MAX_NQUEUE]; SIMPLEQ_HEAD(,ubsec_q2) sc_q2free; /* free list */ + bus_size_t sc_memsize; /* size mapped by sc_sh */ }; #define UBSEC_QFLAGS_COPYOUTIV 0x1 Index: src/sys/modules/Makefile diff -u src/sys/modules/Makefile:1.124 src/sys/modules/Makefile:1.125 --- src/sys/modules/Makefile:1.124 Sat Nov 16 16:59:04 2013 +++ src/sys/modules/Makefile Sun Nov 17 17:16:24 2013 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.124 2013/11/16 16:59:04 skrll Exp $ +# $NetBSD: Makefile,v 1.125 2013/11/17 17:16:24 bad Exp $ .include <bsd.own.mk> @@ -82,6 +82,7 @@ SUBDIR+= suser SUBDIR+= swsensor SUBDIR+= tmpfs SUBDIR+= uatp +SUBDIR+= ubsec SUBDIR+= udf SUBDIR+= umap SUBDIR+= union Added files: Index: src/sys/modules/ubsec/Makefile diff -u /dev/null src/sys/modules/ubsec/Makefile:1.1 --- /dev/null Sun Nov 17 17:16:25 2013 +++ src/sys/modules/ubsec/Makefile Sun Nov 17 17:16:24 2013 @@ -0,0 +1,11 @@ +# $NetBSD: Makefile,v 1.1 2013/11/17 17:16:24 bad Exp $ + +.include "../Makefile.inc" + +.PATH: ${S}/dev/pci + +KMOD= ubsec +IOCONF= ubsec.ioconf +SRCS= ubsec.c + +.include <bsd.kmodule.mk> Index: src/sys/modules/ubsec/ubsec.ioconf diff -u /dev/null src/sys/modules/ubsec/ubsec.ioconf:1.1 --- /dev/null Sun Nov 17 17:16:25 2013 +++ src/sys/modules/ubsec/ubsec.ioconf Sun Nov 17 17:16:24 2013 @@ -0,0 +1,10 @@ +# $NetBSD: ubsec.ioconf,v 1.1 2013/11/17 17:16:24 bad Exp $ + +ioconf ubsec + +include "conf/files" +include "dev/pci/files.pci" + +pseudo-root pci* + +ubsec* at pci? dev ? function ?