Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Jun 2009 08:52:56 GMT
From:      Ana Kukec <anchie@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 164800 for review
Message-ID:  <200906210852.n5L8qumn070617@repoman.freebsd.org>

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

Change 164800 by anchie@anchie_malimis on 2009/06/21 08:52:01

	Integrate.	

Affected files ...

.. //depot/projects/soc2009/anchie_send/src/sys/arm/arm/pmap.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/arm/conf/CAMBRIA.hints#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/arm/include/pmap.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/if_npe.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/ixp425.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/ixp425_npe.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/ixp425_npereg.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/ixp425var.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/freebsd32_proto.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/freebsd32_syscall.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/freebsd32_syscalls.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/freebsd32_sysent.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/syscalls.master#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/compat/linux/linux_ioctl.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/compat/linux/linux_misc.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/compat/linux/linux_uid16.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/conf/files#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/conf/options#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/common/cxgb_t3_cpl.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/cxgb_adapter.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/cxgb_main.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/cxgb_multiq.c#3 delete
.. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/cxgb_osdep.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/cxgb_sge.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/sys/cxgb_support.c#2 delete
.. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/sys/mvec.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/sys/uipc_mvec.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/drm_bufs.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/drm_context.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/i915_dma.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/i915_drv.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/i915_irq.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/if_ndis/if_ndis.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/puc/pucdata.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/syscons/scterm-teken.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/syscons/teken/teken.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/wlan/if_uath.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/devfs/devfs_vnops.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/nfs/nfs.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/nfs/nfs_commonport.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/nfs/nfsport.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsclient/nfs_clbio.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsclient/nfs_clkrpc.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsclient/nfs_clport.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsclient/nfs_clvnops.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsserver/nfs_nfsdkrpc.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsserver/nfs_nfsdport.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsserver/nfs_nfsdstate.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/portalfs/portal.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/portalfs/portal_vnops.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/unionfs/union_vnops.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/geom/label/g_label_gpt.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/gnu/fs/ext2fs/ext2_lookup.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/gnu/fs/ext2fs/ext2_vnops.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/i386/ibcs2/ibcs2_isc_sysent.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/i386/ibcs2/ibcs2_misc.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/i386/ibcs2/ibcs2_xenix_sysent.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/i386/include/cpufunc.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/i386/include/specialreg.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/ia64/ia64/vm_machdep.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/init_sysent.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_acct.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_exec.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_lock.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_lockf.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_mbuf.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_proc.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_prot.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_sysctl.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/makesyscalls.sh#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/syscalls.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/syscalls.master#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/systrace_args.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/tty.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/uipc_usrreq.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/vfs_export.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/adm5120/if_admsw.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/conf/.cvsignore#1 branch
.. //depot/projects/soc2009/anchie_send/src/sys/mips/idt/idtpci.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/idt/if_kr.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/modules/Makefile#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/modules/acpi/acpi/Makefile#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/modules/cxgb/cxgb/Makefile#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/modules/wlan/Makefile#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/net/bpf.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/net/if_enc.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/net/if_gre.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/net/if_tun.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/net/if_var.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/net/route.h#4 edit
.. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_wds.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netatalk/ddp_output.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/in_proto.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/ip_var.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/ipfw/ip_fw2.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_indata.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_input.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_output.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_input.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_output.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_subr.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_timer.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_usrreq.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_var.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet6/icmp6.c#11 edit
.. //depot/projects/soc2009/anchie_send/src/sys/netinet6/in6_proto.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet6/nd6.c#9 edit
.. //depot/projects/soc2009/anchie_send/src/sys/netinet6/nd6_nbr.c#2 edit
.. //depot/projects/soc2009/anchie_send/src/sys/netipsec/key.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netipsec/xform_tcp.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netipx/ipx_usrreq.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netipx/spx.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netipx/spx_reass.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netipx/spx_usrreq.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netipx/spx_var.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfs_bio.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfs_vnops.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/nfsserver/nfs_srvkrpc.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/nfsserver/nfs_srvsock.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/nfsserver/nfs_srvsubs.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/nlm/nlm_prot_impl.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/include/spr.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/powerpc/cpu.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/rpc/svc.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/rpc/svc_auth.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/rpc/svc_auth_unix.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/rpc/svc_generic.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/rpc/svc_vc.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/security/mac_biba/mac_biba.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/security/mac_lomac/mac_lomac.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sys/lockmgr.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sys/mbuf.h#3 edit
.. //depot/projects/soc2009/anchie_send/src/sys/sys/param.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sys/priv.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sys/syscall.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sys/syscall.mk#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sys/syslimits.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sys/sysproto.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sys/ucred.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sys/user.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sys/vimage.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/ufs/ufs/ufs_dirhash.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/ufs/ufs/ufs_lookup.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/ufs/ufs/ufs_vnops.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/vm/device_pager.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/vm/uma_core.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/vm/vm_contig.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/vm/vm_extern.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/vm/vm_page.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/vm/vm_phys.c#2 integrate

Differences ...

==== //depot/projects/soc2009/anchie_send/src/sys/arm/arm/pmap.c#3 (text+ko) ====

@@ -147,7 +147,7 @@
 #include "opt_vm.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.109 2009/06/08 12:15:39 raj Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.110 2009/06/18 20:42:37 thompsa Exp $");
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
@@ -200,8 +200,7 @@
 
 static void		pmap_enter_locked(pmap_t, vm_offset_t, vm_page_t,
     vm_prot_t, boolean_t, int);
-static __inline	void	pmap_fix_cache(struct vm_page *, pmap_t,
-    vm_offset_t);
+static void		pmap_fix_cache(struct vm_page *, pmap_t, vm_offset_t);
 static void		pmap_alloc_l1(pmap_t);
 static void		pmap_free_l1(pmap_t);
 static void		pmap_use_l1(pmap_t);
@@ -406,7 +405,7 @@
 
 #define pmap_is_current(pm)	((pm) == pmap_kernel() || \
             curproc->p_vmspace->vm_map.pmap == (pm))
-static uma_zone_t pvzone;
+static uma_zone_t pvzone = NULL;
 uma_zone_t l2zone;
 static uma_zone_t l2table_zone;
 static vm_offset_t pmap_kernel_l2dtable_kva;
@@ -1451,6 +1450,7 @@
 		 * kernel writable or kernel readable with writable user entry
 		 */
 		if ((kwritable && entries) ||
+		    (kwritable > 1) ||
 		    ((kwritable != writable) && kentries &&
 		     (pv->pv_pmap == pmap_kernel() ||
 		      (pv->pv_flags & PVF_WRITE) ||
@@ -1472,7 +1472,8 @@
 			continue;
 		}
 			/* user is no longer sharable and writable */
-		if (pm != pmap_kernel() && (pv->pv_pmap == pm) &&
+		if (pm != pmap_kernel() &&
+		    (pv->pv_pmap == pm || pv->pv_pmap == pmap_kernel()) &&
 		    !pmwc && (pv->pv_flags & PVF_NC)) {
 
 			pv->pv_flags &= ~(PVF_NC | PVF_MWC);
@@ -1674,7 +1675,29 @@
     vm_offset_t va, u_int flags)
 {
 
+	int km;
+
 	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+
+	if (pg->md.pv_kva) {
+		/* PMAP_ASSERT_LOCKED(pmap_kernel()); */
+		pve->pv_pmap = pmap_kernel();
+		pve->pv_va = pg->md.pv_kva;
+		pve->pv_flags = PVF_WRITE | PVF_UNMAN;
+		pg->md.pv_kva = 0;
+
+		TAILQ_INSERT_HEAD(&pg->md.pv_list, pve, pv_list);
+		TAILQ_INSERT_HEAD(&pm->pm_pvlist, pve, pv_plist);
+		if ((km = PMAP_OWNED(pmap_kernel())))
+			PMAP_UNLOCK(pmap_kernel());
+		vm_page_unlock_queues();
+		if ((pve = pmap_get_pv_entry()) == NULL)
+			panic("pmap_kenter_internal: no pv entries");
+		vm_page_lock_queues();
+		if (km)
+			PMAP_LOCK(pmap_kernel());
+	}
+
 	PMAP_ASSERT_LOCKED(pm);
 	pve->pv_pmap = pm;
 	pve->pv_va = va;
@@ -1742,6 +1765,7 @@
 pmap_nuke_pv(struct vm_page *pg, pmap_t pm, struct pv_entry *pve)
 {
 
+	struct pv_entry *pv;
 	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
 	PMAP_ASSERT_LOCKED(pm);
 	TAILQ_REMOVE(&pg->md.pv_list, pve, pv_list);
@@ -1766,6 +1790,20 @@
 			vm_page_flag_clear(pg, PG_WRITEABLE);
 		}
 	}
+	pv = TAILQ_FIRST(&pg->md.pv_list);
+	if (pv != NULL && (pv->pv_flags & PVF_UNMAN) &&
+	    TAILQ_NEXT(pv, pv_list) == NULL) {
+		pg->md.pv_kva = pv->pv_va;
+			/* a recursive pmap_nuke_pv */
+		TAILQ_REMOVE(&pg->md.pv_list, pv, pv_list);
+		TAILQ_REMOVE(&pm->pm_pvlist, pv, pv_plist);
+		if (pv->pv_flags & PVF_WIRED)
+			--pm->pm_stats.wired_count;
+		pg->md.pvh_attrs &= ~PVF_REF;
+		pg->md.pvh_attrs &= ~PVF_MOD;
+		vm_page_flag_clear(pg, PG_WRITEABLE);
+		pmap_free_pv_entry(pv);
+	}
 }
 
 static struct pv_entry *
@@ -1784,6 +1822,9 @@
 		pve = TAILQ_NEXT(pve, pv_list);
 	}
 
+	if (pve == NULL && pg->md.pv_kva == va)
+		pg->md.pv_kva = 0;
+
 	return(pve);				/* return removed pve */
 }
 /*
@@ -2711,8 +2752,8 @@
 	cpu_idcache_wbinv_all();
 	cpu_l2cache_wbinv_all();
 	for (pv = TAILQ_FIRST(&pmap->pm_pvlist); pv; pv = npv) {
-		if (pv->pv_flags & PVF_WIRED) {
-			/* The page is wired, cannot remove it now. */
+		if (pv->pv_flags & PVF_WIRED || pv->pv_flags & PVF_UNMAN) {
+			/* Cannot remove wired or unmanaged pages now. */
 			npv = TAILQ_NEXT(pv, pv_plist);
 			continue;
 		}
@@ -2822,6 +2863,9 @@
 	struct l2_bucket *l2b;
 	pt_entry_t *pte;
 	pt_entry_t opte;
+	struct pv_entry *pve;
+	vm_page_t m;
+
 	PDEBUG(1, printf("pmap_kenter: va = %08x, pa = %08x\n",
 	    (uint32_t) va, (uint32_t) pa));
 
@@ -2835,10 +2879,7 @@
 	PDEBUG(1, printf("pmap_kenter: pte = %08x, opte = %08x, npte = %08x\n",
 	    (uint32_t) pte, opte, *pte));
 	if (l2pte_valid(opte)) {
-		cpu_dcache_wbinv_range(va, PAGE_SIZE);
-		cpu_l2cache_wbinv_range(va, PAGE_SIZE);
-		cpu_tlb_flushD_SE(va);
-		cpu_cpwait();
+		pmap_kremove(va);
 	} else {
 		if (opte == 0)
 			l2b->l2b_occupancy++;
@@ -2850,6 +2891,33 @@
 	if (flags & KENTER_USER)
 		*pte |= L2_S_PROT_U;
 	PTE_SYNC(pte);
+
+		/* kernel direct mappings can be shared, so use a pv_entry
+		 * to ensure proper caching.
+		 *
+		 * The pvzone is used to delay the recording of kernel
+		 * mappings until the VM is running.
+		 * 
+		 * This expects the physical memory to have vm_page_array entry.
+		 */
+	if (pvzone != NULL && (m = vm_phys_paddr_to_vm_page(pa))) {
+		vm_page_lock_queues();
+		if (!TAILQ_EMPTY(&m->md.pv_list) || m->md.pv_kva) {
+				/* release vm_page lock for pv_entry UMA */
+			vm_page_unlock_queues();
+			if ((pve = pmap_get_pv_entry()) == NULL)
+				panic("pmap_kenter_internal: no pv entries");	
+			vm_page_lock_queues();
+			PMAP_LOCK(pmap_kernel());
+			pmap_enter_pv(m, pve, pmap_kernel(), va,
+					 PVF_WRITE | PVF_UNMAN);
+			pmap_fix_cache(m, pmap_kernel(), va);
+			PMAP_UNLOCK(pmap_kernel());
+		} else {
+			m->md.pv_kva = va;
+		}
+		vm_page_unlock_queues();
+	}
 }
 
 void
@@ -2886,6 +2954,9 @@
 {
 	struct l2_bucket *l2b;
 	pt_entry_t *pte, opte;
+	struct pv_entry *pve;
+	vm_page_t m;
+	vm_offset_t pa;
 		
 	l2b = pmap_get_l2_bucket(pmap_kernel(), va);
 	if (!l2b)
@@ -2894,6 +2965,25 @@
 	pte = &l2b->l2b_kva[l2pte_index(va)];
 	opte = *pte;
 	if (l2pte_valid(opte)) {
+			/* pa = vtophs(va) taken from pmap_extract() */
+		switch (opte & L2_TYPE_MASK) {
+		case L2_TYPE_L:
+			pa = (opte & L2_L_FRAME) | (va & L2_L_OFFSET);
+			break;
+		default:
+			pa = (opte & L2_S_FRAME) | (va & L2_S_OFFSET);
+			break;
+		}
+			/* note: should never have to remove an allocation
+			 * before the pvzone is initialized.
+			 */
+		vm_page_lock_queues();
+		PMAP_LOCK(pmap_kernel());
+		if (pvzone != NULL && (m = vm_phys_paddr_to_vm_page(pa)) &&
+		    (pve = pmap_remove_pv(m, pmap_kernel(), va)))
+			pmap_free_pv_entry(pve); 
+		PMAP_UNLOCK(pmap_kernel());
+		vm_page_unlock_queues();
 		cpu_dcache_wbinv_range(va, PAGE_SIZE);
 		cpu_l2cache_wbinv_range(va, PAGE_SIZE);
 		cpu_tlb_flushD_SE(va);
@@ -3137,16 +3227,24 @@
 			cpu_l2cache_inv_range(pv->pv_va, PAGE_SIZE);
 		}
 
-		l2b = pmap_get_l2_bucket(pv->pv_pmap, pv->pv_va);
-		KASSERT(l2b != NULL, ("No l2 bucket"));
-		ptep = &l2b->l2b_kva[l2pte_index(pv->pv_va)];
-		*ptep = 0;
-		PTE_SYNC_CURRENT(pv->pv_pmap, ptep);
-		pmap_free_l2_bucket(pv->pv_pmap, l2b, 1);
-		if (pv->pv_flags & PVF_WIRED)
-			pv->pv_pmap->pm_stats.wired_count--;
-		pv->pv_pmap->pm_stats.resident_count--;
-		flags |= pv->pv_flags;
+		if (pv->pv_flags & PVF_UNMAN) {
+			/* remove the pv entry, but do not remove the mapping
+			 * and remember this is a kernel mapped page
+			 */
+			m->md.pv_kva = pv->pv_va;
+		} else {
+			/* remove the mapping and pv entry */
+			l2b = pmap_get_l2_bucket(pv->pv_pmap, pv->pv_va);
+			KASSERT(l2b != NULL, ("No l2 bucket"));
+			ptep = &l2b->l2b_kva[l2pte_index(pv->pv_va)];
+			*ptep = 0;
+			PTE_SYNC_CURRENT(pv->pv_pmap, ptep);
+			pmap_free_l2_bucket(pv->pv_pmap, l2b, 1);
+			if (pv->pv_flags & PVF_WIRED)
+				pv->pv_pmap->pm_stats.wired_count--;
+			pv->pv_pmap->pm_stats.resident_count--;
+			flags |= pv->pv_flags;
+		}
 		pmap_nuke_pv(m, pv->pv_pmap, pv);
 		PMAP_UNLOCK(pv->pv_pmap);
 		pmap_free_pv_entry(pv);
@@ -3428,25 +3526,19 @@
 			 * It is part of our managed memory so we
 			 * must remove it from the PV list
 			 */
-			pve = pmap_remove_pv(opg, pmap, va);
-			if (m && (m->flags & (PG_UNMANAGED | PG_FICTITIOUS)) &&
-			    pve)
-				pmap_free_pv_entry(pve);
-			else if (!pve && 
-			    !(m->flags & (PG_UNMANAGED | PG_FICTITIOUS)))
-				pve = pmap_get_pv_entry();
-			KASSERT(pve != NULL || m->flags & (PG_UNMANAGED | 
-			    PG_FICTITIOUS), ("No pv"));
-			oflags = pve->pv_flags;
-			
+			if ((pve = pmap_remove_pv(opg, pmap, va))) {
+
+			/* note for patch: the oflags/invalidation was moved
+			 * because PG_FICTITIOUS pages could free the pve
+			 */
+			    oflags = pve->pv_flags;
 			/*
 			 * If the old mapping was valid (ref/mod
 			 * emulation creates 'invalid' mappings
 			 * initially) then make sure to frob
 			 * the cache.
 			 */
-			if ((oflags & PVF_NC) == 0 &&
-			    l2pte_valid(opte)) {
+			    if ((oflags & PVF_NC) == 0 && l2pte_valid(opte)) {
 				if (PV_BEEN_EXECD(oflags)) {
 					pmap_idcache_wbinv_range(pmap, va,
 					    PAGE_SIZE);
@@ -3456,15 +3548,43 @@
 						    PAGE_SIZE, TRUE,
 						    (oflags & PVF_WRITE) == 0);
 					}
-			}
-		} else if (m && !(m->flags & (PG_UNMANAGED | PG_FICTITIOUS)))
-			if ((pve = pmap_get_pv_entry()) == NULL) {
-				panic("pmap_enter: no pv entries");	
+			    }
+
+			/* free/allocate a pv_entry for UNMANAGED pages if
+			 * this physical page is not/is already mapped.
+			 */
+
+			    if (m && ((m->flags & PG_FICTITIOUS) ||
+				((m->flags & PG_UNMANAGED) &&
+				  !m->md.pv_kva &&
+				 TAILQ_EMPTY(&m->md.pv_list)))) {
+				pmap_free_pv_entry(pve);
+				pve = NULL;
+			    }
+			} else if (m && !(m->flags & PG_FICTITIOUS) &&
+				 (!(m->flags & PG_UNMANAGED) || m->md.pv_kva ||
+				  !TAILQ_EMPTY(&m->md.pv_list)))
+				pve = pmap_get_pv_entry();
+		} else if (m && !(m->flags & PG_FICTITIOUS) &&
+			   (!(m->flags & PG_UNMANAGED) || m->md.pv_kva ||
+			   !TAILQ_EMPTY(&m->md.pv_list)))
+			pve = pmap_get_pv_entry();
+
+		if (m && !(m->flags & PG_FICTITIOUS)) {
+			KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva,
+		    	("pmap_enter: managed mapping within the clean submap"));
+			if (m->flags & PG_UNMANAGED) {
+				if (!TAILQ_EMPTY(&m->md.pv_list) ||
+				     m->md.pv_kva) {
+					KASSERT(pve != NULL, ("No pv"));
+					nflags |= PVF_UNMAN;
+					pmap_enter_pv(m, pve, pmap, va, nflags);
+				} else
+					m->md.pv_kva = va;
+			} else {
+				KASSERT(pve != NULL, ("No pv"));
+				pmap_enter_pv(m, pve, pmap, va, nflags);
 			}
-		if (m && !(m->flags & (PG_UNMANAGED | PG_FICTITIOUS))) {
-			KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva,
-			    ("pmap_enter: managed mapping within the clean submap"));
-			pmap_enter_pv(m, pve, pmap, va, nflags);
 		}
 	}
 	/*

==== //depot/projects/soc2009/anchie_send/src/sys/arm/conf/CAMBRIA.hints#2 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/arm/conf/CAMBRIA.hints,v 1.4 2009/04/21 22:48:12 stas Exp $
+# $FreeBSD: src/sys/arm/conf/CAMBRIA.hints,v 1.5 2009/06/17 17:58:18 sam Exp $
 
 #
 # Device wiring for the Gateworks Cambria 2358.
@@ -21,11 +21,11 @@
 hint.npe.0.mac="C"
 hint.npe.0.mii="C"
 hint.npe.0.phy=1
-#hint.npe.1.at="ixp0"
-#hint.npe.1.npeid="A"
-#hint.npe.1.mac="A"
-#hint.npe.1.mii="C"
-#hint.npe.1.phy=2
+hint.npe.1.at="ixp0"
+hint.npe.1.npeid="A"
+hint.npe.1.mac="A"
+hint.npe.1.mii="C"
+hint.npe.1.phy=2
 
 # FLASH
 hint.cfi.0.at="ixp0"

==== //depot/projects/soc2009/anchie_send/src/sys/arm/include/pmap.h#2 (text+ko) ====

@@ -44,7 +44,7 @@
  *      from: @(#)pmap.h        7.4 (Berkeley) 5/12/91
  * 	from: FreeBSD: src/sys/i386/include/pmap.h,v 1.70 2000/11/30
  *
- * $FreeBSD: src/sys/arm/include/pmap.h,v 1.31 2009/05/07 05:42:13 alc Exp $
+ * $FreeBSD: src/sys/arm/include/pmap.h,v 1.32 2009/06/18 20:42:37 thompsa Exp $
  */
 
 #ifndef _MACHINE_PMAP_H_
@@ -94,6 +94,7 @@
 
 struct	md_page {
 	int pvh_attrs;
+	vm_offset_t pv_kva;		/* first kernel VA mapping */
 	TAILQ_HEAD(,pv_entry)	pv_list;
 };
 
@@ -494,6 +495,7 @@
 #define	PVF_EXEC	0x10		/* mapping is executable */
 #define	PVF_NC		0x20		/* mapping is non-cacheable */
 #define	PVF_MWC		0x40		/* mapping is used multiple times in userland */
+#define	PVF_UNMAN	0x80		/* mapping is unmanaged */
 
 void vector_page_setprot(int);
 

==== //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/if_npe.c#3 (text+ko) ====

@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/if_npe.c,v 1.18 2009/06/11 17:05:13 avg Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/if_npe.c,v 1.19 2009/06/17 02:53:05 sam Exp $");
 
 /*
  * Intel XScale NPE Ethernet driver.
@@ -153,9 +153,9 @@
  * multi-port processing.  It may be better to handle
  * all traffic through one Q (as done by the Intel drivers).
  *
- * Note that the PHY's are accessible only from MAC A
- * on the IXP425.  This and other platform-specific
- * assumptions probably need to be handled through hints.
+ * Note that the PHY's are accessible only from MAC B on the
+ * IXP425 and from MAC C on other devices.  This and other
+ * platform-specific assumptions are handled with hints.
  */
 static const struct {
 	uint32_t	macbase;
@@ -177,7 +177,7 @@
 	},
 	[NPE_B] = {
 	  .macbase	= IXP425_MAC_B_HWBASE,
-	  .miibase	= IXP425_MAC_C_HWBASE,
+	  .miibase	= IXP425_MAC_B_HWBASE,
 	  .phy		= 0,
 	  .rx_qid	= 4,
 	  .rx_freeqid	= 27,
@@ -186,7 +186,7 @@
 	},
 	[NPE_C] = {
 	  .macbase	= IXP425_MAC_C_HWBASE,
-	  .miibase	= IXP425_MAC_C_HWBASE,
+	  .miibase	= IXP425_MAC_B_HWBASE,
 	  .phy		= 1,
 	  .rx_qid	= 12,
 	  .rx_freeqid	= 28,
@@ -239,6 +239,7 @@
 
 static int	npe_setrxqosentry(struct npe_softc *, int classix,
 			int trafclass, int qid);
+static int	npe_setportaddress(struct npe_softc *, const uint8_t mac[]);
 static int	npe_setfirewallmode(struct npe_softc *, int onoff);
 static int	npe_updatestats(struct npe_softc *);
 #if 0
@@ -666,7 +667,7 @@
 static int
 npe_activate(device_t dev)
 {
-	struct npe_softc * sc = device_get_softc(dev);
+	struct npe_softc *sc = device_get_softc(dev);
 	int error, i, macbase, miibase;
 
 	/*
@@ -1024,7 +1025,7 @@
 	struct txdone *td, q[NPE_MAX];
 	uint32_t entry;
 
-	/* XXX no NPE-A support */
+	q[NPE_A].tail = &q[NPE_A].head; q[NPE_A].count = 0;
 	q[NPE_B].tail = &q[NPE_B].head; q[NPE_B].count = 0;
 	q[NPE_C].tail = &q[NPE_C].head; q[NPE_C].count = 0;
 	/* XXX max # at a time? */
@@ -1043,6 +1044,8 @@
 		td->count++;
 	}
 
+	if (q[NPE_A].count)
+		npe_txdone_finish(npes[NPE_A], &q[NPE_A]);
 	if (q[NPE_B].count)
 		npe_txdone_finish(npes[NPE_B], &q[NPE_B]);
 	if (q[NPE_C].count)
@@ -1252,6 +1255,7 @@
 	WR4(sc, NPE_MAC_RX_CNTRL2, 0);
 
 	npe_setmac(sc, IF_LLADDR(ifp));
+	npe_setportaddress(sc, IF_LLADDR(ifp));
 	npe_setmcast(sc);
 
 	npe_startxmit(sc);
@@ -1552,6 +1556,22 @@
 }
 
 static int
+npe_setportaddress(struct npe_softc *sc, const uint8_t mac[ETHER_ADDR_LEN])
+{
+	uint32_t msg[2];
+
+	msg[0] = (NPE_SETPORTADDRESS << 24)
+	       | (sc->sc_npeid << 20)
+	       | (mac[0] << 8)
+	       | (mac[1] << 0);
+	msg[1] = (mac[2] << 24)
+	       | (mac[3] << 16)
+	       | (mac[4] << 8)
+	       | (mac[5] << 0);
+	return ixpnpe_sendandrecvmsg_sync(sc->sc_npe, msg, msg);
+}
+
+static int
 npe_setfirewallmode(struct npe_softc *sc, int onoff)
 {
 	uint32_t msg[2];

==== //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/ixp425.c#3 (text+ko) ====

@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425.c,v 1.19 2009/06/11 17:05:13 avg Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425.c,v 1.20 2009/06/17 02:51:16 sam Exp $");
 
 #include "opt_ddb.h"
 
@@ -85,6 +85,12 @@
 	return bits;
 }
 
+void
+ixp4xx_write_feature_bits(uint32_t v)
+{
+	IXPREG(IXP425_EXP_VBASE + EXP_FCTRL_OFFSET) = ~v;
+}
+
 struct arm32_dma_range *
 bus_dma_get_range(void)
 {

==== //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/ixp425_npe.c#2 (text+ko) ====

@@ -57,7 +57,7 @@
  * SUCH DAMAGE.
 */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425_npe.c,v 1.10 2008/12/23 04:51:46 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425_npe.c,v 1.12 2009/06/17 17:57:52 sam Exp $");
 
 /*
  * Intel XScale Network Processing Engine (NPE) support.
@@ -306,8 +306,14 @@
 	sc->sc_nrefs = 1;
 
 	sc->sc_size = config->size;
-	sc->insMemSize = config->ins_memsize;	/* size of instruction memory */
-	sc->dataMemSize = config->data_memsize;	/* size of data memory */
+	if (cpu_is_ixp42x()) {
+		/* NB: instruction/data memory sizes are NPE-dependent */
+		sc->insMemSize = config->ins_memsize;
+		sc->dataMemSize = config->data_memsize;
+	} else {
+		sc->insMemSize = IXP46X_NPEDL_INS_MEMSIZE_WORDS;
+		sc->dataMemSize = IXP46X_NPEDL_DATA_MEMSIZE_WORDS;
+	}
 
 	if (bus_space_map(sc->sc_iot, config->base, sc->sc_size, 0, &sc->sc_ioh))
 		panic("%s: Cannot map registers", device_get_name(dev));
@@ -798,20 +804,34 @@
 	IX_NPEDL_CTXT_REG_RESET_CINDEX,
 };
 
-#define	IX_NPEDL_RESET_NPE_PARITY	0x0800
 #define	IX_NPEDL_PARITY_BIT_MASK	0x3F00FFFF
 #define	IX_NPEDL_CONFIG_CTRL_REG_MASK	0x3F3FFFFF
 
+#if 0
+/*
+ * Reset the NPE and its coprocessor using the
+ * fuse bits in the feature control register.
+ */
+static void
+npe_reset(int npeid)
+{
+	uint32_t mask = EXP_FCTRL_NPEA << npeid;
+	uint32_t v;
+
+	v = ixp4xx_read_feature_bits();
+	ixp4xx_write_feature_bits(v &~ mask);
+	/* un-fuse and un-reset the NPE & coprocessor */
+	ixp4xx_write_feature_bits(v | mask);
+}
+#endif
+
 static int
 npe_cpu_reset(struct ixpnpe_softc *sc)
 {
 #define	N(a)	(sizeof(a) / sizeof(a[0]))
-	struct ixp425_softc *sa =
-	    device_get_softc(device_get_parent(sc->sc_dev));
 	uint32_t ctxtReg; /* identifies Context Store reg (0-3) */
 	uint32_t regAddr;
 	uint32_t regVal;
-	uint32_t resetNpeParity;
 	uint32_t ixNpeConfigCtrlRegVal;
 	int i, error = 0;
 	
@@ -929,33 +949,15 @@
 
 	/* Reset the Watch-count register */
 	npe_reg_write(sc, IX_NPEDL_REG_OFFSET_WC, 0);
-	
+#if 0
 	/*
 	 * WR IXA00055043 - Remove IMEM Parity Introduced by NPE Reset Operation
+	 * XXX Removed because it breaks IXP435 operation; e.g. on Gateworks
+	 * XXX 2358 boards reseting NPE-A after NPE-C is running causes both
+	 * XXX npe's to stop working
 	 */
-
-	/*
-	 * Reset the NPE and its coprocessor - to reset internal
-	 * states and remove parity error.  Note this makes no
-	 * sense based on the documentation.  The feature control
-	 * register always reads back as 0 on the ixp425 and further
-	 * the bit definition of NPEA/NPEB is off by 1 according to
-	 * the Intel documention--so we're blindly following the
-	 * Intel code w/o any real understanding.
-	 */
-	regVal = EXP_BUS_READ_4(sa, EXP_FCTRL_OFFSET);
-	DPRINTFn(2, sc->sc_dev, "%s: FCTRL 0x%x\n", __func__, regVal);
-	resetNpeParity =
-	    IX_NPEDL_RESET_NPE_PARITY << (1 + device_get_unit(sc->sc_dev));
-	DPRINTFn(2, sc->sc_dev, "%s: FCTRL fuse parity, write 0x%x\n",
-	    __func__, regVal | resetNpeParity);
-	EXP_BUS_WRITE_4(sa, EXP_FCTRL_OFFSET, regVal | resetNpeParity);
-
-	/* un-fuse and un-reset the NPE & coprocessor */
-	DPRINTFn(2, sc->sc_dev, "%s: FCTRL unfuse parity, write 0x%x\n",
-	    __func__, regVal & resetNpeParity);
-	EXP_BUS_WRITE_4(sa, EXP_FCTRL_OFFSET, regVal &~ resetNpeParity);
-
+	npe_reset(sc->sc_npeid);
+#endif
 	/*
 	 * Call NpeMgr function to stop the NPE again after the Feature Control
 	 * has unfused and Un-Reset the NPE and its associated Coprocessors.

==== //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/ixp425_npereg.h#2 (text+ko) ====

@@ -26,7 +26,7 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  * THE POSSIBILITY OF SUCH DAMAGES.
  *
- * $FreeBSD: src/sys/arm/xscale/ixp425/ixp425_npereg.h,v 1.1 2006/11/19 23:55:23 sam Exp $
+ * $FreeBSD: src/sys/arm/xscale/ixp425/ixp425_npereg.h,v 1.2 2009/06/17 02:55:53 sam Exp $
  */
 
 /*-
@@ -95,7 +95,6 @@
 /*
  * Instruction and Data Memory Size (in words) for each NPE 
  */
-#ifndef __ixp46X
 #define IX_NPEDL_INS_MEMSIZE_WORDS_NPEA     4096
 #define IX_NPEDL_INS_MEMSIZE_WORDS_NPEB     2048
 #define IX_NPEDL_INS_MEMSIZE_WORDS_NPEC     2048
@@ -103,15 +102,9 @@
 #define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEA    2048
 #define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEB    2048
 #define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEC    2048
-#else
-#define IX_NPEDL_INS_MEMSIZE_WORDS_NPEA     4096
-#define IX_NPEDL_INS_MEMSIZE_WORDS_NPEB     4096
-#define IX_NPEDL_INS_MEMSIZE_WORDS_NPEC     4096
 
-#define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEA    4096
-#define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEB    4096
-#define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEC    4096
-#endif
+#define IXP46X_NPEDL_INS_MEMSIZE_WORDS      4096
+#define IXP46X_NPEDL_DATA_MEMSIZE_WORDS     4096
 
 /* BAR offsets */
 #define IX_NPEDL_REG_OFFSET_EXAD             0x00000000	/* Execution Address */

==== //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/ixp425var.h#2 (text+ko) ====

@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/arm/xscale/ixp425/ixp425var.h,v 1.6 2008/12/23 04:48:27 sam Exp $
+ * $FreeBSD: src/sys/arm/xscale/ixp425/ixp425var.h,v 1.7 2009/06/17 02:51:16 sam Exp $
  *
  */
 
@@ -101,6 +101,7 @@
 uint32_t ixp425_sdram_size(void);
 uint32_t ixp435_ddram_size(void);
 uint32_t ixp4xx_read_feature_bits(void);
+void	ixp4xx_write_feature_bits(uint32_t);
 
 int	ixp425_md_route_interrupt(device_t, device_t, int);
 void	ixp425_md_attach(device_t);

==== //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c#3 (text+ko) ====

@@ -158,7 +158,7 @@
  */
 static int		arc_min_prefetch_lifespan;
 
-extern int zfs_prefetch_enable;
+extern int zfs_prefetch_disable;
 static int arc_dead;
 
 /*
@@ -3552,21 +3552,21 @@
 	mutex_init(&zfs_write_limit_lock, NULL, MUTEX_DEFAULT, NULL);
 
 #ifdef _KERNEL
-	if (TUNABLE_INT_FETCH("vfs.zfs.prefetch_enable", &zfs_prefetch_enable))
+	if (TUNABLE_INT_FETCH("vfs.zfs.prefetch_disable", &zfs_prefetch_disable))
 		prefetch_tunable_set = 1;
 	
 #ifdef __i386__
 	if (prefetch_tunable_set == 0) {
 		printf("ZFS NOTICE: prefetch is disabled by default on i386"
 		    " - add enable to tunable to change.\n" );
-		zfs_prefetch_enable=0;
+		zfs_prefetch_disable=1;
 	}
 #else	
 	if ((((uint64_t)physmem * PAGESIZE) < (1ULL << 32)) &&
 	    prefetch_tunable_set == 0) {
 		printf("ZFS NOTICE: system has less than 4GB and prefetch enable is not set"
 		    "... disabling.\n");
-		zfs_prefetch_enable=0;
+		zfs_prefetch_disable=1;
 	}
 #endif	
 	/* Warn about ZFS memory and address space requirements. */

==== //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c#3 (text+ko) ====

@@ -326,7 +326,7 @@
 	uint64_t blkid;
 	int nblks, i, err;
 
-	if (zfs_prefetch_enable == 0)
+	if (zfs_prefetch_disable)
 		return;
 
 	if (len == 0) {  /* they're interested in the bonus buffer */

==== //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c#3 (text+ko) ====

@@ -37,7 +37,7 @@
  * until we can get this working the way we want it to.
  */
 
-int zfs_prefetch_enable = 1;
+int zfs_prefetch_disable = 0;
 
 /* max # of streams per zfetch */
 uint32_t	zfetch_max_streams = 8;
@@ -49,8 +49,8 @@
 uint64_t	zfetch_array_rd_sz = 1024 * 1024;
 
 SYSCTL_DECL(_vfs_zfs);
-SYSCTL_INT(_vfs_zfs, OID_AUTO, prefetch_enable, CTLFLAG_RDTUN,
-    &zfs_prefetch_enable, 0, "Enable prefetch for systems with less than 4GB");
+SYSCTL_INT(_vfs_zfs, OID_AUTO, prefetch_disable, CTLFLAG_RDTUN,
+    &zfs_prefetch_disable, 0, "Disable prefetch");
 SYSCTL_NODE(_vfs_zfs, OID_AUTO, zfetch, CTLFLAG_RW, 0, "ZFS ZFETCH");
 TUNABLE_INT("vfs.zfs.zfetch.max_streams", &zfetch_max_streams);
 SYSCTL_UINT(_vfs_zfs_zfetch, OID_AUTO, max_streams, CTLFLAG_RDTUN,
@@ -598,7 +598,7 @@
 	unsigned int	blkshft;
 	uint64_t	blksz;
 
-	if (zfs_prefetch_enable == 0)
+	if (zfs_prefetch_disable)
 		return;
 
 	/* files that aren't ln2 blocksz are only one block -- nothing to do */

==== //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h#3 (text+ko) ====

@@ -457,7 +457,7 @@
 int dmu_write_pages(objset_t *os, uint64_t object, uint64_t offset,
     uint64_t size, struct page *pp, dmu_tx_t *tx);
 
-extern int zfs_prefetch_enable;
+extern int zfs_prefetch_disable;
 
 /*
  * Asynchronously try to read in the data.

==== //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/freebsd32_proto.h#3 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call prototypes.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.102 2009/06/15 20:40:23 jhb Exp $
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 194262 2009-06-15 20:38:55Z jhb 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.103 2009/06/17 19:53:47 jhb Exp $
+ * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 194390 2009-06-17 19:50:38Z jhb 
  */
 
 #ifndef _FREEBSD32_SYSPROTO_H_

==== //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/freebsd32_syscall.h#3 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call numbers.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.101 2009/06/15 20:40:23 jhb Exp $
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 194262 2009-06-15 20:38:55Z jhb 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.102 2009/06/17 19:53:47 jhb Exp $
+ * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 194390 2009-06-17 19:50:38Z jhb 
  */
 
 #define	FREEBSD32_SYS_syscall	0

==== //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/freebsd32_syscalls.c#3 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call names.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.92 2009/06/15 20:40:23 jhb Exp $
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 194262 2009-06-15 20:38:55Z jhb 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.93 2009/06/17 19:53:47 jhb Exp $
+ * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 194390 2009-06-17 19:50:38Z jhb 
  */
 
 const char *freebsd32_syscallnames[] = {
@@ -25,7 +25,7 @@
 	"chmod",			/* 15 = chmod */
 	"chown",			/* 16 = chown */
 	"break",			/* 17 = break */
-	"compat4.freebsd32_getfsstat",		/* 18 = old freebsd32_getfsstat */
+	"compat4.freebsd32_getfsstat",		/* 18 = freebsd4 freebsd32_getfsstat */

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



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