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 ...
Attilio Rao
attilio at FreeBSD.org
Tue Mar 12 12:07:51 UTC 2013
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 at FreeBSD.org"]
doceng [label="Documentation Engineering Team\ndoceng at FreeBSD.org\ngjb, blackend,\ngabor, hrs"]
portscommitters [label="Ports Committers\nports-committers at FreeBSD.org"]
-portmgr [label="Port Management Team\nportmgr at FreeBSD.org\ntabthorpe, marcus, bapt, beat,\nerwin, linimon, pav,\nitetcu, miwi"]
+portmgr [label="Port Management Team\nportmgr at FreeBSD.org\ntabthorpe, marcus, bapt, \nerwin, pav,\nitetcu, miwi"]
portmgrsecretary [label="Port Management Team Secretary\nportmgr-secretary at FreeBSD.org\ntabthorpe"]
re [label="Primary Release Engineering Team\nre at FreeBSD.org\nkib, blackend, jpaetzel, hrs, kensmith"]
secteam [label="Security Team\nsecteam at 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 at FreeBSD.org\nmarkm, simon, kensmith,\ndhw"]
backups [label="Backup Administrators\nbackups at FreeBSD.org\nsimon, kensmith,\ndhw"]
-bugmeister [label="Bugmeister Team\nbugmeister at FreeBSD.org\neadler, gavin, gonzo, linimon"]
+bugmeister [label="Bugmeister Team\nbugmeister at FreeBSD.org\neadler, gavin, gonzo"]
clusteradm [label="Cluster Administrators\nclusteradm at FreeBSD.org\nbrd, simon, ps,\nkensmith, peter"]
cvsupmaster [label="CVSup Mirror Site Coordinators\ncvsup-master at FreeBSD.org\nkuriyama, jdp,\nkensmith"]
dnsadm [label="DNS Administrators\ndnsadm at FreeBSD.org\nbillf, dg, ps,\nkensmith, peter"]
mirroradmin [label="FTP/WWW Mirror Site Coordinators\nmirror-admin at FreeBSD.org\nkuriyama, kensmith"]
ncvs [label="CVS src Repository Managers\nncvs at FreeBSD.org\njoe, kuriyama, markm,\nsimon, peter"]
-pcvs [label="CVS ports Repository Managers\npcvs at FreeBSD.org\nmarcus, joe, kuriyama,\nmarkm, simon"]
perforceadmin [label="Perforce Repository Administrators\nperforce-admin at FreeBSD.org\nscottl, kensmith, gordon,\nrwatson, peter, dhw"]
postmaster [label="Postmaster Team\npostmaster at FreeBSD.org\njmb, brd, sahil, dhw"]
refadm [label="Reference Systems Administrators\nrefadm at 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 ***
More information about the svn-src-user
mailing list