Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Jan 2008 21:05:07 GMT
From:      John Birrell <jb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 132914 for review
Message-ID:  <200801092105.m09L57kB041758@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=132914

Change 132914 by jb@jb_freebsd1 on 2008/01/09 21:04:37

	IFC

Affected files ...

.. //depot/projects/dtrace/doc/en_US.ISO8859-1/books/handbook/x11/chapter.sgml#9 integrate
.. //depot/projects/dtrace/doc/en_US.ISO8859-1/books/porters-handbook/book.sgml#53 integrate
.. //depot/projects/dtrace/ports/LEGAL#32 integrate
.. //depot/projects/dtrace/ports/MOVED#61 integrate
.. //depot/projects/dtrace/src/contrib/libiberty/cp-demangle.c#1 branch
.. //depot/projects/dtrace/src/contrib/top/top.c#6 integrate
.. //depot/projects/dtrace/src/share/man/man9/lock.9#7 integrate
.. //depot/projects/dtrace/src/sys/amd64/include/ieeefp.h#4 integrate
.. //depot/projects/dtrace/src/sys/dev/cxgb/cxgb_adapter.h#4 integrate
.. //depot/projects/dtrace/src/sys/dev/cxgb/sys/mvec.h#4 integrate
.. //depot/projects/dtrace/src/sys/dev/cxgb/sys/uipc_mvec.c#4 integrate
.. //depot/projects/dtrace/src/sys/dev/iir/iir.c#8 integrate
.. //depot/projects/dtrace/src/sys/dev/usb/ehci.c#10 integrate
.. //depot/projects/dtrace/src/sys/dev/usb/if_udav.c#7 integrate
.. //depot/projects/dtrace/src/sys/fs/hpfs/hpfs_subr.h#4 integrate
.. //depot/projects/dtrace/src/sys/fs/ntfs/ntfs_subr.c#5 integrate
.. //depot/projects/dtrace/src/sys/kern/kern_lock.c#14 integrate
.. //depot/projects/dtrace/src/sys/sys/buf.h#6 integrate
.. //depot/projects/dtrace/src/sys/sys/lockmgr.h#10 integrate
.. //depot/projects/dtrace/src/sys/sys/mbuf.h#12 integrate
.. //depot/projects/dtrace/src/sys/sys/param.h#30 integrate
.. //depot/projects/dtrace/src/usr.bin/top/machine.c#8 integrate
.. //depot/projects/dtrace/src/usr.sbin/pkg_install/add/pkg_add.1#6 integrate
.. //depot/projects/dtrace/www/en/gnome/images/ahze.jpg#3 integrate
.. //depot/projects/dtrace/www/share/sgml/events.xml#17 integrate

Differences ...

==== //depot/projects/dtrace/doc/en_US.ISO8859-1/books/handbook/x11/chapter.sgml#9 (text+ko) ====

@@ -1,7 +1,7 @@
 <!--
      The FreeBSD Documentation Project
 
-     $FreeBSD: doc/en_US.ISO8859-1/books/handbook/x11/chapter.sgml,v 1.184 2007/07/10 07:06:24 blackend Exp $
+     $FreeBSD: doc/en_US.ISO8859-1/books/handbook/x11/chapter.sgml,v 1.185 2008/01/09 19:43:05 blackend Exp $
 -->
 
 <chapter id="x11">
@@ -402,7 +402,15 @@
     <sect2>
       <title>Configuring X11</title>
 
-      <para>Configuration of X11 is
+      <para>As of version 7.3, <application>&xorg;</application> can
+	often work without any configuration file by simply typing at
+	prompt:</para>
+
+      <screen>&prompt.user; <userinput>startx</userinput></screen>
+
+      <para>If this does not work, or if the default configuration is
+	not acceptable, then X11 must be configured manually.
+	Configuration of X11 is
         a multi-step process.  The first step is to build an initial
         configuration file.
         As the super user, simply

==== //depot/projects/dtrace/doc/en_US.ISO8859-1/books/porters-handbook/book.sgml#53 (text+ko) ====

@@ -1,7 +1,7 @@
 <!--
      The FreeBSD Documentation Project
 
-     $FreeBSD: doc/en_US.ISO8859-1/books/porters-handbook/book.sgml,v 1.894 2008/01/06 11:00:31 hrs Exp $
+     $FreeBSD: doc/en_US.ISO8859-1/books/porters-handbook/book.sgml,v 1.895 2008/01/09 17:36:05 gabor Exp $
 -->
 
 <!DOCTYPE BOOK PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
@@ -11668,6 +11668,16 @@
 		      argument.</entry>
 		    <entry>800007</entry>
 		  </row>
+		  <row>
+		    <entry>8.0-CURRENT after LK_EXCLUPGRADE option
+		      removal.</entry>
+		    <entry>800008</entry>
+		  </row>
+		  <row>
+		    <entry>8.0-CURRENT after introduction of the
+		      <function>lockmgr_disown()</function> function.</entry>
+		    <entry>800009</entry>
+		  </row>
 		</tbody>
 	      </tgroup>
 	    </table>

==== //depot/projects/dtrace/ports/LEGAL#32 (text+ko) ====

@@ -1,5 +1,5 @@
 # Creator:  Jordan Hubbard
-# $FreeBSD: ports/LEGAL,v 1.563 2008/01/01 15:35:04 lme Exp $
+# $FreeBSD: ports/LEGAL,v 1.564 2008/01/09 20:12:41 thierry Exp $
 
    **********************************************************************
    ***                      NOTE TO COMMITTERS                        ***
@@ -624,6 +624,9 @@
 VTK-*			math/vtk		Portions contain patented algorithms
 						and may require a license for
 						commercial use
+vtkmpeg2encode.tar.gz	multimedia/vtkmpeg2encode	The MPEG2 format and all
+						software that uses it is subject to patent
+						restrictions
 vrml2pov-src*		graphics/vrml2pov	Redistribution is not allowed
 waeijiro-fpw-*		japanese/waeijiro-fpw	The original dictionary is not free
 warsow/*		games/linux-warsow	Redistribution is limited, art

==== //depot/projects/dtrace/ports/MOVED#61 (text+ko) ====

@@ -1,7 +1,7 @@
 #
 # MOVED - a list of (recently) moved or removed ports
 #
-# $FreeBSD: ports/MOVED,v 1.1527 2008/01/04 18:34:11 alepulver Exp $
+# $FreeBSD: ports/MOVED,v 1.1528 2008/01/09 15:19:45 tabthorpe Exp $
 #
 # Each entry consists of a single line containing the following four
 # fields in the order named, separated with the pipe (`|') character:
@@ -3353,3 +3353,4 @@
 audio/polypaudio|audio/pulseaudio|2008-01-01|Project renamed
 audio/paman|audio/pavucontrol|2008-01-01|New tool to work with pulseaudio
 audio/akode-plugins-polypaudio||2008-01-01|Polypaudio is obsolete in favor of pulseaudio
+audio/teknap|net-p2p/teknap|2008-01-09|moved to net-p2p category

==== //depot/projects/dtrace/src/contrib/top/top.c#6 (text+ko) ====

@@ -13,7 +13,7 @@
  *  Copyright (c) 1994, 1995, William LeFebvre, Argonne National Laboratory
  *  Copyright (c) 1996, William LeFebvre, Group sys Consulting
  *
- * $FreeBSD: src/contrib/top/top.c,v 1.23 2007/05/04 15:42:58 rafan Exp $
+ * $FreeBSD: src/contrib/top/top.c,v 1.24 2008/01/09 18:06:24 obrien Exp $
  */
 
 /*
@@ -450,7 +450,7 @@
     }
 
     /* initialize the kernel memory interface */
-    if (machine_init(&statics) == -1)
+    if (machine_init(&statics, do_unames) == -1)
     {
 	exit(1);
     }

==== //depot/projects/dtrace/src/share/man/man9/lock.9#7 (text+ko) ====

@@ -24,9 +24,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 .\" DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man9/lock.9,v 1.18 2007/12/28 00:38:12 attilio Exp $
+.\" $FreeBSD: src/share/man/man9/lock.9,v 1.20 2008/01/09 08:08:56 brueffer Exp $
 .\"
-.Dd December 27, 2007
+.Dd January 9, 2008
 .Dt LOCK 9
 .Os
 .Sh NAME
@@ -35,6 +35,7 @@
 .Nm lockcount ,
 .Nm lockmgr ,
 .Nm lockstatus ,
+.Nm lockmgr_disown ,
 .Nm lockmgr_printinfo
 .Nd "lockmgr family of functions"
 .Sh SYNOPSIS
@@ -51,6 +52,8 @@
 .Ft int
 .Fn lockstatus "struct lock *lkp" "struct thread *td"
 .Ft void
+.Fn lockmgr_disown "struct lock *lkp"
+.Ft void
 .Fn lockmgr_printinfo "struct lock *lkp"
 .Sh DESCRIPTION
 The
@@ -187,6 +190,12 @@
 will be returned.
 .Pp
 The
+.Fn lockmgr_disown
+function switches the owner from curthread to be
+.Dv LK_KERNPROC,
+if the lock is already held.
+.Pp
+The
 .Fn lockmgr_printinfo
 function prints debugging information about the lock.
 It is used primarily by

==== //depot/projects/dtrace/src/sys/amd64/include/ieeefp.h#4 (text+ko) ====

@@ -32,16 +32,16 @@
  * SUCH DAMAGE.
  *
  * 	from: @(#) ieeefp.h 	1.0 (Berkeley) 9/23/93
- * $FreeBSD: src/sys/amd64/include/ieeefp.h,v 1.14 2005/04/12 23:12:00 jhb Exp $
+ * $FreeBSD: src/sys/amd64/include/ieeefp.h,v 1.17 2008/01/09 15:03:03 bde Exp $
  */
 
+#ifndef _MACHINE_IEEEFP_H_
+#define _MACHINE_IEEEFP_H_
+
 /*
- *	IEEE floating point type and constant definitions.
+ * IEEE floating point type, constant and function definitions.
  */
 
-#ifndef _MACHINE_IEEEFP_H_
-#define _MACHINE_IEEEFP_H_
-
 #ifndef _SYS_CDEFS_H_
 #error this file needs sys/cdefs.h as a prerequisite
 #endif
@@ -121,11 +121,8 @@
 #define	SSE_RND_OFF	13	/* rounding control offset */
 #define	SSE_FZ_OFF	15	/* flush to zero offset */
 
-#if defined(__GNUCLIKE_ASM) && defined(__CC_SUPPORTS___INLINE__) \
-    && !defined(__cplusplus)
+#ifdef __GNUCLIKE_ASM
 
-#define	__fldenv(addr)	__asm __volatile("fldenv %0" : : "m" (*(addr)))
-#define	__fnstenv(addr)	__asm __volatile("fnstenv %0" : "=m" (*(addr)))
 #define	__fldcw(addr)	__asm __volatile("fldcw %0" : : "m" (*(addr)))
 #define	__fnstcw(addr)	__asm __volatile("fnstcw %0" : "=m" (*(addr)))
 #define	__fnstsw(addr)	__asm __volatile("fnstsw %0" : "=m" (*(addr)))
@@ -143,25 +140,24 @@
  * merge the two together.  I think.
  */
 
-/* Set rounding control */
-static __inline__ fp_rnd_t
+static __inline fp_rnd_t
 __fpgetround(void)
 {
 	unsigned short _cw;
 
 	__fnstcw(&_cw);
-	return ((_cw & FP_RND_FLD) >> FP_RND_OFF);
+	return ((fp_rnd_t)((_cw & FP_RND_FLD) >> FP_RND_OFF));
 }
 
-static __inline__ fp_rnd_t
+static __inline fp_rnd_t
 __fpsetround(fp_rnd_t _m)
 {
+	fp_rnd_t _p;
+	unsigned _mxcsr;
 	unsigned short _cw;
-	unsigned int _mxcsr;
-	fp_rnd_t _p;
 
 	__fnstcw(&_cw);
-	_p = (_cw & FP_RND_FLD) >> FP_RND_OFF;
+	_p = (fp_rnd_t)((_cw & FP_RND_FLD) >> FP_RND_OFF);
 	_cw &= ~FP_RND_FLD;
 	_cw |= (_m << FP_RND_OFF) & FP_RND_FLD;
 	__fldcw(&_cw);
@@ -173,26 +169,27 @@
 }
 
 /*
- * Set precision for fadd/fsub/fsqrt etc x87 instructions
+ * Get or set the rounding precision for x87 arithmetic operations.
  * There is no equivalent SSE mode or control.
  */
-static __inline__ fp_prec_t
+
+static __inline fp_prec_t
 __fpgetprec(void)
 {
 	unsigned short _cw;
 
 	__fnstcw(&_cw);
-	return ((_cw & FP_PRC_FLD) >> FP_PRC_OFF);
+	return ((fp_prec_t)((_cw & FP_PRC_FLD) >> FP_PRC_OFF));
 }
 
-static __inline__ fp_prec_t
-__fpsetprec(fp_rnd_t _m)
+static __inline fp_prec_t
+__fpsetprec(fp_prec_t _m)
 {
+	fp_prec_t _p;
 	unsigned short _cw;
-	fp_prec_t _p;
 
 	__fnstcw(&_cw);
-	_p = (_cw & FP_PRC_FLD) >> FP_PRC_OFF;
+	_p = (fp_prec_t)((_cw & FP_PRC_FLD) >> FP_PRC_OFF);
 	_cw &= ~FP_PRC_FLD;
 	_cw |= (_m << FP_PRC_OFF) & FP_PRC_FLD;
 	__fldcw(&_cw);
@@ -200,59 +197,56 @@
 }
 
 /*
- * Look at the exception masks
- * Note that x87 masks are inverse of the fp*() functions
- * API.  ie: mask = 1 means disable for x87 and SSE, but
- * for the fp*() api, mask = 1 means enabled.
+ * Get or set the exception mask.
+ * Note that the x87 mask bits are inverted by the API -- a mask bit of 1
+ * means disable for x87 and SSE, but for fp*mask() it means enable.
  */
-static __inline__ fp_except_t
+
+static __inline fp_except_t
 __fpgetmask(void)
 {
 	unsigned short _cw;
 
 	__fnstcw(&_cw);
-	return ((~_cw) & FP_MSKS_FLD);
+	return ((~_cw & FP_MSKS_FLD) >> FP_MSKS_OFF);
 }
 
-static __inline__ fp_except_t
+static __inline fp_except_t
 __fpsetmask(fp_except_t _m)
 {
+	fp_except_t _p;
+	unsigned _mxcsr;
 	unsigned short _cw;
-	unsigned int _mxcsr;
-	fp_except_t _p;
 
 	__fnstcw(&_cw);
-	_p = (~_cw) & FP_MSKS_FLD;
+	_p = (~_cw & FP_MSKS_FLD) >> FP_MSKS_OFF;
 	_cw &= ~FP_MSKS_FLD;
-	_cw |= (~_m) & FP_MSKS_FLD;
+	_cw |= (~_m >> FP_MSKS_OFF) & FP_MSKS_FLD;
 	__fldcw(&_cw);
 	__stmxcsr(&_mxcsr);
 	/* XXX should we clear non-ieee SSE_DAZ_FLD and SSE_FZ_FLD ? */
 	_mxcsr &= ~SSE_MSKS_FLD;
-	_mxcsr |= ((~_m) << SSE_MSKS_OFF) & SSE_MSKS_FLD;
+	_mxcsr |= (~_m << SSE_MSKS_OFF) & SSE_MSKS_FLD;
 	__ldmxcsr(&_mxcsr);
 	return (_p);
 }
 
-/* See which sticky exceptions are pending, and reset them */
-static __inline__ fp_except_t
+static __inline fp_except_t
 __fpgetsticky(void)
 {
+	unsigned _ex, _mxcsr;
 	unsigned short _sw;
-	unsigned int _mxcsr;
-	fp_except_t _ex;
 
 	__fnstsw(&_sw);
-	_ex = _sw & FP_STKY_FLD;
+	_ex = (_sw & FP_STKY_FLD) >> FP_STKY_OFF;
 	__stmxcsr(&_mxcsr);
-	_ex |= _mxcsr & SSE_STKY_FLD;
-	return (_ex);
+	_ex |= (_mxcsr & SSE_STKY_FLD) >> SSE_STKY_OFF;
+	return ((fp_except_t)_ex);
 }
 
-#endif /* __GNUCLIKE_ASM && __CC_SUPPORTS___INLINE__ && !__cplusplus */
+#endif /* __GNUCLIKE_ASM */
 
-#if !defined(__IEEEFP_NOINLINES__) && !defined(__cplusplus) \
-    && defined(__GNUCLIKE_ASM) && defined(__CC_SUPPORTS___INLINE__)
+#if !defined(__IEEEFP_NOINLINES__) && defined(__GNUCLIKE_ASM)
 
 #define	fpgetround()	__fpgetround()
 #define	fpsetround(_m)	__fpsetround(_m)
@@ -265,16 +259,14 @@
 /* Suppress prototypes in the MI header. */
 #define	_IEEEFP_INLINED_	1
 
-#else /* !__IEEEFP_NOINLINES__ && !__cplusplus && __GNUCLIKE_ASM
-         && __CC_SUPPORTS___INLINE__ */
+#else /* !(!__IEEEFP_NOINLINES__ && __GNUCLIKE_ASM) */
 
-/* Augment the userland declarations */
+/* Augment the userland declarations. */
 __BEGIN_DECLS
-extern fp_prec_t fpgetprec(void);
-extern fp_prec_t fpsetprec(fp_prec_t);
+fp_prec_t	fpgetprec(void);
+fp_prec_t	fpsetprec(fp_prec_t);
 __END_DECLS
 
-#endif /* !__IEEEFP_NOINLINES__ && !__cplusplus && __GNUCLIKE_ASM
-          && __CC_SUPPORTS___INLINE__ */
+#endif /* !__IEEEFP_NOINLINES__ && __GNUCLIKE_ASM */
 
 #endif /* !_MACHINE_IEEEFP_H_ */

==== //depot/projects/dtrace/src/sys/dev/cxgb/cxgb_adapter.h#4 (text+ko) ====

@@ -26,7 +26,7 @@
 POSSIBILITY OF SUCH DAMAGE.
 
 
-$FreeBSD: src/sys/dev/cxgb/cxgb_adapter.h,v 1.22 2007/12/17 08:17:49 kmacy Exp $
+$FreeBSD: src/sys/dev/cxgb/cxgb_adapter.h,v 1.23 2008/01/09 08:12:24 kmacy Exp $
 
 ***************************************************************************/
 
@@ -120,8 +120,8 @@
 	uint8_t		port_id;
 	uint8_t		tx_chan;
 	uint8_t		txpkt_intf;
-	uint8_t		nqsets;
 	uint8_t         first_qset;
+	uint32_t	nqsets;
 	
 	uint8_t		hw_addr[ETHER_ADDR_LEN];
 	struct taskqueue *tq;
@@ -284,6 +284,8 @@
 	uint32_t        txq_skipped;
 	uint32_t        txq_coalesced;
 	uint32_t        txq_enqueued;
+	uint32_t	txq_dump_start;
+	uint32_t	txq_dump_count;
 	unsigned long   txq_frees;
 	struct mtx      lock;
 	struct sg_ent  txq_sgl[TX_MAX_SEGS / 2 + 1];

==== //depot/projects/dtrace/src/sys/dev/cxgb/sys/mvec.h#4 (text+ko) ====

@@ -25,7 +25,7 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/cxgb/sys/mvec.h,v 1.9 2008/01/07 01:18:16 kmacy Exp $
+ * $FreeBSD: src/sys/dev/cxgb/sys/mvec.h,v 1.10 2008/01/09 08:01:08 kmacy Exp $
  *
  ***************************************************************************/
 
@@ -247,6 +247,7 @@
 	case EXT_NET_DRV:
 	case EXT_MOD_TYPE:
 	case EXT_DISPOSABLE:
+	case EXT_PACKET:	
 	case EXT_EXTREF:
 		mb_free_ext_fast(mi, mi->mi_type, -1);
 		break;

==== //depot/projects/dtrace/src/sys/dev/cxgb/sys/uipc_mvec.c#4 (text+ko) ====

@@ -29,7 +29,7 @@
  ***************************************************************************/
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cxgb/sys/uipc_mvec.c,v 1.16 2008/01/07 01:18:16 kmacy Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cxgb/sys/uipc_mvec.c,v 1.17 2008/01/09 08:01:42 kmacy Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -384,7 +384,7 @@
 	 */
 	while (dofree == 0) {
 		cnt = *(mi->mi_refcnt);
-		if (mi->mi_type == EXT_PACKET) {
+		if (mi->mi_type == EXT_PACKET && cnt == 1) {
 			dofree = 1;
 			break;
 		}

==== //depot/projects/dtrace/src/sys/dev/iir/iir.c#8 (text+ko) ====

@@ -43,7 +43,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/iir/iir.c,v 1.19 2007/06/17 05:55:50 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/iir/iir.c,v 1.20 2008/01/09 20:02:56 scottl Exp $");
 
 #define _IIR_C_
 
@@ -1160,20 +1160,25 @@
         break;
       case INQUIRY:
         {
-            struct scsi_inquiry_data *inq;
+            struct scsi_inquiry_data inq;
+            size_t copylen = MIN(sizeof(inq), ccb->csio.dxfer_len);
 
-            inq = (struct scsi_inquiry_data *)ccb->csio.data_ptr;       
-            bzero(inq, sizeof(struct scsi_inquiry_data));
-            inq->device = (gdt->sc_hdr[t].hd_devtype & 4) ?
+            bzero(&inq, sizeof(inq));
+            inq.device = (gdt->sc_hdr[t].hd_devtype & 4) ?
                 T_CDROM : T_DIRECT;
-            inq->dev_qual2 = (gdt->sc_hdr[t].hd_devtype & 1) ? 0x80 : 0;
-            inq->version = SCSI_REV_2;
-            inq->response_format = 2; 
-            inq->additional_length = 32; 
-            inq->flags = SID_CmdQue | SID_Sync; 
-            strcpy(inq->vendor, gdt->oem_name);
-            sprintf(inq->product, "Host Drive   #%02d", t);
-            strcpy(inq->revision, "   ");
+            inq.dev_qual2 = (gdt->sc_hdr[t].hd_devtype & 1) ? 0x80 : 0;
+            inq.version = SCSI_REV_2;
+            inq.response_format = 2; 
+            inq.additional_length = 32; 
+            inq.flags = SID_CmdQue | SID_Sync; 
+            strncpy(inq.vendor, gdt->oem_name, sizeof(inq.vendor));
+            snprintf(inq.product, sizeof(inq.product),
+                     "Host Drive   #%02d", t);
+            strncpy(inq.revision, "   ", sizeof(inq.revision));
+            bcopy(&inq, ccb->csio.data_ptr, copylen );
+            if( ccb->csio.dxfer_len > copylen )
+                bzero( ccb->csio.data_ptr+copylen,
+                       ccb->csio.dxfer_len - copylen );
             break;
         }
       case MODE_SENSE_6:
@@ -1182,18 +1187,24 @@
                 struct scsi_mode_hdr_6 hd;
                 struct scsi_mode_block_descr bd;
                 struct scsi_control_page cp;
-            } *mpd;
+            } mpd;
+            size_t copylen = MIN(sizeof(mpd), ccb->csio.dxfer_len);
             u_int8_t page;
 
-            mpd = (struct mpd_data *)ccb->csio.data_ptr;        
-            bzero(mpd, sizeof(struct mpd_data));
-            mpd->hd.datalen = sizeof(struct scsi_mode_hdr_6) +
+            /*mpd = (struct mpd_data *)ccb->csio.data_ptr;*/
+            bzero(&mpd, sizeof(mpd));
+            mpd.hd.datalen = sizeof(struct scsi_mode_hdr_6) +
                 sizeof(struct scsi_mode_block_descr);
-            mpd->hd.dev_specific = (gdt->sc_hdr[t].hd_devtype & 2) ? 0x80 : 0;
-            mpd->hd.block_descr_len = sizeof(struct scsi_mode_block_descr);
-            mpd->bd.block_len[0] = (GDT_SECTOR_SIZE & 0x00ff0000) >> 16;
-            mpd->bd.block_len[1] = (GDT_SECTOR_SIZE & 0x0000ff00) >> 8;
-            mpd->bd.block_len[2] = (GDT_SECTOR_SIZE & 0x000000ff);
+            mpd.hd.dev_specific = (gdt->sc_hdr[t].hd_devtype & 2) ? 0x80 : 0;
+            mpd.hd.block_descr_len = sizeof(struct scsi_mode_block_descr);
+            mpd.bd.block_len[0] = (GDT_SECTOR_SIZE & 0x00ff0000) >> 16;
+            mpd.bd.block_len[1] = (GDT_SECTOR_SIZE & 0x0000ff00) >> 8;
+            mpd.bd.block_len[2] = (GDT_SECTOR_SIZE & 0x000000ff);
+
+            bcopy(&mpd, ccb->csio.data_ptr, copylen );
+            if( ccb->csio.dxfer_len > copylen )
+                bzero( ccb->csio.data_ptr+copylen,
+                       ccb->csio.dxfer_len - copylen );
             page=((struct scsi_mode_sense_6 *)ccb->csio.cdb_io.cdb_bytes)->page;
             switch (page) {
               default:
@@ -1204,12 +1215,17 @@
         }
       case READ_CAPACITY:
         {
-            struct scsi_read_capacity_data *rcd;
+            struct scsi_read_capacity_data rcd;
+            size_t copylen = MIN(sizeof(rcd), ccb->csio.dxfer_len);
               
-            rcd = (struct scsi_read_capacity_data *)ccb->csio.data_ptr; 
-            bzero(rcd, sizeof(struct scsi_read_capacity_data));
-            scsi_ulto4b(gdt->sc_hdr[t].hd_size - 1, rcd->addr);
-            scsi_ulto4b(GDT_SECTOR_SIZE, rcd->length);
+            /*rcd = (struct scsi_read_capacity_data *)ccb->csio.data_ptr;*/
+            bzero(&rcd, sizeof(rcd));
+            scsi_ulto4b(gdt->sc_hdr[t].hd_size - 1, rcd.addr);
+            scsi_ulto4b(GDT_SECTOR_SIZE, rcd.length);
+            bcopy(&rcd, ccb->csio.data_ptr, copylen );
+            if( ccb->csio.dxfer_len > copylen )
+                bzero( ccb->csio.data_ptr+copylen,
+                       ccb->csio.dxfer_len - copylen );
             break;
         }
       default:

==== //depot/projects/dtrace/src/sys/dev/usb/ehci.c#10 (text+ko) ====

@@ -59,7 +59,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/ehci.c,v 1.56 2007/08/12 18:45:24 truckman Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/ehci.c,v 1.57 2008/01/08 23:48:30 attilio Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1560,7 +1560,7 @@
 	}
 	DPRINTFN(2,("ehci_sync_hc: enter\n"));
 	/* get doorbell */
-	lockmgr(&sc->sc_doorbell_lock, LK_EXCLUSIVE, NULL, NULL);
+	lockmgr(&sc->sc_doorbell_lock, LK_EXCLUSIVE, NULL, curthread);
 	s = splhardusb();
 	/* ask for doorbell */
 	EOWRITE4(sc, EHCI_USBCMD, EOREAD4(sc, EHCI_USBCMD) | EHCI_CMD_IAAD);
@@ -1571,7 +1571,7 @@
 		    EOREAD4(sc, EHCI_USBCMD), EOREAD4(sc, EHCI_USBSTS)));
 	splx(s);
 	/* release doorbell */
-	lockmgr(&sc->sc_doorbell_lock, LK_RELEASE, NULL, NULL);
+	lockmgr(&sc->sc_doorbell_lock, LK_RELEASE, NULL, curthread);
 #ifdef DIAGNOSTIC
 	if (error)
 		printf("ehci_sync_hc: tsleep() = %d\n", error);

==== //depot/projects/dtrace/src/sys/dev/usb/if_udav.c#7 (text+ko) ====

@@ -1,6 +1,6 @@
 /*	$NetBSD: if_udav.c,v 1.2 2003/09/04 15:17:38 tsutsui Exp $	*/
 /*	$nabe: if_udav.c,v 1.3 2003/08/21 16:57:19 nabe Exp $	*/
-/*	$FreeBSD: src/sys/dev/usb/if_udav.c,v 1.33 2007/07/24 14:44:23 imp Exp $	*/
+/*	$FreeBSD: src/sys/dev/usb/if_udav.c,v 1.34 2008/01/08 23:48:30 attilio Exp $	*/
 /*-
  * Copyright (c) 2003
  *     Shingo WATANABE <nabe@nabechan.org>.  All rights reserved.
@@ -45,7 +45,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_udav.c,v 1.33 2007/07/24 14:44:23 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_udav.c,v 1.34 2008/01/08 23:48:30 attilio Exp $");
 
 #include "opt_inet.h"
 #if defined(__NetBSD__)
@@ -1780,7 +1780,7 @@
 #if defined(__NetBSD__)
 	lockmgr(&sc->sc_mii_lock, LK_EXCLUSIVE, NULL);
 #elif defined(__FreeBSD__)
-	lockmgr(&sc->sc_mii_lock, LK_EXCLUSIVE, NULL, NULL);
+	lockmgr(&sc->sc_mii_lock, LK_EXCLUSIVE, NULL, curthread);
 #endif
 }
 
@@ -1793,7 +1793,7 @@
 #if defined(__NetBSD__)
 	lockmgr(&sc->sc_mii_lock, LK_RELEASE, NULL);
 #elif defined(__FreeBSD__)
-	lockmgr(&sc->sc_mii_lock, LK_RELEASE, NULL, NULL);
+	lockmgr(&sc->sc_mii_lock, LK_RELEASE, NULL, curthread);
 #endif
 	if (--sc->sc_refcnt < 0)
 		usb_detach_wakeup(sc->sc_dev);

==== //depot/projects/dtrace/src/sys/fs/hpfs/hpfs_subr.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/fs/hpfs/hpfs_subr.h,v 1.3 2004/12/06 20:14:20 phk Exp $
+ * $FreeBSD: src/sys/fs/hpfs/hpfs_subr.h,v 1.4 2008/01/08 23:48:31 attilio Exp $
  */
 
 #define	hpfs_bmmarkfree(hpmp, bn,bl) hpfs_bmmark(hpmp, bn, bl, 1)
@@ -78,8 +78,10 @@
 	hpfs_breadstruct(hpmp, lsn, D_BSIZE, D_MAGIC, bpp)
 
 #if 0
-#define	hpfs_hplock(hp, p)	lockmgr(&(hp)->h_intlock, LK_EXCLUSIVE, (p), NULL)
-#define	hpfs_hpunlock(hp, p)	lockmgr(&(hp)->h_intlock, LK_RELEASE, (p), NULL)
+#define	hpfs_hplock(hp, p)						\
+	lockmgr(&(hp)->h_intlock, LK_EXCLUSIVE, (p), curthread)
+#define	hpfs_hpunlock(hp, p)						\
+	lockmgr(&(hp)->h_intlock, LK_RELEASE, (p), curthread)
 #endif
 
 int		hpfs_hpbmap (struct hpfsnode *, daddr_t, daddr_t *, int *);

==== //depot/projects/dtrace/src/sys/fs/ntfs/ntfs_subr.c#5 (text+ko) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/fs/ntfs/ntfs_subr.c,v 1.42 2006/11/20 19:28:36 le Exp $
+ * $FreeBSD: src/sys/fs/ntfs/ntfs_subr.c,v 1.43 2008/01/08 23:48:31 attilio Exp $
  */
 
 #include <sys/param.h>
@@ -359,7 +359,7 @@
 	mtx_lock(&ip->i_interlock);
 	ip->i_usecount++;
 	lockmgr(&ip->i_lock, LK_EXCLUSIVE | LK_INTERLOCK, &ip->i_interlock,
-	    NULL);
+	    curthread);
 
 	return 0;
 }
@@ -391,7 +391,7 @@
 			return (0);
 		}
 	} while (lockmgr(&ntfs_hashlock, LK_EXCLUSIVE | LK_SLEEPFAIL, NULL,
-	    NULL));
+	    curthread));
 
 	MALLOC(ip, struct ntnode *, sizeof(struct ntnode), M_NTFSNTNODE,
 		M_WAITOK | M_ZERO);
@@ -413,7 +413,7 @@
 
 	ntfs_nthashins(ip);
 
-	lockmgr(&ntfs_hashlock, LK_RELEASE, NULL, NULL);
+	lockmgr(&ntfs_hashlock, LK_RELEASE, NULL, curthread);
 
 	*ipp = ip;
 
@@ -450,7 +450,7 @@
 
 	if (ip->i_usecount > 0) {
 		lockmgr(&ip->i_lock, LK_RELEASE|LK_INTERLOCK, &ip->i_interlock,
-		    NULL);
+		    curthread);
 		return;
 	}
 
@@ -1982,7 +1982,7 @@
 	struct vnode *vp;
 
 	/* get exclusive access */
-	lockmgr(&ntfs_toupper_lock, LK_EXCLUSIVE, NULL, NULL);
+	lockmgr(&ntfs_toupper_lock, LK_EXCLUSIVE, NULL, curthread);
 	
 	/* only read the translation data from a file if it hasn't been
 	 * read already */
@@ -2005,7 +2005,7 @@
 
     out:
 	ntfs_toupper_usecount++;
-	lockmgr(&ntfs_toupper_lock, LK_RELEASE, NULL, NULL);
+	lockmgr(&ntfs_toupper_lock, LK_RELEASE, NULL, curthread);
 	return (error);
 }
 
@@ -2017,7 +2017,7 @@
 ntfs_toupper_unuse()
 {
 	/* get exclusive access */
-	lockmgr(&ntfs_toupper_lock, LK_EXCLUSIVE, NULL, NULL);
+	lockmgr(&ntfs_toupper_lock, LK_EXCLUSIVE, NULL, curthread);
 
 	ntfs_toupper_usecount--;
 	if (ntfs_toupper_usecount == 0) {
@@ -2032,7 +2032,7 @@
 #endif
 	
 	/* release the lock */
-	lockmgr(&ntfs_toupper_lock, LK_RELEASE, NULL, NULL);
+	lockmgr(&ntfs_toupper_lock, LK_RELEASE, NULL, curthread);
 } 
 
 int

==== //depot/projects/dtrace/src/sys/kern/kern_lock.c#14 (text+ko) ====

@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_lock.c,v 1.116 2007/12/28 00:38:13 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_lock.c,v 1.118 2008/01/09 00:02:43 attilio Exp $");
 
 #include "opt_ddb.h"
 #include "opt_global.h"
@@ -105,7 +105,7 @@
 	panic("lockmgr locks do not support sleep interlocking");
 }
 
-#define	COUNT(td, x)	if ((td)) (td)->td_locks += (x)
+#define	COUNT(td, x)	((td)->td_locks += (x))
 #define LK_ALL (LK_HAVE_EXCL | LK_WANT_EXCL | LK_WANT_UPGRADE | \
 	LK_SHARE_NONZERO | LK_WAIT_NONZERO)
 
@@ -194,24 +194,18 @@
 
 {
 	int error;
-	struct thread *thr;
 	int extflags, lockflags;
 	int contested = 0;
 	uint64_t waitstart = 0;
 
 	/*
-	 * Lock owner can only be curthread or, at least, NULL in order to
-	 * have a deadlock free implementation of the primitive.
+	 * Lock owner can only be curthread in order to have a deadlock
+	 * free implementation of the primitive.
 	 */
-	KASSERT(td == NULL || td == curthread,
-	    ("lockmgr: owner thread (%p) cannot differ from curthread or NULL",
-	    td));
+	KASSERT(td == curthread,
+	    ("lockmgr: owner thread (%p) cannot differ from curthread", td));
 
 	error = 0;
-	if (td == NULL)
-		thr = LK_KERNPROC;
-	else
-		thr = td;
 
 	if ((flags & LK_INTERNAL) == 0)
 		mtx_lock(lkp->lk_interlock);
@@ -260,7 +254,7 @@
 		 * lock requests or upgrade requests ( but not the exclusive
 		 * lock itself ).
 		 */
-		if (lkp->lk_lockholder != thr) {
+		if (lkp->lk_lockholder != td) {
 			lockflags = LK_HAVE_EXCL;
 			if (td != NULL && !(td->td_pflags & TDP_DEADLKTREAT))
 				lockflags |= LK_WANT_EXCL | LK_WANT_UPGRADE;
@@ -286,10 +280,10 @@
 		/* FALLTHROUGH downgrade */
 
 	case LK_DOWNGRADE:
-		KASSERT(lkp->lk_lockholder == thr && lkp->lk_exclusivecount != 0,
+		KASSERT(lkp->lk_lockholder == td && lkp->lk_exclusivecount != 0,
 			("lockmgr: not holding exclusive lock "
 			"(owner thread (%p) != thread (%p), exlcnt (%d) != 0",
-			lkp->lk_lockholder, thr, lkp->lk_exclusivecount));
+			lkp->lk_lockholder, td, lkp->lk_exclusivecount));
 		sharelock(td, lkp, lkp->lk_exclusivecount);
 		COUNT(td, -lkp->lk_exclusivecount);
 		lkp->lk_exclusivecount = 0;
@@ -308,7 +302,7 @@
 		 * after the upgrade). If we return an error, the file
 		 * will always be unlocked.
 		 */
-		if (lkp->lk_lockholder == thr)
+		if (lkp->lk_lockholder == td)
 			panic("lockmgr: upgrade exclusive lock");
 		if (lkp->lk_sharecount <= 0)
 			panic("lockmgr: upgrade without shared");
@@ -342,7 +336,7 @@
 			if (lkp->lk_exclusivecount != 0)
 				panic("lockmgr: non-zero exclusive count");
 			lkp->lk_flags |= LK_HAVE_EXCL;
-			lkp->lk_lockholder = thr;
+			lkp->lk_lockholder = td;
 			lkp->lk_exclusivecount = 1;
 			COUNT(td, 1);
 			lock_profile_obtain_lock_success(&lkp->lk_object, contested, waitstart, file, line);
@@ -362,7 +356,7 @@
 		/* FALLTHROUGH exclusive request */
 
 	case LK_EXCLUSIVE:
-		if (lkp->lk_lockholder == thr && thr != LK_KERNPROC) {
+		if (lkp->lk_lockholder == td) {
 			/*
 			 *	Recursive lock.
 			 */
@@ -400,7 +394,7 @@
 			break;
 		}	
 		lkp->lk_flags |= LK_HAVE_EXCL;
-		lkp->lk_lockholder = thr;
+		lkp->lk_lockholder = td;
 		if (lkp->lk_exclusivecount != 0)
 			panic("lockmgr: non-zero exclusive count");
 		lkp->lk_exclusivecount = 1;
@@ -413,10 +407,10 @@
 
 	case LK_RELEASE:
 		if (lkp->lk_exclusivecount != 0) {
-			if (lkp->lk_lockholder != thr &&
+			if (lkp->lk_lockholder != td &&
 			    lkp->lk_lockholder != LK_KERNPROC) {
 				panic("lockmgr: thread %p, not %s %p unlocking",
-				    thr, "exclusive lock holder",
+				    td, "exclusive lock holder",
 				    lkp->lk_lockholder);
 			}
 			if (lkp->lk_lockholder != LK_KERNPROC)
@@ -433,7 +427,7 @@
 			shareunlock(td, lkp, 1);
 		else  {
 			printf("lockmgr: thread %p unlocking unheld lock\n",
-			    thr);
+			    td);
 			kdb_backtrace();
 		}
 
@@ -448,14 +442,14 @@
 		 * check for holding a shared lock, but at least we can
 		 * check for an exclusive one.
 		 */
-		if (lkp->lk_lockholder == thr)
+		if (lkp->lk_lockholder == td)
 			panic("lockmgr: draining against myself");
 
 		error = acquiredrain(lkp, extflags);
 		if (error)
 			break;
 		lkp->lk_flags |= LK_DRAINING | LK_HAVE_EXCL;
-		lkp->lk_lockholder = thr;
+		lkp->lk_lockholder = td;
 		lkp->lk_exclusivecount = 1;
 		COUNT(td, 1);
 #if defined(DEBUG_LOCKS)
@@ -544,6 +538,31 @@
 }
 
 /*
+ * Disown the lockmgr.
+ */
+void
+lockmgr_disown(struct lock *lkp)
+{
+	struct thread *td;
+
+	td = curthread;
+	KASSERT(lkp->lk_exclusivecount,
+	    ("%s: %p lockmgr must be exclusively locked", __func__, lkp));
+	KASSERT(lkp->lk_lockholder == td || lkp->lk_lockholder == LK_KERNPROC,
+	    ("%s: %p lockmgr must be locked by curthread (%p)", __func__, lkp,
+	    td));
+
+	/*
+	 * Drop the lock reference and switch the owner.  This will result
+	 * in an atomic operation like td_lock is only accessed by curthread
+	 * and lk_lockholder only needs one write.
+	 */
+	if (lkp->lk_lockholder == td)
+		td->td_locks--;
+	lkp->lk_lockholder = LK_KERNPROC;
+}
+
+/*
  * Determine the status of a lock.
  */
 int

==== //depot/projects/dtrace/src/sys/sys/buf.h#6 (text+ko) ====

@@ -32,7 +32,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)buf.h	8.9 (Berkeley) 3/30/95
- * $FreeBSD: src/sys/sys/buf.h,v 1.196 2007/03/08 06:44:34 julian Exp $
+ * $FreeBSD: src/sys/sys/buf.h,v 1.197 2008/01/08 23:48:31 attilio Exp $
  */
 
 #ifndef _SYS_BUF_H_
@@ -340,11 +340,8 @@
 static __inline void
 BUF_KERNPROC(struct buf *bp)
 {
-	struct thread *td = curthread;
 
-	if (!TD_IS_IDLETHREAD(td) && bp->b_lock.lk_lockholder == td)
-		td->td_locks--;
-	bp->b_lock.lk_lockholder = LK_KERNPROC;
+	lockmgr_disown(&bp->b_lock);
 }
 #endif
 /*

==== //depot/projects/dtrace/src/sys/sys/lockmgr.h#10 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)lock.h	8.12 (Berkeley) 5/19/95
- * $FreeBSD: src/sys/sys/lockmgr.h,v 1.55 2007/12/28 00:38:13 attilio Exp $
+ * $FreeBSD: src/sys/sys/lockmgr.h,v 1.56 2008/01/08 23:48:31 attilio Exp $
  */
 
 #ifndef	_SYS_LOCKMGR_H_
@@ -197,6 +197,7 @@
 
 int	_lockmgr(struct lock *, u_int flags,
 		 struct mtx *, struct thread *p, char *file, int line);
+void	lockmgr_disown(struct lock *);
 void	lockmgr_printinfo(struct lock *);
 int	lockstatus(struct lock *, struct thread *);
 int	lockcount(struct lock *);

==== //depot/projects/dtrace/src/sys/sys/mbuf.h#12 (text+ko) ====

@@ -28,7 +28,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)mbuf.h	8.5 (Berkeley) 2/19/95
- * $FreeBSD: src/sys/sys/mbuf.h,v 1.218 2007/12/25 14:17:16 wkoszek Exp $
+ * $FreeBSD: src/sys/sys/mbuf.h,v 1.219 2008/01/09 06:29:49 kmacy Exp $
  */
 
 #ifndef _SYS_MBUF_H_
@@ -496,8 +496,11 @@
 static __inline void
 m_free_fast(struct mbuf *m)
 {
-	KASSERT(SLIST_EMPTY(&m->m_pkthdr.tags), ("doing fast free of mbuf with tags"));
-
+#ifdef INVARIANTS
+	if (m->m_flags & M_PKTHDR)

>>> TRUNCATED FOR MAIL (1000 lines) <<<



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