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 ?