PERFORCE change 164797 for review
Marko Zec
zec at FreeBSD.org
Sun Jun 21 08:30:33 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=164797
Change 164797 by zec at zec_amdx4 on 2009/06/21 08:30:31
IFC @ 164795
Affected files ...
.. //depot/projects/vimage-commit2/src/sys/amd64/amd64/msi.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/conf/GENERIC.hints#4 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/arm/pmap.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/conf/CAMBRIA.hints#4 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/include/pmap.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/xscale/ixp425/if_npe.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/xscale/ixp425/ixp425.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/xscale/ixp425/ixp425_npe.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/xscale/ixp425/ixp425_npereg.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/xscale/ixp425/ixp425var.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/boot/forth/loader.conf#14 integrate
.. //depot/projects/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/freebsd32/freebsd32_proto.h#15 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/freebsd32/freebsd32_syscall.h#15 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/freebsd32/freebsd32_syscalls.c#15 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/freebsd32/freebsd32_sysent.c#16 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/freebsd32/syscalls.master#15 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/linprocfs/linprocfs.c#22 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/linux/linux_ioctl.c#19 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/linux/linux_misc.c#22 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/linux/linux_uid16.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/conf/NOTES#31 integrate
.. //depot/projects/vimage-commit2/src/sys/conf/files#44 integrate
.. //depot/projects/vimage-commit2/src/sys/conf/options#34 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/cas/if_cas.c#1 branch
.. //depot/projects/vimage-commit2/src/sys/dev/cas/if_casreg.h#1 branch
.. //depot/projects/vimage-commit2/src/sys/dev/cas/if_casvar.h#1 branch
.. //depot/projects/vimage-commit2/src/sys/dev/cxgb/common/cxgb_t3_cpl.h#5 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/cxgb/cxgb_adapter.h#9 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/cxgb/cxgb_main.c#19 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/cxgb/cxgb_multiq.c#9 delete
.. //depot/projects/vimage-commit2/src/sys/dev/cxgb/cxgb_osdep.h#8 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/cxgb/cxgb_sge.c#15 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/cxgb/sys/cxgb_support.c#5 delete
.. //depot/projects/vimage-commit2/src/sys/dev/cxgb/sys/mvec.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/cxgb/sys/uipc_mvec.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_bufs.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_context.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/i915_dma.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/i915_drv.h#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/i915_irq.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/fxp/if_fxp.c#12 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/fxp/if_fxpvar.h#5 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/if_ndis/if_ndis.c#16 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/puc/pucdata.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/syscons/scterm-teken.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/syscons/teken/teken.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/net/if_cdce.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/serial/umodem.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_device.c#14 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_device.h#13 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/wlan/if_uath.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/devfs/devfs_vnops.c#17 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/nfs/nfs.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/nfs/nfs_commonport.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/nfs/nfsport.h#6 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/nfsclient/nfs_clbio.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/nfsclient/nfs_clkrpc.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/nfsclient/nfs_clport.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/nfsclient/nfs_clvnops.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/nfsserver/nfs_nfsdkrpc.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/nfsserver/nfs_nfsdport.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/nfsserver/nfs_nfsdstate.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/portalfs/portal.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/portalfs/portal_vnops.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/unionfs/union_vnops.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/label/g_label_gpt.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/gnu/fs/ext2fs/ext2_lookup.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/gnu/fs/ext2fs/ext2_vnops.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/i386/msi.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/ibcs2/ibcs2_isc_sysent.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/ibcs2/ibcs2_misc.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/ibcs2/ibcs2_xenix_sysent.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/include/cpufunc.h#9 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/include/specialreg.h#9 integrate
.. //depot/projects/vimage-commit2/src/sys/ia64/ia64/vm_machdep.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/init_sysent.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_acct.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_descrip.c#14 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_exec.c#14 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_exit.c#14 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_jail.c#27 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_lock.c#11 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_lockf.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_mbuf.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_proc.c#16 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_prot.c#15 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_sysctl.c#13 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_vimage.c#55 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/makesyscalls.sh#4 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/syscalls.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/syscalls.master#7 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/systrace_args.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/sysv_msg.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/tty.c#27 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/uipc_socket.c#24 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/uipc_usrreq.c#14 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/vfs_export.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/mips/adm5120/if_admsw.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/mips/conf/.cvsignore#1 branch
.. //depot/projects/vimage-commit2/src/sys/mips/idt/idtpci.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/mips/idt/if_kr.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/Makefile#26 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/acpi/acpi/Makefile#4 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/cas/Makefile#1 branch
.. //depot/projects/vimage-commit2/src/sys/modules/cxgb/cxgb/Makefile#6 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/wlan/Makefile#7 integrate
.. //depot/projects/vimage-commit2/src/sys/net/bpf.c#21 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if.c#77 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if.h#9 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_enc.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_gre.c#12 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_tun.c#15 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_var.h#32 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_wds.c#11 integrate
.. //depot/projects/vimage-commit2/src/sys/netatalk/ddp_output.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/in_proto.c#16 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_var.h#19 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ipfw/ip_dummynet.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ipfw/ip_fw2.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/sctp.h#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/sctp_indata.c#13 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/sctp_input.c#12 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/sctp_output.c#17 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_input.c#39 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_output.c#23 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#55 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_timer.c#15 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_usrreq.c#20 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_var.h#18 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6_proto.c#25 integrate
.. //depot/projects/vimage-commit2/src/sys/netipsec/key.c#34 integrate
.. //depot/projects/vimage-commit2/src/sys/netipsec/xform_tcp.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/netipx/ipx_usrreq.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/netipx/spx.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/netipx/spx_reass.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/netipx/spx_usrreq.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/netipx/spx_var.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsclient/nfs_bio.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsclient/nfs_vnops.c#21 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsserver/nfs_srvkrpc.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsserver/nfs_srvsock.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsserver/nfs_srvsubs.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/nlm/nlm_prot_impl.c#12 integrate
.. //depot/projects/vimage-commit2/src/sys/powerpc/include/spr.h#8 integrate
.. //depot/projects/vimage-commit2/src/sys/powerpc/powerpc/cpu.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/rpc/svc.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/rpc/svc_auth.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/rpc/svc_auth_unix.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/rpc/svc_generic.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/rpc/svc_vc.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/security/mac_biba/mac_biba.c#19 integrate
.. //depot/projects/vimage-commit2/src/sys/security/mac_lomac/mac_lomac.c#16 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/conf/GENERIC#14 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/jail.h#13 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/lockmgr.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/mbuf.h#12 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/param.h#45 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/priv.h#12 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/sockio.h#5 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/syscall.h#7 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/syscall.mk#7 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/sysctl.h#22 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/syslimits.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/sysproto.h#7 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/ucred.h#8 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/user.h#7 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/vimage.h#74 integrate
.. //depot/projects/vimage-commit2/src/sys/ufs/ufs/ufs_dirhash.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/ufs/ufs/ufs_lookup.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/ufs/ufs/ufs_vnops.c#12 integrate
.. //depot/projects/vimage-commit2/src/sys/vm/device_pager.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/vm/uma_core.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/vm/vm_contig.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/vm/vm_extern.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/vm/vm_page.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/vm/vm_phys.c#2 integrate
Differences ...
==== //depot/projects/vimage-commit2/src/sys/amd64/amd64/msi.c#4 (text+ko) ====
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.10 2009/01/29 09:22:56 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.11 2009/06/15 13:47:49 mav Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -210,6 +210,8 @@
old_id = msi->msi_cpu;
if (old_vector && old_id == apic_id)
return;
+ if (old_vector && !msi->msi_msix && msi->msi_first->msi_count > 1)
+ return;
/* Allocate IDT vector on this cpu. */
vector = apic_alloc_vector(apic_id, msi->msi_irq);
if (vector == 0)
==== //depot/projects/vimage-commit2/src/sys/amd64/conf/GENERIC.hints#4 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/amd64/conf/GENERIC.hints,v 1.20 2009/05/14 21:53:35 jhb Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC.hints,v 1.21 2009/06/15 21:55:29 ps Exp $
hint.fdc.0.at="isa"
hint.fdc.0.port="0x3F0"
hint.fdc.0.irq="6"
@@ -24,3 +24,6 @@
hint.uart.1.irq="3"
hint.ppc.0.at="isa"
hint.ppc.0.irq="7"
+hint.atrtc.0.at="isa"
+hint.atrtc.0.port="0x70"
+hint.atrtc.0.irq="8"
==== //depot/projects/vimage-commit2/src/sys/arm/arm/pmap.c#8 (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/vimage-commit2/src/sys/arm/conf/CAMBRIA.hints#4 (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/vimage-commit2/src/sys/arm/include/pmap.h#4 (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/vimage-commit2/src/sys/arm/xscale/ixp425/if_npe.c#8 (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/vimage-commit2/src/sys/arm/xscale/ixp425/ixp425.c#7 (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/vimage-commit2/src/sys/arm/xscale/ixp425/ixp425_npe.c#3 (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/vimage-commit2/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/vimage-commit2/src/sys/arm/xscale/ixp425/ixp425var.h#3 (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/vimage-commit2/src/sys/boot/forth/loader.conf#14 (text+ko) ====
@@ -6,7 +6,7 @@
#
# All arguments must be in double quotes.
#
-# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.141 2009/06/10 02:07:58 yongari Exp $
+# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.142 2009/06/15 18:22:41 marius Exp $
##############################################################
### Basic configuration options ############################
@@ -221,6 +221,7 @@
if_bce_load="NO" # Broadcom NetXtreme II Gigabit Ethernet
if_bfe_load="NO" # Broadcom BCM4401
if_bge_load="NO" # Broadcom BCM570x PCI Gigabit Ethernet
+if_cas_load="NO" # Sun Cassini/Cassini+ and NS DP83065 Saturn
if_cm_load="NO" # SMC (90c26, 90c56, 90c66)
if_cs_load="NO" # Crystal Semiconductor CS8920
if_cue_load="NO" # CATC USB-EL1210A USB Ethernet
==== //depot/projects/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c#7 (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/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c#5 (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/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c#5 (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;
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list