Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 12 Mar 2013 12:07:45 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r248191 - in user/attilio/vmobj-readlock: . lib/libnetgraph share/examples share/examples/cvsup share/misc sys/amd64/amd64 sys/amd64/include sys/arm/at91 sys/arm/include sys/dev/acpica ...
Message-ID:  <201303121207.r2CC7jFQ066175@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: attilio
Date: Tue Mar 12 12:07:45 2013
New Revision: 248191
URL: http://svnweb.freebsd.org/changeset/base/248191

Log:
  MFC

Deleted:
  user/attilio/vmobj-readlock/share/examples/cvsup/ports-supfile
  user/attilio/vmobj-readlock/share/examples/cvsup/refuse
  user/attilio/vmobj-readlock/share/examples/cvsup/refuse.README
Modified:
  user/attilio/vmobj-readlock/ObsoleteFiles.inc
  user/attilio/vmobj-readlock/lib/libnetgraph/msg.c
  user/attilio/vmobj-readlock/share/examples/Makefile
  user/attilio/vmobj-readlock/share/examples/cvsup/README
  user/attilio/vmobj-readlock/share/examples/cvsup/cvs-supfile
  user/attilio/vmobj-readlock/share/examples/cvsup/stable-supfile
  user/attilio/vmobj-readlock/share/misc/organization.dot
  user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c
  user/attilio/vmobj-readlock/sys/amd64/include/pmap.h
  user/attilio/vmobj-readlock/sys/arm/at91/if_ate.c
  user/attilio/vmobj-readlock/sys/arm/include/signal.h
  user/attilio/vmobj-readlock/sys/dev/acpica/acpi_hpet.c
  user/attilio/vmobj-readlock/sys/dev/ath/ath_hal/ar9002/ar9285_btcoex.c
  user/attilio/vmobj-readlock/sys/dev/iscsi/initiator/isc_soc.c
  user/attilio/vmobj-readlock/sys/dev/sound/pci/hda/hdaa_patches.c
  user/attilio/vmobj-readlock/sys/dev/sound/pci/hda/hdac.h
  user/attilio/vmobj-readlock/sys/dev/usb/serial/uftdi.c
  user/attilio/vmobj-readlock/sys/dev/usb/usbdevs
  user/attilio/vmobj-readlock/sys/fs/nfs/nfsport.h
  user/attilio/vmobj-readlock/sys/i386/i386/pmap.c
  user/attilio/vmobj-readlock/sys/i386/include/pmap.h
  user/attilio/vmobj-readlock/sys/kern/kern_synch.c
  user/attilio/vmobj-readlock/sys/kern/kern_time.c
  user/attilio/vmobj-readlock/sys/kern/subr_sleepqueue.c
  user/attilio/vmobj-readlock/sys/kern/uipc_socket.c
  user/attilio/vmobj-readlock/sys/kern/uipc_syscalls.c
  user/attilio/vmobj-readlock/sys/kern/uipc_usrreq.c
  user/attilio/vmobj-readlock/sys/modules/ath/Makefile
  user/attilio/vmobj-readlock/sys/net/if_bridge.c
  user/attilio/vmobj-readlock/sys/netinet/libalias/alias_db.c
  user/attilio/vmobj-readlock/sys/netinet6/raw_ip6.c
  user/attilio/vmobj-readlock/sys/vm/vm_page.c
  user/attilio/vmobj-readlock/sys/xdr/xdr_mbuf.c
  user/attilio/vmobj-readlock/usr.bin/top/machine.c
  user/attilio/vmobj-readlock/usr.sbin/bhyve/pci_passthru.c
Directory Properties:
  user/attilio/vmobj-readlock/   (props changed)
  user/attilio/vmobj-readlock/sys/   (props changed)
  user/attilio/vmobj-readlock/usr.sbin/bhyve/   (props changed)

Modified: user/attilio/vmobj-readlock/ObsoleteFiles.inc
==============================================================================
--- user/attilio/vmobj-readlock/ObsoleteFiles.inc	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/ObsoleteFiles.inc	Tue Mar 12 12:07:45 2013	(r248191)
@@ -38,6 +38,10 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20130311: Ports are no more available via cvsup
+OLD_FILES+=usr/share/examples/cvsup/ports-supfile
+OLD_FILES+=usr/share/examples/cvsup/refuse
+OLD_FILES+=usr/share/examples/cvsup/refuse.README
 # 20130309: NWFS and NCP supports removed
 OLD_FILES+=usr/bin/ncplist
 OLD_FILES+=usr/bin/ncplogin

Modified: user/attilio/vmobj-readlock/lib/libnetgraph/msg.c
==============================================================================
--- user/attilio/vmobj-readlock/lib/libnetgraph/msg.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/lib/libnetgraph/msg.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -234,7 +234,7 @@ NgDeliverMsg(int cs, const char *path,
 	}
 
 	/* Wait for reply if there should be one. */
-	if (msg->header.cmd & NGM_HASREPLY) {
+	if (msg->header.cmd & NGM_HASREPLY && !(msg->header.flags & NGF_RESP)) {
 		struct pollfd rfds;
 		int n;
 

Modified: user/attilio/vmobj-readlock/share/examples/Makefile
==============================================================================
--- user/attilio/vmobj-readlock/share/examples/Makefile	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/share/examples/Makefile	Tue Mar 12 12:07:45 2013	(r248191)
@@ -52,9 +52,6 @@ XFILES=	BSD_daemon/FreeBSD.pfa \
 	csh/dot.cshrc \
 	cvsup/README \
 	cvsup/cvs-supfile \
-	cvsup/ports-supfile \
-	cvsup/refuse \
-	cvsup/refuse.README \
 	cvsup/stable-supfile \
 	cvsup/standard-supfile \
 	diskless/ME \

Modified: user/attilio/vmobj-readlock/share/examples/cvsup/README
==============================================================================
--- user/attilio/vmobj-readlock/share/examples/cvsup/README	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/share/examples/cvsup/README	Tue Mar 12 12:07:45 2013	(r248191)
@@ -19,8 +19,6 @@ To maintain the sources for the FreeBSD-
 
     standard-supfile		Main source tree
 
-    ports-supfile		Ports collection
-
 To maintain the sources for the FreeBSD-stable release, use:
 
     stable-supfile		Main source tree
@@ -28,7 +26,7 @@ To maintain the sources for the FreeBSD-
 To maintain a copy of the CVS repository containing all versions of
 FreeBSD, use:
 
-    cvs-supfile			Main source tree and ports collection
+    cvs-supfile			Main source tree collection
 
 IMPORTANT: Before you use any of the supfiles in this directory,
 you will need to edit in an appropriate "host" setting.  See:

Modified: user/attilio/vmobj-readlock/share/examples/cvsup/cvs-supfile
==============================================================================
--- user/attilio/vmobj-readlock/share/examples/cvsup/cvs-supfile	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/share/examples/cvsup/cvs-supfile	Tue Mar 12 12:07:45 2013	(r248191)
@@ -43,9 +43,8 @@
 # prefix=/home/ncvs
 #		This specifies where to place the requested files.  A
 #		setting of "/home/ncvs" will place all of the files
-#		requested in /home/ncvs (e.g., "/home/ncvs/src/bin",
-#		"/home/ncvs/ports/archivers").  The prefix directory
-#		must exist in order to run CVSup.
+#		requested in /home/ncvs (e.g., "/home/ncvs/src/bin").
+#		The prefix directory must exist in order to run CVSup.
 
 # Defaults that apply to all the collections
 #
@@ -68,13 +67,6 @@
 # mega-collection.  It includes all of the individual "src-*" collections.
 src-all
 
-## Ports Collection.
-#
-# The easiest way to get the ports tree is to use the "ports-all"
-# mega-collection.  It includes all of the individual "ports-*"
-# collections,
-ports-all
-
 ## Projects
 #
 # This collection retrieves the projects tree of the FreeBSD

Modified: user/attilio/vmobj-readlock/share/examples/cvsup/stable-supfile
==============================================================================
--- user/attilio/vmobj-readlock/share/examples/cvsup/stable-supfile	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/share/examples/cvsup/stable-supfile	Tue Mar 12 12:07:45 2013	(r248191)
@@ -46,21 +46,6 @@
 #		in "/usr/src" (e.g., "/usr/src/bin", "/usr/src/lib").
 #		The prefix directory must exist in order to run CVSup.
 #
-###############################################################################
-#
-# DANGER!  WARNING!  LOOK OUT!  VORSICHT!
-#
-# If you add any of the ports collections to this file, be sure to
-# specify them with a "tag" value set to ".", like this:
-#
-#   ports-all tag=.
-#
-# If you leave out the "tag=." portion, CVSup will delete all of
-# the files in your ports.  That is because the ports
-# collections do not use the same tags as the main part of the FreeBSD 
-# source tree.
-#
-###############################################################################
 
 # Defaults that apply to all the collections
 #

Modified: user/attilio/vmobj-readlock/share/misc/organization.dot
==============================================================================
--- user/attilio/vmobj-readlock/share/misc/organization.dot	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/share/misc/organization.dot	Tue Mar 12 12:07:45 2013	(r248191)
@@ -30,7 +30,7 @@ coresecretary [label="Core Team Secretar
 doccommitters [label="Doc/www Committers\ndoc-committers@FreeBSD.org"]
 doceng [label="Documentation Engineering Team\ndoceng@FreeBSD.org\ngjb, blackend,\ngabor, hrs"]
 portscommitters [label="Ports Committers\nports-committers@FreeBSD.org"]
-portmgr [label="Port Management Team\nportmgr@FreeBSD.org\ntabthorpe, marcus, bapt, beat,\nerwin, linimon, pav,\nitetcu, miwi"]
+portmgr [label="Port Management Team\nportmgr@FreeBSD.org\ntabthorpe, marcus, bapt, \nerwin, pav,\nitetcu, miwi"]
 portmgrsecretary [label="Port Management Team Secretary\nportmgr-secretary@FreeBSD.org\ntabthorpe"]
 re [label="Primary Release Engineering Team\nre@FreeBSD.org\nkib, blackend, jpaetzel, hrs, kensmith"]
 secteam [label="Security Team\nsecteam@FreeBSD.org\nsimon, qingli, delphij,\nremko, philip, stas, cperciva,\ncsjp, rwatson, miwi, bz"]
@@ -43,13 +43,12 @@ srccommitters [label="Src Committers\nsr
 
 accounts [label="Accounts Team\naccounts@FreeBSD.org\nmarkm, simon, kensmith,\ndhw"]
 backups [label="Backup Administrators\nbackups@FreeBSD.org\nsimon, kensmith,\ndhw"]
-bugmeister [label="Bugmeister Team\nbugmeister@FreeBSD.org\neadler, gavin, gonzo, linimon"]
+bugmeister [label="Bugmeister Team\nbugmeister@FreeBSD.org\neadler, gavin, gonzo"]
 clusteradm [label="Cluster Administrators\nclusteradm@FreeBSD.org\nbrd, simon, ps,\nkensmith, peter"]
 cvsupmaster [label="CVSup Mirror Site Coordinators\ncvsup-master@FreeBSD.org\nkuriyama, jdp,\nkensmith"]
 dnsadm [label="DNS Administrators\ndnsadm@FreeBSD.org\nbillf, dg, ps,\nkensmith, peter"]
 mirroradmin [label="FTP/WWW Mirror Site Coordinators\nmirror-admin@FreeBSD.org\nkuriyama, kensmith"]
 ncvs [label="CVS src Repository Managers\nncvs@FreeBSD.org\njoe, kuriyama, markm,\nsimon, peter"]
-pcvs [label="CVS ports Repository Managers\npcvs@FreeBSD.org\nmarcus, joe, kuriyama,\nmarkm, simon"]
 perforceadmin [label="Perforce Repository Administrators\nperforce-admin@FreeBSD.org\nscottl, kensmith, gordon,\nrwatson, peter, dhw"]
 postmaster [label="Postmaster Team\npostmaster@FreeBSD.org\njmb, brd, sahil, dhw"]
 refadm [label="Reference Systems Administrators\nrefadm@FreeBSD.org\njake, billf, markm, simon,\nobrien, ps, kensmith,\npeter, dhw"]
@@ -70,8 +69,6 @@ _admin -> backups
 _admin -> bugmeister
 _admin -> clusteradm
 _admin -> ncvs
-_admin -> pcvs
-_admin -> dcvs
 _admin -> cvsupmaster
 _admin -> dnsadm
 _admin -> mirroradmin

Modified: user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -131,6 +131,7 @@ __FBSDID("$FreeBSD$");
 #include <vm/vm_extern.h>
 #include <vm/vm_pageout.h>
 #include <vm/vm_pager.h>
+#include <vm/vm_radix.h>
 #include <vm/vm_reserv.h>
 #include <vm/uma.h>
 
@@ -306,7 +307,6 @@ static boolean_t pmap_try_insert_pv_entr
 static void pmap_update_pde(pmap_t pmap, vm_offset_t va, pd_entry_t *pde,
     pd_entry_t newpde);
 static void pmap_update_pde_invalidate(vm_offset_t va, pd_entry_t newpde);
-static vm_page_t pmap_vmpage_splay(vm_pindex_t pindex, vm_page_t root);
 
 static vm_page_t _pmap_allocpte(pmap_t pmap, vm_pindex_t ptepindex,
 		struct rwlock **lockp);
@@ -1528,31 +1528,12 @@ pmap_add_delayed_free_list(vm_page_t m, 
  * for mapping a distinct range of virtual addresses.  The pmap's collection is
  * ordered by this virtual address range.
  */
-static void
+static __inline void
 pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte)
 {
-	vm_page_t root;
 
 	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
-	root = pmap->pm_root;
-	if (root == NULL) {
-		mpte->md.pv_left = NULL;
-		mpte->md.pv_right = NULL;
-	} else {
-		root = pmap_vmpage_splay(mpte->pindex, root);
-		if (mpte->pindex < root->pindex) {
-			mpte->md.pv_left = root->md.pv_left;
-			mpte->md.pv_right = root;
-			root->md.pv_left = NULL;
-		} else if (mpte->pindex == root->pindex)
-			panic("pmap_insert_pt_page: pindex already inserted");
-		else {
-			mpte->md.pv_right = root->md.pv_right;
-			mpte->md.pv_left = root;
-			root->md.pv_right = NULL;
-		}
-	}
-	pmap->pm_root = mpte;
+	vm_radix_insert(&pmap->pm_root, mpte->pindex, mpte);
 }
 
 /*
@@ -1560,19 +1541,12 @@ pmap_insert_pt_page(pmap_t pmap, vm_page
  * specified pmap's collection of idle page table pages.  Returns NULL if there
  * is no page table page corresponding to the specified virtual address.
  */
-static vm_page_t
+static __inline vm_page_t
 pmap_lookup_pt_page(pmap_t pmap, vm_offset_t va)
 {
-	vm_page_t mpte;
-	vm_pindex_t pindex = pmap_pde_pindex(va);
 
 	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
-	if ((mpte = pmap->pm_root) != NULL && mpte->pindex != pindex) {
-		mpte = pmap_vmpage_splay(pindex, mpte);
-		if ((pmap->pm_root = mpte)->pindex != pindex)
-			mpte = NULL;
-	}
-	return (mpte);
+	return (vm_radix_lookup(&pmap->pm_root, pmap_pde_pindex(va)));
 }
 
 /*
@@ -1580,31 +1554,12 @@ pmap_lookup_pt_page(pmap_t pmap, vm_offs
  * of idle page table pages.  The specified page table page must be a member of
  * the pmap's collection.
  */
-static void
+static __inline void
 pmap_remove_pt_page(pmap_t pmap, vm_page_t mpte)
 {
-	vm_page_t root;
 
 	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
-	if (mpte != pmap->pm_root) {
-		root = pmap_vmpage_splay(mpte->pindex, pmap->pm_root);
-		KASSERT(mpte == root,
-		    ("pmap_remove_pt_page: mpte %p is missing from pmap %p",
-		    mpte, pmap));
-	}
-	if (mpte->md.pv_left == NULL)
-		root = mpte->md.pv_right;
-	else {
-		root = pmap_vmpage_splay(mpte->pindex, mpte->md.pv_left);
-		root->md.pv_right = mpte->md.pv_right;
-	}
-	pmap->pm_root = root;
-
-	/*
-	 * Reinitialize the pv_list which could be dirty now because of the
-	 * splay tree work.
-	 */
-	TAILQ_INIT(&mpte->md.pv_list);
+	vm_radix_remove(&pmap->pm_root, mpte->pindex);
 }
 
 /*
@@ -1680,61 +1635,6 @@ _pmap_unwire_ptp(pmap_t pmap, vm_offset_
 }
 
 /*
- *	Implements Sleator and Tarjan's top-down splay algorithm.  Returns
- *	the vm_page containing the given pindex.  If, however, that
- *	pindex is not found in the pmap, returns a vm_page that is
- *	adjacent to the pindex, coming before or after it.
- */
-static vm_page_t
-pmap_vmpage_splay(vm_pindex_t pindex, vm_page_t root)
-{
-	struct vm_page dummy;
-	vm_page_t lefttreemax, righttreemin, y;
-
-	if (root == NULL)
-		return (root);
-	lefttreemax = righttreemin = &dummy;
-	for (;; root = y) {
-		if (pindex < root->pindex) {
-			if ((y = root->md.pv_left) == NULL)
-				break;
-			if (pindex < y->pindex) {
-				/* Rotate right. */
-				root->md.pv_left = y->md.pv_right;
-				y->md.pv_right = root;
-				root = y;
-				if ((y = root->md.pv_left) == NULL)
-					break;
-			}
-			/* Link into the new root's right tree. */
-			righttreemin->md.pv_left = root;
-			righttreemin = root;
-		} else if (pindex > root->pindex) {
-			if ((y = root->md.pv_right) == NULL)
-				break;
-			if (pindex > y->pindex) {
-				/* Rotate left. */
-				root->md.pv_right = y->md.pv_left;
-				y->md.pv_left = root;
-				root = y;
-				if ((y = root->md.pv_right) == NULL)
-					break;
-			}
-			/* Link into the new root's left tree. */
-			lefttreemax->md.pv_right = root;
-			lefttreemax = root;
-		} else
-			break;
-	}
-	/* Assemble the new root. */
-	lefttreemax->md.pv_right = root->md.pv_left;
-	righttreemin->md.pv_left = root->md.pv_right;
-	root->md.pv_left = dummy.md.pv_right;
-	root->md.pv_right = dummy.md.pv_left;
-	return (root);
-}
-
-/*
  * After removing a page table entry, this routine is used to
  * conditionally free the page, and manage the hold/wire counts.
  */
@@ -1756,7 +1656,7 @@ pmap_pinit0(pmap_t pmap)
 
 	PMAP_LOCK_INIT(pmap);
 	pmap->pm_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(KPML4phys);
-	pmap->pm_root = NULL;
+	pmap->pm_root.rt_root = 0;
 	CPU_ZERO(&pmap->pm_active);
 	PCPU_SET(curpmap, pmap);
 	TAILQ_INIT(&pmap->pm_pvchunk);
@@ -1797,7 +1697,7 @@ pmap_pinit(pmap_t pmap)
 	/* install self-referential address mapping entry(s) */
 	pmap->pm_pml4[PML4PML4I] = VM_PAGE_TO_PHYS(pml4pg) | PG_V | PG_RW | PG_A | PG_M;
 
-	pmap->pm_root = NULL;
+	pmap->pm_root.rt_root = 0;
 	CPU_ZERO(&pmap->pm_active);
 	TAILQ_INIT(&pmap->pm_pvchunk);
 	bzero(&pmap->pm_stats, sizeof pmap->pm_stats);
@@ -2039,7 +1939,7 @@ pmap_release(pmap_t pmap)
 	KASSERT(pmap->pm_stats.resident_count == 0,
 	    ("pmap_release: pmap resident count %ld != 0",
 	    pmap->pm_stats.resident_count));
-	KASSERT(pmap->pm_root == NULL,
+	KASSERT(vm_radix_is_empty(&pmap->pm_root),
 	    ("pmap_release: pmap has reserved page table page(s)"));
 
 	m = PHYS_TO_VM_PAGE(pmap->pm_pml4[PML4PML4I] & PG_FRAME);

Modified: user/attilio/vmobj-readlock/sys/amd64/include/pmap.h
==============================================================================
--- user/attilio/vmobj-readlock/sys/amd64/include/pmap.h	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/amd64/include/pmap.h	Tue Mar 12 12:07:45 2013	(r248191)
@@ -150,6 +150,8 @@
 #include <sys/_lock.h>
 #include <sys/_mutex.h>
 
+#include <vm/_vm_radix.h>
+
 typedef u_int64_t pd_entry_t;
 typedef u_int64_t pt_entry_t;
 typedef u_int64_t pdp_entry_t;
@@ -235,20 +237,10 @@ struct	pv_entry;
 struct	pv_chunk;
 
 struct md_page {
-	union {
-		TAILQ_HEAD(,pv_entry)	pvi_list;
-		struct {
-			vm_page_t	pii_left;
-			vm_page_t	pii_right;
-		} pvi_siters;
-	} pv_structs;
-	int				pat_mode;
+	TAILQ_HEAD(,pv_entry)	pv_list;
+	int			pat_mode;
 };
 
-#define	pv_list		pv_structs.pvi_list
-#define	pv_left		pv_structs.pvi_siters.pii_left
-#define	pv_right	pv_structs.pvi_siters.pii_right
-
 /*
  * The kernel virtual address (KVA) of the level 4 page table page is always
  * within the direct map (DMAP) region.
@@ -260,7 +252,7 @@ struct pmap {
 	cpuset_t		pm_active;	/* active on cpus */
 	/* spare u_int here due to padding */
 	struct pmap_statistics	pm_stats;	/* pmap statistics */
-	vm_page_t		pm_root;	/* spare page table pages */
+	struct vm_radix		pm_root;	/* spare page table pages */
 };
 
 typedef struct pmap	*pmap_t;

Modified: user/attilio/vmobj-readlock/sys/arm/at91/if_ate.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/arm/at91/if_ate.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/arm/at91/if_ate.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -899,12 +899,9 @@ ate_intr(void *xsc)
 			/* FCS is not coppied into mbuf. */
 			remain = (sc->rx_descs[idx].status & ETH_LEN_MASK) - 4;
 
-			/* Get an appropriately sized mbuf  */
-			if (remain + ETHER_ALIGN >= MINCLSIZE)
-				mb = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR);
-			else
-				MGETHDR(mb, M_NOWAIT, MT_DATA);
-
+			/* Get an appropriately sized mbuf. */
+			mb = m_get2(M_NOWAIT, MT_DATA, M_PKTHDR,
+			    remain + ETHER_ALIGN);
 			if (mb == NULL) {
 				sc->ifp->if_iqdrops++;
 				rxdhead->status = 0;

Modified: user/attilio/vmobj-readlock/sys/arm/include/signal.h
==============================================================================
--- user/attilio/vmobj-readlock/sys/arm/include/signal.h	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/arm/include/signal.h	Tue Mar 12 12:07:45 2013	(r248191)
@@ -42,6 +42,7 @@ typedef	long sig_atomic_t;
 #if __BSD_VISIBLE
 
 struct sigcontext {
+	int _dummy;
 };
 
 #endif

Modified: user/attilio/vmobj-readlock/sys/dev/acpica/acpi_hpet.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/dev/acpica/acpi_hpet.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/dev/acpica/acpi_hpet.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -675,7 +675,8 @@ hpet_attach(device_t dev)
 		if (t->pcpu_master >= 0) {
 			t->et.et_flags |= ET_FLAGS_PERCPU;
 			t->et.et_quality += 100;
-		}
+		} else if (mp_ncpus >= 8)
+			t->et.et_quality -= 100;
 		if ((t->caps & HPET_TCAP_PER_INT) == 0)
 			t->et.et_quality -= 10;
 		t->et.et_frequency = sc->freq;

Modified: user/attilio/vmobj-readlock/sys/dev/ath/ath_hal/ar9002/ar9285_btcoex.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/dev/ath/ath_hal/ar9002/ar9285_btcoex.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/dev/ath/ath_hal/ar9002/ar9285_btcoex.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -50,7 +50,7 @@ ar9285BTCoexAntennaDiversity(struct ath_
 	if ((ahp->ah_btCoexFlag & HAL_BT_COEX_FLAG_ANT_DIV_ALLOW) ||
 	    (AH5212(ah)->ah_diversity != HAL_ANT_VARIABLE)) {
 	if ((ahp->ah_btCoexFlag & HAL_BT_COEX_FLAG_ANT_DIV_ENABLE) &&
-	     (AH5212(ah)->ah_diversity == HAL_ANT_VARIABLE)) {
+	     (AH5212(ah)->ah_antControl == HAL_ANT_VARIABLE)) {
 		/* Enable antenna diversity */
 		ant_div_control1 = HAL_BT_COEX_ANTDIV_CONTROL1_ENABLE;
 		ant_div_control2 = HAL_BT_COEX_ANTDIV_CONTROL2_ENABLE;
@@ -63,7 +63,7 @@ ar9285BTCoexAntennaDiversity(struct ath_
 		OS_REG_WRITE(ah, AR_PHY_SWITCH_COM,
 		    HAL_BT_COEX_ANT_DIV_SWITCH_COM);
 		OS_REG_RMW(ah, AR_PHY_SWITCH_CHAIN_0, 0, 0xf0000000);
-	} else if (AH5212(ah)->ah_diversity == HAL_ANT_FIXED_B) {
+	} else if (AH5212(ah)->ah_antControl == HAL_ANT_FIXED_B) {
 		/* Disable antenna diversity. Use antenna B(LNA2) only. */
 		ant_div_control1 = HAL_BT_COEX_ANTDIV_CONTROL1_FIXED_B;
 		ant_div_control2 = HAL_BT_COEX_ANTDIV_CONTROL2_FIXED_B;

Modified: user/attilio/vmobj-readlock/sys/dev/iscsi/initiator/isc_soc.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/dev/iscsi/initiator/isc_soc.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/dev/iscsi/initiator/isc_soc.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -91,7 +91,7 @@ isc_sendPDU(isc_session_t *sp, pduq_t *p
      /* 
       | mbuf for the iSCSI header
       */
-     MGETHDR(mh, M_TRYWAIT, MT_DATA);
+     MGETHDR(mh, M_WAITOK, MT_DATA);
      mh->m_pkthdr.rcvif = NULL;
      mh->m_next = NULL;
      mh->m_len = sizeof(union ipdu_u);
@@ -132,7 +132,7 @@ isc_sendPDU(isc_session_t *sp, pduq_t *p
           while(len > 0) {
 	       int l;
 
-	       MGET(md, M_TRYWAIT, MT_DATA);
+	       MGET(md, M_WAITOK, MT_DATA);
 	       md->m_ext.ref_cnt = &ou_refcnt;
 	       l = min(MCLBYTES, len);
 	       debug(4, "setting ext_free(arg=%p len/l=%d/%d)", pq->buf, len, l);
@@ -150,7 +150,7 @@ isc_sendPDU(isc_session_t *sp, pduq_t *p
 	       off += l;
           }
 	  if(((pp->ds_len & 03) != 0) || ISOK2DIG(sp->dataDigest, pp)) {
-	       MGET(md, M_TRYWAIT, MT_DATA);
+	       MGET(md, M_WAITOK, MT_DATA);
 	       if(pp->ds_len & 03)
 		    len = 4 - (pp->ds_len & 03);
 	       else

Modified: user/attilio/vmobj-readlock/sys/dev/sound/pci/hda/hdaa_patches.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/dev/sound/pci/hda/hdaa_patches.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/dev/sound/pci/hda/hdaa_patches.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -344,7 +344,9 @@ hdac_pin_patch(struct hdaa_widget *w)
 			break;
 		}
 	} else if (id == HDA_CODEC_ALC269 &&
-	    subid == LENOVO_X1CRBN_SUBVENDOR) {
+	    (subid == LENOVO_X1CRBN_SUBVENDOR ||
+	    subid == LENOVO_T430_SUBVENDOR ||
+	    subid == LENOVO_T430S_SUBVENDOR)) {
 		switch (nid) {
 		case 21:
 			patch = "as=1 seq=15";

Modified: user/attilio/vmobj-readlock/sys/dev/sound/pci/hda/hdac.h
==============================================================================
--- user/attilio/vmobj-readlock/sys/dev/sound/pci/hda/hdac.h	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/dev/sound/pci/hda/hdac.h	Tue Mar 12 12:07:45 2013	(r248191)
@@ -225,6 +225,8 @@
 #define LENOVO_X220_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x21da)
 #define LENOVO_X300_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x20ac)
 #define	LENOVO_T420_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x21ce)
+#define	LENOVO_T430_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x21f3)
+#define	LENOVO_T430S_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x21fb)
 #define	LENOVO_T520_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x21cf)
 #define LENOVO_ALL_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0xffff)
 

Modified: user/attilio/vmobj-readlock/sys/dev/usb/serial/uftdi.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/dev/usb/serial/uftdi.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/dev/usb/serial/uftdi.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -753,6 +753,8 @@ static const STRUCT_USB_HOST_ID uftdi_de
 	UFTDI_DEV(MOBILITY, USB_SERIAL, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(OLIMEX, ARM_USB_OCD, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
 	UFTDI_DEV(OLIMEX, ARM_USB_OCD_H, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
+	UFTDI_DEV(OPTO, CRD7734, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(OPTO, CRD7734_1, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(PAPOUCH, AD4USB, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(PAPOUCH, AP485, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(PAPOUCH, AP485_2, UFTDI_TYPE_AUTO),

Modified: user/attilio/vmobj-readlock/sys/dev/usb/usbdevs
==============================================================================
--- user/attilio/vmobj-readlock/sys/dev/usb/usbdevs	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/dev/usb/usbdevs	Tue Mar 12 12:07:45 2013	(r248191)
@@ -323,6 +323,7 @@ vendor GUNZE		0x0637	Gunze Electronics U
 vendor AVISION		0x0638	Avision
 vendor TEAC		0x0644	TEAC
 vendor ACTON		0x0647	Acton Research Corp.
+vendor OPTO		0x065a	Optoelectronics Co., Ltd
 vendor SGI		0x065e	Silicon Graphics
 vendor SANWASUPPLY	0x0663	Sanwa Supply
 vendor MEGATEC		0x0665	Megatec
@@ -3150,6 +3151,13 @@ product OPTION ICON321		0xd031	Globetrot
 product OPTION ICON505		0xd055	Globetrotter iCON 505
 product OPTION ICON452		0x7901	Globetrotter iCON 452
 
+/* Optoelectronics Co., Ltd */
+product OPTO BARCODE		0x0001	Barcode Reader
+product OPTO OPTICONCODE	0x0009	Opticon Code Reader
+product OPTO BARCODE_1		0xa002	Barcode Reader
+product OPTO CRD7734		0xc000	USB Cradle CRD-7734-RU
+product OPTO CRD7734_1		0xc001	USB Cradle CRD-7734-RU
+
 /* OvisLink product */
 product OVISLINK RT3072		0x3072	RT3072
 

Modified: user/attilio/vmobj-readlock/sys/fs/nfs/nfsport.h
==============================================================================
--- user/attilio/vmobj-readlock/sys/fs/nfs/nfsport.h	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/fs/nfs/nfsport.h	Tue Mar 12 12:07:45 2013	(r248191)
@@ -140,32 +140,32 @@
  * Allocate mbufs. Must succeed and never set the mbuf ptr to NULL.
  */
 #define	NFSMGET(m)	do { 					\
-		MGET((m), M_TRYWAIT, MT_DATA); 			\
+		MGET((m), M_WAITOK, MT_DATA); 			\
 		while ((m) == NULL ) { 				\
 			(void) nfs_catnap(PZERO, 0, "nfsmget");	\
-			MGET((m), M_TRYWAIT, MT_DATA); 		\
+			MGET((m), M_WAITOK, MT_DATA); 		\
 		} 						\
 	} while (0)
 #define	NFSMGETHDR(m)	do { 					\
-		MGETHDR((m), M_TRYWAIT, MT_DATA);		\
+		MGETHDR((m), M_WAITOK, MT_DATA);		\
 		while ((m) == NULL ) { 				\
 			(void) nfs_catnap(PZERO, 0, "nfsmget");	\
-			MGETHDR((m), M_TRYWAIT, MT_DATA); 	\
+			MGETHDR((m), M_WAITOK, MT_DATA); 	\
 		} 						\
 	} while (0)
 #define	NFSMCLGET(m, w)	do { 					\
-		MGET((m), M_TRYWAIT, MT_DATA); 			\
+		MGET((m), M_WAITOK, MT_DATA); 			\
 		while ((m) == NULL ) { 				\
 			(void) nfs_catnap(PZERO, 0, "nfsmget");	\
-			MGET((m), M_TRYWAIT, MT_DATA); 		\
+			MGET((m), M_WAITOK, MT_DATA); 		\
 		} 						\
 		MCLGET((m), (w));				\
 	} while (0)
 #define	NFSMCLGETHDR(m, w) do { 				\
-		MGETHDR((m), M_TRYWAIT, MT_DATA);		\
+		MGETHDR((m), M_WAITOK, MT_DATA);		\
 		while ((m) == NULL ) { 				\
 			(void) nfs_catnap(PZERO, 0, "nfsmget");	\
-			MGETHDR((m), M_TRYWAIT, MT_DATA); 	\
+			MGETHDR((m), M_WAITOK, MT_DATA); 	\
 		} 						\
 	} while (0)
 #define	NFSMTOD	mtod

Modified: user/attilio/vmobj-readlock/sys/i386/i386/pmap.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/i386/i386/pmap.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/i386/i386/pmap.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -133,6 +133,7 @@ __FBSDID("$FreeBSD$");
 #include <vm/vm_extern.h>
 #include <vm/vm_pageout.h>
 #include <vm/vm_pager.h>
+#include <vm/vm_radix.h>
 #include <vm/vm_reserv.h>
 #include <vm/uma.h>
 
@@ -330,7 +331,6 @@ static boolean_t pmap_try_insert_pv_entr
 static void pmap_update_pde(pmap_t pmap, vm_offset_t va, pd_entry_t *pde,
     pd_entry_t newpde);
 static void pmap_update_pde_invalidate(vm_offset_t va, pd_entry_t newpde);
-static vm_page_t pmap_vmpage_splay(vm_pindex_t pindex, vm_page_t root);
 
 static vm_page_t pmap_allocpte(pmap_t pmap, vm_offset_t va, int flags);
 
@@ -1604,31 +1604,12 @@ pmap_add_delayed_free_list(vm_page_t m, 
  * for mapping a distinct range of virtual addresses.  The pmap's collection is
  * ordered by this virtual address range.
  */
-static void
+static __inline void
 pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte)
 {
-	vm_page_t root;
 
 	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
-	root = pmap->pm_root;
-	if (root == NULL) {
-		mpte->md.pv_left = NULL;
-		mpte->md.pv_right = NULL;
-	} else {
-		root = pmap_vmpage_splay(mpte->pindex, root);
-		if (mpte->pindex < root->pindex) {
-			mpte->md.pv_left = root->md.pv_left;
-			mpte->md.pv_right = root;
-			root->md.pv_left = NULL;
-		} else if (mpte->pindex == root->pindex)
-			panic("pmap_insert_pt_page: pindex already inserted");
-		else {
-			mpte->md.pv_right = root->md.pv_right;
-			mpte->md.pv_left = root;
-			root->md.pv_right = NULL;
-		}
-	}
-	pmap->pm_root = mpte;
+	vm_radix_insert(&pmap->pm_root, mpte->pindex, mpte);
 }
 
 /*
@@ -1636,19 +1617,12 @@ pmap_insert_pt_page(pmap_t pmap, vm_page
  * specified pmap's collection of idle page table pages.  Returns NULL if there
  * is no page table page corresponding to the specified virtual address.
  */
-static vm_page_t
+static __inline vm_page_t
 pmap_lookup_pt_page(pmap_t pmap, vm_offset_t va)
 {
-	vm_page_t mpte;
-	vm_pindex_t pindex = va >> PDRSHIFT;
 
 	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
-	if ((mpte = pmap->pm_root) != NULL && mpte->pindex != pindex) {
-		mpte = pmap_vmpage_splay(pindex, mpte);
-		if ((pmap->pm_root = mpte)->pindex != pindex)
-			mpte = NULL;
-	}
-	return (mpte);
+	return (vm_radix_lookup(&pmap->pm_root, va >> PDRSHIFT));
 }
 
 /*
@@ -1656,27 +1630,12 @@ pmap_lookup_pt_page(pmap_t pmap, vm_offs
  * of idle page table pages.  The specified page table page must be a member of
  * the pmap's collection.
  */
-static void
+static __inline void
 pmap_remove_pt_page(pmap_t pmap, vm_page_t mpte)
 {
-	vm_page_t root;
 
 	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
-	if (mpte != pmap->pm_root)
-		pmap_vmpage_splay(mpte->pindex, pmap->pm_root);
-	if (mpte->md.pv_left == NULL)
-		root = mpte->md.pv_right;
-	else {
-		root = pmap_vmpage_splay(mpte->pindex, mpte->md.pv_left);
-		root->md.pv_right = mpte->md.pv_right;
-	}
-	pmap->pm_root = root;
-
-	/*
-	 * Reinitialize the pv_list which could be dirty now because of the
-	 * splay tree work.
-	 */
-	TAILQ_INIT(&mpte->md.pv_list);
+	vm_radix_remove(&pmap->pm_root, mpte->pindex);
 }
 
 /*
@@ -1730,61 +1689,6 @@ _pmap_unwire_ptp(pmap_t pmap, vm_page_t 
 }
 
 /*
- *     Implements Sleator and Tarjan's top-down splay algorithm.  Returns
- *     the vm_page containing the given pindex.  If, however, that
- *     pindex is not found in the pmap, returns a vm_page that is
- *     adjacent to the pindex, coming before or after it.
- */
-static vm_page_t
-pmap_vmpage_splay(vm_pindex_t pindex, vm_page_t root)
-{
-	struct vm_page dummy;
-	vm_page_t lefttreemax, righttreemin, y;
-
-	if (root == NULL)
-		return (root);
-	lefttreemax = righttreemin = &dummy;
-	for (;; root = y) {
-		if (pindex < root->pindex) {
-			if ((y = root->md.pv_left) == NULL)
-				break;
-			if (pindex < y->pindex) {
-				/* Rotate right. */
-				root->md.pv_left = y->md.pv_right;
-				y->md.pv_right = root;
-				root = y;
-				if ((y = root->md.pv_left) == NULL)
-					break;
-			}
-			/* Link into the new root's right tree. */
-			righttreemin->md.pv_left = root;
-			righttreemin = root;
-		} else if (pindex > root->pindex) {
-			if ((y = root->md.pv_right) == NULL)
-				break;
-			if (pindex > y->pindex) {
-				/* Rotate left. */
-				root->md.pv_right = y->md.pv_left;
-				y->md.pv_left = root;
-				root = y;
-				if ((y = root->md.pv_right) == NULL)
-					break;
-			}
-			/* Link into the new root's left tree. */
-			lefttreemax->md.pv_right = root;
-			lefttreemax = root;
-		} else
-			break;
-	}
-	/* Assemble the new root. */
-	lefttreemax->md.pv_right = root->md.pv_left;
-	righttreemin->md.pv_left = root->md.pv_right;
-	root->md.pv_left = dummy.md.pv_right;
-	root->md.pv_right = dummy.md.pv_left;
-	return (root);
-}
-
-/*
  * After removing a page table entry, this routine is used to
  * conditionally free the page, and manage the hold/wire counts.
  */
@@ -1818,7 +1722,7 @@ pmap_pinit0(pmap_t pmap)
 #ifdef PAE
 	pmap->pm_pdpt = (pdpt_entry_t *)(KERNBASE + (vm_offset_t)IdlePDPT);
 #endif
-	pmap->pm_root = NULL;
+	pmap->pm_root.rt_root = 0;
 	CPU_ZERO(&pmap->pm_active);
 	PCPU_SET(curpmap, pmap);
 	TAILQ_INIT(&pmap->pm_pvchunk);
@@ -1857,9 +1761,9 @@ pmap_pinit(pmap_t pmap)
 		KASSERT(pmap_kextract((vm_offset_t)pmap->pm_pdpt) < (4ULL<<30),
 		    ("pmap_pinit: pdpt above 4g"));
 #endif
-		pmap->pm_root = NULL;
+		pmap->pm_root.rt_root = 0;
 	}
-	KASSERT(pmap->pm_root == NULL,
+	KASSERT(vm_radix_is_empty(&pmap->pm_root),
 	    ("pmap_pinit: pmap has reserved page table page(s)"));
 
 	/*
@@ -2123,7 +2027,7 @@ pmap_release(pmap_t pmap)
 	KASSERT(pmap->pm_stats.resident_count == 0,
 	    ("pmap_release: pmap resident count %ld != 0",
 	    pmap->pm_stats.resident_count));
-	KASSERT(pmap->pm_root == NULL,
+	KASSERT(vm_radix_is_empty(&pmap->pm_root),
 	    ("pmap_release: pmap has reserved page table page(s)"));
 
 	pmap_lazyfix(pmap);

Modified: user/attilio/vmobj-readlock/sys/i386/include/pmap.h
==============================================================================
--- user/attilio/vmobj-readlock/sys/i386/include/pmap.h	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/i386/include/pmap.h	Tue Mar 12 12:07:45 2013	(r248191)
@@ -159,6 +159,8 @@
 #include <sys/_lock.h>
 #include <sys/_mutex.h>
 
+#include <vm/_vm_radix.h>
+
 #ifdef PAE
 
 typedef uint64_t pdpt_entry_t;
@@ -426,20 +428,10 @@ struct	pv_entry;
 struct	pv_chunk;
 
 struct md_page {
-	union {
-		TAILQ_HEAD(,pv_entry)	pvi_list;
-		struct {
-			vm_page_t	pii_left;
-			vm_page_t	pii_right;
-		} pvi_siters;
-	} pv_structs;
-	int				pat_mode;
+	TAILQ_HEAD(,pv_entry)	pv_list;
+	int			pat_mode;
 };
 
-#define	pv_list		pv_structs.pvi_list
-#define	pv_left		pv_structs.pvi_siters.pii_left
-#define	pv_right	pv_structs.pvi_siters.pii_right
-
 struct pmap {
 	struct mtx		pm_mtx;
 	pd_entry_t		*pm_pdir;	/* KVA of page directory */
@@ -451,7 +443,7 @@ struct pmap {
 	pdpt_entry_t		*pm_pdpt;	/* KVA of page director pointer
 						   table */
 #endif
-	vm_page_t		pm_root;	/* spare page table pages */
+	struct vm_radix		pm_root;	/* spare page table pages */
 };
 
 typedef struct pmap	*pmap_t;

Modified: user/attilio/vmobj-readlock/sys/kern/kern_synch.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/kern/kern_synch.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/kern/kern_synch.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -85,7 +85,7 @@ SYSINIT(synch_setup, SI_SUB_KICK_SCHEDUL
     NULL);
 
 int	hogticks;
-static int pause_wchan;
+static uint8_t pause_wchan[MAXCPU];
 
 static struct callout loadav_callout;
 
@@ -198,7 +198,8 @@ _sleep(void *ident, struct lock_object *
 	if (TD_ON_SLEEPQ(td))
 		sleepq_remove(td, td->td_wchan);
 
-	if (ident == &pause_wchan)
+	if ((uint8_t *)ident >= &pause_wchan[0] &&
+	    (uint8_t *)ident <= &pause_wchan[MAXCPU - 1])
 		sleepq_flags = SLEEPQ_PAUSE;
 	else
 		sleepq_flags = SLEEPQ_SLEEP;
@@ -372,7 +373,7 @@ pause_sbt(const char *wmesg, sbintime_t 
 		DELAY((sbt & 0xffffffff) / SBT_1US);
 		return (0);
 	}
-	return (_sleep(&pause_wchan, NULL, 0, wmesg, sbt, pr, flags));
+	return (_sleep(&pause_wchan[curcpu], NULL, 0, wmesg, sbt, pr, flags));
 }
 
 /*

Modified: user/attilio/vmobj-readlock/sys/kern/kern_time.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/kern/kern_time.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/kern/kern_time.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -477,7 +477,7 @@ kern_clock_getres(struct thread *td, clo
 	return (0);
 }
 
-static int nanowait;
+static uint8_t nanowait[MAXCPU];
 
 int
 kern_nanosleep(struct thread *td, struct timespec *rqt, struct timespec *rmt)
@@ -503,8 +503,8 @@ kern_nanosleep(struct thread *td, struct
 	if (TIMESEL(&sbt, tmp))
 		sbt += tc_tick_sbt;
 	sbt += tmp;
-	error = tsleep_sbt(&nanowait, PWAIT | PCATCH, "nanslp", sbt, prec,
-	    C_ABSOLUTE);
+	error = tsleep_sbt(&nanowait[curcpu], PWAIT | PCATCH, "nanslp",
+	    sbt, prec, C_ABSOLUTE);
 	if (error != EWOULDBLOCK) {
 		if (error == ERESTART)
 			error = EINTR;

Modified: user/attilio/vmobj-readlock/sys/kern/subr_sleepqueue.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/kern/subr_sleepqueue.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/kern/subr_sleepqueue.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -88,16 +88,14 @@ __FBSDID("$FreeBSD$");
 #endif
 
 /*
- * Constants for the hash table of sleep queue chains.  These constants are
- * the same ones that 4BSD (and possibly earlier versions of BSD) used.
- * Basically, we ignore the lower 8 bits of the address since most wait
- * channel pointers are aligned and only look at the next 7 bits for the
- * hash.  SC_TABLESIZE must be a power of two for SC_MASK to work properly.
+ * Constants for the hash table of sleep queue chains.
+ * SC_TABLESIZE must be a power of two for SC_MASK to work properly.
  */
-#define	SC_TABLESIZE	128			/* Must be power of 2. */
+#define	SC_TABLESIZE	256			/* Must be power of 2. */
 #define	SC_MASK		(SC_TABLESIZE - 1)
 #define	SC_SHIFT	8
-#define	SC_HASH(wc)	(((uintptr_t)(wc) >> SC_SHIFT) & SC_MASK)
+#define	SC_HASH(wc)	((((uintptr_t)(wc) >> SC_SHIFT) ^ (uintptr_t)(wc)) & \
+			    SC_MASK)
 #define	SC_LOOKUP(wc)	&sleepq_chains[SC_HASH(wc)]
 #define NR_SLEEPQS      2
 /*

Modified: user/attilio/vmobj-readlock/sys/kern/uipc_socket.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/kern/uipc_socket.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/kern/uipc_socket.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -136,6 +136,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/uio.h>
 #include <sys/jail.h>
 #include <sys/syslog.h>
+#include <netinet/in.h>
 
 #include <net/vnet.h>
 
@@ -565,8 +566,12 @@ sonewconn(struct socket *head, int conns
 	/*
 	 * The accept socket may be tearing down but we just
 	 * won a race on the ACCEPT_LOCK.
+	 * However, if sctp_peeloff() is called on a 1-to-many
+	 * style socket, the SO_ACCEPTCONN doesn't need to be set.
 	 */
-	if (!(head->so_options & SO_ACCEPTCONN)) {
+	if (!(head->so_options & SO_ACCEPTCONN) &&
+	    ((head->so_proto->pr_protocol != IPPROTO_SCTP) ||
+	     (head->so_type != SOCK_SEQPACKET))) {
 		SOCK_LOCK(so);
 		so->so_head = NULL;
 		sofree(so);		/* NB: returns ACCEPT_UNLOCK'ed. */

Modified: user/attilio/vmobj-readlock/sys/kern/uipc_syscalls.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/kern/uipc_syscalls.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/kern/uipc_syscalls.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -2386,8 +2386,10 @@ sys_sctp_peeloff(td, uap)
 
 	CURVNET_SET(head->so_vnet);
 	so = sonewconn(head, SS_ISCONNECTED);
-	if (so == NULL)
+	if (so == NULL) {
+		error = ENOMEM;
 		goto noconnection;
+	}
 	/*
 	 * Before changing the flags on the socket, we have to bump the
 	 * reference count.  Otherwise, if the protocol calls sofree(),

Modified: user/attilio/vmobj-readlock/sys/kern/uipc_usrreq.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/kern/uipc_usrreq.c	Tue Mar 12 12:02:06 2013	(r248190)
+++ user/attilio/vmobj-readlock/sys/kern/uipc_usrreq.c	Tue Mar 12 12:07:45 2013	(r248191)
@@ -282,7 +282,7 @@ static void	unp_dispose(struct mbuf *);
 static void	unp_shutdown(struct unpcb *);
 static void	unp_drop(struct unpcb *, int);
 static void	unp_gc(__unused void *, int);
-static void	unp_scan(struct mbuf *, void (*)(struct file *));
+static void	unp_scan(struct mbuf *, void (*)(struct filedescent **, int));
 static void	unp_discard(struct file *);
 static void	unp_freerights(struct filedescent **, int);
 static void	unp_init(void);
@@ -2135,17 +2135,22 @@ static int	unp_marked;
 static int	unp_unreachable;
 
 static void
-unp_accessable(struct file *fp)
+unp_accessable(struct filedescent **fdep, int fdcount)
 {
 	struct unpcb *unp;
+	struct file *fp;
+	int i;
 
-	if ((unp = fptounp(fp)) == NULL)
-		return;
-	if (unp->unp_gcflag & UNPGC_REF)
-		return;
-	unp->unp_gcflag &= ~UNPGC_DEAD;
-	unp->unp_gcflag |= UNPGC_REF;
-	unp_marked++;
+	for (i = 0; i < fdcount; i++) {
+		fp = fdep[i]->fde_file;
+		if ((unp = fptounp(fp)) == NULL)
+			continue;
+		if (unp->unp_gcflag & UNPGC_REF)
+			continue;
+		unp->unp_gcflag &= ~UNPGC_DEAD;
+		unp->unp_gcflag |= UNPGC_REF;
+		unp_marked++;
+	}
 }
 
 static void
@@ -2292,19 +2297,16 @@ unp_dispose(struct mbuf *m)
 {
 
 	if (m)
-		unp_scan(m, unp_discard);
+		unp_scan(m, unp_freerights);
 }
 
 static void
-unp_scan(struct mbuf *m0, void (*op)(struct file *))
+unp_scan(struct mbuf *m0, void (*op)(struct filedescent **, int))
 {
 	struct mbuf *m;
-	struct filedescent **fdep;
 	struct cmsghdr *cm;
 	void *data;
-	int i;
 	socklen_t clen, datalen;
-	int qfds;
 
 	while (m0 != NULL) {
 		for (m = m0; m; m = m->m_next) {
@@ -2324,10 +2326,8 @@ unp_scan(struct mbuf *m0, void (*op)(str
 
 				if (cm->cmsg_level == SOL_SOCKET &&
 				    cm->cmsg_type == SCM_RIGHTS) {
-					qfds = datalen / sizeof(*fdep);
-					fdep = data;
-					for (i = 0; i < qfds; i++)
-						(*op)(fdep[i]->fde_file);
+					(*op)(data, datalen /

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



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