CVS commit: src/external/cddl/osnet/sys/sys
Module Name:src Committed By: christos Date: Mon Nov 21 05:50:12 UTC 2011 Modified Files: src/external/cddl/osnet/sys/sys: zfs_context.h Log Message: correct declaration of vn_close() XXX: Should all those dup declarations be here? To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/external/cddl/osnet/sys/sys/zfs_context.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/sys/sys/zfs_context.h diff -u src/external/cddl/osnet/sys/sys/zfs_context.h:1.10 src/external/cddl/osnet/sys/sys/zfs_context.h:1.11 --- src/external/cddl/osnet/sys/sys/zfs_context.h:1.10 Sun Jul 17 16:54:33 2011 +++ src/external/cddl/osnet/sys/sys/zfs_context.h Mon Nov 21 00:50:11 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: zfs_context.h,v 1.10 2011/07/17 20:54:33 joerg Exp $ */ +/* $NetBSD: zfs_context.h,v 1.11 2011/11/21 05:50:11 christos Exp $ */ /* * CDDL HEADER START @@ -380,7 +380,7 @@ extern int vn_openat(char *path, int x1, int x2, int x3, vnode_t *vp, int unk); extern int vn_rdwr(int uio, vnode_t *vp, void *addr, ssize_t len, offset_t offset, int x1, int x2, rlim64_t x3, void *x4, ssize_t *residp); -extern void vn_close(vnode_t *vp); +extern void vn_close(vnode_t *vp, int flags, kauth_cred_t cred); extern int vn_getattr(vnode_t *vp, vattr_t *va); #define vn_remove(path, x1, x2) remove(path)
CVS commit: src/sys/sys
Module Name:src Committed By: christos Date: Mon Nov 21 04:36:06 UTC 2011 Modified Files: src/sys/sys: aio.h buf.h kernhist.h kmem.h kthread.h lockdebug.h lwp.h malloc.h mbuf.h module.h mqueue.h namei.h pool.h sched.h sleepq.h syslog.h systm.h tprintf.h vmem.h vnode.h wapbl.h Log Message: change printf gcc attribute to __printflike(), requested by joerg. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/sys/aio.h cvs rdiff -u -r1.117 -r1.118 src/sys/sys/buf.h cvs rdiff -u -r1.3 -r1.4 src/sys/sys/kernhist.h cvs rdiff -u -r1.5 -r1.6 src/sys/sys/kmem.h cvs rdiff -u -r1.11 -r1.12 src/sys/sys/kthread.h cvs rdiff -u -r1.12 -r1.13 src/sys/sys/lockdebug.h src/sys/sys/wapbl.h cvs rdiff -u -r1.157 -r1.158 src/sys/sys/lwp.h cvs rdiff -u -r1.108 -r1.109 src/sys/sys/malloc.h cvs rdiff -u -r1.147 -r1.148 src/sys/sys/mbuf.h cvs rdiff -u -r1.29 -r1.30 src/sys/sys/module.h cvs rdiff -u -r1.15 -r1.16 src/sys/sys/mqueue.h src/sys/sys/vmem.h cvs rdiff -u -r1.78 -r1.79 src/sys/sys/namei.h cvs rdiff -u -r1.71 -r1.72 src/sys/sys/pool.h cvs rdiff -u -r1.74 -r1.75 src/sys/sys/sched.h cvs rdiff -u -r1.20 -r1.21 src/sys/sys/sleepq.h cvs rdiff -u -r1.33 -r1.34 src/sys/sys/syslog.h cvs rdiff -u -r1.251 -r1.252 src/sys/sys/systm.h cvs rdiff -u -r1.17 -r1.18 src/sys/sys/tprintf.h cvs rdiff -u -r1.234 -r1.235 src/sys/sys/vnode.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/sys/aio.h diff -u src/sys/sys/aio.h:1.10 src/sys/sys/aio.h:1.11 --- src/sys/sys/aio.h:1.10 Sun Nov 20 18:37:00 2011 +++ src/sys/sys/aio.h Sun Nov 20 23:36:05 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: aio.h,v 1.10 2011/11/20 23:37:00 christos Exp $ */ +/* $NetBSD: aio.h,v 1.11 2011/11/21 04:36:05 christos Exp $ */ /* * Copyright (c) 2007, Mindaugas Rasiukevicius @@ -115,8 +115,7 @@ struct aioproc { extern u_int aio_listio_max; /* Prototypes */ -void aio_print_jobs(void (*)(const char *, ...) -__attribute__((__format__(__printf__, 1, 2; +void aio_print_jobs(void (*)(const char *, ...) __printflike(1, 2)); int aio_suspend1(struct lwp *, struct aiocb **, int, struct timespec *); #endif /* _KERNEL */ Index: src/sys/sys/buf.h diff -u src/sys/sys/buf.h:1.117 src/sys/sys/buf.h:1.118 --- src/sys/sys/buf.h:1.117 Sun Nov 20 18:37:00 2011 +++ src/sys/sys/buf.h Sun Nov 20 23:36:05 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: buf.h,v 1.117 2011/11/20 23:37:00 christos Exp $ */ +/* $NetBSD: buf.h,v 1.118 2011/11/21 04:36:05 christos Exp $ */ /*- * Copyright (c) 1999, 2000, 2007, 2008 The NetBSD Foundation, Inc. @@ -291,7 +291,7 @@ int buf_drain(int); int buf_setvalimit(vsize_t); #if defined(DDB) || defined(DEBUGPRINT) void vfs_buf_print(buf_t *, int, void (*)(const char *, ...) -__attribute__((__format__(__printf__, 1, 2; +__printflike(1, 2)); #endif buf_t *getiobuf(struct vnode *, bool); void putiobuf(buf_t *); Index: src/sys/sys/kernhist.h diff -u src/sys/sys/kernhist.h:1.3 src/sys/sys/kernhist.h:1.4 --- src/sys/sys/kernhist.h:1.3 Sun Nov 20 18:37:00 2011 +++ src/sys/sys/kernhist.h Sun Nov 20 23:36:05 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kernhist.h,v 1.3 2011/11/20 23:37:00 christos Exp $ */ +/* $NetBSD: kernhist.h,v 1.4 2011/11/21 04:36:05 christos Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -189,8 +189,7 @@ kernhist_entry_print(const struct kern_h } #if defined(DDB) -void kernhist_print(void (*)(const char *, ...) -__attribute__((__format__(__printf__, 1, 2; +void kernhist_print(void (*)(const char *, ...) __printflike(1, 2)); #endif /* DDB */ #endif /* KERNHIST */ Index: src/sys/sys/kmem.h diff -u src/sys/sys/kmem.h:1.5 src/sys/sys/kmem.h:1.6 --- src/sys/sys/kmem.h:1.5 Sun Nov 20 17:50:12 2011 +++ src/sys/sys/kmem.h Sun Nov 20 23:36:05 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kmem.h,v 1.5 2011/11/20 22:50:12 christos Exp $ */ +/* $NetBSD: kmem.h,v 1.6 2011/11/21 04:36:05 christos Exp $ */ /*- * Copyright (c)2006 YAMAMOTO Takashi, @@ -39,8 +39,7 @@ void kmem_free(void *, size_t); void kmem_init(void); size_t kmem_roundup_size(size_t); -char *kmem_asprintf(const char *, ...) - __attribute__((__format__(__printf__, 1, 2))); +char *kmem_asprintf(const char *, ...) __printflike(1, 2); /* * km_flag_t * Index: src/sys/sys/kthread.h diff -u src/sys/sys/kthread.h:1.11 src/sys/sys/kthread.h:1.12 --- src/sys/sys/kthread.h:1.11 Sun Aug 7 10:03:16 2011 +++ src/sys/sys/kthread.h Sun Nov 20 23:36:05 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kthread.h,v 1.11 2011/08/07 14:03:16 rmind Exp $ */ +/* $NetBSD: kthread.h,v 1.12 2011/11/21 04:36:05 christos Exp $ */ /*- * Copyright (c) 1998, 2007, 2009 The NetBSD Foundation, Inc. @@ -52,9 +52,7 @@ void kthread_sysinit(void); int kthread_create(pri_t, int, struct cpu_info *, - void (*)(void *), void *, - lwp_t **, const char *, ...) - __attribute__((__format__
CVS commit: src/sys/kern
Module Name:src Committed By: christos Date: Mon Nov 21 01:44:27 UTC 2011 Modified Files: src/sys/kern: subr_prf.c Log Message: - use va_copy where needed - always nul terminate vsnprintf() - make snprintf() call vsnprintf() To generate a diff of this commit: cvs rdiff -u -r1.144 -r1.145 src/sys/kern/subr_prf.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/kern/subr_prf.c diff -u src/sys/kern/subr_prf.c:1.144 src/sys/kern/subr_prf.c:1.145 --- src/sys/kern/subr_prf.c:1.144 Sun Nov 20 18:01:18 2011 +++ src/sys/kern/subr_prf.c Sun Nov 20 20:44:26 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_prf.c,v 1.144 2011/11/20 23:01:18 christos Exp $ */ +/* $NetBSD: subr_prf.c,v 1.145 2011/11/21 01:44:26 christos Exp $ */ /*- * Copyright (c) 1986, 1988, 1991, 1993 @@ -37,7 +37,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: subr_prf.c,v 1.144 2011/11/20 23:01:18 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_prf.c,v 1.145 2011/11/21 01:44:26 christos Exp $"); #include "opt_ddb.h" #include "opt_ipkdb.h" @@ -348,15 +348,18 @@ log(int level, const char *fmt, ...) void vlog(int level, const char *fmt, va_list ap) { + va_list cap; + va_copy(cap, ap); kprintf_lock(); klogpri(level); /* log the level first */ kprintf(fmt, TOLOG, NULL, NULL, ap); if (!log_open) - kprintf(fmt, TOCONS, NULL, NULL, ap); + kprintf(fmt, TOCONS, NULL, NULL, cap); kprintf_unlock(); + va_end(cap); logwakeup(); /* wake up anyone waiting for log msgs */ } @@ -627,11 +630,14 @@ db_printf(const char *fmt, ...) void db_vprintf(const char *fmt, va_list ap) { + va_list cap; + va_copy(cap, ap); /* No mutex needed; DDB pauses all processors. */ kprintf(fmt, TODDB, NULL, NULL, ap); if (db_tee_msgbuf) - kprintf(fmt, TOLOG, NULL, NULL, ap); + kprintf(fmt, TOLOG, NULL, NULL, cap); + va_end(cap); } #endif /* DDB */ @@ -1052,14 +1058,11 @@ snprintf(char *bf, size_t size, const ch { int retval; va_list ap; - char *p; - p = bf + size; va_start(ap, fmt); - retval = kprintf(fmt, TOBUFONLY, &p, bf, ap); + retval = vsnprintf(bf, size, fmt, ap); va_end(ap); - if (bf && p < bf + size) - *p = '\0'; /* nul terminate */ + return retval; } @@ -1074,8 +1077,13 @@ vsnprintf(char *bf, size_t size, const c p = bf + size; retval = kprintf(fmt, TOBUFONLY, &p, bf, ap); - if (bf && p < bf + size) - *p = '\0'; /* nul terminate */ + if (bf && size > 0) { + /* nul terminate */ + if (p < bf + size) + *p = '\0'; + else + *--p = '\0'; + } return retval; }
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: christos Date: Mon Nov 21 00:24:24 UTC 2011 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: spa_config.c Log Message: close file in a way that it does not trigger an assertion :-) now zpool create works again. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_config.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_config.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_config.c:1.4 src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_config.c:1.5 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_config.c:1.4 Wed Mar 9 18:49:06 2011 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_config.c Sun Nov 20 19:24:24 2011 @@ -179,8 +179,7 @@ spa_config_write(spa_config_dirent_t *dp VOP_FSYNC(vp, FSYNC, kcred, NULL) == 0) { (void) vn_rename(temp, dp->scd_path, UIO_SYSSPACE); } - (void) VOP_CLOSE(vp, oflags, 1, 0, kcred, NULL); - VN_RELE(vp); + vn_close(vp, FWRITE, kcred); } (void) vn_remove(temp, UIO_SYSSPACE, RMFILE);
CVS commit: src/sys/sys
Module Name:src Committed By: christos Date: Sun Nov 20 23:37:00 UTC 2011 Modified Files: src/sys/sys: aio.h buf.h kernhist.h lockdebug.h lwp.h malloc.h mbuf.h module.h mqueue.h namei.h pool.h sched.h sleepq.h vmem.h vnode.h wapbl.h Log Message: add more missing printf attributes. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/sys/aio.h cvs rdiff -u -r1.116 -r1.117 src/sys/sys/buf.h cvs rdiff -u -r1.2 -r1.3 src/sys/sys/kernhist.h cvs rdiff -u -r1.11 -r1.12 src/sys/sys/lockdebug.h src/sys/sys/wapbl.h cvs rdiff -u -r1.156 -r1.157 src/sys/sys/lwp.h cvs rdiff -u -r1.107 -r1.108 src/sys/sys/malloc.h cvs rdiff -u -r1.146 -r1.147 src/sys/sys/mbuf.h cvs rdiff -u -r1.28 -r1.29 src/sys/sys/module.h cvs rdiff -u -r1.14 -r1.15 src/sys/sys/mqueue.h src/sys/sys/vmem.h cvs rdiff -u -r1.77 -r1.78 src/sys/sys/namei.h cvs rdiff -u -r1.70 -r1.71 src/sys/sys/pool.h cvs rdiff -u -r1.73 -r1.74 src/sys/sys/sched.h cvs rdiff -u -r1.19 -r1.20 src/sys/sys/sleepq.h cvs rdiff -u -r1.233 -r1.234 src/sys/sys/vnode.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/sys/aio.h diff -u src/sys/sys/aio.h:1.9 src/sys/sys/aio.h:1.10 --- src/sys/sys/aio.h:1.9 Sat Jan 10 21:45:55 2009 +++ src/sys/sys/aio.h Sun Nov 20 18:37:00 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: aio.h,v 1.9 2009/01/11 02:45:55 christos Exp $ */ +/* $NetBSD: aio.h,v 1.10 2011/11/20 23:37:00 christos Exp $ */ /* * Copyright (c) 2007, Mindaugas Rasiukevicius @@ -115,7 +115,8 @@ struct aioproc { extern u_int aio_listio_max; /* Prototypes */ -void aio_print_jobs(void (*pr)(const char *, ...)); +void aio_print_jobs(void (*)(const char *, ...) +__attribute__((__format__(__printf__, 1, 2; int aio_suspend1(struct lwp *, struct aiocb **, int, struct timespec *); #endif /* _KERNEL */ Index: src/sys/sys/buf.h diff -u src/sys/sys/buf.h:1.116 src/sys/sys/buf.h:1.117 --- src/sys/sys/buf.h:1.116 Wed Apr 27 05:47:25 2011 +++ src/sys/sys/buf.h Sun Nov 20 18:37:00 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: buf.h,v 1.116 2011/04/27 09:47:25 hannken Exp $ */ +/* $NetBSD: buf.h,v 1.117 2011/11/20 23:37:00 christos Exp $ */ /*- * Copyright (c) 1999, 2000, 2007, 2008 The NetBSD Foundation, Inc. @@ -290,7 +290,8 @@ u_long buf_memcalc(void); int buf_drain(int); int buf_setvalimit(vsize_t); #if defined(DDB) || defined(DEBUGPRINT) -void vfs_buf_print(buf_t *, int, void (*)(const char *, ...)); +void vfs_buf_print(buf_t *, int, void (*)(const char *, ...) +__attribute__((__format__(__printf__, 1, 2; #endif buf_t *getiobuf(struct vnode *, bool); void putiobuf(buf_t *); Index: src/sys/sys/kernhist.h diff -u src/sys/sys/kernhist.h:1.2 src/sys/sys/kernhist.h:1.3 --- src/sys/sys/kernhist.h:1.2 Fri Jun 10 10:59:35 2011 +++ src/sys/sys/kernhist.h Sun Nov 20 18:37:00 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kernhist.h,v 1.2 2011/06/10 14:59:35 matt Exp $ */ +/* $NetBSD: kernhist.h,v 1.3 2011/11/20 23:37:00 christos Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -189,7 +189,8 @@ kernhist_entry_print(const struct kern_h } #if defined(DDB) -void kernhist_print(void (*)(const char *, ...)); +void kernhist_print(void (*)(const char *, ...) +__attribute__((__format__(__printf__, 1, 2; #endif /* DDB */ #endif /* KERNHIST */ Index: src/sys/sys/lockdebug.h diff -u src/sys/sys/lockdebug.h:1.11 src/sys/sys/lockdebug.h:1.12 --- src/sys/sys/lockdebug.h:1.11 Sat Mar 7 16:59:25 2009 +++ src/sys/sys/lockdebug.h Sun Nov 20 18:37:00 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: lockdebug.h,v 1.11 2009/03/07 21:59:25 ad Exp $ */ +/* $NetBSD: lockdebug.h,v 1.12 2011/11/20 23:37:00 christos Exp $ */ /*- * Copyright (c) 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -55,7 +55,8 @@ typedef struct lockops { void lockdebug_abort(volatile void *, lockops_t *, const char *, const char *); -void lockdebug_lock_print(void *, void (*)(const char *, ...)); +void lockdebug_lock_print(void *, void (*)(const char *, ...) +__attribute__((__format__(__printf__, 1, 2; #ifdef LOCKDEBUG Index: src/sys/sys/wapbl.h diff -u src/sys/sys/wapbl.h:1.11 src/sys/sys/wapbl.h:1.12 --- src/sys/sys/wapbl.h:1.11 Wed Apr 21 12:51:24 2010 +++ src/sys/sys/wapbl.h Sun Nov 20 18:37:00 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: wapbl.h,v 1.11 2010/04/21 16:51:24 pooka Exp $ */ +/* $NetBSD: wapbl.h,v 1.12 2011/11/20 23:37:00 christos Exp $ */ /*- * Copyright (c) 2003,2008 The NetBSD Foundation, Inc. @@ -170,7 +170,8 @@ void wapbl_register_deallocation(struct void wapbl_jlock_assert(struct wapbl *wl); void wapbl_junlock_assert(struct wapbl *wl); -void wapbl_print(struct wapbl *wl, int full, void (*pr)(const char *, ...)); +void wapbl_print(struct wapbl *wl, int full, void (*pr)(const char *, ...) +__attribute__((__format__(__printf__, 1, 2; #if defined(WAPBL_DEBUG) || defined(DDB) void wapbl_d
CVS commit: src/sys/kern
Module Name:src Committed By: christos Date: Sun Nov 20 23:01:19 UTC 2011 Modified Files: src/sys/kern: subr_prf.c Log Message: snprintf/vsnprintf can accept NULL/0 buffers and work properly as expected. Before they used to return incorrect length on short buffers. Remove unused error path. To generate a diff of this commit: cvs rdiff -u -r1.143 -r1.144 src/sys/kern/subr_prf.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/kern/subr_prf.c diff -u src/sys/kern/subr_prf.c:1.143 src/sys/kern/subr_prf.c:1.144 --- src/sys/kern/subr_prf.c:1.143 Thu Sep 29 16:52:39 2011 +++ src/sys/kern/subr_prf.c Sun Nov 20 18:01:18 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_prf.c,v 1.143 2011/09/29 20:52:39 christos Exp $ */ +/* $NetBSD: subr_prf.c,v 1.144 2011/11/20 23:01:18 christos Exp $ */ /*- * Copyright (c) 1986, 1988, 1991, 1993 @@ -37,7 +37,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: subr_prf.c,v 1.143 2011/09/29 20:52:39 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_prf.c,v 1.144 2011/11/20 23:01:18 christos Exp $"); #include "opt_ddb.h" #include "opt_ipkdb.h" @@ -1024,8 +1024,9 @@ sprintf(char *bf, const char *fmt, ...) va_start(ap, fmt); retval = kprintf(fmt, TOBUFONLY, NULL, bf, ap); va_end(ap); - *(bf + retval) = 0; /* null terminate */ - return(retval); + if (bf) + bf[retval] = '\0'; /* nul terminate */ + return retval; } /* @@ -1038,8 +1039,9 @@ vsprintf(char *bf, const char *fmt, va_l int retval; retval = kprintf(fmt, TOBUFONLY, NULL, bf, ap); - *(bf + retval) = 0; /* null terminate */ - return (retval); + if (bf) + bf[retval] = '\0'; /* nul terminate */ + return retval; } /* @@ -1052,14 +1054,13 @@ snprintf(char *bf, size_t size, const ch va_list ap; char *p; - if (size < 1) - return (-1); - p = bf + size - 1; + p = bf + size; va_start(ap, fmt); retval = kprintf(fmt, TOBUFONLY, &p, bf, ap); va_end(ap); - *(p) = 0; /* null terminate */ - return(retval); + if (bf && p < bf + size) + *p = '\0'; /* nul terminate */ + return retval; } /* @@ -1071,12 +1072,11 @@ vsnprintf(char *bf, size_t size, const c int retval; char *p; - if (size < 1) - return (-1); - p = bf + size - 1; + p = bf + size; retval = kprintf(fmt, TOBUFONLY, &p, bf, ap); - *(p) = 0; /* null terminate */ - return(retval); + if (bf && p < bf + size) + *p = '\0'; /* nul terminate */ + return retval; } /* @@ -1134,13 +1134,10 @@ vsnprintf(char *bf, size_t size, const c #define KPRINTF_PUTCHAR(C) { \ if (oflags == TOBUFONLY) { \ - if ((vp != NULL) && (sbuf == tailp)) { \ - ret += 1; /* indicate error */ \ - goto overflow; \ - } \ - *sbuf++ = (C); \ + if ((vp == NULL) || (sbuf < tailp)) \ + *sbuf++ = (C); \ } else { \ - putchar((C), oflags, (struct tty *)vp); \ + putchar((C), oflags, vp);\ }\ } @@ -1181,9 +1178,10 @@ kprintf(const char *fmt0, int oflags, vo char bf[KPRINTF_BUFSIZE]; /* space for %c, %[diouxX] */ char *tailp; /* tail pointer for snprintf */ - tailp = NULL; /* XXX: shutup gcc */ if (oflags == TOBUFONLY && (vp != NULL)) tailp = *(char **)vp; + else + tailp = NULL; cp = NULL; /* XXX: shutup gcc */ size = 0; /* XXX: shutup gcc */ @@ -1526,7 +1524,5 @@ done: if ((oflags == TOBUFONLY) && (vp != NULL)) *(char **)vp = sbuf; (*v_flush)(); -overflow: - return (ret); - /* NOTREACHED */ + return ret; }
CVS commit: src/sys/kern
Module Name:src Committed By: christos Date: Sun Nov 20 22:58:31 UTC 2011 Modified Files: src/sys/kern: subr_kmem.c Log Message: simplify, no need for va_copy here. Add KASSERT. To generate a diff of this commit: cvs rdiff -u -r1.37 -r1.38 src/sys/kern/subr_kmem.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/kern/subr_kmem.c diff -u src/sys/kern/subr_kmem.c:1.37 src/sys/kern/subr_kmem.c:1.38 --- src/sys/kern/subr_kmem.c:1.37 Sun Nov 20 16:27:26 2011 +++ src/sys/kern/subr_kmem.c Sun Nov 20 17:58:31 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_kmem.c,v 1.37 2011/11/20 21:27:26 apb Exp $ */ +/* $NetBSD: subr_kmem.c,v 1.38 2011/11/20 22:58:31 christos Exp $ */ /*- * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -63,7 +63,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: subr_kmem.c,v 1.37 2011/11/20 21:27:26 apb Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_kmem.c,v 1.38 2011/11/20 22:58:31 christos Exp $"); #include #include @@ -472,23 +472,21 @@ kmem_size_check(const void *p, size_t sz char * kmem_asprintf(const char *fmt, ...) { - int size, str_len; - va_list va, va2; + int size, len; + va_list va; char *str; - char buf[1]; va_start(va, fmt); - va_copy(va2, va); - str_len = vsnprintf(buf, sizeof(buf), fmt, va) + 1; + len = vsnprintf(NULL, 0, fmt, va); va_end(va); - str = kmem_alloc(str_len, KM_SLEEP); + str = kmem_alloc(len + 1, KM_SLEEP); - if ((size = vsnprintf(str, str_len, fmt, va2)) == -1) { - kmem_free(str, str_len); - return NULL; - } - va_end(va2); + va_start(va, fmt); + size = vsnprintf(str, len + 1, fmt, va); + va_end(va); + + KASSERT(size == len); return str; }
CVS commit: src/sys/sys
Module Name:src Committed By: christos Date: Sun Nov 20 22:50:12 UTC 2011 Modified Files: src/sys/sys: kmem.h Log Message: mark printf function To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/sys/kmem.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/sys/kmem.h diff -u src/sys/sys/kmem.h:1.4 src/sys/sys/kmem.h:1.5 --- src/sys/sys/kmem.h:1.4 Thu Feb 11 18:13:46 2010 +++ src/sys/sys/kmem.h Sun Nov 20 17:50:12 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kmem.h,v 1.4 2010/02/11 23:13:46 haad Exp $ */ +/* $NetBSD: kmem.h,v 1.5 2011/11/20 22:50:12 christos Exp $ */ /*- * Copyright (c)2006 YAMAMOTO Takashi, @@ -39,7 +39,8 @@ void kmem_free(void *, size_t); void kmem_init(void); size_t kmem_roundup_size(size_t); -char *kmem_asprintf(const char *, ...); +char *kmem_asprintf(const char *, ...) + __attribute__((__format__(__printf__, 1, 2))); /* * km_flag_t *
CVS commit: src/sys/dev/usb
Module Name:src Committed By: gavan Date: Sun Nov 20 22:27:39 UTC 2011 Modified Files: src/sys/dev/usb: ugen.c Log Message: Implement timeouts when blocking the calling process with tsleep. Fixes PR kern/33452 To generate a diff of this commit: cvs rdiff -u -r1.111 -r1.112 src/sys/dev/usb/ugen.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/usb/ugen.c diff -u src/sys/dev/usb/ugen.c:1.111 src/sys/dev/usb/ugen.c:1.112 --- src/sys/dev/usb/ugen.c:1.111 Wed Nov 3 22:34:23 2010 +++ src/sys/dev/usb/ugen.c Sun Nov 20 22:27:39 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: ugen.c,v 1.111 2010/11/03 22:34:23 dyoung Exp $ */ +/* $NetBSD: ugen.c,v 1.112 2011/11/20 22:27:39 gavan Exp $ */ /* * Copyright (c) 1998, 2004 The NetBSD Foundation, Inc. @@ -37,7 +37,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.111 2010/11/03 22:34:23 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.112 2011/11/20 22:27:39 gavan Exp $"); #include "opt_compat_netbsd.h" @@ -619,7 +619,7 @@ ugen_do_read(struct ugen_softc *sc, int } sce->state |= UGEN_ASLP; DPRINTFN(5, ("ugenread: sleep on %p\n", sce)); - error = tsleep(sce, PZERO | PCATCH, "ugenri", 0); + error = tsleep(sce, PZERO | PCATCH, "ugenri", mstohz(sce->timeout)); DPRINTFN(5, ("ugenread: woke, error=%d\n", error)); if (sc->sc_dying) error = EIO; @@ -664,7 +664,7 @@ ugen_do_read(struct ugen_softc *sc, int ("ugenread: sleep on %p\n", sce)); error = tsleep(sce, PZERO | PCATCH, - "ugenrb", 0); + "ugenrb", mstohz(sce->timeout)); DPRINTFN(5, ("ugenread: woke, error=%d\n", error)); @@ -755,7 +755,7 @@ ugen_do_read(struct ugen_softc *sc, int } sce->state |= UGEN_ASLP; DPRINTFN(5, ("ugenread: sleep on %p\n", sce)); - error = tsleep(sce, PZERO | PCATCH, "ugenri", 0); + error = tsleep(sce, PZERO | PCATCH, "ugenri", mstohz(sce->timeout)); DPRINTFN(5, ("ugenread: woke, error=%d\n", error)); if (sc->sc_dying) error = EIO; @@ -862,7 +862,7 @@ ugen_do_write(struct ugen_softc *sc, int ("ugenwrite: sleep on %p\n", sce)); error = tsleep(sce, PZERO | PCATCH, - "ugenwb", 0); + "ugenwb", mstohz(sce->timeout)); DPRINTFN(5, ("ugenwrite: woke, error=%d\n", error));
CVS commit: src/distrib/sets/lists/xcomp
Module Name:src Committed By: njoly Date: Sun Nov 20 21:50:39 UTC 2011 Modified Files: src/distrib/sets/lists/xcomp: md.sparc Log Message: Add Xorg modules debug entries. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/distrib/sets/lists/xcomp/md.sparc 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/xcomp/md.sparc diff -u src/distrib/sets/lists/xcomp/md.sparc:1.9 src/distrib/sets/lists/xcomp/md.sparc:1.10 --- src/distrib/sets/lists/xcomp/md.sparc:1.9 Sun Mar 14 23:19:18 2010 +++ src/distrib/sets/lists/xcomp/md.sparc Sun Nov 20 21:50:38 2011 @@ -1,4 +1,4 @@ -# $NetBSD: md.sparc,v 1.9 2010/03/14 23:19:18 mrg Exp $ +# $NetBSD: md.sparc,v 1.10 2011/11/20 21:50:38 njoly Exp $ ./usr/libdata/debug/usr/X11R7/bin/Xorg.debug -unknown- debug,xorg ./usr/libdata/debug/usr/X11R7/bin/Xvfb.debug -unknown- debug,xorg ./usr/libdata/debug/usr/X11R7/bin/cvt.debug -unknown- debug,xorg @@ -7,3 +7,79 @@ ./usr/libdata/debug/usr/X11R7/bin/scanpci.debug -unknown- obsolete ./usr/libdata/debug/usr/X11R7/bin/xf86cfg.debug -unknown- obsolete ./usr/libdata/debug/usr/X11R7/bin/xf86config.debug -unknown- obsolete +./usr/libdata/debug/usr/X11R7/lib/modules/dri/libmach64_dri.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/dri/libmga_dri.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/dri/libr128_dri.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/dri/libr200_dri.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/dri/libr300_dri.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/dri/libr600_dri.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/dri/libradeon_dri.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libag10e_drv.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libati_drv.so.6.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libglint_drv.so.1.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libkbd_drv.so.1.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libmach64_drv.so.6.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libmga_drv.so.1.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libmouse_drv.so.1.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libpnozz_drv.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libr128_drv.so.6.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libradeon_drv.so.6.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libsuncg14_drv.so.1.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libsuncg6_drv.so.1.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libsunffb_drv.so.1.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libsunleo_drv.so.1.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libsuntcx_drv.so.1.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libws_drv.so.1.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/drivers/libwsfb_drv.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/extensions/libdbe.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/extensions/libdri.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/extensions/libdri2.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/extensions/libextmod.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/extensions/libglx.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/extensions/librecord.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/extensions/libshadow.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/libexa.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/libfb.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/libi2c.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/libshadowfb.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/libvbe.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/libvgahw.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/libxaa.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/dri/libmach64_dri.so.0.debug -unknown- xorg,debug +./usr/libdata/debug/usr/X11R7/lib/modules/dri/libmga_dri.so.0.debug -unknown- xorg,debug +./usr/libdata/de
CVS commit: src
Module Name:src Committed By: dholland Date: Sun Nov 20 21:43:35 UTC 2011 Modified Files: src/common/include/quota: quota.h quotaprop.h src/lib/libquota: getnfsquota.c src/sys/compat/common: vfs_syscalls_50.c src/sys/sys: quota.h src/sys/ufs/ufs: quota1.h quota1_subr.c Log Message: Reshuffle decls among the quota headers so everything is in the place it should be: - stuff for the proplib interface goes in - stuff for userlevel only goes in - stuff shared between user and kernel goes in Note that and are expected to be moved or removed later on... one thing at a time. Update include directives in other files as needed. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/include/quota/quota.h \ src/common/include/quota/quotaprop.h cvs rdiff -u -r1.2 -r1.3 src/lib/libquota/getnfsquota.c cvs rdiff -u -r1.8 -r1.9 src/sys/compat/common/vfs_syscalls_50.c cvs rdiff -u -r1.4 -r1.5 src/sys/sys/quota.h cvs rdiff -u -r1.3 -r1.4 src/sys/ufs/ufs/quota1.h cvs rdiff -u -r1.4 -r1.5 src/sys/ufs/ufs/quota1_subr.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/common/include/quota/quota.h diff -u src/common/include/quota/quota.h:1.2 src/common/include/quota/quota.h:1.3 --- src/common/include/quota/quota.h:1.2 Tue Jun 7 14:56:12 2011 +++ src/common/include/quota/quota.h Sun Nov 20 21:43:34 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: quota.h,v 1.2 2011/06/07 14:56:12 bouyer Exp $ */ +/* $NetBSD: quota.h,v 1.3 2011/11/20 21:43:34 dholland Exp $ */ /*- * Copyright (c) 2010 Manuel Bouyer * All rights reserved. @@ -25,14 +25,16 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _QUOTA_QUOTA_H -#define _QUOTA_QUOTA_H +#ifndef _QUOTA_QUOTA_H_ +#define _QUOTA_QUOTA_H_ + #include -#include +#include + +/* + * Return codes for quota_check_limit() + */ -/* check a quota usage against limits (assumes UFS semantic) */ -int quota_check_limit(uint64_t, uint64_t, uint64_t, uint64_t, time_t, time_t); -/* return values for above */ #define QL_S_ALLOW_OK 0x00 /* below soft limit */ #define QL_S_ALLOW_SOFT 0x01 /* over soft limit */ #define QL_S_DENY_GRACE 0x02 /* over soft limit, grace time expired */ @@ -43,6 +45,9 @@ int quota_check_limit(uint64_t, uint64_t #define QL_STATUS(x) ((x) & 0x0f) #define QL_FLAGS(x) ((x) & 0xf0) +/* check a quota usage against limits (assumes UFS semantic) */ +int quota_check_limit(uint64_t, uint64_t, uint64_t, uint64_t, time_t, time_t); + /* * retrieve quotas with ufs semantics from vfs, for the given id and class. * second argument points to a struct ufs_quota_entry array of QUOTA_NLIMITS @@ -56,4 +61,4 @@ int getnfsquota(const char *, struct ufs /* call one of the above, if appropriate, after a statvfs(2) */ int getfsquota(const char *, struct ufs_quota_entry *, uid_t, const char *); -#endif /* _QUOTA_QUOTA_H */ +#endif /* _QUOTA_QUOTA_H_ */ Index: src/common/include/quota/quotaprop.h diff -u src/common/include/quota/quotaprop.h:1.2 src/common/include/quota/quotaprop.h:1.3 --- src/common/include/quota/quotaprop.h:1.2 Tue Jun 7 14:56:12 2011 +++ src/common/include/quota/quotaprop.h Sun Nov 20 21:43:34 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: quotaprop.h,v 1.2 2011/06/07 14:56:12 bouyer Exp $ */ +/* $NetBSD: quotaprop.h,v 1.3 2011/11/20 21:43:34 dholland Exp $ */ /*- * Copyright (c) 2010 Manuel Bouyer * All rights reserved. @@ -25,33 +25,25 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _QUOTA_QUOTAPROP_H -#define _QUOTA_QUOTAPROP_H -#include -#include - -int quotaprop_dict_get_uint64(prop_dictionary_t, uint64_t[], -const char *[], int, bool); -int proptoquota64(prop_dictionary_t, uint64_t *[], const char *[], int, -const char *[], int); +#ifndef _QUOTA_QUOTAPROP_H_ +#define _QUOTA_QUOTAPROP_H_ -int quota_get_cmds(prop_dictionary_t, prop_array_t *); -prop_dictionary_t quota_prop_create(void); -bool quota_prop_add_command(prop_array_t, const char *, const char *, -prop_array_t); - -prop_dictionary_t limits64toprop(uint64_t[], const char *[], int); -prop_dictionary_t quota64toprop(uid_t, int, uint64_t *[], const char *[], int, -const char *[], int); +#include -/* structure used to describe a UFS-like quota entry */ -struct ufs_quota_entry { -uint64_t ufsqe_hardlimit; /* absolute limit */ - uint64_t ufsqe_softlimit; /* overflowable limit */ - uint64_t ufsqe_cur; /* current usage */ - int64_t ufsqe_time; /* grace expiration date for softlimit overflow */ - int64_t ufsqe_grace; /* allowed time for softlimit overflow */ -}; +/* strings used in dictionary for the different quota class */ +#define QUOTADICT_CLASS_USER "user" +#define QUOTADICT_CLASS_GROUP "group" + +/* strings used in dictionary for the different limit types */ +#define QUOTADICT_LTYPE_BLOCK "block" +#define QUOTADICT_LTYPE_FILE "file" + +/* strings used in dictionary for the different limit and usage valu
CVS commit: src/sys/kern
Module Name:src Committed By: apb Date: Sun Nov 20 21:27:26 UTC 2011 Modified Files: src/sys/kern: subr_kmem.c Log Message: Use va_copy to avoid undefined behaviour in handling the va_list arg. To generate a diff of this commit: cvs rdiff -u -r1.36 -r1.37 src/sys/kern/subr_kmem.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/kern/subr_kmem.c diff -u src/sys/kern/subr_kmem.c:1.36 src/sys/kern/subr_kmem.c:1.37 --- src/sys/kern/subr_kmem.c:1.36 Fri Sep 2 22:25:08 2011 +++ src/sys/kern/subr_kmem.c Sun Nov 20 21:27:26 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_kmem.c,v 1.36 2011/09/02 22:25:08 dyoung Exp $ */ +/* $NetBSD: subr_kmem.c,v 1.37 2011/11/20 21:27:26 apb Exp $ */ /*- * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -63,7 +63,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: subr_kmem.c,v 1.36 2011/09/02 22:25:08 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_kmem.c,v 1.37 2011/11/20 21:27:26 apb Exp $"); #include #include @@ -473,20 +473,22 @@ char * kmem_asprintf(const char *fmt, ...) { int size, str_len; - va_list va; + va_list va, va2; char *str; char buf[1]; va_start(va, fmt); + va_copy(va2, va); str_len = vsnprintf(buf, sizeof(buf), fmt, va) + 1; va_end(va); str = kmem_alloc(str_len, KM_SLEEP); - if ((size = vsnprintf(str, str_len, fmt, va)) == -1) { + if ((size = vsnprintf(str, str_len, fmt, va2)) == -1) { kmem_free(str, str_len); return NULL; } + va_end(va2); return str; }
CVS commit: src/external/mit/xorg/bin/x11perf
Module Name:src Committed By: dholland Date: Sun Nov 20 21:02:23 UTC 2011 Modified Files: src/external/mit/xorg/bin/x11perf: Makefile Log Message: Add missing CLEANFILES+=x11perfcomp To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/external/mit/xorg/bin/x11perf/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/mit/xorg/bin/x11perf/Makefile diff -u src/external/mit/xorg/bin/x11perf/Makefile:1.2 src/external/mit/xorg/bin/x11perf/Makefile:1.3 --- src/external/mit/xorg/bin/x11perf/Makefile:1.2 Wed Aug 3 02:55:30 2011 +++ src/external/mit/xorg/bin/x11perf/Makefile Sun Nov 20 21:02:23 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.2 2011/08/03 02:55:30 mrg Exp $ +# $NetBSD: Makefile,v 1.3 2011/11/20 21:02:23 dholland Exp $ .include @@ -24,6 +24,8 @@ SCRIPTSDIR_fillblnk.sh= ${X11LIBDIR}/x11 SCRIPTSDIR_perfboth.sh= ${X11LIBDIR}/x11perfcomp SCRIPTSDIR_perfratio.sh=${X11LIBDIR}/x11perfcomp +CLEANFILES+= x11perfcomp + LDADD+= -lXft -lfontconfig -lfreetype -lexpat -lXrender DPADD+= ${LIBXFT} ${LIBFONTCONFIG} ${LIBFREETYPE} ${LIBEXPAT} ${LIBXRENDER} LDADD+= -lXmuu -lXt -lSM -lICE -lXext -lX11 -lm
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 20:00:15 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: sequencer.c Log Message: avoid passing size 0 to kmem_alloc when the sequencer device is opened and no midi devices are attached To generate a diff of this commit: cvs rdiff -u -r1.52.14.1 -r1.52.14.2 src/sys/dev/sequencer.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/sequencer.c diff -u src/sys/dev/sequencer.c:1.52.14.1 src/sys/dev/sequencer.c:1.52.14.2 --- src/sys/dev/sequencer.c:1.52.14.1 Sat Nov 19 21:49:35 2011 +++ src/sys/dev/sequencer.c Sun Nov 20 20:00:15 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: sequencer.c,v 1.52.14.1 2011/11/19 21:49:35 jmcneill Exp $ */ +/* $NetBSD: sequencer.c,v 1.52.14.2 2011/11/20 20:00:15 jmcneill Exp $ */ /* * Copyright (c) 1998, 2008 The NetBSD Foundation, Inc. @@ -55,7 +55,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: sequencer.c,v 1.52.14.1 2011/11/19 21:49:35 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sequencer.c,v 1.52.14.2 2011/11/20 20:00:15 jmcneill Exp $"); #include "sequencer.h" @@ -268,17 +268,22 @@ sequenceropen(dev_t dev, int flags, int SEQ_QINIT(&sc->outq); sc->lowat = SEQ_MAXQ / 2; - mutex_exit(&sc->lock); - sc->devs = kmem_alloc(sc->ndevs * sizeof(struct midi_dev *), KM_SLEEP); - for (unit = 0; unit < sc->ndevs; unit++) { - md = midiseq_open(unit, flags); - if (md) { - sc->devs[sc->nmidi++] = md; - md->seq = sc; - md->doingsysex = 0; + if (sc->ndevs > 0) { + mutex_exit(&sc->lock); + sc->devs = kmem_alloc(sc->ndevs * sizeof(struct midi_dev *), + KM_SLEEP); + for (unit = 0; unit < sc->ndevs; unit++) { + md = midiseq_open(unit, flags); + if (md) { +sc->devs[sc->nmidi++] = md; +md->seq = sc; +md->doingsysex = 0; + } } + mutex_enter(&sc->lock); + } else { + sc->devs = NULL; } - mutex_enter(&sc->lock); /* Only now redirect input from MIDI devices. */ for (unit = 0; unit < sc->nmidi; unit++) { @@ -385,7 +390,11 @@ sequencerclose(dev_t dev, int flags, int for (unit = 0; unit < sc->nmidi; unit++) midiseq_close(sc->devs[unit]); - kmem_free(sc->devs, sc->ndevs * sizeof(struct midi_dev *)); + if (sc->devs != NULL) { + KASSERT(sc->ndevs > 0); + kmem_free(sc->devs, sc->ndevs * sizeof(struct midi_dev *)); + sc->devs = NULL; + } mutex_enter(&sc->lock); sc->isopen = 0;
CVS commit: [jmcneill-audiomp3] src/sys/dev/isa
Module Name:src Committed By: jmcneill Date: Sun Nov 20 19:44:50 UTC 2011 Modified Files: src/sys/dev/isa [jmcneill-audiomp3]: sbdsp.c Log Message: improve the last change, after discussing it with rmind To generate a diff of this commit: cvs rdiff -u -r1.134.12.2 -r1.134.12.3 src/sys/dev/isa/sbdsp.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/isa/sbdsp.c diff -u src/sys/dev/isa/sbdsp.c:1.134.12.2 src/sys/dev/isa/sbdsp.c:1.134.12.3 --- src/sys/dev/isa/sbdsp.c:1.134.12.2 Sun Nov 20 19:26:05 2011 +++ src/sys/dev/isa/sbdsp.c Sun Nov 20 19:44:50 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: sbdsp.c,v 1.134.12.2 2011/11/20 19:26:05 jmcneill Exp $ */ +/* $NetBSD: sbdsp.c,v 1.134.12.3 2011/11/20 19:44:50 jmcneill Exp $ */ /*- * Copyright (c) 1999, 2008 The NetBSD Foundation, Inc. @@ -74,7 +74,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: sbdsp.c,v 1.134.12.2 2011/11/20 19:26:05 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sbdsp.c,v 1.134.12.3 2011/11/20 19:44:50 jmcneill Exp $"); #include "midi.h" #include "mpu.h" @@ -1095,7 +1095,11 @@ sbdsp_rdsp(struct sbdsp_softc *sc) void sbdsp_pause(struct sbdsp_softc *sc) { - delay(10); /* 1/10th of a second */ + + KASSERT(mutex_owned(&sc->sc_intr_lock)); + mutex_spin_exit(&sc->sc_intr_lock); + (void)kpause("sbpause", false, hz/8, &sc->sc_lock); + mutex_spin_enter(&sc->sc_intr_lock); } /*
CVS commit: src/sys/arch
Module Name:src Committed By: jym Date: Sun Nov 20 19:41:27 UTC 2011 Modified Files: src/sys/arch/x86/include: pmap.h src/sys/arch/x86/x86: pmap.c src/sys/arch/xen/x86: xen_pmap.c src/sys/arch/xen/xen: xen_machdep.c Log Message: Expose pmap_pdp_cache publicly to x86/xen pmap. Provide suspend/resume callbacks for Xen pmap. Turn static internal callbacks of pmap_pdp_cache. XXX the implementation of pool_cache_invalidate(9) is still wrong, and IMHO this needs fixing before -6. See http://mail-index.netbsd.org/tech-kern/2011/11/18/msg011924.html To generate a diff of this commit: cvs rdiff -u -r1.45 -r1.46 src/sys/arch/x86/include/pmap.h cvs rdiff -u -r1.141 -r1.142 src/sys/arch/x86/x86/pmap.c cvs rdiff -u -r1.8 -r1.9 src/sys/arch/xen/x86/xen_pmap.c cvs rdiff -u -r1.8 -r1.9 src/sys/arch/xen/xen/xen_machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/x86/include/pmap.h diff -u src/sys/arch/x86/include/pmap.h:1.45 src/sys/arch/x86/include/pmap.h:1.46 --- src/sys/arch/x86/include/pmap.h:1.45 Tue Nov 8 17:16:52 2011 +++ src/sys/arch/x86/include/pmap.h Sun Nov 20 19:41:27 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.h,v 1.45 2011/11/08 17:16:52 cherry Exp $ */ +/* $NetBSD: pmap.h,v 1.46 2011/11/20 19:41:27 jym Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -125,6 +125,11 @@ extern struct pmap_head pmaps; extern kmutex_t pmaps_lock;/* protects pmaps */ /* + * pool_cache(9) that PDPs are allocated from + */ +extern struct pool_cache pmap_pdp_cache; + +/* * the pmap structure * * note that the pm_obj contains the lock pointer, the reference count, @@ -261,8 +266,6 @@ u_int x86_mmap_flags(paddr_t); bool pmap_is_curpmap(struct pmap *); -void pmap_invalidate_pool_caches(void); - vaddr_t reserve_dumppages(vaddr_t); /* XXX: not a pmap fn */ typedef enum tlbwhy { @@ -411,15 +414,7 @@ vaddr_t pmap_map(vaddr_t, paddr_t, paddr void pmap_cpu_init_late(struct cpu_info *); bool sse2_idlezero_page(void *); - #ifdef XEN - -void pmap_unmap_all_apdp_pdes(void); -#ifdef PAE -void pmap_map_recursive_entries(void); -void pmap_unmap_recursive_entries(void); -#endif /* PAE */ - #include #define XPTE_MASK L1_FRAME @@ -468,9 +463,17 @@ xpmap_update (pt_entry_t *pte, pt_entry_ paddr_t vtomach(vaddr_t); #define vtomfn(va) (vtomach(va) >> PAGE_SHIFT) +void pmap_xen_resume(void); +void pmap_xen_suspend(void); + void pmap_apte_flush(struct pmap *); void pmap_unmap_apdp(void); +#ifdef PAE +void pmap_map_recursive_entries(void); +void pmap_unmap_recursive_entries(void); +#endif /* PAE */ + #endif /* XEN */ /* pmap functions with machine addresses */ Index: src/sys/arch/x86/x86/pmap.c diff -u src/sys/arch/x86/x86/pmap.c:1.141 src/sys/arch/x86/x86/pmap.c:1.142 --- src/sys/arch/x86/x86/pmap.c:1.141 Tue Nov 8 17:16:52 2011 +++ src/sys/arch/x86/x86/pmap.c Sun Nov 20 19:41:27 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.141 2011/11/08 17:16:52 cherry Exp $ */ +/* $NetBSD: pmap.c,v 1.142 2011/11/20 19:41:27 jym Exp $ */ /*- * Copyright (c) 2008, 2010 The NetBSD Foundation, Inc. @@ -171,7 +171,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.141 2011/11/08 17:16:52 cherry Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.142 2011/11/20 19:41:27 jym Exp $"); #include "opt_user_ldt.h" #include "opt_lockdebug.h" @@ -508,17 +508,14 @@ static char *csrcp, *cdstp, *zerop, *ptp int pmap_enter_default(pmap_t, vaddr_t, paddr_t, vm_prot_t, u_int); -/* - * pool and cache that PDPs are allocated from - */ - -static struct pool_cache pmap_pdp_cache; -int pmap_pdp_ctor(void *, void *, int); -void pmap_pdp_dtor(void *, void *); +/* PDP pool_cache(9) and its callbacks */ +struct pool_cache pmap_pdp_cache; +static int pmap_pdp_ctor(void *, void *, int); +static void pmap_pdp_dtor(void *, void *); #ifdef PAE /* need to allocate items of 4 pages */ -void *pmap_pdp_alloc(struct pool *, int); -void pmap_pdp_free(struct pool *, void *); +static void *pmap_pdp_alloc(struct pool *, int); +static void pmap_pdp_free(struct pool *, void *); static struct pool_allocator pmap_pdp_allocator = { .pa_alloc = pmap_pdp_alloc, .pa_free = pmap_pdp_free, @@ -2014,7 +2011,7 @@ pmap_get_ptp(struct pmap *pmap, vaddr_t /* * pmap_pdp_ctor: constructor for the PDP cache. */ -int +static int pmap_pdp_ctor(void *arg, void *v, int flags) { pd_entry_t *pdir = v; @@ -2121,7 +2118,7 @@ pmap_pdp_ctor(void *arg, void *v, int fl * pmap_pdp_dtor: destructor for the PDP cache. */ -void +static void pmap_pdp_dtor(void *arg, void *v) { #ifdef XEN @@ -2152,7 +2149,7 @@ pmap_pdp_dtor(void *arg, void *v) /* pmap_pdp_alloc: Allocate a page for the pdp memory pool. */ -void * +static void * pmap_pdp_alloc(struct pool *pp, int flags) { return (void *)uvm_km_alloc(kernel_map, @@ -2165,7 +2162,7 @@ pmap_pdp_alloc(
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 19:26:34 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: i tested sb under qemu To generate a diff of this commit: cvs rdiff -u -r1.1.2.16 -r1.1.2.17 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.16 src/sys/dev/TODO.audiomp:1.1.2.17 --- src/sys/dev/TODO.audiomp:1.1.2.16 Sun Nov 20 16:34:23 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 19:26:34 2011 @@ -26,7 +26,7 @@ dev/isa/aria.c done dev/isa/ess.c done port-shark dev/isa/gus.c done dev/isa/pas.c done -dev/isa/sb.c done +dev/isa/sb.c done port-i386 dev/isa/wss.c done dev/isa/ym.c done dev/isapnp/mpu_isapnp.c done
CVS commit: [jmcneill-audiomp3] src/sys/dev/isa
Module Name:src Committed By: jmcneill Date: Sun Nov 20 19:26:05 UTC 2011 Modified Files: src/sys/dev/isa [jmcneill-audiomp3]: sbdsp.c Log Message: don't kpause with intr_lock held To generate a diff of this commit: cvs rdiff -u -r1.134.12.1 -r1.134.12.2 src/sys/dev/isa/sbdsp.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/isa/sbdsp.c diff -u src/sys/dev/isa/sbdsp.c:1.134.12.1 src/sys/dev/isa/sbdsp.c:1.134.12.2 --- src/sys/dev/isa/sbdsp.c:1.134.12.1 Sat Nov 19 21:49:39 2011 +++ src/sys/dev/isa/sbdsp.c Sun Nov 20 19:26:05 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: sbdsp.c,v 1.134.12.1 2011/11/19 21:49:39 jmcneill Exp $ */ +/* $NetBSD: sbdsp.c,v 1.134.12.2 2011/11/20 19:26:05 jmcneill Exp $ */ /*- * Copyright (c) 1999, 2008 The NetBSD Foundation, Inc. @@ -74,7 +74,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: sbdsp.c,v 1.134.12.1 2011/11/19 21:49:39 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sbdsp.c,v 1.134.12.2 2011/11/20 19:26:05 jmcneill Exp $"); #include "midi.h" #include "mpu.h" @@ -1095,8 +1095,7 @@ sbdsp_rdsp(struct sbdsp_softc *sc) void sbdsp_pause(struct sbdsp_softc *sc) { - - (void)kpause("sbpause", FALSE, hz/8, &sc->sc_lock); + delay(10); /* 1/10th of a second */ } /*
CVS commit: src/sys/arch/amd64/amd64
Module Name:src Committed By: yamt Date: Sun Nov 20 18:42:56 UTC 2011 Modified Files: src/sys/arch/amd64/amd64: machdep.c Log Message: revert machdep.c rev. 1.168 because it's likely to have the same problem as i386's one. http://mail-index.NetBSD.org/source-changes-d/2011/11/19/msg004283.html To generate a diff of this commit: cvs rdiff -u -r1.170 -r1.171 src/sys/arch/amd64/amd64/machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/amd64/amd64/machdep.c diff -u src/sys/arch/amd64/amd64/machdep.c:1.170 src/sys/arch/amd64/amd64/machdep.c:1.171 --- src/sys/arch/amd64/amd64/machdep.c:1.170 Thu Nov 10 00:12:04 2011 +++ src/sys/arch/amd64/amd64/machdep.c Sun Nov 20 18:42:56 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.170 2011/11/10 00:12:04 jym Exp $ */ +/* $NetBSD: machdep.c,v 1.171 2011/11/20 18:42:56 yamt Exp $ */ /*- * Copyright (c) 1996, 1997, 1998, 2000, 2006, 2007, 2008, 2011 @@ -111,7 +111,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.170 2011/11/10 00:12:04 jym Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.171 2011/11/20 18:42:56 yamt Exp $"); /* #define XENDEBUG_LOW */ @@ -1182,7 +1182,6 @@ dumpsys_seg(paddr_t maddr, paddr_t bytes pmap_update(pmap_kernel()); error = (*dump)(dumpdev, blkno, (void *)dumpspace, n); - pmap_kremove(dumpspace, n * PAGE_SIZE); if (error) return error; maddr += n;
CVS commit: src/sys/arch/i386/i386
Module Name:src Committed By: yamt Date: Sun Nov 20 18:41:13 UTC 2011 Modified Files: src/sys/arch/i386/i386: dumpsys.c Log Message: revert dumpsys.c rev. 1.13 because it was reported to cause a problem. http://mail-index.NetBSD.org/source-changes-d/2011/11/19/msg004283.html To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/arch/i386/i386/dumpsys.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/i386/i386/dumpsys.c diff -u src/sys/arch/i386/i386/dumpsys.c:1.14 src/sys/arch/i386/i386/dumpsys.c:1.15 --- src/sys/arch/i386/i386/dumpsys.c:1.14 Thu Nov 10 03:45:40 2011 +++ src/sys/arch/i386/i386/dumpsys.c Sun Nov 20 18:41:12 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: dumpsys.c,v 1.14 2011/11/10 03:45:40 riz Exp $ */ +/* $NetBSD: dumpsys.c,v 1.15 2011/11/20 18:41:12 yamt Exp $ */ /*- * Copyright (c) 1996, 1997, 1998, 2000, 2004, 2006, 2008 The NetBSD Foundation, Inc. @@ -69,7 +69,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: dumpsys.c,v 1.14 2011/11/10 03:45:40 riz Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dumpsys.c,v 1.15 2011/11/20 18:41:12 yamt Exp $"); #include #include @@ -668,7 +668,6 @@ dumpsys_seg(paddr_t maddr, paddr_t bytes pmap_update(pmap_kernel()); error = (*dump)(dumpdev, blkno, (void *)dumpspace, n); - pmap_kremove(dumpspace, n * PAGE_SIZE); if (error) return error; maddr += n;
CVS commit: [jmcneill-audiomp3] src/sys/arch/sgimips/mace
Module Name:src Committed By: jmcneill Date: Sun Nov 20 18:25:46 UTC 2011 Modified Files: src/sys/arch/sgimips/mace [jmcneill-audiomp3]: mavb.c Log Message: no need to enter intr_lock from trigger_output, it's already held To generate a diff of this commit: cvs rdiff -u -r1.7.4.2 -r1.7.4.3 src/sys/arch/sgimips/mace/mavb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/sgimips/mace/mavb.c diff -u src/sys/arch/sgimips/mace/mavb.c:1.7.4.2 src/sys/arch/sgimips/mace/mavb.c:1.7.4.3 --- src/sys/arch/sgimips/mace/mavb.c:1.7.4.2 Sun Nov 20 16:07:27 2011 +++ src/sys/arch/sgimips/mace/mavb.c Sun Nov 20 18:25:46 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: mavb.c,v 1.7.4.2 2011/11/20 16:07:27 jmcneill Exp $ */ +/* $NetBSD: mavb.c,v 1.7.4.3 2011/11/20 18:25:46 jmcneill Exp $ */ /* $OpenBSD: mavb.c,v 1.6 2005/04/15 13:05:14 mickey Exp $ */ /* @@ -909,8 +909,6 @@ mavb_trigger_output(void *hdl, void *sta sc->sc_count = 0; - mutex_spin_enter(&sc->sc_intr_lock); - bus_space_write_8(sc->sc_st, sc->sc_sh, MAVB_CHANNEL2_CONTROL, MAVB_CHANNEL_RESET); delay(1000); @@ -921,8 +919,6 @@ mavb_trigger_output(void *hdl, void *sta bus_space_write_8(sc->sc_st, sc->sc_sh, MAVB_CHANNEL2_CONTROL, MAVB_CHANNEL_DMA_ENABLE | MAVB_CHANNEL_INT_50); - mutex_spin_exit(&sc->sc_intr_lock); - return 0; }
CVS commit: src/etc/etc.news68k
Module Name:src Committed By: tsutsui Date: Sun Nov 20 17:21:16 UTC 2011 Modified Files: src/etc/etc.news68k: ttys Log Message: Add an entry for romcons. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/etc/etc.news68k/ttys Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/etc/etc.news68k/ttys diff -u src/etc/etc.news68k/ttys:1.8 src/etc/etc.news68k/ttys:1.9 --- src/etc/etc.news68k/ttys:1.8 Tue Oct 7 10:00:02 2008 +++ src/etc/etc.news68k/ttys Sun Nov 20 17:21:15 2011 @@ -1,11 +1,12 @@ # # @(#)ttys 5.1 (Berkeley) 4/17/89 -# $NetBSD: ttys,v 1.8 2008/10/07 10:00:02 abs Exp $ +# $NetBSD: ttys,v 1.9 2011/11/20 17:21:15 tsutsui Exp $ # # name gettytype status comments # # Note: the console redirects to one of: kd, ttya, ttyb console "/usr/libexec/getty std.9600" vt100 on secure constty "/usr/libexec/getty std.9600" vt100 off secure +romcons "/usr/libexec/getty std.9600" news off secure ttyZ0 "/usr/libexec/getty std.9600" vt100 off secure ttyZ1 "/usr/libexec/getty std.9600" unknown on secure
CVS commit: src/etc/etc.news68k
Module Name:src Committed By: tsutsui Date: Sun Nov 20 17:18:34 UTC 2011 Modified Files: src/etc/etc.news68k: MAKEDEV.conf Log Message: Create romcons device node. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/etc/etc.news68k/MAKEDEV.conf Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/etc/etc.news68k/MAKEDEV.conf diff -u src/etc/etc.news68k/MAKEDEV.conf:1.2 src/etc/etc.news68k/MAKEDEV.conf:1.3 --- src/etc/etc.news68k/MAKEDEV.conf:1.2 Sun Oct 19 19:07:27 2003 +++ src/etc/etc.news68k/MAKEDEV.conf Sun Nov 20 17:18:34 2011 @@ -1,8 +1,9 @@ -# $NetBSD: MAKEDEV.conf,v 1.2 2003/10/19 19:07:27 jdolecek Exp $ +# $NetBSD: MAKEDEV.conf,v 1.3 2011/11/20 17:18:34 tsutsui Exp $ all_md) makedev sd0 sd1 sd2 sd3 cd0 st0 st1 makedev tty0 tty1 + makedev romcons makedev scsibus0 scsibus1 scsibus2 scsibus3 makedev raid0 raid1 raid2 raid3 ;; @@ -10,4 +11,9 @@ all_md) floppy) makedev std sd0 sd1 sd2 sd3 cd0 st0 st1 makedev opty tty0 tty1 md0 + makedev romcons + ;; + +romcons) + mkdev romcons c 81 0 ;;
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 16:34:23 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: paud is done To generate a diff of this commit: cvs rdiff -u -r1.1.2.15 -r1.1.2.16 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.15 src/sys/dev/TODO.audiomp:1.1.2.16 --- src/sys/dev/TODO.audiomp:1.1.2.15 Sun Nov 20 16:18:32 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 16:34:23 2011 @@ -10,7 +10,7 @@ arch/hp700/gsc/harmony.c done arch/hpcmips/vr/vraiu.c done arch/macppc/dev/awacs.c arch/macppc/dev/snapper.c -arch/prep/isa/paud_isa.c toolchain-fails +arch/prep/isa/paud_isa.c done arch/sgimips/hpc/haltwo.c done arch/sgimips/mace/mavb.c done arch/sparc/dev/audioamd.c done
CVS commit: [jmcneill-audiomp3] src/sys/arch/prep/isa
Module Name:src Committed By: jmcneill Date: Sun Nov 20 16:34:08 UTC 2011 Modified Files: src/sys/arch/prep/isa [jmcneill-audiomp3]: paud_isa.c Log Message: adapt to audiomp api changes To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.14.4.1 src/sys/arch/prep/isa/paud_isa.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/prep/isa/paud_isa.c diff -u src/sys/arch/prep/isa/paud_isa.c:1.14 src/sys/arch/prep/isa/paud_isa.c:1.14.4.1 --- src/sys/arch/prep/isa/paud_isa.c:1.14 Fri Jul 1 16:57:29 2011 +++ src/sys/arch/prep/isa/paud_isa.c Sun Nov 20 16:34:08 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: paud_isa.c,v 1.14 2011/07/01 16:57:29 dyoung Exp $ */ +/* $NetBSD: paud_isa.c,v 1.14.4.1 2011/11/20 16:34:08 jmcneill Exp $ */ /*- * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: paud_isa.c,v 1.14 2011/07/01 16:57:29 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: paud_isa.c,v 1.14.4.1 2011/11/20 16:34:08 jmcneill Exp $"); #include "audio.h" #if NAUDIO > 0 @@ -39,7 +39,7 @@ __KERNEL_RCSID(0, "$NetBSD: paud_isa.c,v #include #include #include -#include +#include #include #include @@ -87,6 +87,7 @@ static struct audio_device paud_device = "" }; +static int paud_intr(void *); static int paud_getdev(void *, struct audio_device *); static int paud_mixer_set_port(void *, mixer_ctrl_t *); static int paud_mixer_get_port(void *, mixer_ctrl_t *); @@ -120,6 +121,8 @@ static const struct audio_hw_if paud_hw_ ad1848_isa_trigger_output, ad1848_isa_trigger_input, NULL, + NULL, + ad1848_get_locks, }; /* autoconfig routines */ @@ -158,6 +161,9 @@ paud_attach_isa(device_t parent, device_ sc->sc_ad1848.sc_iot = ia->ia_iot; sc->sc_ic = ia->ia_ic; + mutex_init(&sc->sc_ad1848.sc_lock, MUTEX_DEFAULT, IPL_NONE); + mutex_init(&sc->sc_ad1848.sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED); + if (ad1848_isa_mapprobe(sc, ia->ia_io[0].ir_addr) == 0) { aprint_error(": attach failed\n"); return; @@ -165,7 +171,7 @@ paud_attach_isa(device_t parent, device_ sc->sc_playdrq = ia->ia_drq[0].ir_drq; sc->sc_recdrq = ia->ia_drq[1].ir_drq; sc->sc_ih = isa_intr_establish(ia->ia_ic, ia->ia_irq[0].ir_irq, - IST_EDGE, IPL_AUDIO, ad1848_isa_intr, sc); + IST_EDGE, IPL_SCHED, paud_intr, sc); ad1848_isa_attach(sc); aprint_normal("\n"); audio_attach_mi(&paud_hw_if, &sc->sc_ad1848, self); @@ -173,6 +179,19 @@ paud_attach_isa(device_t parent, device_ } static int +paud_intr(void *addr) +{ + struct ad1848_isa_softc *sc = addr; + int ret; + + mutex_spin_enter(&sc->sc_ad1848.sc_intr_lock); + ret = ad1848_isa_intr(sc); + mutex_spin_exit(&sc->sc_ad1848.sc_intr_lock); + + return ret; +} + +static int paud_getdev(void *addr, struct audio_device *retp) {
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 16:18:32 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: vs is done To generate a diff of this commit: cvs rdiff -u -r1.1.2.14 -r1.1.2.15 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.14 src/sys/dev/TODO.audiomp:1.1.2.15 --- src/sys/dev/TODO.audiomp:1.1.2.14 Sun Nov 20 15:49:16 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 16:18:32 2011 @@ -14,7 +14,7 @@ arch/prep/isa/paud_isa.c toolchain-fails arch/sgimips/hpc/haltwo.c done arch/sgimips/mace/mavb.c done arch/sparc/dev/audioamd.c done -arch/x68k/dev/vs.c +arch/x68k/dev/vs.c done arch/zaurus/dev/zaudio.c done dev/bluetooth/btsco.c done dev/ebus/cs4231_ebus.c done
CVS commit: [jmcneill-audiomp3] src/sys
Module Name:src Committed By: jmcneill Date: Sun Nov 20 16:18:15 UTC 2011 Modified Files: src/sys/arch/x68k/dev [jmcneill-audiomp3]: vs.c vsvar.h src/sys/dev/ic [jmcneill-audiomp3]: msm6258.c Log Message: adapt to audiomp api changes To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.34.4.1 src/sys/arch/x68k/dev/vs.c cvs rdiff -u -r1.10 -r1.10.4.1 src/sys/arch/x68k/dev/vsvar.h cvs rdiff -u -r1.16 -r1.16.4.1 src/sys/dev/ic/msm6258.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/x68k/dev/vs.c diff -u src/sys/arch/x68k/dev/vs.c:1.34 src/sys/arch/x68k/dev/vs.c:1.34.4.1 --- src/sys/arch/x68k/dev/vs.c:1.34 Sun Oct 16 03:10:18 2011 +++ src/sys/arch/x68k/dev/vs.c Sun Nov 20 16:18:15 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vs.c,v 1.34 2011/10/16 03:10:18 isaki Exp $ */ +/* $NetBSD: vs.c,v 1.34.4.1 2011/11/20 16:18:15 jmcneill Exp $ */ /* * Copyright (c) 2001 Tetsuya Isaki. All rights reserved. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: vs.c,v 1.34 2011/10/16 03:10:18 isaki Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vs.c,v 1.34.4.1 2011/11/20 16:18:15 jmcneill Exp $"); #include "audio.h" #include "vs.h" @@ -39,6 +39,7 @@ __KERNEL_RCSID(0, "$NetBSD: vs.c,v 1.34 #include #include #include +#include #include #include @@ -83,17 +84,18 @@ static int vs_trigger_input(void *, voi void (*)(void *), void *, const audio_params_t *); static int vs_halt_output(void *); static int vs_halt_input(void *); -static int vs_allocmem(struct vs_softc *, size_t, size_t, size_t, int, +static int vs_allocmem(struct vs_softc *, size_t, size_t, size_t, struct vs_dma *); static void vs_freemem(struct vs_dma *); static int vs_getdev(void *, struct audio_device *); static int vs_set_port(void *, mixer_ctrl_t *); static int vs_get_port(void *, mixer_ctrl_t *); static int vs_query_devinfo(void *, mixer_devinfo_t *); -static void *vs_allocm(void *, int, size_t, struct malloc_type *, int); -static void vs_freem(void *, void *, struct malloc_type *); +static void *vs_allocm(void *, int, size_t); +static void vs_freem(void *, void *, size_t); static size_t vs_round_buffersize(void *, int, size_t); static int vs_get_props(void *); +static void vs_get_locks(void *, kmutex_t **, kmutex_t **); /* lower functions */ static int vs_round_sr(u_long); @@ -135,6 +137,8 @@ static const struct audio_hw_if vs_hw_if vs_trigger_output, vs_trigger_input, NULL, + NULL, + vs_get_locks, }; static struct audio_device vs_device = { @@ -229,6 +233,8 @@ vs_attach(device_t parent, device_t self sc->sc_hw_if = &vs_hw_if; sc->sc_addr = (void *) ia->ia_addr; sc->sc_dmas = NULL; + mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE); + mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED); /* XXX */ bus_space_map(iot, PPI_ADDR, PPI_MAPSIZE, BUS_SPACE_MAP_SHIFTED, @@ -255,6 +261,9 @@ vs_dmaintr(void *hdl) DPRINTF(2, ("vs_dmaintr\n")); sc = hdl; + + mutex_spin_enter(&sc->sc_intr_lock); + if (sc->sc_pintr) { /* start next transfer */ sc->sc_current.dmap += sc->sc_current.blksize; @@ -281,6 +290,8 @@ vs_dmaintr(void *hdl) printf("vs_dmaintr: spurious interrupt\n"); } + mutex_spin_exit(&sc->sc_intr_lock); + return 1; } @@ -617,38 +628,37 @@ vs_halt_input(void *hdl) static int vs_allocmem(struct vs_softc *sc, size_t size, size_t align, size_t boundary, - int flags, struct vs_dma *vd) + struct vs_dma *vd) { - int error, wait; + int error; #ifdef DIAGNOSTIC if (size > DMAC_MAXSEGSZ) panic ("vs_allocmem: maximum size exceeded, %d", (int) size); #endif - wait = (flags & M_NOWAIT) ? BUS_DMA_NOWAIT : BUS_DMA_WAITOK; vd->vd_size = size; error = bus_dmamem_alloc(vd->vd_dmat, vd->vd_size, align, boundary, vd->vd_segs, sizeof (vd->vd_segs) / sizeof (vd->vd_segs[0]), - &vd->vd_nsegs, wait); + &vd->vd_nsegs, BUS_DMA_WAITOK); if (error) goto out; error = bus_dmamem_map(vd->vd_dmat, vd->vd_segs, vd->vd_nsegs, vd->vd_size, &vd->vd_addr, - wait | BUS_DMA_COHERENT); + BUS_DMA_WAITOK | BUS_DMA_COHERENT); if (error) goto free; error = bus_dmamap_create(vd->vd_dmat, vd->vd_size, 1, DMAC_MAXSEGSZ, - 0, wait, &vd->vd_map); + 0, BUS_DMA_WAITOK, &vd->vd_map); if (error) goto unmap; error = bus_dmamap_load(vd->vd_dmat, vd->vd_map, vd->vd_addr, -vd->vd_size, NULL, wait); +vd->vd_size, NULL, BUS_DMA_WAITOK); if (error) goto destroy; @@ -712,21 +722,20 @@ vs_query_devinfo(void *hdl, mixer_devinf } static void * -vs_allocm(void *hdl, int direction, size_t size, struct malloc_type *type, -int flags) +vs_allocm(void *hdl, int direction, size_t size) { struct vs_softc *sc; struct vs_dma *vd; int error; - if ((vd = malloc(size, type, flags)) == NULL) + if ((vd = kmem_alloc(sizeof(*vd), KM_SLEEP)) == NULL) return NULL; sc =
CVS commit: [jmcneill-audiomp3] src/sys/arch/sgimips/mace
Module Name:src Committed By: jmcneill Date: Sun Nov 20 16:07:27 UTC 2011 Modified Files: src/sys/arch/sgimips/mace [jmcneill-audiomp3]: mavb.c Log Message: fix size passed to kmem_free in stream filter dtor To generate a diff of this commit: cvs rdiff -u -r1.7.4.1 -r1.7.4.2 src/sys/arch/sgimips/mace/mavb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/sgimips/mace/mavb.c diff -u src/sys/arch/sgimips/mace/mavb.c:1.7.4.1 src/sys/arch/sgimips/mace/mavb.c:1.7.4.2 --- src/sys/arch/sgimips/mace/mavb.c:1.7.4.1 Sun Nov 20 12:27:21 2011 +++ src/sys/arch/sgimips/mace/mavb.c Sun Nov 20 16:07:27 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: mavb.c,v 1.7.4.1 2011/11/20 12:27:21 jmcneill Exp $ */ +/* $NetBSD: mavb.c,v 1.7.4.2 2011/11/20 16:07:27 jmcneill Exp $ */ /* $OpenBSD: mavb.c,v 1.6 2005/04/15 13:05:14 mickey Exp $ */ /* @@ -235,7 +235,7 @@ mavb_dtor(stream_filter_t *this) { if (this != NULL) - kmem_free(this, sizeof(*this)); + kmem_free(this, sizeof(struct mavb_codecvar)); } typedef uint64_t ad1843_addr_t;
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 15:49:16 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: tms320av110 (melody) is done To generate a diff of this commit: cvs rdiff -u -r1.1.2.13 -r1.1.2.14 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.13 src/sys/dev/TODO.audiomp:1.1.2.14 --- src/sys/dev/TODO.audiomp:1.1.2.13 Sun Nov 20 15:24:01 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 15:49:16 2011 @@ -21,7 +21,7 @@ dev/ebus/cs4231_ebus.c done dev/ic/interwave.c done dev/ic/mpu.c done dev/ic/opl.c done -dev/ic/tms320av110.c +dev/ic/tms320av110.c done dev/isa/aria.c done dev/isa/ess.c done port-shark dev/isa/gus.c done
CVS commit: [jmcneill-audiomp3] src/sys
Module Name:src Committed By: jmcneill Date: Sun Nov 20 15:48:53 UTC 2011 Modified Files: src/sys/arch/amiga/dev [jmcneill-audiomp3]: melody.c src/sys/arch/amigappc/amigappc [jmcneill-audiomp3]: machdep.c src/sys/dev/ic [jmcneill-audiomp3]: tms320av110.c tms320av110var.h Log Message: adapt to audiomp api changes To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.16.4.1 src/sys/arch/amiga/dev/melody.c cvs rdiff -u -r1.48 -r1.48.4.1 src/sys/arch/amigappc/amigappc/machdep.c cvs rdiff -u -r1.21 -r1.21.36.1 src/sys/dev/ic/tms320av110.c cvs rdiff -u -r1.10 -r1.10.36.1 src/sys/dev/ic/tms320av110var.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/amiga/dev/melody.c diff -u src/sys/arch/amiga/dev/melody.c:1.16 src/sys/arch/amiga/dev/melody.c:1.16.4.1 --- src/sys/arch/amiga/dev/melody.c:1.16 Tue Jul 19 15:55:27 2011 +++ src/sys/arch/amiga/dev/melody.c Sun Nov 20 15:48:52 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: melody.c,v 1.16 2011/07/19 15:55:27 dyoung Exp $ */ +/* $NetBSD: melody.c,v 1.16.4.1 2011/11/20 15:48:52 jmcneill Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: melody.c,v 1.16 2011/07/19 15:55:27 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: melody.c,v 1.16.4.1 2011/11/20 15:48:52 jmcneill Exp $"); /* * Melody audio driver. @@ -111,6 +111,10 @@ melody_attach(struct device *parent, str sc->sc_tav.sc_dif = 0; sc->sc_tav.sc_pcm_div = 12; + mutex_init(&sc->sc_tav.sc_lock, MUTEX_DEFAULT, IPL_NONE); + mutex_init(&sc->sc_tav.sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED); + cv_init(&sc->sc_tav.sc_cv, device_xname(self)); + /* * Attach option boards now. They might provide additional * functionality to our audio part. Index: src/sys/arch/amigappc/amigappc/machdep.c diff -u src/sys/arch/amigappc/amigappc/machdep.c:1.48 src/sys/arch/amigappc/amigappc/machdep.c:1.48.4.1 --- src/sys/arch/amigappc/amigappc/machdep.c:1.48 Sun Jul 17 20:54:36 2011 +++ src/sys/arch/amigappc/amigappc/machdep.c Sun Nov 20 15:48:53 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.48 2011/07/17 20:54:36 joerg Exp $ */ +/* $NetBSD: machdep.c,v 1.48.4.1 2011/11/20 15:48:53 jmcneill Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -32,7 +32,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.48 2011/07/17 20:54:36 joerg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.48.4.1 2011/11/20 15:48:53 jmcneill Exp $"); #include #include @@ -241,7 +241,7 @@ amigappc_install_handlers(void) intr_establish(1, IST_LEVEL, IPL_BIO, lev1_intr, NULL); intr_establish(2, IST_LEVEL, IPL_BIO, ports_intr, &isr_ports); intr_establish(3, IST_LEVEL, IPL_TTY, lev3_intr, NULL); - intr_establish(4, IST_LEVEL, IPL_AUDIO, lev4_intr, NULL); + intr_establish(4, IST_LEVEL, IPL_SCHED, lev4_intr, NULL); intr_establish(5, IST_LEVEL, IPL_SERIAL, lev5_intr, NULL); intr_establish(6, IST_LEVEL, IPL_SERIAL, exter_intr, &isr_exter); } Index: src/sys/dev/ic/tms320av110.c diff -u src/sys/dev/ic/tms320av110.c:1.21 src/sys/dev/ic/tms320av110.c:1.21.36.1 --- src/sys/dev/ic/tms320av110.c:1.21 Mon Apr 28 20:23:51 2008 +++ src/sys/dev/ic/tms320av110.c Sun Nov 20 15:48:52 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: tms320av110.c,v 1.21 2008/04/28 20:23:51 martin Exp $ */ +/* $NetBSD: tms320av110.c,v 1.21.36.1 2011/11/20 15:48:52 jmcneill Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -37,7 +37,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: tms320av110.c,v 1.21 2008/04/28 20:23:51 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tms320av110.c,v 1.21.36.1 2011/11/20 15:48:52 jmcneill Exp $"); #include #include @@ -72,6 +72,7 @@ int tav_set_port(void *, mixer_ctrl_t *) int tav_get_port(void *, mixer_ctrl_t *); int tav_query_devinfo(void *, mixer_devinfo_t *); int tav_get_props(void *); +void tav_get_locks(void *, kmutex_t **, kmutex_t **); const struct audio_hw_if tav_audio_if = { tav_open, @@ -98,7 +99,11 @@ const struct audio_hw_if tav_audio_if = 0 /* round_buffersize */, /* optional */ 0 /* mappage */, /* optional */ tav_get_props, - 0 /* dev_ioctl */ /* optional */ + 0, /* trigger_output */ + 0, /* trigger_input */ + 0, /* dev_ioctl */ /* optional */ + 0, /* powerhook */ /* optional */ + tav_get_locks, }; void @@ -146,6 +151,9 @@ tms320av110_intr(void *p) uint16_t intlist; sc = p; + + mutex_spin_enter(&sc->sc_intr_lock); + intlist = tav_read_short(sc->sc_iot, sc->sc_ioh, TAV_INTR) /* & tav_read_short(sc->sc_iot, sc->sc_ioh, TAV_INTR_EN)*/; @@ -161,9 +169,11 @@ tms320av110_intr(void *p) } if (intlist & TAV_INTR_PCM_OUTPUT_UNDERFLOW) { - wakeup(sc); + cv_broadcast(&sc->sc_cv); } + mutex_spin_exit(&sc->sc_intr_lock); + return 1; } @@ -211,8 +221,10 @@ tav_drain(void *hdl) iot = sc->sc_iot; ioh = sc->sc_ioh; + mutex_spin_ente
CVS commit: src/sys/arch/news68k
Module Name:src Committed By: tsutsui Date: Sun Nov 20 15:38:00 UTC 2011 Modified Files: src/sys/arch/news68k/conf: GENERIC INSTALL files.news68k majors.news68k src/sys/arch/news68k/dev: if_le.c kb_hb.c si.c zs.c src/sys/arch/news68k/include: cpu.h vmparam.h src/sys/arch/news68k/news68k: locore.s machdep.c pmap_bootstrap.c Added Files: src/sys/arch/news68k/news68k: romcalls.S romcons.c Log Message: Add preliminary PROM internal function based framebuffer console support, which was demonstrated at Open Source Conference 2011 Kansai @ Kyoto back in July: http://www.NetBSD.org/gallery/events.html#opensourceconf2011-Kansai - map 0xc000-0x PA region (which is mirror of PA 0x0-0x3fff) to the same VA via %tt0 and %tt1 registers and move KVA space accordingly (like luna68k does for its devices) - save trap #0 vector for PROM function calls in early bootstrap and register it to trap #14 to call it from kernel for console output - add dumb romcall based tty attachment taken from src/sys/dev/ofw/ofcons.c - add rom function call stubs from news68k/stand/common/romcalls.S - remove IIOV() macro for device registers where now mapped PA==VA via %tt1 XXX: romcons is not enabled yet because there is no generic interface XXX: to attach wskbd(4) to non wsdisplay(4) devices like this romcons. To generate a diff of this commit: cvs rdiff -u -r1.106 -r1.107 src/sys/arch/news68k/conf/GENERIC cvs rdiff -u -r1.53 -r1.54 src/sys/arch/news68k/conf/INSTALL cvs rdiff -u -r1.32 -r1.33 src/sys/arch/news68k/conf/files.news68k cvs rdiff -u -r1.22 -r1.23 src/sys/arch/news68k/conf/majors.news68k cvs rdiff -u -r1.18 -r1.19 src/sys/arch/news68k/dev/if_le.c cvs rdiff -u -r1.12 -r1.13 src/sys/arch/news68k/dev/kb_hb.c cvs rdiff -u -r1.25 -r1.26 src/sys/arch/news68k/dev/si.c cvs rdiff -u -r1.30 -r1.31 src/sys/arch/news68k/dev/zs.c cvs rdiff -u -r1.39 -r1.40 src/sys/arch/news68k/include/cpu.h cvs rdiff -u -r1.18 -r1.19 src/sys/arch/news68k/include/vmparam.h cvs rdiff -u -r1.59 -r1.60 src/sys/arch/news68k/news68k/locore.s cvs rdiff -u -r1.95 -r1.96 src/sys/arch/news68k/news68k/machdep.c cvs rdiff -u -r1.36 -r1.37 src/sys/arch/news68k/news68k/pmap_bootstrap.c cvs rdiff -u -r0 -r1.1 src/sys/arch/news68k/news68k/romcalls.S \ src/sys/arch/news68k/news68k/romcons.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/news68k/conf/GENERIC diff -u src/sys/arch/news68k/conf/GENERIC:1.106 src/sys/arch/news68k/conf/GENERIC:1.107 --- src/sys/arch/news68k/conf/GENERIC:1.106 Sun Mar 6 17:08:28 2011 +++ src/sys/arch/news68k/conf/GENERIC Sun Nov 20 15:38:00 2011 @@ -1,4 +1,4 @@ -# $NetBSD: GENERIC,v 1.106 2011/03/06 17:08:28 bouyer Exp $ +# $NetBSD: GENERIC,v 1.107 2011/11/20 15:38:00 tsutsui Exp $ # # GENERIC machine description file # @@ -22,7 +22,7 @@ include "arch/news68k/conf/std.news68k" options INCLUDE_CONFIG_FILE # embed config file in kernel binary -#ident "GENERIC-$Revision: 1.106 $" +#ident "GENERIC-$Revision: 1.107 $" maxusers 8 @@ -221,6 +221,9 @@ ch* at scsibus? target ? lun ? # SCSI c ss* at scsibus? target ? lun ? # SCSI scanners uk* at scsibus? target ? lun ? # unknown SCSI devices +# PROM console support +#romcons0 at mainbus0 + # # accept filters pseudo-device accf_data # "dataready" accept filter Index: src/sys/arch/news68k/conf/INSTALL diff -u src/sys/arch/news68k/conf/INSTALL:1.53 src/sys/arch/news68k/conf/INSTALL:1.54 --- src/sys/arch/news68k/conf/INSTALL:1.53 Sun Mar 13 12:58:02 2011 +++ src/sys/arch/news68k/conf/INSTALL Sun Nov 20 15:38:00 2011 @@ -1,4 +1,4 @@ -# $NetBSD: INSTALL,v 1.53 2011/03/13 12:58:02 he Exp $ +# $NetBSD: INSTALL,v 1.54 2011/11/20 15:38:00 tsutsui Exp $ # config for bootable floppy kernel # @@ -146,6 +146,9 @@ sd* at scsibus? target ? lun ? # SCSI d st* at scsibus? target ? lun ? # SCSI tapes cd* at scsibus? target ? lun ? # SCSI CD-ROMs +# PROM console support +#romcons0 at mainbus0 + # Misc. pseudo-device loop # loopback interface; required pseudo-device pty 2 # pseudo-terminals (Sysinst needs two) Index: src/sys/arch/news68k/conf/files.news68k diff -u src/sys/arch/news68k/conf/files.news68k:1.32 src/sys/arch/news68k/conf/files.news68k:1.33 --- src/sys/arch/news68k/conf/files.news68k:1.32 Sun Jun 12 03:35:44 2011 +++ src/sys/arch/news68k/conf/files.news68k Sun Nov 20 15:38:00 2011 @@ -1,4 +1,4 @@ -# $NetBSD: files.news68k,v 1.32 2011/06/12 03:35:44 rmind Exp $ +# $NetBSD: files.news68k,v 1.33 2011/11/20 15:38:00 tsutsui Exp $ # NEWS68K-specific configuration info @@ -19,6 +19,7 @@ file arch/news68k/news68k/isr.c file arch/news68k/news68k/machdep.c file arch/news68k/news68k/mainbus.c file arch/news68k/news68k/pmap_bootstrap.c compile-with "${NOPROF_C}" +file arch/news68k/news68k/romcalls.S file arch/news68k/news68k/trap.c file arch/m68k/m68k/cacheops.c file arch/m68k/m68k
CVS commit: src/sys/lib/libkern
Module Name:src Committed By: para Date: Sun Nov 20 15:37:31 UTC 2011 Modified Files: src/sys/lib/libkern: arc4random.c Log Message: make it compile without DIAGNOSTIC defined To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/sys/lib/libkern/arc4random.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/lib/libkern/arc4random.c diff -u src/sys/lib/libkern/arc4random.c:1.22 src/sys/lib/libkern/arc4random.c:1.23 --- src/sys/lib/libkern/arc4random.c:1.22 Sat Nov 19 22:51:25 2011 +++ src/sys/lib/libkern/arc4random.c Sun Nov 20 15:37:31 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: arc4random.c,v 1.22 2011/11/19 22:51:25 tls Exp $ */ +/* $NetBSD: arc4random.c,v 1.23 2011/11/20 15:37:31 para Exp $ */ /*- * Copyright (c) 2002, 2011 The NetBSD Foundation, Inc. @@ -133,8 +133,10 @@ arc4_randrekey(void *arg) u_int8_t key[256]; int n, ask_for_more = 0; #ifdef _KERNEL +#ifdef DIAGNOSTIC rngtest_t rt; #endif +#endif #if NRND > 0 static int callback_pending; int r;
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 15:24:01 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: harmony is done To generate a diff of this commit: cvs rdiff -u -r1.1.2.12 -r1.1.2.13 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.12 src/sys/dev/TODO.audiomp:1.1.2.13 --- src/sys/dev/TODO.audiomp:1.1.2.12 Sun Nov 20 15:00:49 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 15:24:01 2011 @@ -6,7 +6,7 @@ arch/amiga/dev/toccata.c done arch/arm/iomd/vidcaudio.c done arcm/arm/xscale/pxa2x0_ac97.c done arch/dreamcast/dev/g2/aica.c done -arch/hp700/gsc/harmony.c +arch/hp700/gsc/harmony.c done arch/hpcmips/vr/vraiu.c done arch/macppc/dev/awacs.c arch/macppc/dev/snapper.c
CVS commit: [jmcneill-audiomp3] src/sys/arch/hp700/gsc
Module Name:src Committed By: jmcneill Date: Sun Nov 20 15:23:46 UTC 2011 Modified Files: src/sys/arch/hp700/gsc [jmcneill-audiomp3]: harmony.c harmonyvar.h Log Message: adapt to audiomp api changes To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.23.4.1 src/sys/arch/hp700/gsc/harmony.c cvs rdiff -u -r1.4 -r1.4.38.1 src/sys/arch/hp700/gsc/harmonyvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/hp700/gsc/harmony.c diff -u src/sys/arch/hp700/gsc/harmony.c:1.23 src/sys/arch/hp700/gsc/harmony.c:1.23.4.1 --- src/sys/arch/hp700/gsc/harmony.c:1.23 Fri Jul 1 18:33:09 2011 +++ src/sys/arch/hp700/gsc/harmony.c Sun Nov 20 15:23:46 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: harmony.c,v 1.23 2011/07/01 18:33:09 dyoung Exp $ */ +/* $NetBSD: harmony.c,v 1.23.4.1 2011/11/20 15:23:46 jmcneill Exp $ */ /* $OpenBSD: harmony.c,v 1.23 2004/02/13 21:28:19 mickey Exp $ */ @@ -70,7 +70,7 @@ #include #include #include -#include +#include #include #if NRND > 0 @@ -108,14 +108,15 @@ int harmony_getdev(void *, struct audio_ int harmony_set_port(void *, mixer_ctrl_t *); int harmony_get_port(void *, mixer_ctrl_t *); int harmony_query_devinfo(void *, mixer_devinfo_t *); -void * harmony_allocm(void *, int, size_t, struct malloc_type *, int); -void harmony_freem(void *, void *, struct malloc_type *); +void * harmony_allocm(void *, int, size_t); +void harmony_freem(void *, void *, size_t); size_t harmony_round_buffersize(void *, int, size_t); int harmony_get_props(void *); int harmony_trigger_output(void *, void *, void *, int, void (*)(void *), void *, const audio_params_t *); int harmony_trigger_input(void *, void *, void *, int, void (*)(void *), void *, const audio_params_t *); +void harmony_get_locks(void *, kmutex_t **, kmutex_t **); const struct audio_hw_if harmony_sa_hw_if = { harmony_open, @@ -144,6 +145,9 @@ const struct audio_hw_if harmony_sa_hw_i harmony_get_props, harmony_trigger_output, harmony_trigger_input, + NULL, + NULL, + harmony_get_locks, }; int harmony_match(device_t, struct cfdata *, void *); @@ -209,6 +213,9 @@ harmony_attach(device_t parent, device_t sc->sc_bt = ga->ga_iot; sc->sc_dmat = ga->ga_dmatag; + mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE); + mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED); + if (bus_space_map(sc->sc_bt, ga->ga_hpa, HARMONY_NREGS, 0, &sc->sc_bh) != 0) { aprint_error(": couldn't map registers\n"); @@ -230,14 +237,14 @@ harmony_attach(device_t parent, device_t if (bus_dmamem_alloc(sc->sc_dmat, sizeof(struct harmony_empty), PAGE_SIZE, 0, &sc->sc_empty_seg, 1, &sc->sc_empty_rseg, - BUS_DMA_NOWAIT) != 0) { + BUS_DMA_WAITOK) != 0) { aprint_error(": could not alloc DMA memory\n"); bus_space_unmap(sc->sc_bt, sc->sc_bh, HARMONY_NREGS); return; } if (bus_dmamem_map(sc->sc_dmat, &sc->sc_empty_seg, 1, sizeof(struct harmony_empty), (void **)&sc->sc_empty_kva, - BUS_DMA_NOWAIT) != 0) { + BUS_DMA_WAITOK) != 0) { aprint_error(": couldn't map DMA memory\n"); bus_dmamem_free(sc->sc_dmat, &sc->sc_empty_seg, sc->sc_empty_rseg); @@ -245,7 +252,7 @@ harmony_attach(device_t parent, device_t return; } if (bus_dmamap_create(sc->sc_dmat, sizeof(struct harmony_empty), 1, - sizeof(struct harmony_empty), 0, BUS_DMA_NOWAIT, + sizeof(struct harmony_empty), 0, BUS_DMA_WAITOK, &sc->sc_empty_map) != 0) { aprint_error(": can't create DMA map\n"); bus_dmamem_unmap(sc->sc_dmat, (void *)sc->sc_empty_kva, @@ -256,7 +263,7 @@ harmony_attach(device_t parent, device_t return; } if (bus_dmamap_load(sc->sc_dmat, sc->sc_empty_map, sc->sc_empty_kva, - sizeof(struct harmony_empty), NULL, BUS_DMA_NOWAIT) != 0) { + sizeof(struct harmony_empty), NULL, BUS_DMA_WAITOK) != 0) { aprint_error(": can't load DMA map\n"); bus_dmamap_destroy(sc->sc_dmat, sc->sc_empty_map); bus_dmamem_unmap(sc->sc_dmat, (void *)sc->sc_empty_kva, @@ -283,7 +290,7 @@ harmony_attach(device_t parent, device_t offsetof(struct harmony_empty, playback[0][0]), PLAYBACK_EMPTYS * HARMONY_BUFSIZE, BUS_DMASYNC_PREWRITE); - (void) hp700_intr_establish(IPL_AUDIO, harmony_intr, sc, ga->ga_ir, + (void) hp700_intr_establish(IPL_SCHED, harmony_intr, sc, ga->ga_ir, ga->ga_irq); /* set defaults */ @@ -372,6 +379,8 @@ harmony_intr(void *vsc) ADD_CLKALLICA(sc); #endif + mutex_spin_enter(&sc->sc_intr_lock); + harmony_intr_disable(sc); dstatus = READ_REG(sc, HARMONY_DSTATUS); @@ -394,6 +403,8 @@ harmony_intr(void *vsc) harmony_intr_enable(sc); + mutex_spin_exit(&sc->sc_intr_lock); + return r; } @@ -1044,32 +1055,31 @@ harmony_query_devinfo(void *vsc, mixer_d } void * -harmony_allocm(void *vsc, int dir, size_t size, struct malloc_type *pool, -int flags) +harmony_allocm(void *vsc, int dir, size_t size) { struct ha
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 15:00:49 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: aica is done To generate a diff of this commit: cvs rdiff -u -r1.1.2.11 -r1.1.2.12 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.11 src/sys/dev/TODO.audiomp:1.1.2.12 --- src/sys/dev/TODO.audiomp:1.1.2.11 Sun Nov 20 14:27:09 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 15:00:49 2011 @@ -5,7 +5,7 @@ arch/amiga/dev/repulse.c done arch/amiga/dev/toccata.c done arch/arm/iomd/vidcaudio.c done arcm/arm/xscale/pxa2x0_ac97.c done -arch/dreamcast/dev/g2/aica.c +arch/dreamcast/dev/g2/aica.c done arch/hp700/gsc/harmony.c arch/hpcmips/vr/vraiu.c done arch/macppc/dev/awacs.c
CVS commit: [jmcneill-audiomp3] src/sys/arch/dreamcast/dev/g2
Module Name:src Committed By: jmcneill Date: Sun Nov 20 15:00:35 UTC 2011 Modified Files: src/sys/arch/dreamcast/dev/g2 [jmcneill-audiomp3]: aica.c Log Message: adapt to audiomp api changes To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.21.4.1 src/sys/arch/dreamcast/dev/g2/aica.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/dreamcast/dev/g2/aica.c diff -u src/sys/arch/dreamcast/dev/g2/aica.c:1.21 src/sys/arch/dreamcast/dev/g2/aica.c:1.21.4.1 --- src/sys/arch/dreamcast/dev/g2/aica.c:1.21 Tue Jul 19 15:52:29 2011 +++ src/sys/arch/dreamcast/dev/g2/aica.c Sun Nov 20 15:00:35 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: aica.c,v 1.21 2011/07/19 15:52:29 dyoung Exp $ */ +/* $NetBSD: aica.c,v 1.21.4.1 2011/11/20 15:00:35 jmcneill Exp $ */ /* * Copyright (c) 2003 SHIMIZU Ryo @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: aica.c,v 1.21 2011/07/19 15:52:29 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: aica.c,v 1.21.4.1 2011/11/20 15:00:35 jmcneill Exp $"); #include #include @@ -57,6 +57,8 @@ __KERNEL_RCSID(0, "$NetBSD: aica.c,v 1.2 struct aica_softc { device_t sc_dev; /* base device */ + kmutex_t sc_lock; + kmutex_t sc_intr_lock; bus_space_tag_t sc_memt; bus_space_handle_t sc_aica_regh; bus_space_handle_t sc_aica_memh; @@ -160,6 +162,7 @@ int aica_get_port(void *, mixer_ctrl_t * int aica_query_devinfo(void *, mixer_devinfo_t *); void aica_encode(int, int, int, int, u_char *, u_short **); int aica_get_props(void *); +void aica_get_locks(void *, kmutex_t **, kmutex_t **); const struct audio_hw_if aica_hw_if = { aica_open, @@ -191,6 +194,8 @@ const struct audio_hw_if aica_hw_if = { aica_trigger_output, aica_trigger_input, NULL,/* aica_dev_ioctl */ + NULL,/* aica_powerstate */ + aica_get_locks, }; int @@ -217,6 +222,9 @@ aica_attach(device_t parent, device_t se sc->sc_dev = self; sc->sc_memt = ga->ga_memt; + mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE); + mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED); + if (bus_space_map(sc->sc_memt, AICA_REG_ADDR, 0x3000, 0, &sc->sc_aica_regh) != 0) { aprint_error(": can't map AICA register space\n"); @@ -597,6 +605,9 @@ aica_intr(void *arg) struct aica_softc *sc; sc = arg; + + mutex_spin_enter(&sc->sc_intr_lock); + aica_fillbuffer(sc); /* call audio interrupt handler (audio_pint()) */ @@ -606,6 +617,9 @@ aica_intr(void *arg) /* clear SPU interrupt */ bus_space_write_4(sc->sc_memt, sc->sc_aica_regh, 0x28bc, 0x20); + + mutex_spin_exit(&sc->sc_intr_lock); + return 1; } @@ -763,3 +777,13 @@ aica_get_props(void *addr) return 0; } + +void +aica_get_locks(void *addr, kmutex_t **intr, kmutex_t **thread) +{ + struct aica_softc *sc; + + sc = addr; + *intr = &sc->sc_intr_lock; + *thread = &sc->sc_lock; +}
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 14:27:09 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: vraiu is done To generate a diff of this commit: cvs rdiff -u -r1.1.2.10 -r1.1.2.11 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.10 src/sys/dev/TODO.audiomp:1.1.2.11 --- src/sys/dev/TODO.audiomp:1.1.2.10 Sun Nov 20 14:13:25 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 14:27:09 2011 @@ -7,7 +7,7 @@ arch/arm/iomd/vidcaudio.c done arcm/arm/xscale/pxa2x0_ac97.c done arch/dreamcast/dev/g2/aica.c arch/hp700/gsc/harmony.c -arch/hpcmips/vr/vraiu.c +arch/hpcmips/vr/vraiu.c done arch/macppc/dev/awacs.c arch/macppc/dev/snapper.c arch/prep/isa/paud_isa.c toolchain-fails
CVS commit: [jmcneill-audiomp3] src/sys/arch/hpcmips/vr
Module Name:src Committed By: jmcneill Date: Sun Nov 20 14:26:34 UTC 2011 Modified Files: src/sys/arch/hpcmips/vr [jmcneill-audiomp3]: vraiu.c Log Message: adapt to audiomp api changes To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.12.80.1 src/sys/arch/hpcmips/vr/vraiu.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/hpcmips/vr/vraiu.c diff -u src/sys/arch/hpcmips/vr/vraiu.c:1.12 src/sys/arch/hpcmips/vr/vraiu.c:1.12.80.1 --- src/sys/arch/hpcmips/vr/vraiu.c:1.12 Sun Mar 4 05:59:54 2007 +++ src/sys/arch/hpcmips/vr/vraiu.c Sun Nov 20 14:26:34 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vraiu.c,v 1.12 2007/03/04 05:59:54 christos Exp $ */ +/* $NetBSD: vraiu.c,v 1.12.80.1 2011/11/20 14:26:34 jmcneill Exp $ */ /* * Copyright (c) 2001 HAMAJIMA Katsuomi. All rights reserved. @@ -26,12 +26,11 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: vraiu.c,v 1.12 2007/03/04 05:59:54 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vraiu.c,v 1.12.80.1 2011/11/20 14:26:34 jmcneill Exp $"); #include #include #include -#include #include #include @@ -61,6 +60,8 @@ int vraiu_debug = VRAIU_DEBUG; struct vraiu_softc { struct device sc_dev; + kmutex_t sc_lock; + kmutex_t sc_intr_lock; bus_space_tag_t sc_iot; bus_space_handle_t sc_ioh; bus_dma_tag_t sc_dmat; @@ -116,6 +117,7 @@ int vraiu_query_devinfo(void *, mixer_de int vraiu_set_params(void *, int, int, audio_params_t *, audio_params_t *, stream_filter_list_t *, stream_filter_list_t *); int vraiu_get_props(void *); +void vraiu_get_locks(void *, kmutex_t **, kmutex_t **); const struct audio_hw_if vraiu_hw_if = { vraiu_open, @@ -142,6 +144,11 @@ const struct audio_hw_if vraiu_hw_if = { NULL, NULL, vraiu_get_props, + NULL, + NULL, + NULL, + NULL, + vraiu_get_locks, }; /* @@ -187,6 +194,8 @@ vraiu_attach(struct device *parent, stru sc->sc_ac = va->va_ac; sc->sc_dmat = &vrdcu_bus_dma_tag; sc->sc_volume = 127; + mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE); + mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED); if (!sc->sc_cc) { printf(" not configured: cmu not found\n"); @@ -208,7 +217,7 @@ vraiu_attach(struct device *parent, stru /* install interrupt handler and enable interrupt */ if (!(sc->sc_handler = vrip_intr_establish(va->va_vc, va->va_unit, - 0, IPL_AUDIO, vraiu_intr, sc))) { + 0, IPL_SCHED, vraiu_intr, sc))) { printf(": can't map interrupt line.\n"); return; } @@ -221,19 +230,19 @@ vraiu_attach(struct device *parent, stru AIUINT_INTSIDLE), 0); if (bus_dmamem_alloc(sc->sc_dmat, AUDIO_BUF_SIZE, 0, 0, &segs, 1, - &rsegs, BUS_DMA_NOWAIT)) { + &rsegs, BUS_DMA_WAITOK)) { printf(": can't allocate memory.\n"); return; } if (bus_dmamem_map(sc->sc_dmat, &segs, rsegs, AUDIO_BUF_SIZE, (void **)&sc->sc_buf, - BUS_DMA_NOWAIT | BUS_DMA_COHERENT)) { + BUS_DMA_WAITOK | BUS_DMA_COHERENT)) { printf(": can't map memory.\n"); bus_dmamem_free(sc->sc_dmat, &segs, rsegs); return; } if (bus_dmamap_create(sc->sc_dmat, AUDIO_BUF_SIZE, 1, AUDIO_BUF_SIZE, - 0, BUS_DMA_NOWAIT, &sc->sc_dmap)) { + 0, BUS_DMA_WAITOK, &sc->sc_dmap)) { printf(": can't create DMA map.\n"); bus_dmamem_unmap(sc->sc_dmat, (void *)sc->sc_buf, AUDIO_BUF_SIZE); @@ -241,7 +250,7 @@ vraiu_attach(struct device *parent, stru return; } if (bus_dmamap_load(sc->sc_dmat, sc->sc_dmap, sc->sc_buf, - AUDIO_BUF_SIZE, NULL, BUS_DMA_NOWAIT)) { + AUDIO_BUF_SIZE, NULL, BUS_DMA_WAITOK)) { printf(": can't load DMA map.\n"); bus_dmamap_destroy(sc->sc_dmat, sc->sc_dmap); bus_dmamem_unmap(sc->sc_dmat, (void *)sc->sc_buf, @@ -626,6 +635,9 @@ vraiu_intr(void* self) DPRINTFN(2, ("vraiu_intr")); sc = self; + + mutex_spin_enter(&sc->sc_intr_lock); + vrip_intr_setmask2(sc->sc_vrip, sc->sc_handler, AIUINT_INTSEND, 0); vrip_intr_getstatus2(sc->sc_vrip, sc->sc_handler, ®); if (reg & AIUINT_INTSEND) { @@ -639,6 +651,9 @@ vraiu_intr(void* self) bus_space_write_2(sc->sc_iot, sc->sc_ioh, INT_REG_W, SENDINTR); } DPRINTFN(2, ("\n")); + + mutex_spin_exit(&sc->sc_intr_lock); + return 0; } @@ -757,6 +772,18 @@ vraiu_get_props(void *self) return 0; } +void +vraiu_get_locks(void *self, kmutex_t **intr, kmutex_t **thread) +{ + struct vraiu_softc *sc; + + DPRINTFN(3, ("vraiu_get_locks\n")); + sc = self; + + *intr = &sc->sc_intr_lock; + *thread = &sc->sc_lock; +} + unsigned char mulaw_to_lin[] = { 0x02, 0x06, 0x0a, 0x0e, 0x12, 0x16, 0x1a, 0x1e, 0x22, 0x26, 0x2a, 0x2e, 0x32, 0x36, 0x3a, 0x3e,
CVS commit: [jmcneill-audiomp3] src/sys/arch/hpcmips/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 14:16:56 UTC 2011 Modified Files: src/sys/arch/hpcmips/dev [jmcneill-audiomp3]: ucbsnd.c Log Message: splaudio -> splvm To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.19.32.1 src/sys/arch/hpcmips/dev/ucbsnd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/hpcmips/dev/ucbsnd.c diff -u src/sys/arch/hpcmips/dev/ucbsnd.c:1.19 src/sys/arch/hpcmips/dev/ucbsnd.c:1.19.32.1 --- src/sys/arch/hpcmips/dev/ucbsnd.c:1.19 Thu Jun 12 16:50:53 2008 +++ src/sys/arch/hpcmips/dev/ucbsnd.c Sun Nov 20 14:16:55 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: ucbsnd.c,v 1.19 2008/06/12 16:50:53 tsutsui Exp $ */ +/* $NetBSD: ucbsnd.c,v 1.19.32.1 2011/11/20 14:16:55 jmcneill Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -37,7 +37,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ucbsnd.c,v 1.19 2008/06/12 16:50:53 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ucbsnd.c,v 1.19.32.1 2011/11/20 14:16:55 jmcneill Exp $"); #include "opt_use_poll.h" @@ -522,7 +522,7 @@ ucbsndopen(dev_t dev, int flags, int ifm if (sc == NULL) return (ENXIO); - s = splaudio(); + s = splvm(); ringbuf_reset(&sc->sc_rb); splx(s); @@ -573,7 +573,7 @@ ucbsndwrite_subr(struct ucbsnd_softc *sc ringbuf_producer_return(&sc->sc_rb, bufsize); - s = splaudio(); + s = splvm(); if (sc->sa_state == UCBSND_IDLE && ringbuf_full(&sc->sc_rb)) { sc->sa_transfer_mode = UCBSND_TRANSFERMODE_DMA; sc->sa_state = UCBSND_INIT; @@ -630,7 +630,7 @@ ucbsndwrite(dev_t dev, struct uio *uio, return (error); errout: printf("%s: timeout. reset ring-buffer.\n", sc->sc_dev.dv_xname); - s = splaudio(); + s = splvm(); ringbuf_reset(&sc->sc_rb); splx(s); @@ -705,7 +705,7 @@ ringbuf_producer_get(struct ring_buf *rb u_int32_t ret; int s; - s = splaudio(); + s = splvm(); ret = ringbuf_full(rb) ? 0 : rb->rb_buf + rb->rb_inp * rb->rb_blksize; splx(s); @@ -720,7 +720,7 @@ ringbuf_producer_return(struct ring_buf assert(cnt <= rb->rb_blksize); - s = splaudio(); + s = splvm(); rb->rb_outp++; rb->rb_bufcnt[rb->rb_inp] = cnt;
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 14:13:25 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: build.sh -m prep tools failed for me so mark paud_isa "toolchain-fails" To generate a diff of this commit: cvs rdiff -u -r1.1.2.9 -r1.1.2.10 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.9 src/sys/dev/TODO.audiomp:1.1.2.10 --- src/sys/dev/TODO.audiomp:1.1.2.9 Sun Nov 20 13:31:19 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 14:13:25 2011 @@ -10,7 +10,7 @@ arch/hp700/gsc/harmony.c arch/hpcmips/vr/vraiu.c arch/macppc/dev/awacs.c arch/macppc/dev/snapper.c -arch/prep/isa/paud_isa.c +arch/prep/isa/paud_isa.c toolchain-fails arch/sgimips/hpc/haltwo.c done arch/sgimips/mace/mavb.c done arch/sparc/dev/audioamd.c done
CVS commit: [jmcneill-audiomp3] src/sys/arch
Module Name:src Committed By: jmcneill Date: Sun Nov 20 13:47:07 UTC 2011 Modified Files: src/sys/arch/arm/xscale [jmcneill-audiomp3]: pxa2x0_ac97.c pxa2x0_dmac.c pxa2x0_dmac.h pxa2x0_i2s.c pxa2x0_i2s.h pxa2x0_mci.c src/sys/arch/zaurus/dev [jmcneill-audiomp3]: zaudio.c Log Message: port zaudio to audiomp api changes for real this time To generate a diff of this commit: cvs rdiff -u -r1.9.4.1 -r1.9.4.2 src/sys/arch/arm/xscale/pxa2x0_ac97.c cvs rdiff -u -r1.8 -r1.8.4.1 src/sys/arch/arm/xscale/pxa2x0_dmac.c cvs rdiff -u -r1.3 -r1.3.84.1 src/sys/arch/arm/xscale/pxa2x0_dmac.h cvs rdiff -u -r1.9 -r1.9.4.1 src/sys/arch/arm/xscale/pxa2x0_i2s.c cvs rdiff -u -r1.2 -r1.2.4.1 src/sys/arch/arm/xscale/pxa2x0_i2s.h cvs rdiff -u -r1.8 -r1.8.6.1 src/sys/arch/arm/xscale/pxa2x0_mci.c cvs rdiff -u -r1.15.4.1 -r1.15.4.2 src/sys/arch/zaurus/dev/zaudio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/xscale/pxa2x0_ac97.c diff -u src/sys/arch/arm/xscale/pxa2x0_ac97.c:1.9.4.1 src/sys/arch/arm/xscale/pxa2x0_ac97.c:1.9.4.2 --- src/sys/arch/arm/xscale/pxa2x0_ac97.c:1.9.4.1 Sun Nov 20 13:13:43 2011 +++ src/sys/arch/arm/xscale/pxa2x0_ac97.c Sun Nov 20 13:47:07 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: pxa2x0_ac97.c,v 1.9.4.1 2011/11/20 13:13:43 mrg Exp $ */ +/* $NetBSD: pxa2x0_ac97.c,v 1.9.4.2 2011/11/20 13:47:07 jmcneill Exp $ */ /* * Copyright (c) 2003, 2005 Wasabi Systems, Inc. @@ -679,28 +679,28 @@ acu_malloc(void *arg, int direction, siz return (NULL); /* XXX */ - if ((ad->ad_dx = pxa2x0_dmac_allocate_xfer(M_NOWAIT)) == NULL) + if ((ad->ad_dx = pxa2x0_dmac_allocate_xfer()) == NULL) goto error; ad->ad_size = size; error = bus_dmamem_alloc(sc->sc_dmat, size, 16, 0, ad->ad_segs, - ACU_N_SEGS, &ad->ad_nsegs, BUS_DMA_NOWAIT); + ACU_N_SEGS, &ad->ad_nsegs, BUS_DMA_WAITOK); if (error) goto free_xfer; error = bus_dmamem_map(sc->sc_dmat, ad->ad_segs, ad->ad_nsegs, size, - &ad->ad_addr, BUS_DMA_NOWAIT | BUS_DMA_COHERENT | BUS_DMA_NOCACHE); + &ad->ad_addr, BUS_DMA_WAITOK | BUS_DMA_COHERENT | BUS_DMA_NOCACHE); if (error) goto free_dmamem; error = bus_dmamap_create(sc->sc_dmat, size, 1, size, 0, - BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW, &ad->ad_map); + BUS_DMA_WAITOK | BUS_DMA_ALLOCNOW, &ad->ad_map); if (error) goto unmap_dmamem; error = bus_dmamap_load(sc->sc_dmat, ad->ad_map, ad->ad_addr, size, - NULL, BUS_DMA_NOWAIT); + NULL, BUS_DMA_WAITOK); if (error) { bus_dmamap_destroy(sc->sc_dmat, ad->ad_map); unmap_dmamem: bus_dmamem_unmap(sc->sc_dmat, ad->ad_addr, size); Index: src/sys/arch/arm/xscale/pxa2x0_dmac.c diff -u src/sys/arch/arm/xscale/pxa2x0_dmac.c:1.8 src/sys/arch/arm/xscale/pxa2x0_dmac.c:1.8.4.1 --- src/sys/arch/arm/xscale/pxa2x0_dmac.c:1.8 Fri Jul 1 20:32:51 2011 +++ src/sys/arch/arm/xscale/pxa2x0_dmac.c Sun Nov 20 13:47:07 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: pxa2x0_dmac.c,v 1.8 2011/07/01 20:32:51 dyoung Exp $ */ +/* $NetBSD: pxa2x0_dmac.c,v 1.8.4.1 2011/11/20 13:47:07 jmcneill Exp $ */ /* * Copyright (c) 2003, 2005 Wasabi Systems, Inc. @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include #include /* For PAGE_SIZE */ @@ -741,11 +741,11 @@ dmac_dmover_done(struct dmac_xfer *dx, i #endif struct dmac_xfer * -pxa2x0_dmac_allocate_xfer(int flags) +pxa2x0_dmac_allocate_xfer(void) { struct dmac_xfer_state *dxs; - dxs = malloc(sizeof(struct dmac_xfer_state), M_DEVBUF, flags); + dxs = kmem_alloc(sizeof(*dxs), KM_SLEEP); return ((struct dmac_xfer *)dxs); } @@ -753,12 +753,13 @@ pxa2x0_dmac_allocate_xfer(int flags) void pxa2x0_dmac_free_xfer(struct dmac_xfer *dx) { + struct dmac_xfer_state *dxs = (struct dmac_xfer_state *)dx; /* * XXX: Should verify the DMAC is not actively using this * structure before freeing... */ - free(dx, M_DEVBUF); + kmem_free(dxs, sizeof(*dxs)); } static inline int Index: src/sys/arch/arm/xscale/pxa2x0_dmac.h diff -u src/sys/arch/arm/xscale/pxa2x0_dmac.h:1.3 src/sys/arch/arm/xscale/pxa2x0_dmac.h:1.3.84.1 --- src/sys/arch/arm/xscale/pxa2x0_dmac.h:1.3 Wed Feb 21 22:59:39 2007 +++ src/sys/arch/arm/xscale/pxa2x0_dmac.h Sun Nov 20 13:47:07 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: pxa2x0_dmac.h,v 1.3 2007/02/21 22:59:39 thorpej Exp $ */ +/* $NetBSD: pxa2x0_dmac.h,v 1.3.84.1 2011/11/20 13:47:07 jmcneill Exp $ */ /* * Copyright (c) 2003, 2005 Wasabi Systems, Inc. @@ -147,7 +147,7 @@ struct dmac_xfer { #define DMAC_DESC_DST 1 }; -extern struct dmac_xfer *pxa2x0_dmac_allocate_xfer(int); +extern struct dmac_xfer *pxa2x0_dmac_allocate_xfer(void); extern void pxa2x0_dmac_free_xfer(struct dmac_xfer *); extern int pxa2x0_dmac_start_xfer(struct dmac_xfer *); extern void pxa2x0_dmac_abort_xfer(struct dmac_xfer *); Index: src/sys/arch/arm/xscale/pxa2x0_i2s.c diff -u src/sys/arch/arm/xscale/pxa2x0_i2s.c:1.9 src/sys/arch/arm/xscale/pxa
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 13:31:19 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: zaudio is done To generate a diff of this commit: cvs rdiff -u -r1.1.2.8 -r1.1.2.9 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.8 src/sys/dev/TODO.audiomp:1.1.2.9 --- src/sys/dev/TODO.audiomp:1.1.2.8 Sun Nov 20 13:14:33 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 13:31:19 2011 @@ -15,7 +15,7 @@ arch/sgimips/hpc/haltwo.c done arch/sgimips/mace/mavb.c done arch/sparc/dev/audioamd.c done arch/x68k/dev/vs.c -arch/zaurus/dev/zaudio.c +arch/zaurus/dev/zaudio.c done dev/bluetooth/btsco.c done dev/ebus/cs4231_ebus.c done dev/ic/interwave.c done
CVS commit: [jmcneill-audiomp3] src/sys/arch/zaurus/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 13:30:46 UTC 2011 Modified Files: src/sys/arch/zaurus/dev [jmcneill-audiomp3]: zaudio.c Log Message: adapt to audiomp api changes To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.15.4.1 src/sys/arch/zaurus/dev/zaudio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/zaurus/dev/zaudio.c diff -u src/sys/arch/zaurus/dev/zaudio.c:1.15 src/sys/arch/zaurus/dev/zaudio.c:1.15.4.1 --- src/sys/arch/zaurus/dev/zaudio.c:1.15 Thu Jun 23 10:56:03 2011 +++ src/sys/arch/zaurus/dev/zaudio.c Sun Nov 20 13:30:46 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: zaudio.c,v 1.15 2011/06/23 10:56:03 nonaka Exp $ */ +/* $NetBSD: zaudio.c,v 1.15.4.1 2011/11/20 13:30:46 jmcneill Exp $ */ /* $OpenBSD: zaurus_audio.c,v 1.8 2005/08/18 13:23:02 robert Exp $ */ /* @@ -51,13 +51,13 @@ #include "opt_zaudio.h" #include -__KERNEL_RCSID(0, "$NetBSD: zaudio.c,v 1.15 2011/06/23 10:56:03 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: zaudio.c,v 1.15.4.1 2011/11/20 13:30:46 jmcneill Exp $"); #include #include #include #include -#include +#include #include #include #include @@ -104,6 +104,8 @@ struct zaudio_volume { struct zaudio_softc { device_t sc_dev; + kmutex_t sc_lock; + kmutex_t sc_intr_lock; /* i2s device softc */ /* NB: pxa2x0_i2s requires this to be the second struct member */ @@ -218,6 +220,7 @@ static void zaudio_freem(void *, void * static size_t zaudio_round_buffersize(void *, int, size_t); static paddr_t zaudio_mappage(void *, void *, off_t, int); static int zaudio_get_props(void *); +static void zaudio_get_locks(void *, kmutex_t **, kmutex_t **); struct audio_hw_if wm8750_hw_if = { .open = zaudio_open, @@ -248,6 +251,7 @@ struct audio_hw_if wm8750_hw_if = { .trigger_input = NULL, .dev_ioctl = NULL, .powerstate = NULL, + .get_locks = zaudio_get_locks, }; static const uint16_t playback_regs[][2] = { @@ -338,6 +342,8 @@ zaudio_attach(device_t parent, device_t sc->sc_dev = self; sc->sc_i2c = ia->ia_tag; + mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE); + mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED); aprint_normal(": I2S, WM8750 Audio\n"); aprint_naive("\n"); @@ -888,7 +894,9 @@ zaudio_halt_output(void *hdl) struct zaudio_softc *sc = hdl; int rv; + mutex_spin_enter(&sc->sc_intr_lock); rv = pxa2x0_i2s_halt_output(&sc->sc_i2s); + mutex_spin_exit(&sc->sc_intr_lock); if (!sc->sc_recording) zaudio_standby(sc); sc->sc_playing = 0; @@ -902,7 +910,9 @@ zaudio_halt_input(void *hdl) struct zaudio_softc *sc = hdl; int rv; + mutex_spin_enter(&sc->sc_intr_lock); rv = pxa2x0_i2s_halt_input(&sc->sc_i2s); + mutex_spin_exit(&sc->sc_intr_lock); if (!sc->sc_playing) zaudio_standby(sc); sc->sc_recording = 0; @@ -1270,12 +1280,16 @@ zaudio_start_output(void *hdl, void *blo } /* Start DMA via I2S */ + mutex_spin_enter(&sc->sc_intr_lock); rv = pxa2x0_i2s_start_output(&sc->sc_i2s, block, bsize, intr, intrarg); + mutex_spin_exit(&sc->sc_intr_lock); + if (rv) { if (!sc->sc_recording) zaudio_standby(sc); sc->sc_playing = 0; } + return rv; } @@ -1293,7 +1307,10 @@ zaudio_start_input(void *hdl, void *bloc } /* Start DMA via I2S */ + mutex_spin_enter(&sc->sc_intr_lock); rv = pxa2x0_i2s_start_input(&sc->sc_i2s, block, bsize, intr, intrarg); + mutex_spin_exit(&sc->sc_intr_lock); + if (rv) { if (!sc->sc_playing) zaudio_standby(sc); @@ -1301,3 +1318,12 @@ zaudio_start_input(void *hdl, void *bloc } return rv; } + +static void +zaudio_get_locks(void *hdl, kmutex_t **intr, kmutex_t **thread) +{ + struct zaudio_softc *sc = hdl; + + *intr = &sc->sc_intr_lock; + *thread = &sc->sc_lock; +}
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: mrg Date: Sun Nov 20 13:14:33 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: note pxa2x0_ac97 now compiles and should be done To generate a diff of this commit: cvs rdiff -u -r1.1.2.7 -r1.1.2.8 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.7 src/sys/dev/TODO.audiomp:1.1.2.8 --- src/sys/dev/TODO.audiomp:1.1.2.7 Sun Nov 20 12:59:31 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 13:14:33 2011 @@ -4,7 +4,7 @@ arch/amiga/dev/aucc.c done arch/amiga/dev/repulse.c done arch/amiga/dev/toccata.c done arch/arm/iomd/vidcaudio.c done -arcm/arm/xscale/pxa2x0_ac97.c +arcm/arm/xscale/pxa2x0_ac97.c done arch/dreamcast/dev/g2/aica.c arch/hp700/gsc/harmony.c arch/hpcmips/vr/vraiu.c
CVS commit: [jmcneill-audiomp3] src/sys/arch/arm/xscale
Module Name:src Committed By: mrg Date: Sun Nov 20 13:13:43 UTC 2011 Modified Files: src/sys/arch/arm/xscale [jmcneill-audiomp3]: pxa2x0_ac97.c Log Message: port to audiomp: alloc/free changes, get_locks support, no more IPL_AUDIO, convert splaudio() -> sc_intr_lock usage, take sc_intr_lock in acu_intr(). To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.9.4.1 src/sys/arch/arm/xscale/pxa2x0_ac97.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/xscale/pxa2x0_ac97.c diff -u src/sys/arch/arm/xscale/pxa2x0_ac97.c:1.9 src/sys/arch/arm/xscale/pxa2x0_ac97.c:1.9.4.1 --- src/sys/arch/arm/xscale/pxa2x0_ac97.c:1.9 Fri Jul 1 20:32:51 2011 +++ src/sys/arch/arm/xscale/pxa2x0_ac97.c Sun Nov 20 13:13:43 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: pxa2x0_ac97.c,v 1.9 2011/07/01 20:32:51 dyoung Exp $ */ +/* $NetBSD: pxa2x0_ac97.c,v 1.9.4.1 2011/11/20 13:13:43 mrg Exp $ */ /* * Copyright (c) 2003, 2005 Wasabi Systems, Inc. @@ -42,6 +42,7 @@ #include #include #include +#include #include #include @@ -111,6 +112,10 @@ struct acu_softc { /* auconv encodings */ struct audio_encoding_set *sc_encodings; + + /* MPSAFE interfaces */ + kmutex_t sc_lock; + kmutex_t sc_intr_lock; }; static int pxaacu_match(device_t, cfdata_t, void *); @@ -143,11 +148,12 @@ static int acu_getdev(void *, struct aud static int acu_mixer_set_port(void *, mixer_ctrl_t *); static int acu_mixer_get_port(void *, mixer_ctrl_t *); static int acu_query_devinfo(void *, mixer_devinfo_t *); -static void *acu_malloc(void *, int, size_t, struct malloc_type *, int); -static void acu_free(void *, void *, struct malloc_type *); +static void *acu_malloc(void *, int, size_t); +static void acu_free(void *, void *, size_t); static size_t acu_round_buffersize(void *, int, size_t); static paddr_t acu_mappage(void *, void *, off_t, int); static int acu_get_props(void *); +static void acu_get_locks(void *, kmutex_t **, kmutex_t **); struct audio_hw_if acu_hw_if = { acu_open, @@ -177,6 +183,8 @@ struct audio_hw_if acu_hw_if = { acu_trigger_output, acu_trigger_input, NULL, + NULL, + acu_get_locks, }; struct audio_device acu_device = { @@ -274,7 +282,7 @@ pxaacu_attach(device_t parent, device_t return; } - sc->sc_irqcookie = pxa2x0_intr_establish(pxa->pxa_intr, IPL_AUDIO, + sc->sc_irqcookie = pxa2x0_intr_establish(pxa->pxa_intr, IPL_SCHED, acu_intr, sc); KASSERT(sc->sc_irqcookie != NULL); @@ -311,7 +319,7 @@ pxaacu_attach(device_t parent, device_t sc->sc_in_reset = 0; sc->sc_dac_rate = sc->sc_adc_rate = 0; - if (ac97_attach(&sc->sc_host_if, sc->sc_dev)) { + if (ac97_attach(&sc->sc_host_if, sc->sc_dev, &sc->sc_lock)) { aprint_error_dev(self, "Failed to attach primary codec\n"); fail: acu_reg_write(sc, AC97_GCR, 0); @@ -359,7 +367,7 @@ acu_codec_read(void *arg, u_int8_t codec { struct acu_softc *sc = arg; u_int32_t val; - int s, reg, rv = 1; + int reg, rv = 1; /* * If we're currently closed, return non-zero. The ac97 frontend @@ -370,7 +378,7 @@ acu_codec_read(void *arg, u_int8_t codec reg = AC97_CODEC_BASE(0) + codec_reg * 2; - s = splaudio(); + mutex_spin_enter(&sc->sc_intr_lock); if (!acu_codec_ready(sc) || (acu_reg_read(sc, AC97_CAR) & CAR_CAIP)) goto out_nocar; @@ -403,7 +411,7 @@ acu_codec_read(void *arg, u_int8_t codec out: acu_reg_write(sc, AC97_CAR, 0); out_nocar: - splx(s); + mutex_spin_exit(&sc->sc_intr_lock); delay(10); return (rv); } @@ -413,7 +421,6 @@ acu_codec_write(void *arg, u_int8_t code { struct acu_softc *sc = arg; u_int16_t rv; - int s; /* * If we're currently closed, chances are the user is just @@ -424,10 +431,10 @@ acu_codec_write(void *arg, u_int8_t code if (sc->sc_in_reset) return (0); - s = splaudio(); + mutex_spin_enter(&sc->sc_intr_lock); if (!acu_codec_ready(sc) || (acu_reg_read(sc, AC97_CAR) & CAR_CAIP)) { - splx(s); + mutex_spin_exit(&sc->sc_intr_lock); return (1); } @@ -443,7 +450,7 @@ acu_codec_write(void *arg, u_int8_t code (void) acu_wait_gsr(sc, GSR_CDONE); acu_reg_write(sc, AC97_CAR, 0); - splx(s); + mutex_spin_exit(&sc->sc_intr_lock); delay(10); return (0); } @@ -475,6 +482,7 @@ acu_intr(void *arg) struct acu_softc *sc = arg; u_int32_t gsr, reg; + mutex_spin_enter(&sc->sc_intr_lock); gsr = acu_reg_read(sc, AC97_GSR); /* @@ -503,6 +511,8 @@ acu_intr(void *arg) aprint_error_dev(sc->sc_dev, "Rx PCM Fifo overrun\n"); } + mutex_spin_exit(&sc->sc_intr_lock); + return (1); } @@ -659,16 +669,16 @@ acu_query_devinfo(void *arg, mixer_devin } static void * -acu_malloc(void *arg, int direction, size_t size, -struct malloc_type *pool, int flags) +acu_malloc(void *arg, int direction, size_t size) { struct acu_softc *sc = arg; struct acu_dma *ad; int error; - if ((ad = malloc(sizeof(*ad), pool, flags)) == NULL) + if ((ad = kmem_allo
CVS commit: [netbsd-4] src/doc
Module Name:src Committed By: bouyer Date: Sun Nov 20 13:05:03 UTC 2011 Modified Files: src/doc [netbsd-4]: CHANGES-4.1 Log Message: Ticket 1437 To generate a diff of this commit: cvs rdiff -u -r1.1.2.230 -r1.1.2.231 src/doc/CHANGES-4.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/doc/CHANGES-4.1 diff -u src/doc/CHANGES-4.1:1.1.2.230 src/doc/CHANGES-4.1:1.1.2.231 --- src/doc/CHANGES-4.1:1.1.2.230 Sat Nov 19 14:40:07 2011 +++ src/doc/CHANGES-4.1 Sun Nov 20 13:05:03 2011 @@ -1,4 +1,4 @@ -# $NetBSD: CHANGES-4.1,v 1.1.2.230 2011/11/19 14:40:07 bouyer Exp $ +# $NetBSD: CHANGES-4.1,v 1.1.2.231 2011/11/20 13:05:03 bouyer Exp $ A complete list of changes from the NetBSD 4.0 release to the NetBSD 4.1 release: @@ -4560,3 +4560,17 @@ dist/openpam/lib/openpam_configure.c 1. (CVE-2011-4122) [drochner, ticket #1439] +src/dist/bind/CHANGES patch +src/dist/bind/bin/named/query.c patch +src/dist/bind/bin/nsupdate/nsupdate.8 patch +src/dist/bind/lib/dns/master.c patch +src/dist/bind/lib/dns/rbtdb.c patch +src/dist/bind/lib/isc/nothreads/condition.c patch +src/dist/bind/lib/isc/nothreads/mutex.c patch +src/dist/bind/lib/isc/unix/time.c patch +src/dist/bind/lib/lwres/include/lwres/lwres.h patch + + Cache lookup could return RRSIG data associated with nonexistent + records, leading to an assertion failure. Fixes CVE-2011-4313. + [christos, ticket #1437] +
CVS commit: [netbsd-4-0] src/doc
Module Name:src Committed By: bouyer Date: Sun Nov 20 13:04:55 UTC 2011 Modified Files: src/doc [netbsd-4-0]: CHANGES-4.0.2 Log Message: Ticket 1437 To generate a diff of this commit: cvs rdiff -u -r1.1.2.91 -r1.1.2.92 src/doc/CHANGES-4.0.2 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/doc/CHANGES-4.0.2 diff -u src/doc/CHANGES-4.0.2:1.1.2.91 src/doc/CHANGES-4.0.2:1.1.2.92 --- src/doc/CHANGES-4.0.2:1.1.2.91 Sat Nov 19 14:40:08 2011 +++ src/doc/CHANGES-4.0.2 Sun Nov 20 13:04:55 2011 @@ -1,4 +1,4 @@ -# $NetBSD: CHANGES-4.0.2,v 1.1.2.91 2011/11/19 14:40:08 bouyer Exp $ +# $NetBSD: CHANGES-4.0.2,v 1.1.2.92 2011/11/20 13:04:55 bouyer Exp $ A complete list of changes from the NetBSD 4.0.1 release to the NetBSD 4.0.2 release: @@ -1299,3 +1299,17 @@ dist/openpam/lib/openpam_configure.c 1. (CVE-2011-4122) [drochner, ticket #1439] +src/dist/bind/CHANGES patch +src/dist/bind/bin/named/query.c patch +src/dist/bind/bin/nsupdate/nsupdate.8patch +src/dist/bind/lib/dns/master.c patch +src/dist/bind/lib/dns/rbtdb.c patch +src/dist/bind/lib/isc/nothreads/condition.c patch +src/dist/bind/lib/isc/nothreads/mutex.cpatch +src/dist/bind/lib/isc/unix/time.cpatch +src/dist/bind/lib/lwres/include/lwres/lwres.h patch + + Cache lookup could return RRSIG data associated with nonexistent + records, leading to an assertion failure. Fixes CVE-2011-4313. + [christos, ticket #1437] +
CVS commit: [netbsd-4] src/dist/bind
Module Name:src Committed By: bouyer Date: Sun Nov 20 13:02:27 UTC 2011 Modified Files: src/dist/bind [netbsd-4]: CHANGES src/dist/bind/bin/named [netbsd-4]: query.c src/dist/bind/bin/nsupdate [netbsd-4]: nsupdate.8 src/dist/bind/lib/dns [netbsd-4]: master.c rbtdb.c src/dist/bind/lib/isc/nothreads [netbsd-4]: condition.c mutex.c src/dist/bind/lib/isc/unix [netbsd-4]: time.c src/dist/bind/lib/lwres/include/lwres [netbsd-4]: lwres.h Log Message: Apply patch, requested by christos in ticket #1437: src/dist/bind/CHANGES src/dist/bind/bin/named/query.c src/dist/bind/bin/nsupdate/nsupdate.8 src/dist/bind/lib/dns/master.c src/dist/bind/lib/dns/rbtdb.c src/dist/bind/lib/isc/nothreads/condition.c src/dist/bind/lib/isc/nothreads/mutex.c src/dist/bind/lib/isc/unix/time.c src/dist/bind/lib/lwres/include/lwres/lwres.h Cache lookup could return RRSIG data associated with nonexistent records, leading to an assertion failure. Fixes CVE-2011-4313. To generate a diff of this commit: cvs rdiff -u -r1.1.1.4.4.7 -r1.1.1.4.4.8 src/dist/bind/CHANGES cvs rdiff -u -r1.3.2.4 -r1.3.2.5 src/dist/bind/bin/named/query.c cvs rdiff -u -r1.1.1.3.4.3 -r1.1.1.3.4.4 \ src/dist/bind/bin/nsupdate/nsupdate.8 cvs rdiff -u -r1.1.1.4.4.3 -r1.1.1.4.4.4 src/dist/bind/lib/dns/master.c cvs rdiff -u -r1.1.1.4.4.5 -r1.1.1.4.4.6 src/dist/bind/lib/dns/rbtdb.c cvs rdiff -u -r1.1.1.3.4.1 -r1.1.1.3.4.2 \ src/dist/bind/lib/isc/nothreads/condition.c \ src/dist/bind/lib/isc/nothreads/mutex.c cvs rdiff -u -r1.1.1.3.4.2 -r1.1.1.3.4.3 src/dist/bind/lib/isc/unix/time.c cvs rdiff -u -r1.1.1.3.4.1 -r1.1.1.3.4.2 \ src/dist/bind/lib/lwres/include/lwres/lwres.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/dist/bind/CHANGES diff -u src/dist/bind/CHANGES:1.1.1.4.4.7 src/dist/bind/CHANGES:1.1.1.4.4.8 --- src/dist/bind/CHANGES:1.1.1.4.4.7 Sat Jun 18 10:36:30 2011 +++ src/dist/bind/CHANGES Sun Nov 20 13:02:25 2011 @@ -1,3 +1,7 @@ +3218. [security] Cache lookup could return RRSIG data associated with +nonexistent records, leading to an assertion +failure. [RT #26590] + --- 9.4-ESV-R4-P1 released --- 3121. [security] An authoritative name server sending a negative Index: src/dist/bind/bin/named/query.c diff -u src/dist/bind/bin/named/query.c:1.3.2.4 src/dist/bind/bin/named/query.c:1.3.2.5 --- src/dist/bind/bin/named/query.c:1.3.2.4 Sun Jan 23 21:47:10 2011 +++ src/dist/bind/bin/named/query.c Sun Nov 20 13:02:26 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: query.c,v 1.3.2.4 2011/01/23 21:47:10 bouyer Exp $ */ +/* $NetBSD: query.c,v 1.3.2.5 2011/11/20 13:02:26 bouyer Exp $ */ /* * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") @@ -1253,11 +1253,9 @@ query_addadditional(void *arg, dns_name_ goto addname; if (result == DNS_R_NCACHENXRRSET) { dns_rdataset_disassociate(rdataset); - /* - * Negative cache entries don't have sigrdatasets. - */ - INSIST(sigrdataset == NULL || - ! dns_rdataset_isassociated(sigrdataset)); + if (sigrdataset != NULL && + dns_rdataset_isassociated(sigrdataset)) +dns_rdataset_disassociate(sigrdataset); } if (result == ISC_R_SUCCESS) { mname = NULL; @@ -1298,8 +1296,9 @@ query_addadditional(void *arg, dns_name_ goto addname; if (result == DNS_R_NCACHENXRRSET) { dns_rdataset_disassociate(rdataset); - INSIST(sigrdataset == NULL || - ! dns_rdataset_isassociated(sigrdataset)); + if (sigrdataset != NULL && + dns_rdataset_isassociated(sigrdataset)) +dns_rdataset_disassociate(sigrdataset); } if (result == ISC_R_SUCCESS) { mname = NULL; @@ -1748,10 +1747,8 @@ query_addadditional2(void *arg, dns_name goto setcache; if (result == DNS_R_NCACHENXRRSET) { dns_rdataset_disassociate(rdataset); - /* - * Negative cache entries don't have sigrdatasets. - */ - INSIST(! dns_rdataset_isassociated(sigrdataset)); + if (dns_rdataset_isassociated(sigrdataset)) + dns_rdataset_disassociate(sigrdataset); } if (result == ISC_R_SUCCESS) { /* Remember the result as a cache */ Index: src/dist/bind/bin/nsupdate/nsupdate.8 diff -u src/dist/bind/bin/nsupdate/nsupdate.8:1.1.1.3.4.3 src/dist/bind/bin/nsupdate/nsupdate.8:1.1.1.3.4.4 --- src/dist/bind/bin/nsupdate/nsupdate.8:1.1.1.3.4.3 Sun Jan 23 21:47:11 2011 +++ src/dist/bind/bin/nsupdate/nsupdate.8 Sun Nov 20 13:02:26 2011 @@ -1,2 +1,443 @@ -.\" $NetBSD: nsupdate.8,v 1.1.1.3.4.3 2011/01/23 21:47:11 bouyer Exp $ +.\" $NetBSD: nsupdate.8,v 1.1.1.3.4.4 2011/11/20 13:02:26 bouyer Exp $ .\" +.\" Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") +.\" Copyright (C) 2000-2003 Internet Software Consortium. +.\" +.\" Permission to use, copy, modify, and/or distribute this software
CVS commit: [netbsd-4-0] src/dist/bind
Module Name:src Committed By: bouyer Date: Sun Nov 20 13:02:17 UTC 2011 Modified Files: src/dist/bind [netbsd-4-0]: CHANGES src/dist/bind/bin/named [netbsd-4-0]: query.c src/dist/bind/bin/nsupdate [netbsd-4-0]: nsupdate.8 src/dist/bind/lib/dns [netbsd-4-0]: master.c rbtdb.c src/dist/bind/lib/isc/nothreads [netbsd-4-0]: condition.c mutex.c src/dist/bind/lib/isc/unix [netbsd-4-0]: time.c src/dist/bind/lib/lwres/include/lwres [netbsd-4-0]: lwres.h Log Message: Apply patch, requested by christos in ticket #1437: src/dist/bind/CHANGES src/dist/bind/bin/named/query.c src/dist/bind/bin/nsupdate/nsupdate.8 src/dist/bind/lib/dns/master.c src/dist/bind/lib/dns/rbtdb.c src/dist/bind/lib/isc/nothreads/condition.c src/dist/bind/lib/isc/nothreads/mutex.c src/dist/bind/lib/isc/unix/time.c src/dist/bind/lib/lwres/include/lwres/lwres.h Cache lookup could return RRSIG data associated with nonexistent records, leading to an assertion failure. Fixes CVE-2011-4313. To generate a diff of this commit: cvs rdiff -u -r1.1.1.4.4.2.2.5 -r1.1.1.4.4.2.2.6 src/dist/bind/CHANGES cvs rdiff -u -r1.3.2.1.2.3 -r1.3.2.1.2.4 src/dist/bind/bin/named/query.c cvs rdiff -u -r1.1.1.3.4.1.2.2 -r1.1.1.3.4.1.2.3 \ src/dist/bind/bin/nsupdate/nsupdate.8 cvs rdiff -u -r1.1.1.4.4.1.2.2 -r1.1.1.4.4.1.2.3 \ src/dist/bind/lib/dns/master.c cvs rdiff -u -r1.1.1.4.4.1.2.4 -r1.1.1.4.4.1.2.5 \ src/dist/bind/lib/dns/rbtdb.c cvs rdiff -u -r1.1.1.3.4.1 -r1.1.1.3.4.1.2.1 \ src/dist/bind/lib/isc/nothreads/condition.c \ src/dist/bind/lib/isc/nothreads/mutex.c cvs rdiff -u -r1.1.1.3.4.1.2.1 -r1.1.1.3.4.1.2.2 \ src/dist/bind/lib/isc/unix/time.c cvs rdiff -u -r1.1.1.3.4.1 -r1.1.1.3.4.1.2.1 \ src/dist/bind/lib/lwres/include/lwres/lwres.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/dist/bind/CHANGES diff -u src/dist/bind/CHANGES:1.1.1.4.4.2.2.5 src/dist/bind/CHANGES:1.1.1.4.4.2.2.6 --- src/dist/bind/CHANGES:1.1.1.4.4.2.2.5 Sat Jun 18 10:38:27 2011 +++ src/dist/bind/CHANGES Sun Nov 20 13:02:15 2011 @@ -1,3 +1,7 @@ +3218. [security] Cache lookup could return RRSIG data associated with +nonexistent records, leading to an assertion +failure. [RT #26590] + --- 9.4-ESV-R4-P1 released --- 3121. [security] An authoritative name server sending a negative Index: src/dist/bind/bin/named/query.c diff -u src/dist/bind/bin/named/query.c:1.3.2.1.2.3 src/dist/bind/bin/named/query.c:1.3.2.1.2.4 --- src/dist/bind/bin/named/query.c:1.3.2.1.2.3 Sun Jan 23 21:51:24 2011 +++ src/dist/bind/bin/named/query.c Sun Nov 20 13:02:15 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: query.c,v 1.3.2.1.2.3 2011/01/23 21:51:24 bouyer Exp $ */ +/* $NetBSD: query.c,v 1.3.2.1.2.4 2011/11/20 13:02:15 bouyer Exp $ */ /* * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") @@ -1253,11 +1253,9 @@ query_addadditional(void *arg, dns_name_ goto addname; if (result == DNS_R_NCACHENXRRSET) { dns_rdataset_disassociate(rdataset); - /* - * Negative cache entries don't have sigrdatasets. - */ - INSIST(sigrdataset == NULL || - ! dns_rdataset_isassociated(sigrdataset)); + if (sigrdataset != NULL && + dns_rdataset_isassociated(sigrdataset)) +dns_rdataset_disassociate(sigrdataset); } if (result == ISC_R_SUCCESS) { mname = NULL; @@ -1298,8 +1296,9 @@ query_addadditional(void *arg, dns_name_ goto addname; if (result == DNS_R_NCACHENXRRSET) { dns_rdataset_disassociate(rdataset); - INSIST(sigrdataset == NULL || - ! dns_rdataset_isassociated(sigrdataset)); + if (sigrdataset != NULL && + dns_rdataset_isassociated(sigrdataset)) +dns_rdataset_disassociate(sigrdataset); } if (result == ISC_R_SUCCESS) { mname = NULL; @@ -1748,10 +1747,8 @@ query_addadditional2(void *arg, dns_name goto setcache; if (result == DNS_R_NCACHENXRRSET) { dns_rdataset_disassociate(rdataset); - /* - * Negative cache entries don't have sigrdatasets. - */ - INSIST(! dns_rdataset_isassociated(sigrdataset)); + if (dns_rdataset_isassociated(sigrdataset)) + dns_rdataset_disassociate(sigrdataset); } if (result == ISC_R_SUCCESS) { /* Remember the result as a cache */ Index: src/dist/bind/bin/nsupdate/nsupdate.8 diff -u src/dist/bind/bin/nsupdate/nsupdate.8:1.1.1.3.4.1.2.2 src/dist/bind/bin/nsupdate/nsupdate.8:1.1.1.3.4.1.2.3 --- src/dist/bind/bin/nsupdate/nsupdate.8:1.1.1.3.4.1.2.2 Sun Jan 23 21:51:27 2011 +++ src/dist/bind/bin/nsupdate/nsupdate.8 Sun Nov 20 13:02:16 2011 @@ -1,2 +1,443 @@ -.\" $NetBSD: nsupdate.8,v 1.1.1.3.4.1.2.2 2011/01/23 21:51:27 bouyer Exp $ +.\" $NetBSD: nsupdate.8,v 1.1.1.3.4.1.2.3 2011/11/20 13:02:16 bouyer Exp $ .\" +.\" Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("I
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: mrg Date: Sun Nov 20 12:59:31 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: note vidcaudio now compiles and should be done To generate a diff of this commit: cvs rdiff -u -r1.1.2.6 -r1.1.2.7 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.6 src/sys/dev/TODO.audiomp:1.1.2.7 --- src/sys/dev/TODO.audiomp:1.1.2.6 Sun Nov 20 12:42:43 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 12:59:31 2011 @@ -3,7 +3,7 @@ driverstatus tested arch/amiga/dev/aucc.c done arch/amiga/dev/repulse.c done arch/amiga/dev/toccata.c done -arch/arm/iomd/vidcaudio.c +arch/arm/iomd/vidcaudio.c done arcm/arm/xscale/pxa2x0_ac97.c arch/dreamcast/dev/g2/aica.c arch/hp700/gsc/harmony.c
CVS commit: [jmcneill-audiomp3] src/sys/arch/arm/iomd
Module Name:src Committed By: mrg Date: Sun Nov 20 12:58:45 UTC 2011 Modified Files: src/sys/arch/arm/iomd [jmcneill-audiomp3]: vidcaudio.c Log Message: port to audiomp: get_locks support, stream filter updates, remove IPL_AUDIO not run time tested. To generate a diff of this commit: cvs rdiff -u -r1.46 -r1.46.40.1 src/sys/arch/arm/iomd/vidcaudio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/iomd/vidcaudio.c diff -u src/sys/arch/arm/iomd/vidcaudio.c:1.46 src/sys/arch/arm/iomd/vidcaudio.c:1.46.40.1 --- src/sys/arch/arm/iomd/vidcaudio.c:1.46 Sat Mar 1 16:17:47 2008 +++ src/sys/arch/arm/iomd/vidcaudio.c Sun Nov 20 12:58:45 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vidcaudio.c,v 1.46 2008/03/01 16:17:47 chris Exp $ */ +/* $NetBSD: vidcaudio.c,v 1.46.40.1 2011/11/20 12:58:45 mrg Exp $ */ /* * Copyright (c) 1995 Melvin Tang-Richardson @@ -65,7 +65,7 @@ #include /* proc.h */ -__KERNEL_RCSID(0, "$NetBSD: vidcaudio.c,v 1.46 2008/03/01 16:17:47 chris Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vidcaudio.c,v 1.46.40.1 2011/11/20 12:58:45 mrg Exp $"); #include #include/* autoconfig functions */ @@ -120,6 +120,9 @@ struct vidcaudio_softc { void (*sc_pintr)(void *); void *sc_parg; int sc_pcountdown; + + kmutex_t sc_lock; + kmutex_t sc_intr_lock; }; static int vidcaudio_probe(struct device *, struct cfdata *, void *); @@ -132,8 +135,9 @@ static void vidcaudio_ctrl(int); static void vidcaudio_stereo(int, int); static stream_filter_factory_t mulaw_to_vidc; static stream_filter_factory_t mulaw_to_vidc_stereo; -static int mulaw_to_vidc_fetch_to(stream_fetcher_t *, audio_stream_t *, int); -static int mulaw_to_vidc_stereo_fetch_to(stream_fetcher_t *, +static int mulaw_to_vidc_fetch_to(struct audio_softc *, stream_fetcher_t *, +audio_stream_t *, int); +static int mulaw_to_vidc_stereo_fetch_to(struct audio_softc *, stream_fetcher_t *, audio_stream_t *, int); CFATTACH_DECL(vidcaudio, sizeof(struct vidcaudio_softc), @@ -154,6 +158,7 @@ static intvidcaudio_set_port(void *, static intvidcaudio_get_port(void *, mixer_ctrl_t *); static intvidcaudio_query_devinfo(void *, mixer_devinfo_t *); static intvidcaudio_get_props(void *); +static void vidcaudio_get_locks(void *, kmutex_t **, kmutex_t **); static struct audio_device vidcaudio_device = { "ARM VIDC", @@ -189,6 +194,8 @@ static const struct audio_hw_if vidcaudi vidcaudio_trigger_output, vidcaudio_trigger_input, NULL, + NULL, + vidcaudio_get_locks, }; static int @@ -240,10 +247,13 @@ vidcaudio_attach(struct device *parent, else aprint_normal(": 8-bit internal DAC\n"); + mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE); + mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED); + /* Install the irq handler for the DMA interrupt */ sc->sc_ih.ih_func = vidcaudio_intr; sc->sc_ih.ih_arg = sc; - sc->sc_ih.ih_level = IPL_AUDIO; + sc->sc_ih.ih_level = IPL_SCHED; sc->sc_ih.ih_name = self->dv_xname; if (irq_claim(sc->sc_dma_intr, &sc->sc_ih) != 0) { @@ -322,13 +332,14 @@ mulaw_to_vidc(struct audio_softc *sc, co } static int -mulaw_to_vidc_fetch_to(stream_fetcher_t *self, audio_stream_t *dst, int max_used) +mulaw_to_vidc_fetch_to(struct audio_softc *sc, stream_fetcher_t *self, + audio_stream_t *dst, int max_used) { stream_filter_t *this; int m, err; this = (stream_filter_t *)self; - if ((err = this->prev->fetch_to(this->prev, this->src, max_used))) + if ((err = this->prev->fetch_to(sc, this->prev, this->src, max_used))) return err; m = dst->end - dst->start; m = min(m, max_used); @@ -347,15 +358,15 @@ mulaw_to_vidc_stereo(struct audio_softc } static int -mulaw_to_vidc_stereo_fetch_to(stream_fetcher_t *self, audio_stream_t *dst, - int max_used) +mulaw_to_vidc_stereo_fetch_to(struct audio_softc *sc, stream_fetcher_t *self, + audio_stream_t *dst, int max_used) { stream_filter_t *this; int m, err; this = (stream_filter_t *)self; max_used = (max_used + 1) & ~1; - if ((err = this->prev->fetch_to(this->prev, this->src, max_used / 2))) + if ((err = this->prev->fetch_to(sc, this->prev, this->src, max_used / 2))) return err; m = (dst->end - dst->start) & ~1; m = min(m, max_used); @@ -556,6 +567,15 @@ vidcaudio_get_props(void *addr) } static void +vidcaudio_get_locks(void *opaque, kmutex_t **intr, kmutex_t **thread) +{ + struct vidcaudio_softc *sc = opaque; + + *intr = &sc->sc_intr_lock; + *thread = &sc->sc_lock; +} + +static void vidcaudio_rate(int rate) { @@ -585,10 +605,14 @@ vidcaudio_intr(void *arg) paddr_t pnext, pend; sc = arg; + mutex_spin_enter(&sc->sc_intr_lock); + status = IOMD_READ_BYTE(IOMD_SD0ST); DPRINTF(("I[%x]", status)); - if ((status & IOMD_DMAST_INT) == 0) + if ((status & IOMD_DMAST_INT) == 0) { + mutex_spin_exit(&sc->sc_intr_lock); return 0; + } pnext = sc->sc_ppages[s
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: mrg Date: Sun Nov 20 12:42:43 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: note aucc and toccata as done. To generate a diff of this commit: cvs rdiff -u -r1.1.2.5 -r1.1.2.6 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.5 src/sys/dev/TODO.audiomp:1.1.2.6 --- src/sys/dev/TODO.audiomp:1.1.2.5 Sun Nov 20 12:37:56 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 12:42:43 2011 @@ -1,8 +1,8 @@ driverstatus tested === -arch/amiga/dev/aucc.c +arch/amiga/dev/aucc.c done arch/amiga/dev/repulse.c done -arch/amiga/dev/toccata.c +arch/amiga/dev/toccata.c done arch/arm/iomd/vidcaudio.c arcm/arm/xscale/pxa2x0_ac97.c arch/dreamcast/dev/g2/aica.c
CVS commit: [jmcneill-audiomp3] src/sys/arch/amiga/dev
Module Name:src Committed By: mrg Date: Sun Nov 20 12:41:59 UTC 2011 Modified Files: src/sys/arch/amiga/dev [jmcneill-audiomp3]: aucc.c toccata.c Log Message: port these to audiomp: support get_locks, and take the intr_lock in the interrupt handler. To generate a diff of this commit: cvs rdiff -u -r1.40 -r1.40.104.1 src/sys/arch/amiga/dev/aucc.c cvs rdiff -u -r1.14 -r1.14.4.1 src/sys/arch/amiga/dev/toccata.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/amiga/dev/aucc.c diff -u src/sys/arch/amiga/dev/aucc.c:1.40 src/sys/arch/amiga/dev/aucc.c:1.40.104.1 --- src/sys/arch/amiga/dev/aucc.c:1.40 Wed Mar 8 23:46:22 2006 +++ src/sys/arch/amiga/dev/aucc.c Sun Nov 20 12:41:59 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: aucc.c,v 1.40 2006/03/08 23:46:22 lukem Exp $ */ +/* $NetBSD: aucc.c,v 1.40.104.1 2011/11/20 12:41:59 mrg Exp $ */ /* * Copyright (c) 1999 Bernardo Innocenti @@ -53,7 +53,7 @@ #if NAUCC > 0 #include -__KERNEL_RCSID(0, "$NetBSD: aucc.c,v 1.40 2006/03/08 23:46:22 lukem Exp $"); +__KERNEL_RCSID(0, "$NetBSD: aucc.c,v 1.40.104.1 2011/11/20 12:41:59 mrg Exp $"); #include #include @@ -91,12 +91,6 @@ int auccdebug = 1; #define DPRINTF(x) #endif -#ifdef splaudio -#undef splaudio -#endif - -#define splaudio() spl4(); - /* clock frequency.. */ extern int eclockfreq; @@ -122,6 +116,9 @@ struct aucc_softc { int sc_channelmask; /* which channels are used ? */ void (*sc_decodefunc)(u_char **, u_char *, int); /* pointer to format conversion routine */ + + kmutex_t sc_lock; + kmutex_t sc_intr_lock; }; /* interrupt interfaces */ @@ -205,6 +202,7 @@ void aucc_encode(int, int, int, int, u_c int aucc_set_params(void *, int, int, audio_params_t *, audio_params_t *, stream_filter_list_t *, stream_filter_list_t *); int aucc_get_props(void *); +void aucc_get_locks(void *, kmutex_t **, kmutex_t **); static void aucc_decode_slinear8_1ch(u_char **, u_char *, int); @@ -262,6 +260,8 @@ const struct audio_hw_if sa_hw_if = { NULL, NULL, NULL, + NULL, + aucc_get_locks, }; /* autoconfig routines */ @@ -343,6 +343,9 @@ init_aucc(struct aucc_softc *sc) custom.intena = AUCC_ALLINTF; custom.dmacon = AUCC_ALLDMAF; + mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE); + mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED); + return err; } @@ -907,6 +910,16 @@ aucc_get_props(void *addr) return 0; } + +void +aucc_get_locks(void *opaque, kmutex_t **intr, kmutex_t **thread) +{ + struct aucc_softc *sc = opaque; + + *intr = &sc->sc_intr_lock; + *thread = &sc->sc_lock; +} + int aucc_query_devinfo(void *addr, register mixer_devinfo_t *dip) { @@ -958,6 +971,7 @@ aucc_inthdl(int ch) int i; int mask; + mutex_spin_enter(&aucc->sc_intr_lock); mask = aucc->sc_channel[ch].nd_mask; /* * for all channels in this maskgroup: @@ -991,6 +1005,7 @@ aucc_inthdl(int ch) (aucc->sc_channel[ch].nd_intrdata); } else DPRINTF(("zero int handler\n")); + mutex_spin_exit(&aucc->sc_intr_lock); DPRINTF(("ints done\n")); } Index: src/sys/arch/amiga/dev/toccata.c diff -u src/sys/arch/amiga/dev/toccata.c:1.14 src/sys/arch/amiga/dev/toccata.c:1.14.4.1 --- src/sys/arch/amiga/dev/toccata.c:1.14 Tue Jul 19 15:55:27 2011 +++ src/sys/arch/amiga/dev/toccata.c Sun Nov 20 12:41:59 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: toccata.c,v 1.14 2011/07/19 15:55:27 dyoung Exp $ */ +/* $NetBSD: toccata.c,v 1.14.4.1 2011/11/20 12:41:59 mrg Exp $ */ /*- * Copyright (c) 1998, 1999, 2001, 2002 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: toccata.c,v 1.14 2011/07/19 15:55:27 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: toccata.c,v 1.14.4.1 2011/11/20 12:41:59 mrg Exp $"); #include #include @@ -174,6 +174,8 @@ int toccata_set_port(void *, mixer_ctrl_ int toccata_get_port(void *, mixer_ctrl_t *); int toccata_query_devinfo(void *, mixer_devinfo_t *); +void toccata_get_locks(void *, kmutex_t **, kmutex_t **); + const struct audio_hw_if audiocs_hw_if = { toccata_open, toccata_close, @@ -205,6 +207,9 @@ const struct audio_hw_if audiocs_hw_if = toccata_get_props, 0, /* trigger_output */ 0, + 0, + 0, + toccata_get_locks, }; struct toccata_softc { @@ -219,6 +224,9 @@ struct toccata_softc { void (*sc_playmore)(void *); void *sc_playarg; + + kmutex_t sc_lock; + kmutex_t sc_intr_lock; }; int toccata_match(device_t, cfdata_t, void *); @@ -275,6 +283,9 @@ toccata_attach(device_t parent, device_t sc->sc_captbuf = 0; sc->sc_playmore = 0; + mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE); + mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED); + sc->sc_isr.isr_ipl = 6; sc->sc_isr.isr_arg = sc; sc->sc_isr.isr_intr = toccata_intr; @@ -294,14 +305,20 @@ toccata_intr(void *tag) { int i; sc = tag; + + mutex_spin_enter(&sc->sc_intr_lock); + status = *(sc->sc_boardp); - if (s
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 12:37:56 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: i tested eap To generate a diff of this commit: cvs rdiff -u -r1.1.2.4 -r1.1.2.5 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.4 src/sys/dev/TODO.audiomp:1.1.2.5 --- src/sys/dev/TODO.audiomp:1.1.2.4 Sun Nov 20 12:28:26 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 12:37:56 2011 @@ -40,7 +40,7 @@ dev/pci/azalia.c done dev/pci/cmpci.c done dev/pci/cs4280.c done dev/pci/cs4281.c done -dev/pci/eap.c done +dev/pci/eap.c done port-i386 dev/pci/emuxki.c done dev/pci/esa.c done dev/pci/esm.c done @@ -50,7 +50,7 @@ dev/pci/gcscaudio.c done dev/pci/neo.c done dev/pci/sv.c done dev/pci/yds.c done -dev/pci/hdaudio/hdafg.c done port-amd64 +dev/pci/hdaudio/hdafg.c done port-i386 dev/sbus/cs4231_sbus.c done dev/sbus/dbri.c done dev/tc/bba.c done
CVS commit: src/sys/dev/usb
Module Name:src Committed By: nonaka Date: Sun Nov 20 12:29:34 UTC 2011 Modified Files: src/sys/dev/usb: udl.c Log Message: Added "Lenovo ThinkVision LT1421 Wide" entry. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/dev/usb/udl.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/usb/udl.c diff -u src/sys/dev/usb/udl.c:1.5 src/sys/dev/usb/udl.c:1.6 --- src/sys/dev/usb/udl.c:1.5 Fri Jul 22 12:40:55 2011 +++ src/sys/dev/usb/udl.c Sun Nov 20 12:29:33 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: udl.c,v 1.5 2011/07/22 12:40:55 nonaka Exp $ */ +/* $NetBSD: udl.c,v 1.6 2011/11/20 12:29:33 nonaka Exp $ */ /*- * Copyright (c) 2009 FUKAUMI Naoki. @@ -53,7 +53,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: udl.c,v 1.5 2011/07/22 12:40:55 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: udl.c,v 1.6 2011/11/20 12:29:33 nonaka Exp $"); #include #include @@ -322,6 +322,7 @@ static const struct usb_devno udl_devs[] { USB_VENDOR_DISPLAYLINK, USB_PRODUCT_DISPLAYLINK_LUM70 }, { USB_VENDOR_DISPLAYLINK, USB_PRODUCT_DISPLAYLINK_LCD8000UD_DVI }, { USB_VENDOR_DISPLAYLINK, USB_PRODUCT_DISPLAYLINK_LDEWX015U }, + { USB_VENDOR_DISPLAYLINK, USB_PRODUCT_DISPLAYLINK_LT1421WIDE }, { USB_VENDOR_DISPLAYLINK, USB_PRODUCT_DISPLAYLINK_UM7X0 } };
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 12:28:26 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: mavb is done To generate a diff of this commit: cvs rdiff -u -r1.1.2.3 -r1.1.2.4 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.3 src/sys/dev/TODO.audiomp:1.1.2.4 --- src/sys/dev/TODO.audiomp:1.1.2.3 Sun Nov 20 12:17:03 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 12:28:26 2011 @@ -12,7 +12,7 @@ arch/macppc/dev/awacs.c arch/macppc/dev/snapper.c arch/prep/isa/paud_isa.c arch/sgimips/hpc/haltwo.c done -arch/sgimips/mace/mavb.c +arch/sgimips/mace/mavb.c done arch/sparc/dev/audioamd.c done arch/x68k/dev/vs.c arch/zaurus/dev/zaudio.c
CVS commit: src/sys/dev/usb
Module Name:src Committed By: nonaka Date: Sun Nov 20 12:27:36 UTC 2011 Modified Files: src/sys/dev/usb: usbdevs.h usbdevs_data.h Log Message: regen. To generate a diff of this commit: cvs rdiff -u -r1.593 -r1.594 src/sys/dev/usb/usbdevs.h cvs rdiff -u -r1.594 -r1.595 src/sys/dev/usb/usbdevs_data.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/usb/usbdevs.h diff -u src/sys/dev/usb/usbdevs.h:1.593 src/sys/dev/usb/usbdevs.h:1.594 --- src/sys/dev/usb/usbdevs.h:1.593 Sun Nov 6 02:30:06 2011 +++ src/sys/dev/usb/usbdevs.h Sun Nov 20 12:27:36 2011 @@ -1,10 +1,10 @@ -/* $NetBSD: usbdevs.h,v 1.593 2011/11/06 02:30:06 christos Exp $ */ +/* $NetBSD: usbdevs.h,v 1.594 2011/11/20 12:27:36 nonaka Exp $ */ /* * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. * * generated from: - * NetBSD: usbdevs,v 1.600 2011/11/06 02:29:33 christos Exp + * NetBSD: usbdevs,v 1.601 2011/11/20 12:26:49 nonaka Exp */ /* @@ -1152,6 +1152,7 @@ #define USB_PRODUCT_DISPLAYLINK_LUM70 0x02a9 /* Lilliput UM-70 */ #define USB_PRODUCT_DISPLAYLINK_LCD8000UD_DVI 0x02b8 /* LCD-8000UD-DVI */ #define USB_PRODUCT_DISPLAYLINK_LDEWX015U 0x02e3 /* Logitec LDE-WX015U */ +#define USB_PRODUCT_DISPLAYLINK_LT1421WIDE 0x03e0 /* Lenovo ThinkVision LT1421 Wide */ #define USB_PRODUCT_DISPLAYLINK_UM7X0 0x401a /* nanovision MiMo */ /* D-Link products */ Index: src/sys/dev/usb/usbdevs_data.h diff -u src/sys/dev/usb/usbdevs_data.h:1.594 src/sys/dev/usb/usbdevs_data.h:1.595 --- src/sys/dev/usb/usbdevs_data.h:1.594 Sun Nov 6 02:30:06 2011 +++ src/sys/dev/usb/usbdevs_data.h Sun Nov 20 12:27:36 2011 @@ -1,10 +1,10 @@ -/* $NetBSD: usbdevs_data.h,v 1.594 2011/11/06 02:30:06 christos Exp $ */ +/* $NetBSD: usbdevs_data.h,v 1.595 2011/11/20 12:27:36 nonaka Exp $ */ /* * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. * * generated from: - * NetBSD: usbdevs,v 1.600 2011/11/06 02:29:33 christos Exp + * NetBSD: usbdevs,v 1.601 2011/11/20 12:26:49 nonaka Exp */ /* @@ -3635,6 +3635,10 @@ const struct usb_product usb_products[] "Logitec LDE-WX015U", }, { + USB_VENDOR_DISPLAYLINK, USB_PRODUCT_DISPLAYLINK_LT1421WIDE, + "Lenovo ThinkVision LT1421 Wide", + }, + { USB_VENDOR_DISPLAYLINK, USB_PRODUCT_DISPLAYLINK_UM7X0, "nanovision MiMo", }, @@ -8571,4 +8575,4 @@ const struct usb_product usb_products[] "Prestige", }, }; -const int usb_nproducts = 1635; +const int usb_nproducts = 1636;
CVS commit: [jmcneill-audiomp3] src/sys/arch/sgimips/mace
Module Name:src Committed By: jmcneill Date: Sun Nov 20 12:27:21 UTC 2011 Modified Files: src/sys/arch/sgimips/mace [jmcneill-audiomp3]: mavb.c Log Message: adapt to audiomp api changes To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.7.4.1 src/sys/arch/sgimips/mace/mavb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/sgimips/mace/mavb.c diff -u src/sys/arch/sgimips/mace/mavb.c:1.7 src/sys/arch/sgimips/mace/mavb.c:1.7.4.1 --- src/sys/arch/sgimips/mace/mavb.c:1.7 Fri Jul 1 18:53:47 2011 +++ src/sys/arch/sgimips/mace/mavb.c Sun Nov 20 12:27:21 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: mavb.c,v 1.7 2011/07/01 18:53:47 dyoung Exp $ */ +/* $NetBSD: mavb.c,v 1.7.4.1 2011/11/20 12:27:21 jmcneill Exp $ */ /* $OpenBSD: mavb.c,v 1.6 2005/04/15 13:05:14 mickey Exp $ */ /* @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include @@ -118,6 +118,8 @@ static const struct audio_format mavb_fo struct mavb_softc { struct device sc_dev; + kmutex_t sc_lock; + kmutex_t sc_intr_lock; bus_space_tag_t sc_st; bus_space_handle_t sc_sh; bus_dma_tag_t sc_dmat; @@ -151,24 +153,26 @@ struct mavb_codecvar { }; static stream_filter_t *mavb_factory -(int (*)(stream_fetcher_t *, audio_stream_t *, int)); +(struct audio_softc *, + int (*)(struct audio_softc *, stream_fetcher_t *, audio_stream_t *, int)); static void mavb_dtor(stream_filter_t *); /* XXX I'm going to complain every time I have to copy this macro */ #define DEFINE_FILTER(name) \ static int\ -name##_fetch_to(stream_fetcher_t *, audio_stream_t *, int); \ +name##_fetch_to(struct audio_softc *, stream_fetcher_t *, \ + audio_stream_t *, int); \ stream_filter_t *name(struct audio_softc *,\ const audio_params_t *, const audio_params_t *); \ stream_filter_t * \ name(struct audio_softc *sc, const audio_params_t *from, \ const audio_params_t *to) \ { \ - return mavb_factory(name##_fetch_to);\ + return mavb_factory(sc, name##_fetch_to); \ } \ static int\ -name##_fetch_to(stream_fetcher_t *self, audio_stream_t *dst, \ -int max_used) +name##_fetch_to(struct audio_softc *asc, stream_fetcher_t *self, \ +audio_stream_t *dst, int max_used) DEFINE_FILTER(mavb_16to24) { @@ -177,7 +181,7 @@ DEFINE_FILTER(mavb_16to24) this = (stream_filter_t *)self; max_used = (max_used + 1) & ~1; - if ((err = this->prev->fetch_to(this->prev, this->src, max_used))) + if ((err = this->prev->fetch_to(asc, this->prev, this->src, max_used))) return err; m = (dst->end - dst->start) & ~1; m = min(m, max_used); @@ -198,7 +202,7 @@ DEFINE_FILTER(mavb_mts) this = (stream_filter_t *)self; max_used = (max_used + 1) & ~1; - if ((err = this->prev->fetch_to(this->prev, this->src, max_used))) + if ((err = this->prev->fetch_to(asc, this->prev, this->src, max_used))) return err; m = (dst->end - dst->start) & ~1; m = min(m, max_used); @@ -213,11 +217,11 @@ DEFINE_FILTER(mavb_mts) } static stream_filter_t * -mavb_factory(int (*fetch_to)(stream_fetcher_t *, audio_stream_t *, int)) +mavb_factory(struct audio_softc *asc, int (*fetch_to)(struct audio_softc *, stream_fetcher_t *, audio_stream_t *, int)) { struct mavb_codecvar *this; - this = malloc(sizeof(*this), M_DEVBUF, M_WAITOK | M_ZERO); + this = kmem_zalloc(sizeof(*this), KM_SLEEP); this->base.base.fetch_to = fetch_to; this->base.dtor = mavb_dtor; this->base.set_fetcher = stream_filter_set_fetcher; @@ -231,7 +235,7 @@ mavb_dtor(stream_filter_t *this) { if (this != NULL) - free(this, M_DEVBUF); + kmem_free(this, sizeof(*this)); } typedef uint64_t ad1843_addr_t; @@ -265,6 +269,7 @@ int mavb_trigger_output(void *, void *, void *, const audio_params_t *); int mavb_trigger_input(void *, void *, void *, int, void (*)(void *), void *, const audio_params_t *); +void mavb_get_locks(void *, kmutex_t **, kmutex_t **); struct audio_hw_if mavb_sa_hw_if = { mavb_open, @@ -294,6 +299,8 @@ struct audio_hw_if mavb_sa_hw_if = { mavb_trigger_output, mavb_trigger_input, NULL, + NULL, + mavb_get_locks, }; struct audio_device mavb_device = { @@ -855,6 +862,8 @@ mavb_dma_output(struct mavb_softc *sc) uint8_t *src, *dst; int count; + KASSERT(mutex_owned(&sc->sc_intr_lock)); + write_ptr = bus_space_read_8(st, sh, MAVB_CHANNEL2_WRITE_PTR); depth = bus_space_read_8(st, sh, MAVB_CHANNEL2_DEPTH); @@ -900,6 +909,8 @@ mavb_trigger_output(void *hdl, void *sta sc->sc_count = 0; + mutex_spin_enter(&sc->sc_intr_lock); + bus_space_write_8(sc->sc_st, sc->sc_sh, MAVB_CHANNEL2_CONTROL, MAVB_CHANNEL_RESET); delay(1000); @@ -909,6 +920,9 @@ mavb_trigger_output(void *hdl, void *sta bus_space_write_8(sc->sc_st, sc->sc_sh, MAVB_CHANNEL2_CONTROL, MAVB_CHANNEL_DMA_ENABLE | MAVB_CHANNEL_INT_50); + + mutex_sp
CVS commit: src/sys/dev/usb
Module Name:src Committed By: nonaka Date: Sun Nov 20 12:26:50 UTC 2011 Modified Files: src/sys/dev/usb: usbdevs Log Message: Added "Lenovo ThinkVision LT1421 Wide" entry. To generate a diff of this commit: cvs rdiff -u -r1.600 -r1.601 src/sys/dev/usb/usbdevs Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/usb/usbdevs diff -u src/sys/dev/usb/usbdevs:1.600 src/sys/dev/usb/usbdevs:1.601 --- src/sys/dev/usb/usbdevs:1.600 Sun Nov 6 02:29:33 2011 +++ src/sys/dev/usb/usbdevs Sun Nov 20 12:26:49 2011 @@ -1,4 +1,4 @@ -$NetBSD: usbdevs,v 1.600 2011/11/06 02:29:33 christos Exp $ +$NetBSD: usbdevs,v 1.601 2011/11/20 12:26:49 nonaka Exp $ /* * Copyright (c) 1998-2004 The NetBSD Foundation, Inc. @@ -1145,6 +1145,7 @@ product DISPLAYLINK SWDVI 0x024c SUNWEIT product DISPLAYLINK LUM70 0x02a9 Lilliput UM-70 product DISPLAYLINK LCD8000UD_DVI 0x02b8 LCD-8000UD-DVI product DISPLAYLINK LDEWX015U 0x02e3 Logitec LDE-WX015U +product DISPLAYLINK LT1421WIDE 0x03e0 Lenovo ThinkVision LT1421 Wide product DISPLAYLINK UM7X0 0x401a nanovision MiMo /* D-Link products */
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: mrg Date: Sun Nov 20 12:17:03 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: add a column for tested and mark hdafg and ess as done. To generate a diff of this commit: cvs rdiff -u -r1.1.2.2 -r1.1.2.3 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.2 src/sys/dev/TODO.audiomp:1.1.2.3 --- src/sys/dev/TODO.audiomp:1.1.2.2 Sun Nov 20 12:09:13 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 12:17:03 2011 @@ -1,4 +1,4 @@ -driverstatus +driverstatus tested === arch/amiga/dev/aucc.c arch/amiga/dev/repulse.c done @@ -23,7 +23,7 @@ dev/ic/mpu.c done dev/ic/opl.c done dev/ic/tms320av110.c dev/isa/aria.c done -dev/isa/ess.c done +dev/isa/ess.c done port-shark dev/isa/gus.c done dev/isa/pas.c done dev/isa/sb.c done @@ -50,7 +50,7 @@ dev/pci/gcscaudio.c done dev/pci/neo.c done dev/pci/sv.c done dev/pci/yds.c done -dev/pci/hdaudio/hdafg.c done +dev/pci/hdaudio/hdafg.c done port-amd64 dev/sbus/cs4231_sbus.c done dev/sbus/dbri.c done dev/tc/bba.c done
CVS commit: src/sys/net
Module Name:src Committed By: kiyohara Date: Sun Nov 20 12:15:38 UTC 2011 Modified Files: src/sys/net: if_ecosubr.c Log Message: Fix build failed. Include if_inarp.h. To generate a diff of this commit: cvs rdiff -u -r1.35 -r1.36 src/sys/net/if_ecosubr.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/net/if_ecosubr.c diff -u src/sys/net/if_ecosubr.c:1.35 src/sys/net/if_ecosubr.c:1.36 --- src/sys/net/if_ecosubr.c:1.35 Mon Apr 5 07:22:22 2010 +++ src/sys/net/if_ecosubr.c Sun Nov 20 12:15:38 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ecosubr.c,v 1.35 2010/04/05 07:22:22 joerg Exp $ */ +/* $NetBSD: if_ecosubr.c,v 1.36 2011/11/20 12:15:38 kiyohara Exp $ */ /*- * Copyright (c) 2001 Ben Harris @@ -58,7 +58,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: if_ecosubr.c,v 1.35 2010/04/05 07:22:22 joerg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_ecosubr.c,v 1.36 2011/11/20 12:15:38 kiyohara Exp $"); #include "opt_inet.h" #include "opt_pfil_hooks.h" @@ -86,6 +86,7 @@ __KERNEL_RCSID(0, "$NetBSD: if_ecosubr.c #include #include #endif +#include struct eco_retryparms { int erp_delay;
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 12:09:13 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: haltwo is done To generate a diff of this commit: cvs rdiff -u -r1.1.2.1 -r1.1.2.2 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/TODO.audiomp diff -u src/sys/dev/TODO.audiomp:1.1.2.1 src/sys/dev/TODO.audiomp:1.1.2.2 --- src/sys/dev/TODO.audiomp:1.1.2.1 Sun Nov 20 11:26:35 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 12:09:13 2011 @@ -11,7 +11,7 @@ arch/hpcmips/vr/vraiu.c arch/macppc/dev/awacs.c arch/macppc/dev/snapper.c arch/prep/isa/paud_isa.c -arch/sgimips/hpc/haltwo.c +arch/sgimips/hpc/haltwo.c done arch/sgimips/mace/mavb.c arch/sparc/dev/audioamd.c done arch/x68k/dev/vs.c
CVS commit: [jmcneill-audiomp3] src/sys/dev/isa
Module Name:src Committed By: mrg Date: Sun Nov 20 12:08:19 UTC 2011 Modified Files: src/sys/dev/isa [jmcneill-audiomp3]: pcppi.c pcppivar.h Log Message: port the changes from ad-audiomp2 branch. this mostly replaces the changes i'd made to pcppi to achieve a similar result. XXX: these actually could be pulled down to -current today, i think. no actual dependancies on audiomp branch itself. To generate a diff of this commit: cvs rdiff -u -r1.37 -r1.37.6.1 src/sys/dev/isa/pcppi.c cvs rdiff -u -r1.10.6.1 -r1.10.6.2 src/sys/dev/isa/pcppivar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/isa/pcppi.c diff -u src/sys/dev/isa/pcppi.c:1.37 src/sys/dev/isa/pcppi.c:1.37.6.1 --- src/sys/dev/isa/pcppi.c:1.37 Tue May 24 09:28:03 2011 +++ src/sys/dev/isa/pcppi.c Sun Nov 20 12:08:19 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: pcppi.c,v 1.37 2011/05/24 09:28:03 mrg Exp $ */ +/* $NetBSD: pcppi.c,v 1.37.6.1 2011/11/20 12:08:19 mrg Exp $ */ /* * Copyright (c) 1996 Carnegie-Mellon University. @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pcppi.c,v 1.37 2011/05/24 09:28:03 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pcppi.c,v 1.37.6.1 2011/11/20 12:08:19 mrg Exp $"); #include "attimer.h" @@ -42,6 +42,7 @@ __KERNEL_RCSID(0, "$NetBSD: pcppi.c,v 1. #include #include #include +#include #include @@ -66,16 +67,14 @@ CFATTACH_DECL3_NEW(pcppi, sizeof(struct DVF_DETACH_SHUTDOWN); static int pcppisearch(device_t, cfdata_t, const int *, void *); -static void pcppi_bell_stop_unlocked(void*); -static void pcppi_bell_stop(void*); +static void pcppi_bell_stop(struct pcppi_softc *); +static void pcppi_bell_callout(void *); #if NATTIMER > 0 static void pcppi_attach_speaker(device_t); static void pcppi_detach_speaker(struct pcppi_softc *); #endif -#define PCPPIPRI (PZERO - 1) - int pcppi_match(device_t parent, cfdata_t match, void *aux) { @@ -175,6 +174,7 @@ pcppi_isa_attach(device_t parent, device void pcppi_childdet(device_t self, device_t child) { + /* we hold no child references, so do nothing */ } @@ -196,14 +196,16 @@ pcppi_detach(device_t self, int flags) #if NPCKBD > 0 pckbd_unhook_bell(pcppi_pckbd_bell, sc); #endif + mutex_spin_enter(&tty_lock); pcppi_bell_stop(sc); + mutex_spin_exit(&tty_lock); - callout_stop(&sc->sc_bell_ch); + callout_halt(&sc->sc_bell_ch, NULL); callout_destroy(&sc->sc_bell_ch); - bus_space_unmap(sc->sc_iot, sc->sc_ppi_ioh, sc->sc_size); - mutex_destroy(&sc->sc_lock); - cv_destroy(&sc->sc_stop_cv); + cv_destroy(&sc->sc_slp); + + bus_space_unmap(sc->sc_iot, sc->sc_ppi_ioh, sc->sc_size); return 0; } @@ -214,12 +216,11 @@ pcppi_attach(struct pcppi_softc *sc) struct pcppi_attach_args pa; device_t self = sc->sc_dv; -callout_init(&sc->sc_bell_ch, 0); - -sc->sc_bellactive = sc->sc_bellpitch = sc->sc_slp = 0; + callout_init(&sc->sc_bell_ch, CALLOUT_MPSAFE); + callout_setfunc(&sc->sc_bell_ch, pcppi_bell_callout, sc); + cv_init(&sc->sc_slp, "bell"); - mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_VM); - cv_init(&sc->sc_stop_cv, "bell"); +sc->sc_bellactive = sc->sc_bellpitch = 0; #if NPCKBD > 0 /* Provide a beeper for the PC Keyboard, if there isn't one already. */ @@ -274,21 +275,27 @@ pcppi_attach_speaker(device_t self) void pcppi_bell(pcppi_tag_t self, int pitch, int period, int slp) { + + mutex_spin_enter(&tty_lock); + pcppi_bell_locked(self, pitch, period, slp); + mutex_spin_exit(&tty_lock); +} + +void +pcppi_bell_locked(pcppi_tag_t self, int pitch, int period, int slp) +{ struct pcppi_softc *sc = self; - mutex_enter(&sc->sc_lock); if (sc->sc_bellactive) { if (sc->sc_timeout) { sc->sc_timeout = 0; callout_stop(&sc->sc_bell_ch); } - if (sc->sc_slp) - cv_broadcast(&sc->sc_stop_cv); + cv_broadcast(&sc->sc_slp); } if (pitch == 0 || period == 0) { - pcppi_bell_stop_unlocked(sc); + pcppi_bell_stop(sc); sc->sc_bellpitch = 0; - mutex_exit(&sc->sc_lock); return; } if (!sc->sc_bellactive || sc->sc_bellpitch != pitch) { @@ -306,24 +313,32 @@ pcppi_bell(pcppi_tag_t self, int pitch, sc->sc_bellactive = 1; if (slp & PCPPI_BELL_POLL) { delay((period * 100) / hz); - pcppi_bell_stop_unlocked(sc); + pcppi_bell_stop(sc); } else { sc->sc_timeout = 1; - callout_reset(&sc->sc_bell_ch, period, pcppi_bell_stop, sc); + callout_schedule(&sc->sc_bell_ch, period); if (slp & PCPPI_BELL_SLEEP) { - sc->sc_slp = 1; - cv_wait_sig(&sc->sc_stop_cv, &sc->sc_lock); - sc->sc_slp = 0; + cv_wait_sig(&sc->sc_slp, &tty_lock); } } - mutex_exit(&sc->sc_lock); } static void -pcppi_bell_stop_unlocked(void *arg) +pcppi_bell_callout(void *arg) { struct pcppi_softc *sc = arg; + mutex_spin_enter(&tty_lock); + if (sc->sc_timeout != 0) { + pcppi_bell_stop(sc); + } + mutex_spin_exit(&tty_lock); +} + +static void +pcppi_bell_stop(struct p
CVS commit: [jmcneill-audiomp3] src/sys/arch/sgimips/hpc
Module Name:src Committed By: jmcneill Date: Sun Nov 20 12:07:27 UTC 2011 Modified Files: src/sys/arch/sgimips/hpc [jmcneill-audiomp3]: haltwo.c haltwovar.h Log Message: adapt to audiomp api changes To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.20.4.1 src/sys/arch/sgimips/hpc/haltwo.c cvs rdiff -u -r1.7 -r1.7.6.1 src/sys/arch/sgimips/hpc/haltwovar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/sgimips/hpc/haltwo.c diff -u src/sys/arch/sgimips/hpc/haltwo.c:1.20 src/sys/arch/sgimips/hpc/haltwo.c:1.20.4.1 --- src/sys/arch/sgimips/hpc/haltwo.c:1.20 Fri Jul 1 18:53:46 2011 +++ src/sys/arch/sgimips/hpc/haltwo.c Sun Nov 20 12:07:27 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: haltwo.c,v 1.20 2011/07/01 18:53:46 dyoung Exp $ */ +/* $NetBSD: haltwo.c,v 1.20.4.1 2011/11/20 12:07:27 jmcneill Exp $ */ /* * Copyright (c) 2003 Ilpo Ruotsalainen @@ -30,13 +30,13 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: haltwo.c,v 1.20 2011/07/01 18:53:46 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: haltwo.c,v 1.20.4.1 2011/11/20 12:07:27 jmcneill Exp $"); #include #include #include #include -#include +#include #include #include #include @@ -68,13 +68,14 @@ static int haltwo_getdev(void *, struct static int haltwo_set_port(void *, mixer_ctrl_t *); static int haltwo_get_port(void *, mixer_ctrl_t *); static int haltwo_query_devinfo(void *, mixer_devinfo_t *); -static void *haltwo_malloc(void *, int, size_t, struct malloc_type *, int); -static void haltwo_free(void *, void *, struct malloc_type *); +static void *haltwo_malloc(void *, int, size_t); +static void haltwo_free(void *, void *, size_t); static int haltwo_get_props(void *); static int haltwo_trigger_output(void *, void *, void *, int, void (*)(void *), void *, const audio_params_t *); static int haltwo_trigger_input(void *, void *, void *, int, void (*)(void *), void *, const audio_params_t *); +static void haltwo_get_locks(void *, kmutex_t **, kmutex_t **); static bool haltwo_shutdown(device_t, int); static const struct audio_hw_if haltwo_hw_if = { @@ -104,7 +105,9 @@ static const struct audio_hw_if haltwo_h haltwo_get_props, haltwo_trigger_output, haltwo_trigger_input, - NULL /* dev_ioctl */ + NULL, /* dev_ioctl */ + NULL, /* powerstate */ + haltwo_get_locks, }; static const struct audio_device haltwo_device = { @@ -300,6 +303,9 @@ haltwo_attach(device_t parent, device_t sc->sc_st = haa->ha_st; sc->sc_dma_tag = haa->ha_dmat; + mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE); + mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED); + if (bus_space_subregion(haa->ha_st, haa->ha_sh, haa->ha_devoff, HPC3_PBUS_CH0_DEVREGS_SIZE, &sc->sc_ctl_sh)) { aprint_error(": unable to map control registers\n"); @@ -325,7 +331,7 @@ haltwo_attach(device_t parent, device_t rev = haltwo_read(sc, ctl, HAL2_REG_CTL_REV); - if (cpu_intr_establish(haa->ha_irq, IPL_AUDIO, haltwo_intr, sc) + if (cpu_intr_establish(haa->ha_irq, IPL_SCHED, haltwo_intr, sc) == NULL) { aprint_error(": unable to establish interrupt\n"); return; @@ -372,6 +378,9 @@ haltwo_intr(void *v) sc = v; ret = 0; + + mutex_spin_enter(&sc->sc_intr_lock); + if (bus_space_read_4(sc->sc_st, sc->sc_dma_sh, HPC3_PBUS_CH0_CTL) & HPC3_PBUS_DMACTL_IRQ) { sc->sc_dac.intr(sc->sc_dac.intr_arg); @@ -380,6 +389,8 @@ haltwo_intr(void *v) } else DPRINTF(("haltwo_intr: Huh?\n")); + mutex_spin_exit(&sc->sc_intr_lock); + return ret; } @@ -637,26 +648,25 @@ haltwo_alloc_dmamem(struct haltwo_softc p->size = size; /* XXX Check align/boundary XXX */ - /* XXX Pass flags and use them instead BUS_DMA_NOWAIT? XXX */ err = bus_dmamem_alloc(sc->sc_dma_tag, p->size, 0, 0, p->dma_segs, - HALTWO_MAX_DMASEGS, &p->dma_segcount, BUS_DMA_NOWAIT); + HALTWO_MAX_DMASEGS, &p->dma_segcount, BUS_DMA_WAITOK); if (err) goto out; /* XXX BUS_DMA_COHERENT? XXX */ err = bus_dmamem_map(sc->sc_dma_tag, p->dma_segs, p->dma_segcount, - p->size, &p->kern_addr, BUS_DMA_NOWAIT | BUS_DMA_COHERENT); + p->size, &p->kern_addr, BUS_DMA_WAITOK | BUS_DMA_COHERENT); if (err) goto out_free; /* XXX Just guessing ... XXX */ err = bus_dmamap_create(sc->sc_dma_tag, p->size, HALTWO_MAX_DMASEGS, - PAGE_SIZE, 0, BUS_DMA_NOWAIT, &p->dma_map); + PAGE_SIZE, 0, BUS_DMA_WAITOK, &p->dma_map); if (err) goto out_free; err = bus_dmamap_load(sc->sc_dma_tag, p->dma_map, p->kern_addr, - p->size, NULL, BUS_DMA_NOWAIT); + p->size, NULL, BUS_DMA_WAITOK); if (err) goto out_destroy; @@ -673,21 +683,20 @@ out: } static void * -haltwo_malloc(void *v, int direction, size_t size, struct malloc_type *type, - int flags) +haltwo_malloc(void *v, int direction, size_t size) { struct haltwo_softc *sc; struct haltwo_dmabuf *p; DPRINTF(("haltwo_malloc size = %d\n", size)); sc = v; - p =
CVS commit: [jmcneill-audiomp3] src/sys/dev/sbus
Module Name:src Committed By: mrg Date: Sun Nov 20 12:07:13 UTC 2011 Modified Files: src/sys/dev/sbus [jmcneill-audiomp3]: dbri.c Log Message: convert spl*() to use the sc_intr_lock mutex, and hold it in a couple of other places we should as well. To generate a diff of this commit: cvs rdiff -u -r1.33.6.1 -r1.33.6.2 src/sys/dev/sbus/dbri.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/sbus/dbri.c diff -u src/sys/dev/sbus/dbri.c:1.33.6.1 src/sys/dev/sbus/dbri.c:1.33.6.2 --- src/sys/dev/sbus/dbri.c:1.33.6.1 Sun Nov 20 10:48:54 2011 +++ src/sys/dev/sbus/dbri.c Sun Nov 20 12:07:13 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: dbri.c,v 1.33.6.1 2011/11/20 10:48:54 mrg Exp $ */ +/* $NetBSD: dbri.c,v 1.33.6.2 2011/11/20 12:07:13 mrg Exp $ */ /* * Copyright (C) 1997 Rudolf Koenig (rfkoe...@immd4.informatik.uni-erlangen.de) @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: dbri.c,v 1.33.6.1 2011/11/20 10:48:54 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dbri.c,v 1.33.6.2 2011/11/20 12:07:13 mrg Exp $"); #include "audio.h" #if NAUDIO > 0 @@ -472,6 +472,8 @@ dbri_intr(void *hdl) bus_space_handle_t ioh = sc->sc_ioh; int x; + mutex_spin_enter(&sc->sc_intr_lock); + /* clear interrupt */ x = bus_space_read_4(iot, ioh, DBRI_REG1); if (x & (DBRI_MRR | DBRI_MLE | DBRI_LBG | DBRI_MBE)) { @@ -506,6 +508,8 @@ dbri_intr(void *hdl) dbri_process_interrupt_buffer(sc); + mutex_spin_exit(&sc->sc_intr_lock); + return (1); } @@ -598,9 +602,8 @@ dbri_command_send(struct dbri_softc *sc, bus_space_handle_t ioh = sc->sc_ioh; bus_space_tag_t iot = sc->sc_iot; int maxloops = 100; - int x; - x = splsched(); + mutex_spin_enter(&sc->sc_intr_lock); sc->sc_locked--; @@ -638,7 +641,7 @@ dbri_command_send(struct dbri_softc *sc, } } - splx(x); + mutex_spin_exit(&sc->sc_intr_lock); return; } @@ -1266,7 +1269,7 @@ setup_ring_xmit(struct dbri_softc *sc, i void (*callback)(void *), void *callback_args) { volatile uint32_t *cmd; - int x, i; + int i; int td; int td_first, td_last; bus_addr_t dmabuf, dmabase; @@ -1316,7 +1319,7 @@ setup_ring_xmit(struct dbri_softc *sc, i dd->callback = callback; dd->callback_args = callback_args; - x = splsched(); + mutex_spin_enter(&sc->sc_intr_lock); /* the pipe shouldn't be active */ if (pipe_active(sc, pipe)) { @@ -1352,7 +1355,7 @@ setup_ring_xmit(struct dbri_softc *sc, i DPRINTF("%s: starting DMA\n", __func__); } - splx(x); + mutex_spin_exit(&sc->sc_intr_lock); return; } @@ -1362,7 +1365,7 @@ setup_ring_recv(struct dbri_softc *sc, i void (*callback)(void *), void *callback_args) { volatile uint32_t *cmd; - int x, i; + int i; int td_first, td_last; bus_addr_t dmabuf, dmabase; struct dbri_desc *dd = &sc->sc_desc[which]; @@ -1407,7 +1410,7 @@ setup_ring_recv(struct dbri_softc *sc, i dd->callback = callback; dd->callback_args = callback_args; - x = splsched(); + mutex_spin_enter(&sc->sc_intr_lock); /* the pipe shouldn't be active */ if (pipe_active(sc, pipe)) { @@ -1443,7 +1446,7 @@ setup_ring_recv(struct dbri_softc *sc, i DPRINTF("%s: starting DMA\n", __func__); } - splx(x); + mutex_spin_exit(&sc->sc_intr_lock); return; } @@ -2211,10 +2214,9 @@ dbri_resume(device_t self, const pmf_qua aprint_verbose("resume: %d\n", sc->sc_refcount); if (sc->sc_playing) { volatile uint32_t *cmd; - int s; dbri_bring_up(sc); - s = splsched(); + mutex_spin_enter(&sc->sc_intr_lock); cmd = dbri_command_lock(sc); *(cmd++) = DBRI_CMD(DBRI_COMMAND_SDP, 0, sc->sc_pipe[4].sdp | @@ -2223,7 +2225,7 @@ dbri_resume(device_t self, const pmf_qua *(cmd++) = sc->sc_dmabase + dbri_dma_off(xmit, 0); dbri_command_send(sc, cmd); - splx(s); + mutex_spin_exit(&sc->sc_intr_lock); } return true; }
CVS commit: [jmcneill-audiomp3] src/sys/arch/sparc/dev
Module Name:src Committed By: mrg Date: Sun Nov 20 12:04:42 UTC 2011 Modified Files: src/sys/arch/sparc/dev [jmcneill-audiomp3]: audioamd.c Log Message: use the sc_intr_lock when calling the rint/tint functions. To generate a diff of this commit: cvs rdiff -u -r1.26.4.1 -r1.26.4.2 src/sys/arch/sparc/dev/audioamd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/sparc/dev/audioamd.c diff -u src/sys/arch/sparc/dev/audioamd.c:1.26.4.1 src/sys/arch/sparc/dev/audioamd.c:1.26.4.2 --- src/sys/arch/sparc/dev/audioamd.c:1.26.4.1 Sun Nov 20 10:56:18 2011 +++ src/sys/arch/sparc/dev/audioamd.c Sun Nov 20 12:04:42 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: audioamd.c,v 1.26.4.1 2011/11/20 10:56:18 mrg Exp $ */ +/* $NetBSD: audioamd.c,v 1.26.4.2 2011/11/20 12:04:42 mrg Exp $ */ /* NetBSD: am7930_sparc.c,v 1.44 1999/03/14 22:29:00 jonathan Exp */ /* @@ -32,7 +32,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: audioamd.c,v 1.26.4.1 2011/11/20 10:56:18 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: audioamd.c,v 1.26.4.2 2011/11/20 12:04:42 mrg Exp $"); #include "audio.h" #if NAUDIO > 0 @@ -477,16 +477,16 @@ am7930swintr(void *sc0) DPRINTFN(1, ("audiointr: sc=%p\n", sc);); au = &sc->sc_au; - mutex_spin_enter(&sc->sc_lock); + + mutex_spin_enter(&sc->sc_am7930.sc_lock); if (au->au_rdata > au->au_rend && sc->sc_rintr != NULL) { - mutex_spin_exit(&sc->sc_lock); (*sc->sc_rintr)(sc->sc_rarg); - mutex_spin_enter(&sc->sc_lock); } pint = (au->au_pdata > au->au_pend && sc->sc_pintr != NULL); - mutex_spin_exit(&sc->sc_lock); if (pint) (*sc->sc_pintr)(sc->sc_parg); + + mutex_spin_exit(&sc->sc_am7930.sc_lock); }
CVS commit: [jmcneill-audiomp3] src/sys/dev/ic
Module Name:src Committed By: mrg Date: Sun Nov 20 12:04:14 UTC 2011 Modified Files: src/sys/dev/ic [jmcneill-audiomp3]: am7930.c Log Message: IPL_SCHED is enough. To generate a diff of this commit: cvs rdiff -u -r1.50.56.1 -r1.50.56.2 src/sys/dev/ic/am7930.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/ic/am7930.c diff -u src/sys/dev/ic/am7930.c:1.50.56.1 src/sys/dev/ic/am7930.c:1.50.56.2 --- src/sys/dev/ic/am7930.c:1.50.56.1 Sun Nov 20 10:56:18 2011 +++ src/sys/dev/ic/am7930.c Sun Nov 20 12:04:14 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: am7930.c,v 1.50.56.1 2011/11/20 10:56:18 mrg Exp $ */ +/* $NetBSD: am7930.c,v 1.50.56.2 2011/11/20 12:04:14 mrg Exp $ */ /* * Copyright (c) 1995 Rolf Grossmann @@ -36,7 +36,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: am7930.c,v 1.50.56.1 2011/11/20 10:56:18 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: am7930.c,v 1.50.56.2 2011/11/20 12:04:14 mrg Exp $"); #include "audio.h" #if NAUDIO > 0 @@ -191,8 +191,7 @@ am7930_init(struct am7930_softc *sc, int } mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE); - /* We used to take splaudio() in commit_settings */ - mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_VM); + mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED); } int
CVS commit: [jmcneill-audiomp3] src/sys/arch/amiga/dev
Module Name:src Committed By: mrg Date: Sun Nov 20 11:43:55 UTC 2011 Modified Files: src/sys/arch/amiga/dev [jmcneill-audiomp3]: repulse.c Log Message: complete the port to audiomp: don't forget to take sc_intr_lock in the hardware interrupt routines. To generate a diff of this commit: cvs rdiff -u -r1.17.4.1 -r1.17.4.2 src/sys/arch/amiga/dev/repulse.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/amiga/dev/repulse.c diff -u src/sys/arch/amiga/dev/repulse.c:1.17.4.1 src/sys/arch/amiga/dev/repulse.c:1.17.4.2 --- src/sys/arch/amiga/dev/repulse.c:1.17.4.1 Sun Nov 20 10:27:36 2011 +++ src/sys/arch/amiga/dev/repulse.c Sun Nov 20 11:43:55 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: repulse.c,v 1.17.4.1 2011/11/20 10:27:36 mrg Exp $ */ +/* $NetBSD: repulse.c,v 1.17.4.2 2011/11/20 11:43:55 mrg Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: repulse.c,v 1.17.4.1 2011/11/20 10:27:36 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: repulse.c,v 1.17.4.2 2011/11/20 11:43:55 mrg Exp $"); #include #include @@ -965,6 +965,9 @@ rep_intr(void *tag) foundone = 0; sc = tag; + + mutex_spin_enter(&sc->sc_intr_lock); + bp = sc->sc_boardp; status = bp->rhw_status; @@ -984,5 +987,7 @@ rep_intr(void *tag) (*sc->sc_captmore)(sc->sc_captarg); } + mutex_spin_exit(&sc->sc_intr_lock); + return foundone; }
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: mrg Date: Sun Nov 20 11:41:53 UTC 2011 Modified Files: src/sys/dev/ebus [jmcneill-audiomp3]: cs4231_ebus.c src/sys/dev/sbus [jmcneill-audiomp3]: cs4231_sbus.c Log Message: complete the port to audiomp: don't forget to take sc_intr_lock in the hardware interrupt routines. To generate a diff of this commit: cvs rdiff -u -r1.34.4.1 -r1.34.4.2 src/sys/dev/ebus/cs4231_ebus.c cvs rdiff -u -r1.48.4.1 -r1.48.4.2 src/sys/dev/sbus/cs4231_sbus.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/ebus/cs4231_ebus.c diff -u src/sys/dev/ebus/cs4231_ebus.c:1.34.4.1 src/sys/dev/ebus/cs4231_ebus.c:1.34.4.2 --- src/sys/dev/ebus/cs4231_ebus.c:1.34.4.1 Sun Nov 20 09:40:19 2011 +++ src/sys/dev/ebus/cs4231_ebus.c Sun Nov 20 11:41:53 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: cs4231_ebus.c,v 1.34.4.1 2011/11/20 09:40:19 mrg Exp $ */ +/* $NetBSD: cs4231_ebus.c,v 1.34.4.2 2011/11/20 11:41:53 mrg Exp $ */ /* * Copyright (c) 2002 Valeriy E. Ushakov @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: cs4231_ebus.c,v 1.34.4.1 2011/11/20 09:40:19 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cs4231_ebus.c,v 1.34.4.2 2011/11/20 11:41:53 mrg Exp $"); #ifdef _KERNEL_OPT #include "opt_sparc_arch.h" @@ -542,6 +542,8 @@ cs4231_ebus_intr(void *arg) ebsc = arg; sc = &ebsc->sc_cs4231; + mutex_spin_enter(&sc->sc_ad1848.sc_intr_lock); + status = ADREAD(&sc->sc_ad1848, AD1848_STATUS); #ifdef AUDIO_DEBUG @@ -582,6 +584,7 @@ cs4231_ebus_intr(void *arg) ret = 1; } + mutex_spin_exit(&sc->sc_ad1848.sc_intr_lock); return ret; } @@ -592,10 +595,10 @@ cs4231_ebus_pint(void *cookie) struct cs4231_softc *sc = cookie; struct cs_transfer *t = &sc->sc_playback; - KERNEL_LOCK(1, NULL); + mutex_spin_enter(&sc->sc_ad1848.sc_intr_lock); if (t->t_intr != NULL) (*t->t_intr)(t->t_arg); - KERNEL_UNLOCK_ONE(NULL); + mutex_spin_exit(&sc->sc_ad1848.sc_intr_lock); return 0; } @@ -605,9 +608,9 @@ cs4231_ebus_rint(void *cookie) struct cs4231_softc *sc = cookie; struct cs_transfer *t = &sc->sc_capture; - KERNEL_LOCK(1, NULL); + mutex_spin_enter(&sc->sc_ad1848.sc_intr_lock); if (t->t_intr != NULL) (*t->t_intr)(t->t_arg); - KERNEL_UNLOCK_ONE(NULL); + mutex_spin_exit(&sc->sc_ad1848.sc_intr_lock); return 0; } Index: src/sys/dev/sbus/cs4231_sbus.c diff -u src/sys/dev/sbus/cs4231_sbus.c:1.48.4.1 src/sys/dev/sbus/cs4231_sbus.c:1.48.4.2 --- src/sys/dev/sbus/cs4231_sbus.c:1.48.4.1 Sun Nov 20 09:40:19 2011 +++ src/sys/dev/sbus/cs4231_sbus.c Sun Nov 20 11:41:53 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: cs4231_sbus.c,v 1.48.4.1 2011/11/20 09:40:19 mrg Exp $ */ +/* $NetBSD: cs4231_sbus.c,v 1.48.4.2 2011/11/20 11:41:53 mrg Exp $ */ /*- * Copyright (c) 1998, 1999, 2002, 2007 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: cs4231_sbus.c,v 1.48.4.1 2011/11/20 09:40:19 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cs4231_sbus.c,v 1.48.4.2 2011/11/20 11:41:53 mrg Exp $"); #include "audio.h" #if NAUDIO > 0 @@ -516,6 +516,8 @@ cs4231_sbus_intr(void *arg) if ((csr & APC_INTR_MASK) == 0) /* any interrupt pedning? */ return 0; + mutex_spin_enter(&sc->sc_ad1848.sc_intr_lock); + /* write back DMA status to clear interrupt */ bus_space_write_4(sbsc->sc_bt, sbsc->sc_bh, APC_DMA_CSR, csr); ++sc->sc_intrcnt.ev_count; @@ -596,6 +598,8 @@ cs4231_sbus_intr(void *arg) /* evcnt? */ } + mutex_spin_exit(&sc->sc_ad1848.sc_intr_lock); + return 1; } @@ -605,11 +609,11 @@ cs4231_sbus_pint(void *cookie) struct cs4231_softc *sc = cookie; struct cs_transfer *t; - KERNEL_LOCK(1, NULL); + mutex_spin_enter(&sc->sc_ad1848.sc_intr_lock); t = &sc->sc_playback; if (t->t_intr != NULL) (*t->t_intr)(t->t_arg); - KERNEL_UNLOCK_ONE(NULL); + mutex_spin_exit(&sc->sc_ad1848.sc_intr_lock); return 0; } @@ -619,11 +623,11 @@ cs4231_sbus_rint(void *cookie) struct cs4231_softc *sc = cookie; struct cs_transfer *t; - KERNEL_LOCK(1, NULL); + mutex_spin_enter(&sc->sc_ad1848.sc_intr_lock); t = &sc->sc_capture; if (t->t_intr != NULL) (*t->t_intr)(t->t_arg); - KERNEL_UNLOCK_ONE(NULL); + mutex_spin_exit(&sc->sc_ad1848.sc_intr_lock); return 0; }
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: jmcneill Date: Sun Nov 20 11:26:35 UTC 2011 Added Files: src/sys/dev [jmcneill-audiomp3]: TODO.audiomp Log Message: list of audio and midi drivers and their statuses To generate a diff of this commit: cvs rdiff -u -r0 -r1.1.2.1 src/sys/dev/TODO.audiomp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files: Index: src/sys/dev/TODO.audiomp diff -u /dev/null src/sys/dev/TODO.audiomp:1.1.2.1 --- /dev/null Sun Nov 20 11:26:35 2011 +++ src/sys/dev/TODO.audiomp Sun Nov 20 11:26:35 2011 @@ -0,0 +1,58 @@ +driverstatus +=== +arch/amiga/dev/aucc.c +arch/amiga/dev/repulse.c done +arch/amiga/dev/toccata.c +arch/arm/iomd/vidcaudio.c +arcm/arm/xscale/pxa2x0_ac97.c +arch/dreamcast/dev/g2/aica.c +arch/hp700/gsc/harmony.c +arch/hpcmips/vr/vraiu.c +arch/macppc/dev/awacs.c +arch/macppc/dev/snapper.c +arch/prep/isa/paud_isa.c +arch/sgimips/hpc/haltwo.c +arch/sgimips/mace/mavb.c +arch/sparc/dev/audioamd.c done +arch/x68k/dev/vs.c +arch/zaurus/dev/zaudio.c +dev/bluetooth/btsco.c done +dev/ebus/cs4231_ebus.c done +dev/ic/interwave.c done +dev/ic/mpu.c done +dev/ic/opl.c done +dev/ic/tms320av110.c +dev/isa/aria.c done +dev/isa/ess.c done +dev/isa/gus.c done +dev/isa/pas.c done +dev/isa/sb.c done +dev/isa/wss.c done +dev/isa/ym.c done +dev/isapnp/mpu_isapnp.c done +dev/pad/pad.c done +dev/pci/auacer.c done +dev/pci/auich.c done +dev/pci/auixp.c done +dev/pci/autri.c done +dev/pci/auvia.c done +dev/pci/azalia.c done +dev/pci/cmpci.c done +dev/pci/cs4280.c done +dev/pci/cs4281.c done +dev/pci/eap.c done +dev/pci/emuxki.c done +dev/pci/esa.c done +dev/pci/esm.c done +dev/pci/eso.c done +dev/pci/fms.c done +dev/pci/gcscaudio.c done +dev/pci/neo.c done +dev/pci/sv.c done +dev/pci/yds.c done +dev/pci/hdaudio/hdafg.c done +dev/sbus/cs4231_sbus.c done +dev/sbus/dbri.c done +dev/tc/bba.c done +dev/usb/uaudio.c +dev/usb/umidi.c
CVS commit: src/sys/arch/hpcarm/dev
Module Name:src Committed By: kiyohara Date: Sun Nov 20 11:20:32 UTC 2011 Modified Files: src/sys/arch/hpcarm/dev: epsonlcd.c Log Message: Remove a white-space and a Tab. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/hpcarm/dev/epsonlcd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/hpcarm/dev/epsonlcd.c diff -u src/sys/arch/hpcarm/dev/epsonlcd.c:1.1 src/sys/arch/hpcarm/dev/epsonlcd.c:1.2 --- src/sys/arch/hpcarm/dev/epsonlcd.c:1.1 Sat Aug 6 03:53:40 2011 +++ src/sys/arch/hpcarm/dev/epsonlcd.c Sun Nov 20 11:20:32 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: epsonlcd.c,v 1.1 2011/08/06 03:53:40 kiyohara Exp $ */ +/* $NetBSD: epsonlcd.c,v 1.2 2011/11/20 11:20:32 kiyohara Exp $ */ /* * Copyright (c) 2011 KIYOHARA Takashi * All rights reserved. @@ -25,7 +25,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include -__KERNEL_RCSID(0, "$NetBSD: epsonlcd.c,v 1.1 2011/08/06 03:53:40 kiyohara Exp $"); +__KERNEL_RCSID(0, "$NetBSD: epsonlcd.c,v 1.2 2011/11/20 11:20:32 kiyohara Exp $"); #include #include @@ -73,7 +73,7 @@ static void epsonlcd_setup_hpcfbif(struc static void epsonlcd_get_video_chip(struct epsonlcd_softc *, struct video_chip *); -CFATTACH_DECL_NEW(epsonlcd, sizeof(struct epsonlcd_softc), +CFATTACH_DECL_NEW(epsonlcd, sizeof(struct epsonlcd_softc), epsonlcd_match, epsonlcd_attach, NULL, NULL); @@ -142,7 +142,7 @@ epsonlcd_attach(device_t parent, device_ haa.ha_curdspconf = 0; haa.ha_ndspconf = 1; haa.ha_dspconflist = &sc->sc_dsp; - + config_found(self, &haa, hpcfbprint); if (!pmf_device_register(self, NULL, NULL))
CVS commit: [jmcneill-audiomp3] src/sys/dev/pci
Module Name:src Committed By: jmcneill Date: Sun Nov 20 11:10:16 UTC 2011 Modified Files: src/sys/dev/pci [jmcneill-audiomp3]: gcscaudio.c Log Message: need to hold intr_lock when calling audio_pint/audio_rint To generate a diff of this commit: cvs rdiff -u -r1.7.4.2 -r1.7.4.3 src/sys/dev/pci/gcscaudio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/gcscaudio.c diff -u src/sys/dev/pci/gcscaudio.c:1.7.4.2 src/sys/dev/pci/gcscaudio.c:1.7.4.3 --- src/sys/dev/pci/gcscaudio.c:1.7.4.2 Sat Nov 19 23:36:38 2011 +++ src/sys/dev/pci/gcscaudio.c Sun Nov 20 11:10:16 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: gcscaudio.c,v 1.7.4.2 2011/11/19 23:36:38 jmcneill Exp $ */ +/* $NetBSD: gcscaudio.c,v 1.7.4.3 2011/11/20 11:10:16 jmcneill Exp $ */ /*- * Copyright (c) 2008 SHIMIZU Ryo @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: gcscaudio.c,v 1.7.4.2 2011/11/19 23:36:38 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: gcscaudio.c,v 1.7.4.3 2011/11/20 11:10:16 jmcneill Exp $"); #include #include @@ -1210,9 +1210,12 @@ gcscaudio_intr(void *arg) nintr = 0; sc = (struct gcscaudio_softc *)arg; + + mutex_spin_enter(&sc->sc_intr_lock); + intr = bus_space_read_2(sc->sc_iot, sc->sc_ioh, ACC_IRQ_STATUS); if (intr == 0) - return 0; + goto done; /* Front output */ if (intr & ACC_IRQ_STATUS_BM0_IRQ_STS) { @@ -1289,6 +1292,9 @@ gcscaudio_intr(void *arg) aprint_normal_dev(&sc->sc_dev, "Audio Bus Master 5 IRQ Status\n"); #endif +done: + mutex_spin_exit(&sc->sc_intr_lock); + return nintr ? 1 : 0; }
CVS commit: [jmcneill-audiomp3] src/sys/dev/pci/hdaudio
Module Name:src Committed By: jmcneill Date: Sun Nov 20 11:09:26 UTC 2011 Modified Files: src/sys/dev/pci/hdaudio [jmcneill-audiomp3]: hdafg.c Log Message: need to hold intr_lock while calling audio_pint/audio_rint To generate a diff of this commit: cvs rdiff -u -r1.10.4.1 -r1.10.4.2 src/sys/dev/pci/hdaudio/hdafg.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/pci/hdaudio/hdafg.c diff -u src/sys/dev/pci/hdaudio/hdafg.c:1.10.4.1 src/sys/dev/pci/hdaudio/hdafg.c:1.10.4.2 --- src/sys/dev/pci/hdaudio/hdafg.c:1.10.4.1 Sat Nov 19 23:40:07 2011 +++ src/sys/dev/pci/hdaudio/hdafg.c Sun Nov 20 11:09:25 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: hdafg.c,v 1.10.4.1 2011/11/19 23:40:07 jmcneill Exp $ */ +/* $NetBSD: hdafg.c,v 1.10.4.2 2011/11/20 11:09:25 jmcneill Exp $ */ /* * Copyright (c) 2009 Precedence Technologies Ltd @@ -60,7 +60,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: hdafg.c,v 1.10.4.1 2011/11/19 23:40:07 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hdafg.c,v 1.10.4.2 2011/11/20 11:09:25 jmcneill Exp $"); #include #include @@ -3166,15 +3166,16 @@ hdafg_stream_intr(struct hdaudio_stream hda_write1(ad->ad_sc->sc_host, HDAUDIO_SD_STS(st->st_shift), HDAUDIO_STS_DESE | HDAUDIO_STS_FIFOE | HDAUDIO_STS_BCIS); - //if (sts & HDAUDIO_STS_BCIS) { - if (st == ad->ad_playback && ad->ad_playbackintr) { - ad->ad_playbackintr(ad->ad_playbackintrarg); - handled = 1; - } else if (st == ad->ad_capture && ad->ad_captureintr) { - ad->ad_captureintr(ad->ad_captureintrarg); - handled = 1; - } - //} + mutex_spin_enter(&ad->ad_sc->sc_intr_lock); + /* XXX test (sts & HDAUDIO_STS_BCIS)? */ + if (st == ad->ad_playback && ad->ad_playbackintr) { + ad->ad_playbackintr(ad->ad_playbackintrarg); + handled = 1; + } else if (st == ad->ad_capture && ad->ad_captureintr) { + ad->ad_captureintr(ad->ad_captureintrarg); + handled = 1; + } + mutex_spin_exit(&ad->ad_sc->sc_intr_lock); return handled; }
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: mrg Date: Sun Nov 20 10:58:11 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: audio.c Log Message: change the locking protocol for audio_get_props(). make it always assert that the thread lock is held before entry, and arrange to make this always so. To generate a diff of this commit: cvs rdiff -u -r1.253.4.1 -r1.253.4.2 src/sys/dev/audio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/audio.c diff -u src/sys/dev/audio.c:1.253.4.1 src/sys/dev/audio.c:1.253.4.2 --- src/sys/dev/audio.c:1.253.4.1 Sat Nov 19 21:49:34 2011 +++ src/sys/dev/audio.c Sun Nov 20 10:58:10 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: audio.c,v 1.253.4.1 2011/11/19 21:49:34 jmcneill Exp $ */ +/* $NetBSD: audio.c,v 1.253.4.2 2011/11/20 10:58:10 mrg Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -155,7 +155,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.253.4.1 2011/11/19 21:49:34 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.253.4.2 2011/11/20 10:58:10 mrg Exp $"); #include "audio.h" #if NAUDIO > 0 @@ -430,7 +430,9 @@ audioattach(device_t parent, device_t se sc->sc_dev = parent; sc->sc_lastinfovalid = false; + mutex_enter(sc->sc_lock); props = audio_get_props(sc); + mutex_exit(sc->sc_lock); if (props & AUDIO_PROP_FULLDUPLEX) aprint_normal(": full duplex"); @@ -449,6 +451,14 @@ audioattach(device_t parent, device_t se aprint_naive("\n"); aprint_normal("\n"); + /* + * XXX Would like to not hold the sc_lock around this whole block + * escpially for audio_alloc_ring(), except that the latter calls + * ->round_blocksize() which demands the thread lock to be taken. + * + * Revisit. + */ + mutex_enter(sc->sc_lock); if (audio_can_playback(sc)) { error = audio_alloc_ring(sc, &sc->sc_pr, AUMODE_PLAY, AU_RING_SIZE); @@ -472,7 +482,6 @@ audioattach(device_t parent, device_t se sc->sc_lastgain = 128; - mutex_enter(sc->sc_lock); error = audio_set_defaults(sc, 0); mutex_exit(sc->sc_lock); if (error != 0) { @@ -1663,9 +1672,11 @@ audio_open(dev_t dev, struct audio_softc sc->sc_eof = 0; sc->sc_playdrop = 0; + mutex_enter(sc->sc_intr_lock); sc->sc_full_duplex = (flags & (FWRITE|FREAD)) == (FWRITE|FREAD) && (audio_get_props(sc) & AUDIO_PROP_FULLDUPLEX); + mutex_exit(sc->sc_intr_lock); mode = 0; if (flags & FREAD) { @@ -4416,10 +4427,10 @@ audio_get_props(struct audio_softc *sc) const struct audio_hw_if *hw; int props; + KASSERT(mutex_owned(sc->sc_lock)); + hw = sc->hw_if; - mutex_enter(sc->sc_lock); props = hw->get_props(sc->hw_hdl); - mutex_exit(sc->sc_lock); /* * if neither playback nor capture properties are reported,
CVS commit: [jmcneill-audiomp3] src/sys
Module Name:src Committed By: mrg Date: Sun Nov 20 10:56:19 UTC 2011 Modified Files: src/sys/arch/sparc/dev [jmcneill-audiomp3]: audioamd.c src/sys/dev/ic [jmcneill-audiomp3]: am7930.c am7930var.h src/sys/dev/tc [jmcneill-audiomp3]: bba.c Log Message: port the am7930 drivers to audiomp. sparc and pmax GENERIC builds, but i am unable to test these drivers. To generate a diff of this commit: cvs rdiff -u -r1.26 -r1.26.4.1 src/sys/arch/sparc/dev/audioamd.c cvs rdiff -u -r1.50 -r1.50.56.1 src/sys/dev/ic/am7930.c cvs rdiff -u -r1.12 -r1.12.4.1 src/sys/dev/ic/am7930var.h cvs rdiff -u -r1.38 -r1.38.4.1 src/sys/dev/tc/bba.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/sparc/dev/audioamd.c diff -u src/sys/arch/sparc/dev/audioamd.c:1.26 src/sys/arch/sparc/dev/audioamd.c:1.26.4.1 --- src/sys/arch/sparc/dev/audioamd.c:1.26 Sat Jun 4 01:27:57 2011 +++ src/sys/arch/sparc/dev/audioamd.c Sun Nov 20 10:56:18 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: audioamd.c,v 1.26 2011/06/04 01:27:57 tsutsui Exp $ */ +/* $NetBSD: audioamd.c,v 1.26.4.1 2011/11/20 10:56:18 mrg Exp $ */ /* NetBSD: am7930_sparc.c,v 1.44 1999/03/14 22:29:00 jonathan Exp */ /* @@ -32,7 +32,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: audioamd.c,v 1.26 2011/06/04 01:27:57 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: audioamd.c,v 1.26.4.1 2011/11/20 10:56:18 mrg Exp $"); #include "audio.h" #if NAUDIO > 0 @@ -148,6 +148,7 @@ struct am7930_glue audioamd_glue = { int audioamd_start_output(void *, void *, int, void (*)(void *), void *); int audioamd_start_input(void *, void *, int, void (*)(void *), void *); int audioamd_getdev(void *, struct audio_device *); +void audioamd_get_locks(void *opaque, kmutex_t **intr, kmutex_t **thread); const struct audio_hw_if sa_hw_if = { am7930_open, @@ -177,6 +178,8 @@ const struct audio_hw_if sa_hw_if = { 0, 0, 0, + 0, + audioamd_get_locks, }; struct audio_device audioamd_device = { @@ -558,4 +561,14 @@ audioamd_getdev(void *addr, struct audio return 0; } +void +audioamd_get_locks(void *opaque, kmutex_t **intr, kmutex_t **thread) +{ + struct audioamd_softc *asc = opaque; + struct am7930_softc *sc = &asc->sc_am7930; + + *intr = &sc->sc_intr_lock; + *thread = &sc->sc_lock; +} + #endif /* NAUDIO > 0 */ Index: src/sys/dev/ic/am7930.c diff -u src/sys/dev/ic/am7930.c:1.50 src/sys/dev/ic/am7930.c:1.50.56.1 --- src/sys/dev/ic/am7930.c:1.50 Fri Oct 19 11:59:46 2007 +++ src/sys/dev/ic/am7930.c Sun Nov 20 10:56:18 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: am7930.c,v 1.50 2007/10/19 11:59:46 ad Exp $ */ +/* $NetBSD: am7930.c,v 1.50.56.1 2011/11/20 10:56:18 mrg Exp $ */ /* * Copyright (c) 1995 Rolf Grossmann @@ -36,7 +36,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: am7930.c,v 1.50 2007/10/19 11:59:46 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: am7930.c,v 1.50.56.1 2011/11/20 10:56:18 mrg Exp $"); #include "audio.h" #if NAUDIO > 0 @@ -190,6 +190,9 @@ am7930_init(struct am7930_softc *sc, int AM7930_MCR4_INT_ENABLE); } + mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE); + /* We used to take splaudio() in commit_settings */ + mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_VM); } int @@ -288,7 +291,7 @@ am7930_commit_settings(void *addr) struct am7930_softc *sc; uint16_t ger, gr, gx, stgr; uint8_t mmr2, mmr3; - int s, level; + int level; DPRINTF(("sa_commit.\n")); sc = addr; @@ -304,7 +307,7 @@ am7930_commit_settings(void *addr) gr = gx_coeff[level]; } - s = splaudio(); + mutex_enter(&sc->sc_intr_lock); mmr2 = AM7930_IREAD(sc, AM7930_IREG_MAP_MMR2); if (sc->sc_out_port == AUDIOAMD_SPEAKER_VOL) @@ -329,7 +332,7 @@ am7930_commit_settings(void *addr) AM7930_IWRITE16(sc, AM7930_IREG_MAP_GR, gr); AM7930_IWRITE16(sc, AM7930_IREG_MAP_GER, ger); - splx(s); + mutex_exit(&sc->sc_intr_lock); return 0; } Index: src/sys/dev/ic/am7930var.h diff -u src/sys/dev/ic/am7930var.h:1.12 src/sys/dev/ic/am7930var.h:1.12.4.1 --- src/sys/dev/ic/am7930var.h:1.12 Sat Jun 4 01:27:57 2011 +++ src/sys/dev/ic/am7930var.h Sun Nov 20 10:56:18 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: am7930var.h,v 1.12 2011/06/04 01:27:57 tsutsui Exp $ */ +/* $NetBSD: am7930var.h,v 1.12.4.1 2011/11/20 10:56:18 mrg Exp $ */ struct am7930_softc; @@ -24,6 +24,9 @@ struct am7930_softc { uint8_t sc_mic_mute; struct am7930_glue *sc_glue; + + kmutex_t sc_lock; + kmutex_t sc_intr_lock; }; extern int am7930debug; Index: src/sys/dev/tc/bba.c diff -u src/sys/dev/tc/bba.c:1.38 src/sys/dev/tc/bba.c:1.38.4.1 --- src/sys/dev/tc/bba.c:1.38 Sat Jun 4 01:27:57 2011 +++ src/sys/dev/tc/bba.c Sun Nov 20 10:56:19 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: bba.c,v 1.38 2011/06/04 01:27:57 tsutsui Exp $ */ +/* $NetBSD: bba.c,v 1.38.4.1 2011/11/20 10:56:19 mrg Exp $ */ /* * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -29,13 +29,13 @@ /* maxine/alpha baseboard audio (
CVS commit: [yamt-pagecache] src/sys
Module Name:src Committed By: yamt Date: Sun Nov 20 10:52:35 UTC 2011 Modified Files: src/sys/kern [yamt-pagecache]: init_main.c src/sys/uvm [yamt-pagecache]: uvm.h uvm_extern.h uvm_init.c uvm_loan.c uvm_meter.c uvm_page.c uvm_page.h uvm_page_status.c Log Message: - fix page loaning XXX make O->A loaning further - add some statistics To generate a diff of this commit: cvs rdiff -u -r1.436.2.1 -r1.436.2.2 src/sys/kern/init_main.c cvs rdiff -u -r1.62.4.2 -r1.62.4.3 src/sys/uvm/uvm.h cvs rdiff -u -r1.176.2.3 -r1.176.2.4 src/sys/uvm/uvm_extern.h cvs rdiff -u -r1.41 -r1.41.4.1 src/sys/uvm/uvm_init.c cvs rdiff -u -r1.81.2.3 -r1.81.2.4 src/sys/uvm/uvm_loan.c cvs rdiff -u -r1.56.4.4 -r1.56.4.5 src/sys/uvm/uvm_meter.c cvs rdiff -u -r1.178.2.6 -r1.178.2.7 src/sys/uvm/uvm_page.c cvs rdiff -u -r1.73.2.6 -r1.73.2.7 src/sys/uvm/uvm_page.h cvs rdiff -u -r1.1.2.4 -r1.1.2.5 src/sys/uvm/uvm_page_status.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/kern/init_main.c diff -u src/sys/kern/init_main.c:1.436.2.1 src/sys/kern/init_main.c:1.436.2.2 --- src/sys/kern/init_main.c:1.436.2.1 Wed Nov 2 21:53:59 2011 +++ src/sys/kern/init_main.c Sun Nov 20 10:52:33 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: init_main.c,v 1.436.2.1 2011/11/02 21:53:59 yamt Exp $ */ +/* $NetBSD: init_main.c,v 1.436.2.2 2011/11/20 10:52:33 yamt Exp $ */ /*- * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. @@ -97,7 +97,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: init_main.c,v 1.436.2.1 2011/11/02 21:53:59 yamt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: init_main.c,v 1.436.2.2 2011/11/20 10:52:33 yamt Exp $"); #include "opt_ddb.h" #include "opt_ipsec.h" @@ -324,10 +324,6 @@ main(void) percpu_init(); - /* Initialize lock caches. */ - mutex_obj_init(); - rw_obj_init(); - /* Passive serialization. */ pserialize_init(); Index: src/sys/uvm/uvm.h diff -u src/sys/uvm/uvm.h:1.62.4.2 src/sys/uvm/uvm.h:1.62.4.3 --- src/sys/uvm/uvm.h:1.62.4.2 Sat Nov 12 02:54:04 2011 +++ src/sys/uvm/uvm.h Sun Nov 20 10:52:33 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm.h,v 1.62.4.2 2011/11/12 02:54:04 yamt Exp $ */ +/* $NetBSD: uvm.h,v 1.62.4.3 2011/11/20 10:52:33 yamt Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -88,6 +88,19 @@ struct uvm_cpu { * [1] anonymous (PQ_SWAPBACKED) */ int64_t pagestate[2][UVM_PAGE_NUM_STATUS]; + + int64_t loan_obj; /* O->K loan */ + int64_t unloan_obj; /* O->K unloan */ + int64_t loanbreak_obj; /* O->K loan resolved on write */ + int64_t loanfree_obj; /* O->K loan resolved on free */ + + int64_t loan_anon; /* A->K loan */ + int64_t unloan_anon; /* A->K unloan */ + int64_t loanbreak_anon; /* A->K loan resolved on write */ + int64_t loanfree_anon; /* A->K loan resolved on free */ + + int64_t loan_zero; /* O->K loan (zero) */ + int64_t unloan_zero; /* O->K unloan (zero) */ }; /* Index: src/sys/uvm/uvm_extern.h diff -u src/sys/uvm/uvm_extern.h:1.176.2.3 src/sys/uvm/uvm_extern.h:1.176.2.4 --- src/sys/uvm/uvm_extern.h:1.176.2.3 Mon Nov 14 14:24:54 2011 +++ src/sys/uvm/uvm_extern.h Sun Nov 20 10:52:33 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_extern.h,v 1.176.2.3 2011/11/14 14:24:54 yamt Exp $ */ +/* $NetBSD: uvm_extern.h,v 1.176.2.4 2011/11/20 10:52:33 yamt Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -456,12 +456,26 @@ struct uvmexp_sysctl { int64_t colorhit; int64_t colormiss; int64_t ncolors; + int64_t possiblydirtypages; int64_t cleanpages; int64_t dirtypages; int64_t possiblydirtyanonpages; int64_t cleananonpages; int64_t dirtyanonpages; + + int64_t loan_obj; /* O->K loan */ + int64_t unloan_obj; /* O->K unloan */ + int64_t loanbreak_obj; /* O->K loan resolved on write */ + int64_t loanfree_obj; /* O->K loan resolved on free */ + + int64_t loan_anon; /* A->K loan */ + int64_t unloan_anon; /* A->K unloan */ + int64_t loanbreak_anon; /* A->K loan resolved on write */ + int64_t loanfree_anon; /* A->K loan resolved on free */ + + int64_t loan_zero; /* O->K loan (zero) */ + int64_t unloan_zero; /* O->K unloan (zero) */ }; #ifdef _KERNEL Index: src/sys/uvm/uvm_init.c diff -u src/sys/uvm/uvm_init.c:1.41 src/sys/uvm/uvm_init.c:1.41.4.1 --- src/sys/uvm/uvm_init.c:1.41 Sun Apr 24 03:56:50 2011 +++ src/sys/uvm/uvm_init.c Sun Nov 20 10:52:33 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_init.c,v 1.41 2011/04/24 03:56:50 rmind Exp $ */ +/* $NetBSD: uvm_init.c,v 1.41.4.1 2011/11/20 10:52:33 yamt Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -32,7 +32,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: uvm_init.c,v 1.41 2011/04/24 03:56:50 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_init.c,v 1.41.4.1 2011/11/20 10:52:33 yamt Exp $"); #include #include @@ -42,6 +42,8 @@ __KERNEL_RCSID(0, "$NetBSD: uvm_init.c,v #include #include #include +#include +#inc
CVS commit: [yamt-pagecache] src/sys/miscfs/genfs
Module Name:src Committed By: yamt Date: Sun Nov 20 10:49:21 UTC 2011 Modified Files: src/sys/miscfs/genfs [yamt-pagecache]: genfs_io.c genfs_node.h Log Message: - simplify code - comments To generate a diff of this commit: cvs rdiff -u -r1.53.2.2 -r1.53.2.3 src/sys/miscfs/genfs/genfs_io.c cvs rdiff -u -r1.20 -r1.20.8.1 src/sys/miscfs/genfs/genfs_node.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/miscfs/genfs/genfs_io.c diff -u src/sys/miscfs/genfs/genfs_io.c:1.53.2.2 src/sys/miscfs/genfs/genfs_io.c:1.53.2.3 --- src/sys/miscfs/genfs/genfs_io.c:1.53.2.2 Thu Nov 10 14:37:33 2011 +++ src/sys/miscfs/genfs/genfs_io.c Sun Nov 20 10:49:20 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: genfs_io.c,v 1.53.2.2 2011/11/10 14:37:33 yamt Exp $ */ +/* $NetBSD: genfs_io.c,v 1.53.2.3 2011/11/20 10:49:20 yamt Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: genfs_io.c,v 1.53.2.2 2011/11/10 14:37:33 yamt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: genfs_io.c,v 1.53.2.3 2011/11/20 10:49:20 yamt Exp $"); #include #include @@ -87,10 +87,8 @@ genfs_rel_pages(struct vm_page **pgs, in static void genfs_markdirty(struct vnode *vp) { - struct genfs_node * const gp = VTOG(vp); KASSERT(mutex_owned(vp->v_interlock)); - gp->g_dirtygen++; if ((vp->v_iflag & VI_ONWORKLST) == 0) { vn_syncer_add_to_worklist(vp, filedelay); } @@ -861,18 +859,16 @@ genfs_do_putpages(struct vnode *vp, off_ int i, error, npages, nback; int freeflag; struct vm_page *pgs[maxpages], *pg; - struct uvm_page_array ar; + struct uvm_page_array a; bool wasclean, needs_clean, yld; bool async = (origflags & PGO_SYNCIO) == 0; bool pagedaemon = curlwp == uvm.pagedaemon_lwp; struct lwp * const l = curlwp ? curlwp : &lwp0; - struct genfs_node * const gp = VTOG(vp); int flags; - int dirtygen; bool modified; /* if we write out any pages */ bool need_wapbl; bool has_trans; - bool cleanall; /* try to pull off from the syncer's list */ + bool tryclean; /* try to pull off from the syncer's list */ bool onworklst; const bool dirtyonly = (origflags & (PGO_DEACTIVATE|PGO_FREE)) == 0; @@ -894,6 +890,11 @@ retry: flags = origflags; KASSERT((vp->v_iflag & VI_ONWORKLST) != 0 || (vp->v_iflag & VI_WRMAPDIRTY) == 0); + + /* + * shortcut if we have no pages to process. + */ + if (uobj->uo_npages == 0 || (dirtyonly && radix_tree_empty_tagged_tree_p(&uobj->uo_pages, UVM_PAGE_DIRTY_TAG))) { @@ -957,29 +958,18 @@ retry: } /* - * start the loop. when scanning by list, hold the last page - * in the list before we start. pages allocated after we start - * will be added to the end of the list, so we can stop at the - * current last page. + * start the loop. */ - cleanall = (flags & PGO_CLEANIT) != 0 && wasclean && - startoff == 0 && endoff == trunc_page(LLONG_MAX) && - (vp->v_iflag & VI_ONWORKLST) != 0; - dirtygen = gp->g_dirtygen; freeflag = pagedaemon ? PG_PAGEOUT : PG_RELEASED; - - uvm_page_array_init(&ar); + tryclean = true; + uvm_page_array_init(&a); for (;;) { bool protected; - pg = uvm_page_array_peek(&ar); + pg = uvm_page_array_fill_and_peek(&a, uobj, off, dirtyonly); if (pg == NULL) { - if (uvm_page_array_fill(&ar, uobj, off, dirtyonly)) { -break; - } - pg = uvm_page_array_peek(&ar); - KASSERT(pg != NULL); + break; } /* @@ -987,21 +977,20 @@ retry: */ KASSERT(pg->uobject == uobj); - KASSERT((pg->flags & PG_MARKER) == 0); KASSERT((pg->flags & (PG_RELEASED|PG_PAGEOUT)) == 0 || - (pg->flags & (PG_BUSY|PG_MARKER)) != 0); + (pg->flags & (PG_BUSY)) != 0); KASSERT(pg->offset >= startoff); KASSERT(pg->offset >= off); KASSERT(!dirtyonly || uvm_pagegetdirty(pg) != UVM_PAGE_STATUS_CLEAN); - off = pg->offset + PAGE_SIZE; if (pg->offset >= endoff) { break; } if (pg->flags & (PG_RELEASED|PG_PAGEOUT)) { KASSERT((pg->flags & PG_BUSY) != 0); wasclean = false; - uvm_page_array_advance(&ar); + off = pg->offset + PAGE_SIZE; + uvm_page_array_advance(&a); continue; } @@ -1029,23 +1018,25 @@ retry: break; } off = pg->offset; /* visit this page again */ - if (yld) { -mutex_exit(slock); -preempt(); - } else { + if ((pg->flags & PG_BUSY) != 0) { pg->flags |= PG_WANTED; UVM_UNLOCK_AND_WAIT(pg, slock, 0, "genput", 0); + } else { +KASSERT(yld); +mutex_exit(slock); +preempt(); } /* * as we dropped the object lock, our cached pages can * be stale. */ - uvm_page_array_clear(&ar); + uvm_page_array_clear(&a); mutex_enter(slock); continue; } - uvm_page_array_advance(&ar); + off = pg->offset + PAGE_SIZE; + uvm_page_array_advance(&a); /* * if we're freeing, remove all mappings of the page now. @@ -1063,8 +1054,7 @@ retry: * from the
CVS commit: [jmcneill-audiomp3] src/sys/dev/sbus
Module Name:src Committed By: mrg Date: Sun Nov 20 10:48:55 UTC 2011 Modified Files: src/sys/dev/sbus [jmcneill-audiomp3]: dbri.c dbrivar.h Log Message: port to audiomp: update allocm/freem, and add get_locks() support. bots on my ss20, but i haven't really tested it yet. To generate a diff of this commit: cvs rdiff -u -r1.33 -r1.33.6.1 src/sys/dev/sbus/dbri.c cvs rdiff -u -r1.12 -r1.12.10.1 src/sys/dev/sbus/dbrivar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/sbus/dbri.c diff -u src/sys/dev/sbus/dbri.c:1.33 src/sys/dev/sbus/dbri.c:1.33.6.1 --- src/sys/dev/sbus/dbri.c:1.33 Wed Mar 9 05:40:11 2011 +++ src/sys/dev/sbus/dbri.c Sun Nov 20 10:48:54 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: dbri.c,v 1.33 2011/03/09 05:40:11 macallan Exp $ */ +/* $NetBSD: dbri.c,v 1.33.6.1 2011/11/20 10:48:54 mrg Exp $ */ /* * Copyright (C) 1997 Rudolf Koenig (rfkoe...@immd4.informatik.uni-erlangen.de) @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: dbri.c,v 1.33 2011/03/09 05:40:11 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dbri.c,v 1.33.6.1 2011/11/20 10:48:54 mrg Exp $"); #include "audio.h" #if NAUDIO > 0 @@ -43,11 +43,11 @@ __KERNEL_RCSID(0, "$NetBSD: dbri.c,v 1.3 #include #include #include -#include #include #include #include #include +#include #include #include @@ -156,9 +156,10 @@ static int dbri_trigger_output(void *, v void (*)(void *), void *, const struct audio_params *); static int dbri_trigger_input(void *, void *, void *, int, void (*)(void *), void *, const struct audio_params *); +static void dbri_get_locks(void *, kmutex_t **, kmutex_t **); -static void *dbri_malloc(void *, int, size_t, struct malloc_type *, int); -static void dbri_free(void *, void *, struct malloc_type *); +static void *dbri_malloc(void *, int, size_t); +static void dbri_free(void *, void *, size_t); static paddr_t dbri_mappage(void *, void *, off_t, int); static void dbri_set_power(struct dbri_softc *, int); static void dbri_bring_up(struct dbri_softc *); @@ -175,32 +176,25 @@ struct audio_device dbri_device = { }; struct audio_hw_if dbri_hw_if = { - dbri_open, - dbri_close, - NULL, /* drain */ - dbri_query_encoding, - dbri_set_params, - dbri_round_blocksize, - NULL, /* commit_settings */ - NULL, /* init_output */ - NULL, /* init_input */ - NULL, /* start_output */ - NULL, /* start_input */ - dbri_halt_output, - dbri_halt_input, - NULL, /* speaker_ctl */ - dbri_getdev, - NULL, /* setfd */ - dbri_set_port, - dbri_get_port, - dbri_query_devinfo, - dbri_malloc, - dbri_free, - dbri_round_buffersize, - dbri_mappage, - dbri_get_props, - dbri_trigger_output, - dbri_trigger_input + .open = dbri_open, + .close = dbri_close, + .query_encoding = dbri_query_encoding, + .set_params = dbri_set_params, + .round_blocksize = dbri_round_blocksize, + .halt_output = dbri_halt_output, + .halt_input = dbri_halt_input, + .getdev = dbri_getdev, + .set_port = dbri_set_port, + .get_port = dbri_get_port, + .query_devinfo = dbri_query_devinfo, + .allocm = dbri_malloc, + .freem = dbri_free, + .round_buffersize = dbri_round_buffersize, + .mappage = dbri_mappage, + .get_props = dbri_get_props, + .trigger_output = dbri_trigger_output, + .trigger_input = dbri_trigger_input, + .get_locks = dbri_get_locks, }; CFATTACH_DECL_NEW(dbri, sizeof(struct dbri_softc), @@ -370,6 +364,9 @@ dbri_attach_sbus(device_t parent, device sc->sc_dmabase = sc->sc_dmamap->dm_segs[0].ds_addr; sc->sc_bufsiz = size; + mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE); + mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED); + bus_intr_establish(sa->sa_bustag, sa->sa_pri, IPL_SCHED, dbri_intr, sc); @@ -2049,6 +2046,14 @@ dbri_trigger_input(void *hdl, void *star return 0; } +static void +dbri_get_locks(void *opaque, kmutex_t **intr, kmutex_t **thread) +{ + struct dbri_softc *sc = opaque; + + *intr = &sc->sc_intr_lock; + *thread = &sc->sc_lock; +} static uint32_t reverse_bytes(uint32_t b, int len) @@ -2075,7 +2080,7 @@ reverse_bytes(uint32_t b, int len) } static void * -dbri_malloc(void *v, int dir, size_t s, struct malloc_type *mt, int flags) +dbri_malloc(void *v, int dir, size_t s) { struct dbri_softc *sc = v; struct dbri_desc *dd = &sc->sc_desc[sc->sc_desc_used]; @@ -2116,7 +2121,7 @@ dbri_malloc(void *v, int dir, size_t s, } static void -dbri_free(void *v, void *p, struct malloc_type *mt) +dbri_free(void *v, void *p, size_t size) { struct dbri_softc *sc = v; struct dbri_desc *dd; Index: src/sys/dev/sbus/dbrivar.h diff -u src/sys/dev/sbus/dbrivar.h:1.12 src/sys/dev/sbus/dbrivar.h:1.12.10.1 --- src/sys/dev/sbus/dbrivar.h:1.12 Tue Jan 11 00:49:50 2011 +++ src/sys/dev/sbus/dbrivar.h Sun Nov 20 10:48:54 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: dbrivar.h,v 1.12 2011/01/11 00:49:50 macallan Exp $ */ +/* $NetBSD: dbrivar.h,v 1.12.10.1 2011/11/20 10
CVS commit: src/sys/kern
Module Name:src Committed By: hannken Date: Sun Nov 20 10:32:33 UTC 2011 Modified Files: src/sys/kern: kern_verifiedexec.c Log Message: Fix locking against self in veriexec_fp_calc(). To generate a diff of this commit: cvs rdiff -u -r1.127 -r1.128 src/sys/kern/kern_verifiedexec.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/kern/kern_verifiedexec.c diff -u src/sys/kern/kern_verifiedexec.c:1.127 src/sys/kern/kern_verifiedexec.c:1.128 --- src/sys/kern/kern_verifiedexec.c:1.127 Fri Oct 14 09:23:31 2011 +++ src/sys/kern/kern_verifiedexec.c Sun Nov 20 10:32:33 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_verifiedexec.c,v 1.127 2011/10/14 09:23:31 hannken Exp $ */ +/* $NetBSD: kern_verifiedexec.c,v 1.128 2011/11/20 10:32:33 hannken Exp $ */ /*- * Copyright (c) 2005, 2006 Elad Efrat @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kern_verifiedexec.c,v 1.127 2011/10/14 09:23:31 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_verifiedexec.c,v 1.128 2011/11/20 10:32:33 hannken Exp $"); #include "opt_veriexec.h" @@ -411,9 +411,11 @@ veriexec_fp_calc(struct lwp *l, struct v size_t resid, npages; int error, do_perpage, pagen; - vn_lock(vp, LK_SHARED | LK_RETRY); + if (lock_state == VERIEXEC_UNLOCKED) + vn_lock(vp, LK_SHARED | LK_RETRY); error = VOP_GETATTR(vp, &va, l->l_cred); - VOP_UNLOCK(vp); + if (lock_state == VERIEXEC_UNLOCKED) + VOP_UNLOCK(vp); if (error) return (error);
CVS commit: [jmcneill-audiomp3] src/sys/arch/amiga/dev
Module Name:src Committed By: mrg Date: Sun Nov 20 10:27:36 UTC 2011 Modified Files: src/sys/arch/amiga/dev [jmcneill-audiomp3]: repulse.c Log Message: port this to audiomp branch. no allocm/freem here, no detach, so just add/initialise sc_lock and sc_intr_lock, and add get_locks() support. XXX: untested, but amiga kernels compile now. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.17.4.1 src/sys/arch/amiga/dev/repulse.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/amiga/dev/repulse.c diff -u src/sys/arch/amiga/dev/repulse.c:1.17 src/sys/arch/amiga/dev/repulse.c:1.17.4.1 --- src/sys/arch/amiga/dev/repulse.c:1.17 Tue Jul 19 15:55:27 2011 +++ src/sys/arch/amiga/dev/repulse.c Sun Nov 20 10:27:36 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: repulse.c,v 1.17 2011/07/19 15:55:27 dyoung Exp $ */ +/* $NetBSD: repulse.c,v 1.17.4.1 2011/11/20 10:27:36 mrg Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: repulse.c,v 1.17 2011/07/19 15:55:27 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: repulse.c,v 1.17.4.1 2011/11/20 10:27:36 mrg Exp $"); #include #include @@ -85,6 +85,7 @@ int rep_set_port(void *, mixer_ctrl_t *) int rep_get_port(void *, mixer_ctrl_t *); int rep_query_devinfo(void *, mixer_devinfo_t *); size_t rep_round_buffersize(void *, int, size_t); +void rep_get_locks(void *, kmutex_t **, kmutex_t **); int rep_start_input(void *, void *, int, void (*)(void *), void *); int rep_start_output(void *, void *, int, void (*)(void *), void *); @@ -122,6 +123,8 @@ const struct audio_hw_if rep_hw_if = { /* trigger_output */ 0, /* trigger_input */ 0, /* dev_ioctl */ 0, + /* powerstate */ 0, + rep_get_locks, }; /* hardware registers */ @@ -219,6 +222,8 @@ struct repulse_softc { int sc_playscale; unsigned sc_playflags; + kmutex_t sc_lock; + kmutex_t sc_intr_lock; }; int repulse_match (struct device *, struct cfdata *, void *); @@ -310,7 +315,10 @@ repulse_attach(struct device *parent, st sc->sc_achost.attach = repac_attach; sc->sc_achost.flags = 0; - if (ac97_attach(&sc->sc_achost, self)) { + mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE); + mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED); + + if (ac97_attach(&sc->sc_achost, self, &sc->sc_lock)) { printf("%s: error attaching codec\n", self->dv_xname); return; } @@ -579,6 +587,15 @@ rep_round_buffersize(void *arg, int dire return size; } +void +rep_get_locks(void *opaque, kmutex_t **intr, kmutex_t **thread) +{ + struct repulse_softc *sc = opaque; + + *intr = &sc->sc_intr_lock; + *thread = &sc->sc_lock; +} + int rep_set_params(void *addr, int setmode, int usemode,
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: mrg Date: Sun Nov 20 09:40:20 UTC 2011 Modified Files: src/sys/dev/ebus [jmcneill-audiomp3]: cs4231_ebus.c src/sys/dev/ic [jmcneill-audiomp3]: cs4231.c cs4231var.h src/sys/dev/sbus [jmcneill-audiomp3]: cs4231_sbus.c Log Message: make audiocs(4) compile. i don't have anything handy to actually test this easily, but this was just updating the alloc/free to kmem and hooking into ad1848_get_locks(). To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.34.4.1 src/sys/dev/ebus/cs4231_ebus.c cvs rdiff -u -r1.26 -r1.26.4.1 src/sys/dev/ic/cs4231.c cvs rdiff -u -r1.9 -r1.9.4.1 src/sys/dev/ic/cs4231var.h cvs rdiff -u -r1.48 -r1.48.4.1 src/sys/dev/sbus/cs4231_sbus.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/ebus/cs4231_ebus.c diff -u src/sys/dev/ebus/cs4231_ebus.c:1.34 src/sys/dev/ebus/cs4231_ebus.c:1.34.4.1 --- src/sys/dev/ebus/cs4231_ebus.c:1.34 Thu Jun 2 00:23:28 2011 +++ src/sys/dev/ebus/cs4231_ebus.c Sun Nov 20 09:40:19 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: cs4231_ebus.c,v 1.34 2011/06/02 00:23:28 christos Exp $ */ +/* $NetBSD: cs4231_ebus.c,v 1.34.4.1 2011/11/20 09:40:19 mrg Exp $ */ /* * Copyright (c) 2002 Valeriy E. Ushakov @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: cs4231_ebus.c,v 1.34 2011/06/02 00:23:28 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cs4231_ebus.c,v 1.34.4.1 2011/11/20 09:40:19 mrg Exp $"); #ifdef _KERNEL_OPT #include "opt_sparc_arch.h" @@ -38,8 +38,9 @@ __KERNEL_RCSID(0, "$NetBSD: cs4231_ebus. #include #include #include -#include #include +#include +#include #include @@ -123,6 +124,7 @@ const struct audio_hw_if audiocs_ebus_hw cs4231_ebus_trigger_input, NULL, /* dev_ioctl */ NULL, /* powerstate */ + ad1848_get_locks, }; #ifdef AUDIO_DEBUG Index: src/sys/dev/ic/cs4231.c diff -u src/sys/dev/ic/cs4231.c:1.26 src/sys/dev/ic/cs4231.c:1.26.4.1 --- src/sys/dev/ic/cs4231.c:1.26 Thu Jun 2 00:23:28 2011 +++ src/sys/dev/ic/cs4231.c Sun Nov 20 09:40:19 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: cs4231.c,v 1.26 2011/06/02 00:23:28 christos Exp $ */ +/* $NetBSD: cs4231.c,v 1.26.4.1 2011/11/20 09:40:19 mrg Exp $ */ /*- * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: cs4231.c,v 1.26 2011/06/02 00:23:28 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cs4231.c,v 1.26.4.1 2011/11/20 09:40:19 mrg Exp $"); #include "audio.h" #if NAUDIO > 0 @@ -39,8 +39,9 @@ __KERNEL_RCSID(0, "$NetBSD: cs4231.c,v 1 #include #include #include -#include #include +#include +#include #include #include @@ -175,8 +176,7 @@ cs4231_common_attach(struct cs4231_softc } void * -cs4231_malloc(void *addr, int direction, size_t size, -struct malloc_type *pool, int flags) +cs4231_malloc(void *addr, int direction, size_t size) { struct cs4231_softc *sc; bus_dma_tag_t dmatag; @@ -184,7 +184,7 @@ cs4231_malloc(void *addr, int direction, sc = addr; dmatag = sc->sc_dmatag; - p = malloc(sizeof(*p), pool, flags); + p = kmem_alloc(sizeof(*p), KM_SLEEP); if (p == NULL) return NULL; @@ -221,12 +221,12 @@ fail3: fail2: bus_dmamap_destroy(dmatag, p->dmamap); fail1: - free(p, pool); + kmem_free(p, size); return NULL; } void -cs4231_free(void *addr, void *ptr, struct malloc_type *pool) +cs4231_free(void *addr, void *ptr, size_t size) { struct cs4231_softc *sc; bus_dma_tag_t dmatag; @@ -242,7 +242,7 @@ cs4231_free(void *addr, void *ptr, struc bus_dmamem_free(dmatag, p->segs, p->nsegs); bus_dmamap_destroy(dmatag, p->dmamap); *pp = p->next; - free(p, pool); + kmem_free(p, size); return; } printf("cs4231_free: rogue pointer\n"); Index: src/sys/dev/ic/cs4231var.h diff -u src/sys/dev/ic/cs4231var.h:1.9 src/sys/dev/ic/cs4231var.h:1.9.4.1 --- src/sys/dev/ic/cs4231var.h:1.9 Thu Jun 2 00:23:28 2011 +++ src/sys/dev/ic/cs4231var.h Sun Nov 20 09:40:19 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: cs4231var.h,v 1.9 2011/06/02 00:23:28 christos Exp $ */ +/* $NetBSD: cs4231var.h,v 1.9.4.1 2011/11/20 09:40:19 mrg Exp $ */ /*- * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. @@ -108,7 +108,7 @@ int cs4231_get_port(void *, mixer_ctrl_t int cs4231_query_devinfo(void *, mixer_devinfo_t *); int cs4231_get_props(void *); -void *cs4231_malloc(void *, int, size_t, struct malloc_type *, int); -void cs4231_free(void *, void *, struct malloc_type *); +void *cs4231_malloc(void *, int, size_t); +void cs4231_free(void *, void *, size_t); #endif /* _DEV_IC_CS4231VAR_H_ */ Index: src/sys/dev/sbus/cs4231_sbus.c diff -u src/sys/dev/sbus/cs4231_sbus.c:1.48 src/sys/dev/sbus/cs4231_sbus.c:1.48.4.1 --- src/sys/dev/sbus/cs4231_sbus.c:1.48 Thu Jun 2 00:23:28 2011 +++ src/sys/dev/sbus/cs4231_sbus.c Sun Nov 20 09:40:19 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: cs4231_sbus.c,v 1.48 2011/06/02 00:23:28 christos
CVS commit: [jmcneill-audiomp3] src/sys/dev
Module Name:src Committed By: mrg Date: Sun Nov 20 09:37:04 UTC 2011 Modified Files: src/sys/dev [jmcneill-audiomp3]: audio_if.h Log Message: don't need to forward declare 'struct malloc_type' anymore. To generate a diff of this commit: cvs rdiff -u -r1.66.14.1 -r1.66.14.2 src/sys/dev/audio_if.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/audio_if.h diff -u src/sys/dev/audio_if.h:1.66.14.1 src/sys/dev/audio_if.h:1.66.14.2 --- src/sys/dev/audio_if.h:1.66.14.1 Sat Nov 19 21:49:34 2011 +++ src/sys/dev/audio_if.h Sun Nov 20 09:37:04 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: audio_if.h,v 1.66.14.1 2011/11/19 21:49:34 jmcneill Exp $ */ +/* $NetBSD: audio_if.h,v 1.66.14.2 2011/11/20 09:37:04 mrg Exp $ */ /* * Copyright (c) 1994 Havard Eidnes. @@ -172,7 +172,6 @@ typedef struct stream_filter_list { } filters[AUDIO_MAX_FILTERS]; } stream_filter_list_t; -struct malloc_type; struct audio_hw_if { int (*open)(void *, int); /* open hardware */ void (*close)(void *); /* close hardware */
CVS commit: [jmcneill-audiomp3] src/sys/dev/isa
Module Name:src Committed By: mrg Date: Sun Nov 20 08:40:52 UTC 2011 Modified Files: src/sys/dev/isa [jmcneill-audiomp3]: ess.c Log Message: make sure to return from the end of essattach() before destroying the callouts and mutexes. with an uncommited audio.c change, i can now play audio on my shark with the branch. To generate a diff of this commit: cvs rdiff -u -r1.78.10.1 -r1.78.10.2 src/sys/dev/isa/ess.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/isa/ess.c diff -u src/sys/dev/isa/ess.c:1.78.10.1 src/sys/dev/isa/ess.c:1.78.10.2 --- src/sys/dev/isa/ess.c:1.78.10.1 Sat Nov 19 21:49:37 2011 +++ src/sys/dev/isa/ess.c Sun Nov 20 08:40:52 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: ess.c,v 1.78.10.1 2011/11/19 21:49:37 jmcneill Exp $ */ +/* $NetBSD: ess.c,v 1.78.10.2 2011/11/20 08:40:52 mrg Exp $ */ /* * Copyright 1997 @@ -66,7 +66,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ess.c,v 1.78.10.1 2011/11/19 21:49:37 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ess.c,v 1.78.10.2 2011/11/20 08:40:52 mrg Exp $"); #include #include @@ -1076,6 +1076,8 @@ essattach(struct ess_softc *sc, int enab ess_printsc(sc); #endif + return; + fail: callout_destroy(&sc->sc_poll1_ch); callout_destroy(&sc->sc_poll2_ch);
CVS commit: [jmcneill-audiomp3] src/sys/dev/ic
Module Name:src Committed By: mrg Date: Sun Nov 20 08:39:59 UTC 2011 Modified Files: src/sys/dev/ic [jmcneill-audiomp3]: opl.c Log Message: XXX: don't KASSERT() if sc->lock is NULL, this is going to happen XXX: during autoconfig match() where we've faked up a sc anyway. To generate a diff of this commit: cvs rdiff -u -r1.37.14.1 -r1.37.14.2 src/sys/dev/ic/opl.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/ic/opl.c diff -u src/sys/dev/ic/opl.c:1.37.14.1 src/sys/dev/ic/opl.c:1.37.14.2 --- src/sys/dev/ic/opl.c:1.37.14.1 Sat Nov 19 21:49:37 2011 +++ src/sys/dev/ic/opl.c Sun Nov 20 08:39:59 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: opl.c,v 1.37.14.1 2011/11/19 21:49:37 jmcneill Exp $ */ +/* $NetBSD: opl.c,v 1.37.14.2 2011/11/20 08:39:59 mrg Exp $ */ /* * Copyright (c) 1998, 2008 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: opl.c,v 1.37.14.1 2011/11/19 21:49:37 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: opl.c,v 1.37.14.2 2011/11/20 08:39:59 mrg Exp $"); #include #include @@ -206,7 +206,7 @@ opl_command(struct opl_softc *sc, int of DPRINTFN(4, ("opl_command: sc=%p, offs=%d addr=0x%02x data=0x%02x\n", sc, offs, addr, data)); - KASSERT(mutex_owned(sc->lock)); + KASSERT(!sc->lock || mutex_owned(sc->lock)); offs += sc->offs; bus_space_write_1(sc->iot, sc->ioh, OPL_ADDR+offs, addr);