Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Aug 2009 12:10:25 GMT
From:      Marko Zec <zec@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 167726 for review
Message-ID:  <200908241210.n7OCAPbv051787@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 <sys/cdefs.h>
-__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 <sys/param.h>
 #include <sys/malloc.h>
@@ -82,11 +82,10 @@
 
 #ifdef DDB
 #include <ddb/db_output.h>
-#include <machine/db_machdep.h>
 #endif
 
-#ifdef acorn26
-#include <machine/machdep.h>
+#ifdef KDB
+#include <machine/db_machdep.h>
 #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 <sys/cdefs.h>
-__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 <sys/param.h>
@@ -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 <sys/param.h>
-#include <sys/proc.h>
 #include <sys/lock.h>
 #include_next <sys/mutex.h>
+#include <sys/proc.h>
 #include <sys/sx.h>
 
 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 <sys/proc.h>
 #include <sys/stdint.h>
 #include <sys/smp.h>
+#include <sys/sched.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
 #include <sys/debug.h>
 
 #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 <sys/cdefs.h>
-__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 <sys/param.h>
 #include <sys/systm.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/param.h>
 #include <sys/bus.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200908241210.n7OCAPbv051787>