From owner-p4-projects@FreeBSD.ORG Mon Aug 24 12:10:25 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CB365106568F; Mon, 24 Aug 2009 12:10:25 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 76C33106568B for ; Mon, 24 Aug 2009 12:10:25 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 647CC8FC12 for ; Mon, 24 Aug 2009 12:10:25 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7OCAPjY051789 for ; Mon, 24 Aug 2009 12:10:25 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7OCAPbv051787 for perforce@freebsd.org; Mon, 24 Aug 2009 12:10:25 GMT (envelope-from zec@fer.hr) Date: Mon, 24 Aug 2009 12:10:25 GMT Message-Id: <200908241210.n7OCAPbv051787@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167726 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Aug 2009 12:10:26 -0000 http://perforce.freebsd.org/chv.cgi?CH=167726 Change 167726 by zec@zec_tpx32 on 2009/08/24 12:10:09 IFC @ 167724 Affected files ... .. //depot/projects/vimage/src/share/man/man9/Makefile#13 integrate .. //depot/projects/vimage/src/share/man/man9/kproc.9#2 integrate .. //depot/projects/vimage/src/share/man/man9/kthread.9#3 integrate .. //depot/projects/vimage/src/sys/arm/arm/undefined.c#4 integrate .. //depot/projects/vimage/src/sys/arm/xscale/ixp425/ixdp425_pci.c#3 integrate .. //depot/projects/vimage/src/sys/cddl/compat/opensolaris/sys/mutex.h#4 integrate .. //depot/projects/vimage/src/sys/cddl/compat/opensolaris/sys/proc.h#3 integrate .. //depot/projects/vimage/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#4 integrate .. //depot/projects/vimage/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#8 integrate .. //depot/projects/vimage/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c#3 integrate .. //depot/projects/vimage/src/sys/cddl/contrib/opensolaris/uts/common/sys/callb.h#3 integrate .. //depot/projects/vimage/src/sys/compat/linux/linux_ioctl.c#27 integrate .. //depot/projects/vimage/src/sys/conf/files#77 integrate .. //depot/projects/vimage/src/sys/conf/newvers.sh#11 integrate .. //depot/projects/vimage/src/sys/conf/options#57 integrate .. //depot/projects/vimage/src/sys/contrib/altq/altq/altq_subr.c#24 integrate .. //depot/projects/vimage/src/sys/dev/asmc/asmc.c#7 integrate .. //depot/projects/vimage/src/sys/dev/drm/drmP.h#12 integrate .. //depot/projects/vimage/src/sys/dev/drm/drm_bufs.c#10 integrate .. //depot/projects/vimage/src/sys/dev/drm/drm_drv.c#18 integrate .. //depot/projects/vimage/src/sys/dev/drm/drm_fops.c#7 integrate .. //depot/projects/vimage/src/sys/dev/drm/drm_sysctl.c#7 integrate .. //depot/projects/vimage/src/sys/dev/drm/r600_blit.c#1 branch .. //depot/projects/vimage/src/sys/dev/drm/r600_cp.c#6 integrate .. //depot/projects/vimage/src/sys/dev/drm/radeon_cp.c#12 integrate .. //depot/projects/vimage/src/sys/dev/drm/radeon_cs.c#1 branch .. //depot/projects/vimage/src/sys/dev/drm/radeon_drm.h#4 integrate .. //depot/projects/vimage/src/sys/dev/drm/radeon_drv.h#9 integrate .. //depot/projects/vimage/src/sys/dev/drm/radeon_state.c#4 integrate .. //depot/projects/vimage/src/sys/dev/pty/pty.c#1 branch .. //depot/projects/vimage/src/sys/dev/snp/snp.c#14 integrate .. //depot/projects/vimage/src/sys/dev/sound/usb/uaudio.c#19 integrate .. //depot/projects/vimage/src/sys/dev/usb/controller/usb_controller.c#13 integrate .. //depot/projects/vimage/src/sys/dev/usb/input/ukbd.c#12 integrate .. //depot/projects/vimage/src/sys/dev/usb/misc/ufm.c#7 integrate .. //depot/projects/vimage/src/sys/dev/usb/net/if_aue.c#11 integrate .. //depot/projects/vimage/src/sys/dev/usb/net/if_cdce.c#12 integrate .. //depot/projects/vimage/src/sys/dev/usb/serial/uipaq.c#8 integrate .. //depot/projects/vimage/src/sys/dev/usb/serial/uvisor.c#9 integrate .. //depot/projects/vimage/src/sys/dev/usb/storage/umass.c#11 integrate .. //depot/projects/vimage/src/sys/dev/usb/storage/urio.c#9 integrate .. //depot/projects/vimage/src/sys/dev/usb/usb.h#12 integrate .. //depot/projects/vimage/src/sys/dev/usb/usb_busdma.c#9 integrate .. //depot/projects/vimage/src/sys/dev/usb/usb_dev.c#15 integrate .. //depot/projects/vimage/src/sys/dev/usb/usb_device.c#17 integrate .. //depot/projects/vimage/src/sys/dev/usb/usb_device.h#14 integrate .. //depot/projects/vimage/src/sys/dev/usb/usb_handle_request.c#13 integrate .. //depot/projects/vimage/src/sys/dev/usb/usb_hub.c#17 integrate .. //depot/projects/vimage/src/sys/dev/usb/usb_process.c#8 integrate .. //depot/projects/vimage/src/sys/dev/usb/usb_process.h#7 integrate .. //depot/projects/vimage/src/sys/dev/usb/usb_transfer.c#15 integrate .. //depot/projects/vimage/src/sys/dev/usb/usbdevs#54 integrate .. //depot/projects/vimage/src/sys/dev/usb/wlan/if_upgt.c#8 integrate .. //depot/projects/vimage/src/sys/dev/xen/console/console.c#11 integrate .. //depot/projects/vimage/src/sys/fs/nfsclient/nfs_clvnops.c#9 integrate .. //depot/projects/vimage/src/sys/kern/kern_cons.c#3 integrate .. //depot/projects/vimage/src/sys/kern/kern_jail.c#35 integrate .. //depot/projects/vimage/src/sys/kern/kern_subr.c#8 integrate .. //depot/projects/vimage/src/sys/kern/kern_uuid.c#20 integrate .. //depot/projects/vimage/src/sys/kern/sys_generic.c#16 integrate .. //depot/projects/vimage/src/sys/kern/tty_pts.c#19 integrate .. //depot/projects/vimage/src/sys/kern/tty_pty.c#11 delete .. //depot/projects/vimage/src/sys/kern/tty_ttydisc.c#9 integrate .. //depot/projects/vimage/src/sys/kern/uipc_domain.c#25 integrate .. //depot/projects/vimage/src/sys/kern/uipc_socket.c#42 integrate .. //depot/projects/vimage/src/sys/modules/drm/radeon/Makefile#3 integrate .. //depot/projects/vimage/src/sys/modules/pty/Makefile#1 branch .. //depot/projects/vimage/src/sys/net/bridgestp.c#25 integrate .. //depot/projects/vimage/src/sys/net/if.c#92 integrate .. //depot/projects/vimage/src/sys/net/if_ef.c#18 integrate .. //depot/projects/vimage/src/sys/net/if_llatbl.c#8 integrate .. //depot/projects/vimage/src/sys/net/if_var.h#46 integrate .. //depot/projects/vimage/src/sys/net/if_vlan.c#23 integrate .. //depot/projects/vimage/src/sys/netgraph/ng_gif.c#17 integrate .. //depot/projects/vimage/src/sys/netinet/in.c#41 integrate .. //depot/projects/vimage/src/sys/netinet/ip_divert.c#39 integrate .. //depot/projects/vimage/src/sys/netinet/ip_divert.h#2 integrate .. //depot/projects/vimage/src/sys/netinet/ipfw/ip_fw2.c#10 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_indata.c#37 integrate .. //depot/projects/vimage/src/sys/netinet6/icmp6.c#50 integrate .. //depot/projects/vimage/src/sys/netinet6/in6.c#43 integrate .. //depot/projects/vimage/src/sys/netinet6/in6_ifattach.c#46 integrate .. //depot/projects/vimage/src/sys/netinet6/nd6.c#58 integrate .. //depot/projects/vimage/src/sys/netipsec/xform_ipip.c#35 integrate .. //depot/projects/vimage/src/sys/nfsclient/bootp_subr.c#25 integrate .. //depot/projects/vimage/src/sys/nfsclient/nfs_vnops.c#41 integrate .. //depot/projects/vimage/src/sys/rpc/clnt_dg.c#8 integrate .. //depot/projects/vimage/src/sys/rpc/clnt_rc.c#9 integrate .. //depot/projects/vimage/src/sys/rpc/clnt_vc.c#8 integrate .. //depot/projects/vimage/src/sys/rpc/rpc_generic.c#6 integrate .. //depot/projects/vimage/src/sys/rpc/svc_dg.c#8 integrate .. //depot/projects/vimage/src/sys/rpc/svc_generic.c#7 integrate .. //depot/projects/vimage/src/sys/rpc/svc_vc.c#8 integrate .. //depot/projects/vimage/src/sys/sys/cons.h#4 integrate .. //depot/projects/vimage/src/sys/sys/param.h#61 integrate .. //depot/projects/vimage/src/sys/sys/ttydisc.h#5 integrate Differences ... ==== //depot/projects/vimage/src/share/man/man9/Makefile#13 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/share/man/man9/Makefile,v 1.358 2009/08/12 21:03:16 sam Exp $ +# $FreeBSD: src/share/man/man9/Makefile,v 1.359 2009/08/23 07:48:11 julian Exp $ MAN= accept_filter.9 \ accf_data.9 \ @@ -713,6 +713,7 @@ kobj.9 kobj_delete.9 \ kobj.9 kobj_init.9 MLINKS+=kproc.9 kproc_create.9 \ + kproc.9 kthread_create.9 \ kproc.9 kproc_exit.9 \ kproc.9 kproc_resume.9 \ kproc.9 kproc_shutdown.9 \ ==== //depot/projects/vimage/src/share/man/man9/kproc.9#2 (text+ko) ==== @@ -23,7 +23,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man9/kproc.9,v 1.3 2008/04/29 22:43:15 julian Exp $ +.\" $FreeBSD: src/share/man/man9/kproc.9,v 1.4 2009/08/23 07:48:11 julian Exp $ .\" .Dd October 19, 2007 .Dt KPROC 9 @@ -64,6 +64,28 @@ .Fa "int flags" "int pages" "char * procname" "const char *fmt" "..." .Fc .Sh DESCRIPTION +In +.Fx 8.0 , +the +.Fn kthread* 9 +family of functions was renamed to be the +.Fn kproc* 9 +family of functions, as they were misnamed +and actually produced kernel processes. +A new family of +.Em different +.Fn kthread_* 9 +functions was added to produce +.Em real +kernel +.Em threads . +See the +.Xr kthread 9 +man page for more information on those calls. +Also note that the +.Fn kproc_kthread_add 9 +function appears in both pages as its functionality is split. +.Pp The function .Fn kproc_start is used to start ==== //depot/projects/vimage/src/share/man/man9/kthread.9#3 (text+ko) ==== @@ -23,7 +23,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man9/kthread.9,v 1.19 2009/01/27 00:22:16 trhodes Exp $ +.\" $FreeBSD: src/share/man/man9/kthread.9,v 1.20 2009/08/23 07:48:11 julian Exp $ .\" .Dd January 26, 2009 .Dt KTHREAD 9 @@ -65,6 +65,27 @@ .Fa "int flags" "int pages" "char * procname" "const char *fmt" "..." .Fc .Sh DESCRIPTION +In +.Fx 8.0 , +the older family of +.Fn kthread_* 9 +functions was renamed to be the +.Fn kproc_* 9 +family of functions, +as they were previously misnamed +and actually produced kernel processes. +This new family of +.Fn kthread_* 9 +functions was added to produce +.Em real +kernel threads. +See the +.Xr kproc 9 +man page for more information on the renamed calls. +Also note that the +.Fn kproc_kthread_add 9 +function appears in both pages as its functionality is split. +.Pp The function .Fn kthread_start is used to start ==== //depot/projects/vimage/src/sys/arm/arm/undefined.c#4 (text+ko) ==== @@ -48,7 +48,7 @@ #include "opt_ddb.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/undefined.c,v 1.16 2008/10/23 15:53:51 des Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/undefined.c,v 1.17 2009/08/23 23:37:53 cognet Exp $"); #include #include @@ -82,11 +82,10 @@ #ifdef DDB #include -#include #endif -#ifdef acorn26 -#include +#ifdef KDB +#include #endif static int gdb_trapper(u_int, u_int, struct trapframe *, int); ==== //depot/projects/vimage/src/sys/arm/xscale/ixp425/ixdp425_pci.c#3 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixdp425_pci.c,v 1.2 2008/03/20 15:54:19 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixdp425_pci.c,v 1.3 2009/08/23 19:54:36 cognet Exp $"); #define _ARM32_BUS_DMA_PRIVATE #include @@ -62,12 +62,12 @@ /* PCI Reset Assert */ reg = GPIO_CONF_READ_4(sc, IXP425_GPIO_GPOUTR); reg &= ~(1U << GPIO_PCI_RESET); - GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPOUTR, reg & ~(1U << GPIO_PCI_RESET)); + GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPOUTR, reg); /* PCI Clock Disable */ reg = GPIO_CONF_READ_4(sc, IXP425_GPIO_GPCLKR); reg &= ~GPCLKR_MUX14; - GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPCLKR, reg & ~GPCLKR_MUX14); + GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPCLKR, reg); /* * set GPIO Direction ==== //depot/projects/vimage/src/sys/cddl/compat/opensolaris/sys/mutex.h#4 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/mutex.h,v 1.7 2009/05/29 01:49:27 attilio Exp $ + * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/mutex.h,v 1.8 2009/08/23 11:22:46 pjd Exp $ */ #ifndef _OPENSOLARIS_SYS_MUTEX_H_ @@ -32,9 +32,9 @@ #ifdef _KERNEL #include -#include #include #include_next +#include #include typedef enum { ==== //depot/projects/vimage/src/sys/cddl/compat/opensolaris/sys/proc.h#3 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/proc.h,v 1.6 2008/11/17 20:49:29 pjd Exp $ + * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/proc.h,v 1.8 2009/08/23 11:33:46 pjd Exp $ */ #ifndef _OPENSOLARIS_SYS_PROC_H_ @@ -34,13 +34,16 @@ #include_next #include #include +#include +#include +#include #include #ifdef _KERNEL #define CPU curcpu -#define minclsyspri 0 -#define maxclsyspri 0 +#define minclsyspri PRIBIO +#define maxclsyspri PVM #define max_ncpus mp_ncpus #define boot_max_ncpus mp_ncpus @@ -54,11 +57,13 @@ typedef struct thread *kthread_id_t; typedef struct proc proc_t; +extern struct proc *zfsproc; + static __inline kthread_t * thread_create(caddr_t stk, size_t stksize, void (*proc)(void *), void *arg, size_t len, proc_t *pp, int state, pri_t pri) { - proc_t *p; + kthread_t *td = NULL; int error; /* @@ -67,13 +72,19 @@ ASSERT(stk == NULL); ASSERT(len == 0); ASSERT(state == TS_RUN); + ASSERT(pp == &p0); - error = kproc_create(proc, arg, &p, 0, stksize / PAGE_SIZE, - "solthread %p", proc); - return (error == 0 ? FIRST_THREAD_IN_PROC(p) : NULL); + error = kproc_kthread_add(proc, arg, &zfsproc, &td, 0, + stksize / PAGE_SIZE, "zfskern", "solthread %p", proc); + if (error == 0) { + thread_lock(td); + sched_prio(td, pri); + thread_unlock(td); + } + return (td); } -#define thread_exit() kproc_exit(0) +#define thread_exit() kthread_exit() #endif /* _KERNEL */ ==== //depot/projects/vimage/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#4 (text+ko) ==== @@ -194,6 +194,10 @@ zio_t *zio; struct bio *bp; + thread_lock(curthread); + sched_prio(curthread, PRIBIO); + thread_unlock(curthread); + ctx = arg; for (;;) { mtx_lock(&ctx->gc_queue_mtx); @@ -203,7 +207,7 @@ ctx->gc_state = 2; wakeup_one(&ctx->gc_state); mtx_unlock(&ctx->gc_queue_mtx); - kproc_exit(0); + kthread_exit(); } msleep(&ctx->gc_queue, &ctx->gc_queue_mtx, PRIBIO | PDROP, "vgeom:io", 0); @@ -530,8 +534,8 @@ vd->vdev_tsd = ctx; pp = cp->provider; - kproc_create(vdev_geom_worker, ctx, NULL, 0, 0, "vdev:worker %s", - pp->name); + kproc_kthread_add(vdev_geom_worker, ctx, &zfsproc, NULL, 0, 0, + "zfskern", "vdev %s", pp->name); /* * Determine the actual size of the device. ==== //depot/projects/vimage/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#8 (text+ko) ==== @@ -3057,6 +3057,7 @@ } static struct root_hold_token *zfs_root_token; +struct proc *zfsproc; uint_t zfs_fsyncer_key; extern uint_t rrw_tsd_key; ==== //depot/projects/vimage/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c#3 (text+ko) ==== @@ -402,6 +402,10 @@ zvol_state_t *zv; struct bio *bp; + thread_lock(curthread); + sched_prio(curthread, PRIBIO); + thread_unlock(curthread); + zv = arg; for (;;) { mtx_lock(&zv->zv_queue_mtx); @@ -411,7 +415,7 @@ zv->zv_state = 2; wakeup(&zv->zv_state); mtx_unlock(&zv->zv_queue_mtx); - kproc_exit(0); + kthread_exit(); } msleep(&zv->zv_queue, &zv->zv_queue_mtx, PRIBIO | PDROP, "zvol:io", 0); @@ -824,7 +828,8 @@ bioq_init(&zv->zv_queue); mtx_init(&zv->zv_queue_mtx, "zvol", NULL, MTX_DEF); zv->zv_state = 0; - kproc_create(zvol_worker, zv, NULL, 0, 0, "zvol:worker %s", pp->name); + kproc_kthread_add(zvol_worker, zv, &zfsproc, NULL, 0, 0, "zfskern", + "zvol %s", pp->name + strlen(ZVOL_DEV_DIR) + 1); zvol_minors++; end: ==== //depot/projects/vimage/src/sys/cddl/contrib/opensolaris/uts/common/sys/callb.h#3 (text+ko) ==== @@ -135,8 +135,6 @@ #define CALLB_CPR_INIT(cp, lockp, func, name) { \ strlcpy(curthread->td_name, (name), \ sizeof(curthread->td_name)); \ - strlcpy(curthread->td_proc->p_comm, (name), \ - sizeof(curthread->td_proc->p_comm)); \ bzero((caddr_t)(cp), sizeof (callb_cpr_t)); \ (cp)->cc_lockp = lockp; \ (cp)->cc_id = callb_add(func, (void *)(cp), \ ==== //depot/projects/vimage/src/sys/compat/linux/linux_ioctl.c#27 (text+ko) ==== @@ -29,7 +29,7 @@ #include "opt_compat.h" #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.155 2009/08/01 19:26:27 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.156 2009/08/23 20:40:19 rwatson Exp $"); #include #include @@ -2061,22 +2061,20 @@ struct ifnet *ifscan; int ethno; + IFNET_RLOCK_ASSERT(); + /* Short-circuit non ethernet interfaces */ if (!IFP_IS_ETH(ifp)) return (strlcpy(buffer, ifp->if_xname, buflen)); /* Determine the (relative) unit number for ethernet interfaces */ ethno = 0; - IFNET_RLOCK(); TAILQ_FOREACH(ifscan, &V_ifnet, if_link) { - if (ifscan == ifp) { - IFNET_RUNLOCK(); + if (ifscan == ifp) return (snprintf(buffer, buflen, "eth%d", ethno)); - } if (IFP_IS_ETH(ifscan)) ethno++; } - IFNET_RUNLOCK(); return (0); } @@ -2177,7 +2175,7 @@ valid_len = 0; /* Return all AF_INET addresses of all interfaces */ - IFNET_RLOCK(); /* could sleep XXX */ + IFNET_RLOCK(); TAILQ_FOREACH(ifp, &V_ifnet, if_link) { int addrs = 0; ==== //depot/projects/vimage/src/sys/conf/files#77 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1459 2009/08/01 19:26:27 rwatson Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1461 2009/08/23 20:26:09 ed Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -845,8 +845,10 @@ dev/drm/r128_state.c optional r128drm \ compile-with "${NORMAL_C} -finline-limit=13500" dev/drm/r300_cmdbuf.c optional radeondrm +dev/drm/r600_blit.c optional radeondrm dev/drm/r600_cp.c optional radeondrm dev/drm/radeon_cp.c optional radeondrm +dev/drm/radeon_cs.c optional radeondrm dev/drm/radeon_drv.c optional radeondrm dev/drm/radeon_irq.c optional radeondrm dev/drm/radeon_mem.c optional radeondrm @@ -1295,6 +1297,7 @@ dev/pst/pst-iop.c optional pst dev/pst/pst-pci.c optional pst pci dev/pst/pst-raid.c optional pst +dev/pty/pty.c optional pty dev/puc/puc.c optional puc dev/puc/puc_cfg.c optional puc dev/puc/puc_pccard.c optional puc pccard @@ -2057,7 +2060,6 @@ kern/tty_inq.c standard kern/tty_outq.c standard kern/tty_pts.c standard -kern/tty_pty.c optional pty kern/tty_tty.c standard kern/tty_ttydisc.c standard kern/uipc_accf.c optional inet ==== //depot/projects/vimage/src/sys/conf/newvers.sh#11 (text+ko) ==== @@ -28,11 +28,11 @@ # SUCH DAMAGE. # # @(#)newvers.sh 8.1 (Berkeley) 4/20/94 -# $FreeBSD: src/sys/conf/newvers.sh,v 1.83 2009/07/15 17:29:05 kensmith Exp $ +# $FreeBSD: src/sys/conf/newvers.sh,v 1.85 2009/08/23 05:45:38 dougb Exp $ TYPE="FreeBSD" -REVISION="8.0" -BRANCH="BETA2" +REVISION="9.0" +BRANCH="CURRENT" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi @@ -87,29 +87,25 @@ v=`cat version` u=${USER:-root} d=`pwd` h=${HOSTNAME:-`hostname`} t=`date` i=`${MAKE:-make} -V KERN_IDENT` -for dir in /bin /usr/bin /usr/local/bin; do - if [ -x "${dir}/svnversion" ]; then - svnversion=${dir}/svnversion - SRCDIR=${d##*obj} - if [ -n "$MACHINE" ]; then - SRCDIR=${SRCDIR##/$MACHINE} +case "$d" in +*/sys/*) + for dir in /bin /usr/bin /usr/local/bin; do + if [ -x "${dir}/svnversion" ]; then + svnversion=${dir}/svnversion + SRCDIR=${d##*obj} + if [ -n "$MACHINE" ]; then + SRCDIR=${SRCDIR##/$MACHINE} + fi + SRCDIR=${SRCDIR%%/sys/*} + break fi - SRCDIR=${SRCDIR%%/sys/*} - break - fi -done + done -if [ -n "$svnversion" -a -d "${SRCDIR}/.svn" ] ; then - # If we are called from the kernel build, limit - # the scope of svnversion to sys/ . - if [ -e "${SRCDIR}/sys/conf/newvers.sh" ] ; then - svn=" r`cd $SRCDIR/sys && $svnversion`" - else - svn=" r`cd $SRCDIR && $svnversion`" + if [ -n "$svnversion" -a -d "${SRCDIR}/sys/.svn" ] ; then + svn=" r`cd ${SRCDIR}/sys && $svnversion`" fi -else - svn="" -fi + ;; +esac cat << EOF > vers.c $COPYRIGHT ==== //depot/projects/vimage/src/sys/conf/options#57 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.688 2009/08/14 22:41:39 zec Exp $ +# $FreeBSD: src/sys/conf/options,v 1.689 2009/08/23 20:26:09 ed Exp $ # # On the handling of kernel options # @@ -672,7 +672,6 @@ DEV_BPF opt_bpf.h DEV_MCA opt_mca.h DEV_CARP opt_carp.h -DEV_PTY opt_tty.h DEV_SPLASH opt_splash.h # EISA support ==== //depot/projects/vimage/src/sys/contrib/altq/altq/altq_subr.c#24 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/contrib/altq/altq/altq_subr.c,v 1.25 2009/08/01 19:26:27 rwatson Exp $ */ +/* $FreeBSD: src/sys/contrib/altq/altq/altq_subr.c,v 1.26 2009/08/23 20:40:19 rwatson Exp $ */ /* $KAME: altq_subr.c,v 1.21 2003/11/06 06:32:53 kjc Exp $ */ /* @@ -462,8 +462,8 @@ s = splimp(); #endif #if defined(__FreeBSD__) && (__FreeBSD_version >= 500000) - IFNET_RLOCK(); - VNET_LIST_RLOCK(); + IFNET_RLOCK_NOSLEEP(); + VNET_LIST_RLOCK_NOSLEEP(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); #endif @@ -480,8 +480,8 @@ #if defined(__FreeBSD__) && (__FreeBSD_version >= 500000) CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); - IFNET_RUNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); + IFNET_RUNLOCK_NOSLEEP(); #endif splx(s); if (active > 0) ==== //depot/projects/vimage/src/sys/dev/asmc/asmc.c#7 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/asmc/asmc.c,v 1.13 2009/06/26 10:23:17 rpaulo Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/asmc/asmc.c,v 1.14 2009/08/23 09:58:06 rpaulo Exp $"); #include #include @@ -419,7 +419,8 @@ SYSCTL_ADD_PROC(sysctlctx, SYSCTL_CHILDREN(sc->sc_light_tree), - OID_AUTO, "control", CTLTYPE_INT | CTLFLAG_RW, + OID_AUTO, "control", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_ANYBODY, dev, 0, model->smc_light_control, "I", "Keyboard backlight brightness control"); } ==== //depot/projects/vimage/src/sys/dev/drm/drmP.h#12 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/drm/drmP.h,v 1.37 2009/06/23 18:09:35 rnoland Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/drm/drmP.h,v 1.39 2009/08/23 14:33:12 rnoland Exp $"); #ifndef _DRM_P_H_ #define _DRM_P_H_ @@ -148,6 +148,8 @@ MALLOC_DECLARE(DRM_MEM_SGLISTS); MALLOC_DECLARE(DRM_MEM_DRAWABLE); +SYSCTL_DECL(_hw_drm); + #define DRM_MAX_CTXBITMAP (PAGE_SIZE * 8) /* Internal types and structures */ @@ -416,7 +418,6 @@ struct drm_device *dev; int authenticated; int master; - int minor; pid_t pid; uid_t uid; drm_magic_t magic; ==== //depot/projects/vimage/src/sys/dev/drm/drm_bufs.c#10 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/drm/drm_bufs.c,v 1.13 2009/06/20 16:37:24 rnoland Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/drm/drm_bufs.c,v 1.14 2009/08/23 14:27:46 rnoland Exp $"); /** @file drm_bufs.c * Implementation of the ioctls for setup of DRM mappings and DMA buffers. @@ -45,25 +45,33 @@ */ static int drm_alloc_resource(struct drm_device *dev, int resource) { + struct resource *res; + int rid; + + DRM_SPINLOCK_ASSERT(&dev->dev_lock); + if (resource >= DRM_MAX_PCI_RESOURCE) { DRM_ERROR("Resource %d too large\n", resource); return 1; } - DRM_UNLOCK(); if (dev->pcir[resource] != NULL) { - DRM_LOCK(); return 0; } - dev->pcirid[resource] = PCIR_BAR(resource); - dev->pcir[resource] = bus_alloc_resource_any(dev->device, - SYS_RES_MEMORY, &dev->pcirid[resource], RF_SHAREABLE); + DRM_UNLOCK(); + rid = PCIR_BAR(resource); + res = bus_alloc_resource_any(dev->device, SYS_RES_MEMORY, &rid, + RF_SHAREABLE); DRM_LOCK(); + if (res == NULL) { + DRM_ERROR("Couldn't find resource 0x%x\n", resource); + return 1; + } if (dev->pcir[resource] == NULL) { - DRM_ERROR("Couldn't find resource 0x%x\n", resource); - return 1; + dev->pcirid[resource] = rid; + dev->pcir[resource] = res; } return 0; ==== //depot/projects/vimage/src/sys/dev/drm/drm_drv.c#18 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/drm/drm_drv.c,v 1.29 2009/08/20 19:17:53 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/drm/drm_drv.c,v 1.31 2009/08/23 14:33:12 rnoland Exp $"); /** @file drm_drv.c * The catch-all file for DRM device support, including module setup/teardown, @@ -53,9 +53,6 @@ static drm_pci_id_list_t *drm_find_description(int vendor, int device, drm_pci_id_list_t *idlist); -#define DRIVER_SOFTC(unit) \ - ((struct drm_device *)devclass_get_softc(drm_devclass, unit)) - MODULE_VERSION(drm, 1); MODULE_DEPEND(drm, agp, 1, 1, 1); MODULE_DEPEND(drm, pci, 1, 1, 1); @@ -136,6 +133,9 @@ static int drm_msi = 1; /* Enable by default. */ TUNABLE_INT("hw.drm.msi", &drm_msi); +SYSCTL_NODE(_hw, OID_AUTO, drm, CTLFLAG_RW, NULL, "DRM device"); +SYSCTL_INT(_hw_drm, OID_AUTO, msi, CTLFLAG_RDTUN, &drm_msi, 1, + "Enable MSI interrupts for drm devices"); static struct drm_msi_blacklist_entry drm_msi_blacklist[] = { {0x8086, 0x2772}, /* Intel i945G */ \ @@ -210,11 +210,12 @@ dev->device = kdev; #endif dev->devnode = make_dev(&drm_cdevsw, - unit, + 0, DRM_DEV_UID, DRM_DEV_GID, DRM_DEV_MODE, "dri/card%d", unit); + dev->devnode->si_drv1 = dev; #if __FreeBSD_version >= 700053 dev->pci_domain = pci_get_domain(dev->device); @@ -606,7 +607,7 @@ struct drm_device *dev = NULL; int retcode = 0; - dev = DRIVER_SOFTC(dev2unit(kdev)); + dev = kdev->si_drv1; DRM_DEBUG("open_count = %d\n", dev->open_count); ==== //depot/projects/vimage/src/sys/dev/drm/drm_fops.c#7 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/drm/drm_fops.c,v 1.7 2008/10/23 20:23:03 rnoland Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/drm/drm_fops.c,v 1.8 2009/08/23 14:31:20 rnoland Exp $"); /** @file drm_fops.c * Support code for dealing with the file privates associated with each @@ -44,14 +44,13 @@ struct drm_device *dev) { struct drm_file *priv; - int m = dev2unit(kdev); int retcode; if (flags & O_EXCL) return EBUSY; /* No exclusive opens */ dev->flags = flags; - DRM_DEBUG("pid = %d, minor = %d\n", DRM_CURRENTPID, m); + DRM_DEBUG("pid = %d, device = %s\n", DRM_CURRENTPID, devtoname(kdev)); priv = malloc(sizeof(*priv), DRM_MEM_FILES, M_NOWAIT | M_ZERO); if (priv == NULL) { @@ -68,7 +67,6 @@ priv->dev = dev; priv->uid = p->td_ucred->cr_svuid; priv->pid = p->td_proc->p_pid; - priv->minor = m; priv->ioctl_count = 0; /* for compatibility root is always authenticated */ ==== //depot/projects/vimage/src/sys/dev/drm/drm_sysctl.c#7 (text+ko) ==== @@ -22,7 +22,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/drm/drm_sysctl.c,v 1.7 2009/06/23 20:19:02 rnoland Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/drm/drm_sysctl.c,v 1.8 2009/08/23 14:31:20 rnoland Exp $"); /** @file drm_sysctl.c * Implementation of various sysctls for controlling DRM behavior and reporting @@ -298,12 +298,13 @@ DRM_UNLOCK(); - DRM_SYSCTL_PRINT("\na dev pid uid magic ioctls\n"); + DRM_SYSCTL_PRINT( + "\na dev pid uid magic ioctls\n"); for (i = 0; i < privcount; i++) { priv = &tempprivs[i]; - DRM_SYSCTL_PRINT("%c %3d %5d %5d %10u %10lu\n", + DRM_SYSCTL_PRINT("%c %-12s %5d %5d %10u %10lu\n", priv->authenticated ? 'y' : 'n', - priv->minor, + devtoname(priv->dev->devnode), priv->pid, priv->uid, priv->magic, ==== //depot/projects/vimage/src/sys/dev/drm/r600_cp.c#6 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/drm/r600_cp.c,v 1.9 2009/08/12 12:57:02 rnoland Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/drm/r600_cp.c,v 1.10 2009/08/23 14:55:57 rnoland Exp $"); #include "dev/drm/drmP.h" #include "dev/drm/drm.h" @@ -1843,6 +1843,7 @@ */ dev_priv->vblank_crtc = DRM_RADEON_VBLANK_CRTC1; + dev_priv->do_boxes = 0; dev_priv->cp_mode = init->cp_mode; /* We don't support anything other than bus-mastering ring mode, @@ -2100,6 +2101,8 @@ r600_do_engine_reset(dev); r600_test_writeback(dev_priv); + r600_cs_init(dev); + return 0; } @@ -2232,3 +2235,135 @@ return 0; } + +void r600_cp_dispatch_swap(struct drm_device * dev) +{ + drm_radeon_private_t *dev_priv = dev->dev_private; + drm_radeon_sarea_t *sarea_priv = dev_priv->sarea_priv; + int nbox = sarea_priv->nbox; + struct drm_clip_rect *pbox = sarea_priv->boxes; + int i, cpp, src_pitch, dst_pitch; + uint64_t src, dst; + RING_LOCALS; + DRM_DEBUG("\n"); + + if (dev_priv->color_fmt == RADEON_COLOR_FORMAT_ARGB8888) + cpp = 4; + else + cpp = 2; + + if (dev_priv->sarea_priv->pfCurrentPage == 0) { + src_pitch = dev_priv->back_pitch; + dst_pitch = dev_priv->front_pitch; + src = dev_priv->back_offset + dev_priv->fb_location; + dst = dev_priv->front_offset + dev_priv->fb_location; + } else { + src_pitch = dev_priv->front_pitch; + dst_pitch = dev_priv->back_pitch; + src = dev_priv->front_offset + dev_priv->fb_location; + dst = dev_priv->back_offset + dev_priv->fb_location; + } + + if (r600_prepare_blit_copy(dev)) { + DRM_ERROR("unable to allocate vertex buffer for swap buffer\n"); + return; + } + for (i = 0; i < nbox; i++) { + int x = pbox[i].x1; + int y = pbox[i].y1; + int w = pbox[i].x2 - x; + int h = pbox[i].y2 - y; + + DRM_DEBUG("%d,%d-%d,%d\n", x, y, w, h); + + r600_blit_swap(dev, + src, dst, + x, y, x, y, w, h, + src_pitch, dst_pitch, cpp); + } + r600_done_blit_copy(dev); + + /* Increment the frame counter. The client-side 3D driver must + * throttle the framerate by waiting for this value before + * performing the swapbuffer ioctl. + */ + dev_priv->sarea_priv->last_frame++; + + BEGIN_RING(3); + R600_FRAME_AGE(dev_priv->sarea_priv->last_frame); + ADVANCE_RING(); +} + +int r600_cp_dispatch_texture(struct drm_device * dev, + struct drm_file *file_priv, + drm_radeon_texture_t * tex, + drm_radeon_tex_image_t * image) +{ + drm_radeon_private_t *dev_priv = dev->dev_private; + struct drm_buf *buf; + u32 *buffer; + const u8 __user *data; + int size, pass_size; + u64 src_offset, dst_offset; + + if (!radeon_check_offset(dev_priv, tex->offset)) { + DRM_ERROR("Invalid destination offset\n"); + return -EINVAL; + } + + /* this might fail for zero-sized uploads - are those illegal? */ + if (!radeon_check_offset(dev_priv, tex->offset + tex->height * tex->pitch - 1)) { + DRM_ERROR("Invalid final destination offset\n"); + return -EINVAL; + } + + size = tex->height * tex->pitch; + + if (size == 0) + return 0; + + dst_offset = tex->offset; + + r600_prepare_blit_copy(dev); + do { + data = (const u8 __user *)image->data; + pass_size = size; + + buf = radeon_freelist_get(dev); + if (!buf) { + DRM_DEBUG("EAGAIN\n"); + if (DRM_COPY_TO_USER(tex->image, image, sizeof(*image))) + return -EFAULT; + return -EAGAIN; + } + + if (pass_size > buf->total) + pass_size = buf->total; + + /* Dispatch the indirect buffer. + */ + buffer = + (u32 *) ((char *)dev->agp_buffer_map->handle + buf->offset); + >>> TRUNCATED FOR MAIL (1000 lines) <<<