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 ?

Reply via email to