PERFORCE change 162010 for review
John Baldwin
jhb at FreeBSD.org
Wed May 13 13:57:07 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=162010
Change 162010 by jhb at jhb_jhbbsd on 2009/05/13 13:56:17
IFC @162009
Affected files ...
.. //depot/projects/smpng/sys/amd64/amd64/pmap.c#93 integrate
.. //depot/projects/smpng/sys/amd64/conf/DEFAULTS#13 integrate
.. //depot/projects/smpng/sys/amd64/conf/GENERIC#77 integrate
.. //depot/projects/smpng/sys/amd64/conf/NOTES#51 integrate
.. //depot/projects/smpng/sys/amd64/conf/XENHVM#3 integrate
.. //depot/projects/smpng/sys/amd64/linux32/linux.h#22 integrate
.. //depot/projects/smpng/sys/amd64/linux32/linux32_sysvec.c#40 integrate
.. //depot/projects/smpng/sys/arm/at91/at91_cfata.c#2 integrate
.. //depot/projects/smpng/sys/arm/at91/if_ate.c#20 integrate
.. //depot/projects/smpng/sys/arm/conf/AVILA#17 integrate
.. //depot/projects/smpng/sys/arm/conf/BWCT#9 integrate
.. //depot/projects/smpng/sys/arm/conf/CAMBRIA#8 integrate
.. //depot/projects/smpng/sys/arm/conf/CRB#6 integrate
.. //depot/projects/smpng/sys/arm/conf/DB-78XXX#4 integrate
.. //depot/projects/smpng/sys/arm/conf/DB-88F5XXX#4 integrate
.. //depot/projects/smpng/sys/arm/conf/DB-88F6XXX#4 integrate
.. //depot/projects/smpng/sys/arm/conf/EP80219#10 integrate
.. //depot/projects/smpng/sys/arm/conf/GUMSTIX#4 integrate
.. //depot/projects/smpng/sys/arm/conf/HL200#9 integrate
.. //depot/projects/smpng/sys/arm/conf/IQ31244#19 integrate
.. //depot/projects/smpng/sys/arm/conf/KB920X#16 integrate
.. //depot/projects/smpng/sys/arm/conf/NSLU#7 integrate
.. //depot/projects/smpng/sys/arm/conf/SIMICS#17 integrate
.. //depot/projects/smpng/sys/arm/conf/SKYEYE#10 integrate
.. //depot/projects/smpng/sys/cam/cam_periph.c#31 integrate
.. //depot/projects/smpng/sys/cam/scsi/scsi_pass.c#22 integrate
.. //depot/projects/smpng/sys/cam/scsi/scsi_sg.c#6 integrate
.. //depot/projects/smpng/sys/cddl/compat/opensolaris/kern/opensolaris.c#2 integrate
.. //depot/projects/smpng/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c#2 integrate
.. //depot/projects/smpng/sys/cddl/compat/opensolaris/kern/opensolaris_misc.c#3 integrate
.. //depot/projects/smpng/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c#6 integrate
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/common/acl/acl_common.c#3 integrate
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/common/atomic/amd64/atomic.S#3 delete
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/common/atomic/amd64/opensolaris_atomic.S#1 branch
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/common/atomic/i386/atomic.S#3 delete
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S#1 branch
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/common/atomic/ia64/atomic.S#2 delete
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S#1 branch
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/common/atomic/sparc64/atomic.S#2 delete
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/common/atomic/sparc64/opensolaris_atomic.S#1 branch
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c#5 integrate
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#3 integrate
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr.c#1 branch
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr_array.c#1 branch
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr_mem.c#1 branch
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr.c#3 delete
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr_array.c#3 delete
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr_mem.c#2 delete
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/zmod/crc32.c#2 delete
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/zmod/opensolaris_crc32.c#1 branch
.. //depot/projects/smpng/sys/compat/linux/linux_mib.c#19 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_mib.h#11 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_misc.c#97 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_misc.h#5 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_socket.c#46 integrate
.. //depot/projects/smpng/sys/compat/ndis/kern_windrv.c#11 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_ioctl.c#15 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_ioctl.h#5 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_proto.h#20 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_stat.c#20 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_syscall.h#19 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_syscallnames.c#19 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_sysent.c#19 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_ttold.c#10 delete
.. //depot/projects/smpng/sys/compat/svr4/svr4_ttold.h#3 delete
.. //depot/projects/smpng/sys/conf/NOTES#167 integrate
.. //depot/projects/smpng/sys/conf/files#238 integrate
.. //depot/projects/smpng/sys/conf/files.i386#123 integrate
.. //depot/projects/smpng/sys/conf/files.pc98#98 integrate
.. //depot/projects/smpng/sys/contrib/dev/iwi/Makefile#1 branch
.. //depot/projects/smpng/sys/contrib/dev/iwi/ipw2200-bss.fw.uu#2 integrate
.. //depot/projects/smpng/sys/contrib/dev/iwi/ipw2200-ibss.fw.uu#2 integrate
.. //depot/projects/smpng/sys/contrib/dev/iwi/ipw2200-sniffer.fw.uu#2 integrate
.. //depot/projects/smpng/sys/dev/acpi_support/acpi_ibm.c#13 integrate
.. //depot/projects/smpng/sys/dev/acpi_support/acpi_sony.c#7 integrate
.. //depot/projects/smpng/sys/dev/asr/asr.c#40 integrate
.. //depot/projects/smpng/sys/dev/ata/atapi-cam.c#40 integrate
.. //depot/projects/smpng/sys/dev/bce/if_bce.c#27 integrate
.. //depot/projects/smpng/sys/dev/bce/if_bcereg.h#16 integrate
.. //depot/projects/smpng/sys/dev/bwi/bwimac.c#2 integrate
.. //depot/projects/smpng/sys/dev/cxgb/cxgb_multiq.c#7 integrate
.. //depot/projects/smpng/sys/dev/ipw/if_ipw.c#21 integrate
.. //depot/projects/smpng/sys/dev/isp/isp_freebsd.c#60 integrate
.. //depot/projects/smpng/sys/dev/iwi/if_iwi.c#32 integrate
.. //depot/projects/smpng/sys/dev/iwi/if_iwivar.h#12 integrate
.. //depot/projects/smpng/sys/dev/iwn/if_iwn.c#7 integrate
.. //depot/projects/smpng/sys/dev/lge/if_lge.c#40 integrate
.. //depot/projects/smpng/sys/dev/snp/snp.c#35 integrate
.. //depot/projects/smpng/sys/dev/usb/usbdevs#135 integrate
.. //depot/projects/smpng/sys/dev/usb/wlan/if_upgt.c#1 branch
.. //depot/projects/smpng/sys/dev/usb/wlan/if_upgtvar.h#1 branch
.. //depot/projects/smpng/sys/dev/vge/if_vge.c#24 integrate
.. //depot/projects/smpng/sys/dev/wpi/if_wpi.c#10 integrate
.. //depot/projects/smpng/sys/dev/xen/console/console.c#7 integrate
.. //depot/projects/smpng/sys/dev/xen/console/xencons_ring.c#4 integrate
.. //depot/projects/smpng/sys/dev/xen/console/xencons_ring.h#2 integrate
.. //depot/projects/smpng/sys/fs/cd9660/cd9660_vfsops.c#12 integrate
.. //depot/projects/smpng/sys/fs/coda/coda_vfsops.c#6 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs.h#21 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_vfsops.c#31 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_vnops.c#79 integrate
.. //depot/projects/smpng/sys/fs/fdescfs/fdesc.h#9 integrate
.. //depot/projects/smpng/sys/fs/fdescfs/fdesc_vfsops.c#27 integrate
.. //depot/projects/smpng/sys/fs/fdescfs/fdesc_vnops.c#35 integrate
.. //depot/projects/smpng/sys/fs/hpfs/hpfs_vfsops.c#40 integrate
.. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_vfsops.c#63 integrate
.. //depot/projects/smpng/sys/fs/nfs/nfs.h#2 integrate
.. //depot/projects/smpng/sys/fs/nfs/nfs_commonsubs.c#2 integrate
.. //depot/projects/smpng/sys/fs/nfs/nfs_var.h#2 integrate
.. //depot/projects/smpng/sys/fs/nfs/nfsport.h#2 integrate
.. //depot/projects/smpng/sys/fs/nfsclient/nfs_clvfsops.c#2 integrate
.. //depot/projects/smpng/sys/fs/nfsserver/nfs_nfsdkrpc.c#2 integrate
.. //depot/projects/smpng/sys/fs/nfsserver/nfs_nfsdport.c#2 integrate
.. //depot/projects/smpng/sys/fs/nfsserver/nfs_nfsdserv.c#2 integrate
.. //depot/projects/smpng/sys/fs/nfsserver/nfs_nfsdsocket.c#2 integrate
.. //depot/projects/smpng/sys/fs/ntfs/ntfs_vfsops.c#40 integrate
.. //depot/projects/smpng/sys/fs/nullfs/null_vfsops.c#31 integrate
.. //depot/projects/smpng/sys/fs/nwfs/nwfs_vfsops.c#28 integrate
.. //depot/projects/smpng/sys/fs/portalfs/portal_vfsops.c#25 integrate
.. //depot/projects/smpng/sys/fs/pseudofs/pseudofs.c#28 integrate
.. //depot/projects/smpng/sys/fs/pseudofs/pseudofs.h#27 integrate
.. //depot/projects/smpng/sys/fs/smbfs/smbfs_io.c#31 integrate
.. //depot/projects/smpng/sys/fs/smbfs/smbfs_vfsops.c#41 integrate
.. //depot/projects/smpng/sys/fs/tmpfs/tmpfs.h#6 integrate
.. //depot/projects/smpng/sys/fs/tmpfs/tmpfs_subr.c#9 integrate
.. //depot/projects/smpng/sys/fs/tmpfs/tmpfs_vfsops.c#5 integrate
.. //depot/projects/smpng/sys/fs/tmpfs/tmpfs_vnops.c#11 integrate
.. //depot/projects/smpng/sys/fs/udf/udf_vfsops.c#47 integrate
.. //depot/projects/smpng/sys/fs/unionfs/union_vfsops.c#40 integrate
.. //depot/projects/smpng/sys/geom/concat/g_concat.c#18 integrate
.. //depot/projects/smpng/sys/geom/journal/g_journal.c#13 integrate
.. //depot/projects/smpng/sys/gnu/fs/ext2fs/ext2_vfsops.c#20 integrate
.. //depot/projects/smpng/sys/gnu/fs/reiserfs/reiserfs_vfsops.c#11 integrate
.. //depot/projects/smpng/sys/gnu/fs/xfs/FreeBSD/xfs_mountops.c#9 integrate
.. //depot/projects/smpng/sys/i386/conf/DEFAULTS#15 integrate
.. //depot/projects/smpng/sys/i386/conf/GENERIC#108 integrate
.. //depot/projects/smpng/sys/i386/conf/NOTES#142 integrate
.. //depot/projects/smpng/sys/i386/conf/PAE#24 integrate
.. //depot/projects/smpng/sys/i386/conf/XBOX#13 integrate
.. //depot/projects/smpng/sys/i386/conf/XEN#7 integrate
.. //depot/projects/smpng/sys/i386/cpufreq/hwpstate.c#2 integrate
.. //depot/projects/smpng/sys/i386/i386/pmap.c#132 integrate
.. //depot/projects/smpng/sys/i386/ibcs2/ibcs2_ioctl.c#15 integrate
.. //depot/projects/smpng/sys/i386/ibcs2/ibcs2_isc_syscall.h#10 integrate
.. //depot/projects/smpng/sys/i386/ibcs2/ibcs2_isc_sysent.c#11 integrate
.. //depot/projects/smpng/sys/i386/ibcs2/ibcs2_proto.h#19 integrate
.. //depot/projects/smpng/sys/i386/ibcs2/ibcs2_socksys.c#16 integrate
.. //depot/projects/smpng/sys/i386/ibcs2/ibcs2_syscall.h#17 integrate
.. //depot/projects/smpng/sys/i386/ibcs2/ibcs2_sysent.c#19 integrate
.. //depot/projects/smpng/sys/i386/ibcs2/ibcs2_xenix.h#14 integrate
.. //depot/projects/smpng/sys/i386/ibcs2/ibcs2_xenix_syscall.h#12 integrate
.. //depot/projects/smpng/sys/i386/ibcs2/ibcs2_xenix_sysent.c#13 integrate
.. //depot/projects/smpng/sys/i386/ibcs2/syscalls.master#22 integrate
.. //depot/projects/smpng/sys/i386/linux/linux_sysvec.c#69 integrate
.. //depot/projects/smpng/sys/ia64/conf/DEFAULTS#12 integrate
.. //depot/projects/smpng/sys/ia64/conf/NOTES#12 integrate
.. //depot/projects/smpng/sys/kern/init_main.c#77 integrate
.. //depot/projects/smpng/sys/kern/kern_acct.c#55 integrate
.. //depot/projects/smpng/sys/kern/kern_exit.c#138 integrate
.. //depot/projects/smpng/sys/kern/kern_fork.c#118 integrate
.. //depot/projects/smpng/sys/kern/kern_jail.c#67 integrate
.. //depot/projects/smpng/sys/kern/kern_linker.c#100 integrate
.. //depot/projects/smpng/sys/kern/kern_lock.c#74 integrate
.. //depot/projects/smpng/sys/kern/kern_malloc.c#55 integrate
.. //depot/projects/smpng/sys/kern/kern_mib.c#42 integrate
.. //depot/projects/smpng/sys/kern/kern_prot.c#108 integrate
.. //depot/projects/smpng/sys/kern/kern_vimage.c#4 integrate
.. //depot/projects/smpng/sys/kern/subr_kdb.c#22 integrate
.. //depot/projects/smpng/sys/kern/uipc_mqueue.c#21 integrate
.. //depot/projects/smpng/sys/kern/uipc_socket.c#122 integrate
.. //depot/projects/smpng/sys/kern/uipc_syscalls.c#115 integrate
.. //depot/projects/smpng/sys/kern/vfs_bio.c#120 integrate
.. //depot/projects/smpng/sys/kern/vfs_default.c#60 integrate
.. //depot/projects/smpng/sys/kern/vfs_export.c#33 integrate
.. //depot/projects/smpng/sys/kern/vfs_extattr.c#8 integrate
.. //depot/projects/smpng/sys/kern/vfs_lookup.c#58 integrate
.. //depot/projects/smpng/sys/kern/vfs_mount.c#92 integrate
.. //depot/projects/smpng/sys/kern/vfs_subr.c#165 integrate
.. //depot/projects/smpng/sys/kern/vfs_syscalls.c#145 integrate
.. //depot/projects/smpng/sys/kern/vfs_vnops.c#95 integrate
.. //depot/projects/smpng/sys/mips/conf/ADM5120#4 integrate
.. //depot/projects/smpng/sys/mips/conf/IDT#6 integrate
.. //depot/projects/smpng/sys/mips/conf/MALTA#4 integrate
.. //depot/projects/smpng/sys/mips/conf/QEMU#3 integrate
.. //depot/projects/smpng/sys/mips/conf/SENTRY5#6 integrate
.. //depot/projects/smpng/sys/modules/opensolaris/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/sound/sound/Makefile#8 integrate
.. //depot/projects/smpng/sys/modules/svr4/Makefile#10 integrate
.. //depot/projects/smpng/sys/modules/usb/Makefile#16 integrate
.. //depot/projects/smpng/sys/modules/usb/upgt/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/zfs/Makefile#8 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_proto.c#34 integrate
.. //depot/projects/smpng/sys/netgraph/netflow/ng_netflow.c#15 integrate
.. //depot/projects/smpng/sys/netinet/igmp.c#32 integrate
.. //depot/projects/smpng/sys/netinet/in.c#52 integrate
.. //depot/projects/smpng/sys/netinet/in_var.h#26 integrate
.. //depot/projects/smpng/sys/netinet/ip_fw2.c#108 integrate
.. //depot/projects/smpng/sys/netinet/tcp_hostcache.c#19 integrate
.. //depot/projects/smpng/sys/netinet6/ip6_output.c#63 integrate
.. //depot/projects/smpng/sys/netinet6/route6.c#15 integrate
.. //depot/projects/smpng/sys/nfs4client/nfs4_vfsops.c#25 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs.h#36 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_bio.c#55 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_vfsops.c#70 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs_serv.c#65 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs_srvsubs.c#49 integrate
.. //depot/projects/smpng/sys/nlm/nlm_advlock.c#3 integrate
.. //depot/projects/smpng/sys/nlm/nlm_prot_impl.c#5 integrate
.. //depot/projects/smpng/sys/pc98/conf/DEFAULTS#12 integrate
.. //depot/projects/smpng/sys/pc98/conf/NOTES#68 integrate
.. //depot/projects/smpng/sys/powerpc/conf/GENERIC#57 integrate
.. //depot/projects/smpng/sys/powerpc/conf/MPC85XX#7 integrate
.. //depot/projects/smpng/sys/powerpc/conf/NOTES#14 integrate
.. //depot/projects/smpng/sys/security/audit/audit_worker.c#12 integrate
.. //depot/projects/smpng/sys/sparc64/conf/GENERIC#92 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/vm_machdep.c#54 integrate
.. //depot/projects/smpng/sys/sys/_null.h#7 integrate
.. //depot/projects/smpng/sys/sys/ioctl.h#9 integrate
.. //depot/projects/smpng/sys/sys/ioctl_compat.h#8 integrate
.. //depot/projects/smpng/sys/sys/kernel.h#44 integrate
.. //depot/projects/smpng/sys/sys/mount.h#74 integrate
.. //depot/projects/smpng/sys/sys/param.h#144 integrate
.. //depot/projects/smpng/sys/sys/proc.h#197 integrate
.. //depot/projects/smpng/sys/sys/sysctl.h#58 integrate
.. //depot/projects/smpng/sys/sys/ucred.h#31 integrate
.. //depot/projects/smpng/sys/sys/vimage.h#9 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_vfsops.c#113 integrate
.. //depot/projects/smpng/sys/ufs/ufs/extattr.h#10 integrate
.. //depot/projects/smpng/sys/ufs/ufs/ufs_extattr.c#47 integrate
.. //depot/projects/smpng/sys/ufs/ufs/ufs_extern.h#19 integrate
.. //depot/projects/smpng/sys/ufs/ufs/ufs_vfsops.c#27 integrate
.. //depot/projects/smpng/sys/vm/vm_page.c#103 integrate
.. //depot/projects/smpng/sys/vm/vm_page.h#45 integrate
.. //depot/projects/smpng/sys/vm/vnode_pager.c#71 integrate
Differences ...
==== //depot/projects/smpng/sys/amd64/amd64/pmap.c#93 (text+ko) ====
@@ -77,7 +77,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.657 2009/03/22 04:32:05 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.658 2009/05/13 07:42:53 alc Exp $");
/*
* Manages physical address maps.
@@ -3556,7 +3556,7 @@
dstmpte->wire_count++;
else if ((dstmpte = pmap_allocpte(dst_pmap,
addr, M_NOWAIT)) == NULL)
- break;
+ goto out;
dst_pte = (pt_entry_t *)
PHYS_TO_DMAP(VM_PAGE_TO_PHYS(dstmpte));
dst_pte = &dst_pte[pmap_pte_index(addr)];
@@ -3579,6 +3579,7 @@
addr);
pmap_free_zero_pages(free);
}
+ goto out;
}
if (dstmpte->wire_count >= srcmpte->wire_count)
break;
@@ -3587,6 +3588,7 @@
src_pte++;
}
}
+out:
vm_page_unlock_queues();
PMAP_UNLOCK(src_pmap);
PMAP_UNLOCK(dst_pmap);
==== //depot/projects/smpng/sys/amd64/conf/DEFAULTS#13 (text+ko) ====
@@ -1,7 +1,7 @@
#
# DEFAULTS -- Default kernel configuration file for FreeBSD/amd64
#
-# $FreeBSD: src/sys/amd64/conf/DEFAULTS,v 1.17 2009/04/19 00:16:04 kmacy Exp $
+# $FreeBSD: src/sys/amd64/conf/DEFAULTS,v 1.18 2009/05/10 00:00:25 kuriyama Exp $
machine amd64
@@ -21,4 +21,4 @@
options GEOM_PART_EBR_COMPAT
options GEOM_PART_MBR
-options FLOWTABLE
+options FLOWTABLE
==== //depot/projects/smpng/sys/amd64/conf/GENERIC#77 (text+ko) ====
@@ -16,7 +16,7 @@
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
-# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.524 2009/05/01 17:20:16 sam Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.525 2009/05/10 00:00:25 kuriyama Exp $
cpu HAMMER
ident GENERIC
@@ -68,7 +68,7 @@
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options STOP_NMI # Stop CPUS using NMI instead of IPI
-options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4)
+options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4)
options AUDIT # Security event auditing
#options KDTRACE_FRAME # Ensure frames are compiled in
#options KDTRACE_HOOKS # Kernel DTrace hooks
@@ -114,7 +114,7 @@
device amd # AMD 53C974 (Tekram DC-390(T))
device hptiop # Highpoint RocketRaid 3xxx series
device isp # Qlogic family
-#device ispfw # Firmware for QLogic HBAs- normally a module
+#device ispfw # Firmware for QLogic HBAs- normally a module
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets + those of `ncr')
@@ -260,7 +260,7 @@
device an # Aironet 4500/4800 802.11 wireless NICs.
device ath # Atheros pci/cardbus NIC's
device ath_hal # pci/cardbus chip support
-options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors
+options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors
device ath_rate_sample # SampleRate tx rate control for ath
device ral # Ralink Technology RT2500 wireless NICs.
device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
==== //depot/projects/smpng/sys/amd64/conf/NOTES#51 (text+ko) ====
@@ -4,7 +4,7 @@
# This file contains machine dependent kernel configuration notes. For
# machine independent notes, look in /sys/conf/NOTES.
#
-# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.89 2009/03/16 10:36:24 dchagin Exp $
+# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.90 2009/05/10 00:00:25 kuriyama Exp $
#
#
@@ -33,7 +33,7 @@
#
# Debugging options.
#
-options STOP_NMI # Stop CPUS using NMI instead of IPI
+options STOP_NMI # Stop CPUS using NMI instead of IPI
@@ -82,7 +82,7 @@
# BPF_JITTER adds support for BPF just-in-time compiler.
-options BPF_JITTER
+options BPF_JITTER
#####################################################################
@@ -153,7 +153,7 @@
#
# AGP debugging.
#
-options AGP_DEBUG
+options AGP_DEBUG
#####################################################################
@@ -288,7 +288,7 @@
device ath # Atheros pci/cardbus NIC's
device ath_hal # pci/cardbus chip support
-options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors
+options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors
device ath_rate_sample # SampleRate tx rate control for ath
#device ath_rate_amrr # AMRR rate control for ath driver
#device ath_rate_onoe # Onoe rate control for ath driver
@@ -457,7 +457,7 @@
#Enable the linux-like sys filesystem support (requires COMPAT_LINUX32
# and PSEUDOFS)
-options LINSYSFS
+options LINSYSFS
#
# SysVR4 ABI emulation
==== //depot/projects/smpng/sys/amd64/conf/XENHVM#3 (text+ko) ====
@@ -16,7 +16,7 @@
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
-# $FreeBSD: src/sys/amd64/conf/XENHVM,v 1.2 2009/05/06 17:52:38 dfr Exp $
+# $FreeBSD: src/sys/amd64/conf/XENHVM,v 1.3 2009/05/10 00:00:25 kuriyama Exp $
cpu HAMMER
ident GENERIC
@@ -69,12 +69,12 @@
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options STOP_NMI # Stop CPUS using NMI instead of IPI
-options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4)
+options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4)
options AUDIT # Security event auditing
#options KDTRACE_FRAME # Ensure frames are compiled in
#options KDTRACE_HOOKS # Kernel DTrace hooks
-options NO_ADAPTIVE_MUTEXES
-options NO_ADAPTIVE_RWLOCKS
+options NO_ADAPTIVE_MUTEXES
+options NO_ADAPTIVE_RWLOCKS
# Debugging for use in -current
options KDB # Enable kernel debugger support.
@@ -99,7 +99,7 @@
device fdc
# Xen HVM support
-options XENHVM
+options XENHVM
device xenpci
# ATA and ATAPI devices
==== //depot/projects/smpng/sys/amd64/linux32/linux.h#22 (text+ko) ====
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/amd64/linux32/linux.h,v 1.26 2009/05/07 09:39:20 dchagin Exp $
+ * $FreeBSD: src/sys/amd64/linux32/linux.h,v 1.27 2009/05/11 13:50:42 dchagin Exp $
*/
#ifndef _AMD64_LINUX_H_
@@ -96,7 +96,7 @@
typedef struct {
l_time_t tv_sec;
l_suseconds_t tv_usec;
-} __packed l_timeval;
+} l_timeval;
#define l_fd_set fd_set
==== //depot/projects/smpng/sys/amd64/linux32/linux32_sysvec.c#40 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_sysvec.c,v 1.49 2009/05/07 18:36:47 jamie Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_sysvec.c,v 1.51 2009/05/10 18:43:43 dchagin Exp $");
#include "opt_compat.h"
#ifndef COMPAT_IA32
@@ -261,7 +261,17 @@
pos = base + (imgp->args->argc + imgp->args->envc + 2);
AUXARGS_ENTRY_32(pos, LINUX_AT_HWCAP, cpu_feature);
- AUXARGS_ENTRY_32(pos, LINUX_AT_CLKTCK, hz);
+
+ /*
+ * Do not export AT_CLKTCK when emulating Linux kernel prior to 2.4.0,
+ * as it has appeared in the 2.4.0-rc7 first time.
+ * Being exported, AT_CLKTCK is returned by sysconf(_SC_CLK_TCK),
+ * glibc falls back to the hard-coded CLK_TCK value when aux entry
+ * is not present.
+ * Also see linux_times() implementation.
+ */
+ if (linux_kernver(curthread) >= LINUX_KERNVER_2004000)
+ AUXARGS_ENTRY_32(pos, LINUX_AT_CLKTCK, stclohz);
AUXARGS_ENTRY_32(pos, AT_PHDR, args->phdr);
AUXARGS_ENTRY_32(pos, AT_PHENT, args->phent);
AUXARGS_ENTRY_32(pos, AT_PHNUM, args->phnum);
@@ -1125,6 +1135,7 @@
linux_szplatform = roundup(strlen(linux_platform) + 1,
sizeof(char *));
linux_osd_jail_register();
+ stclohz = (stathz ? stathz : hz);
if (bootverbose)
printf("Linux ELF exec handler installed\n");
} else
==== //depot/projects/smpng/sys/arm/at91/at91_cfata.c#2 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/at91_cfata.c,v 1.2 2009/04/23 00:00:57 stas Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/at91_cfata.c,v 1.3 2009/05/10 11:05:22 stas Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -131,9 +131,9 @@
struct resource *r)
{
- KASSERT(type == SYS_RES_IRQ && *rid == ATA_IRQ_RID,
+ KASSERT(type == SYS_RES_IRQ && rid == ATA_IRQ_RID,
("[at91_cfata, %d]: illegal resource request (type %u rid %u)",
- __LINE__, type, *rid));
+ __LINE__, type, rid));
return (0);
}
==== //depot/projects/smpng/sys/arm/at91/if_ate.c#20 (text) ====
@@ -23,18 +23,14 @@
* SUCH DAMAGE.
*/
-/* TODO: (in no order)
+/* TODO
*
- * 8) Need to sync busdma goo in atestop
- * 9) atestop should maybe free the mbufs?
- *
- * 1) detach
- * 2) Free dma setup
- * 3) Turn on the clock in pmc? Turn off?
+ * 1) Turn on the clock in pmc? Turn off?
+ * 2) GPIO initializtion in board setup code.
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/if_ate.c,v 1.30 2008/11/25 00:14:49 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/if_ate.c,v 1.35 2009/05/12 21:28:41 stas Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -76,6 +72,12 @@
#define ATE_MAX_TX_BUFFERS 2 /* We have ping-pong tx buffers */
#define ATE_MAX_RX_BUFFERS 64
+/*
+ * Driver-specific flags.
+ */
+#define ATE_FLAG_DETACHING 0x01
+#define ATE_FLAG_MULTICAST 0x02
+
struct ate_softc
{
struct ifnet *ifp; /* ifnet pointer */
@@ -100,6 +102,8 @@
eth_rx_desc_t *rx_descs;
int use_rmii;
struct ifmib_iso_8802_3 mibdata; /* stuff for network mgmt */
+ int flags;
+ int if_flags;
};
static inline uint32_t
@@ -114,6 +118,13 @@
bus_write_4(sc->mem_res, off, val);
}
+static inline void
+BARRIER(struct ate_softc *sc, bus_size_t off, bus_size_t len, int flags)
+{
+
+ bus_barrier(sc->mem_res, off, len, flags);
+}
+
#define ATE_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx)
#define ATE_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx)
#define ATE_LOCK_INIT(_sc) \
@@ -144,11 +155,12 @@
/* helper routines */
static int ate_activate(device_t dev);
-static void ate_deactivate(device_t dev);
+static void ate_deactivate(struct ate_softc *sc);
static int ate_ifmedia_upd(struct ifnet *ifp);
static void ate_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr);
static int ate_get_mac(struct ate_softc *sc, u_char *eaddr);
static void ate_set_mac(struct ate_softc *sc, u_char *eaddr);
+static void ate_rxfilter(struct ate_softc *sc);
/*
* The AT91 family of products has the ethernet called EMAC. However,
@@ -170,11 +182,33 @@
struct ifnet *ifp = NULL;
struct sysctl_ctx_list *sctx;
struct sysctl_oid *soid;
- int err;
u_char eaddr[ETHER_ADDR_LEN];
uint32_t rnd;
+ int rid, err;
sc->dev = dev;
+ ATE_LOCK_INIT(sc);
+
+ /*
+ * Allocate resources.
+ */
+ rid = 0;
+ sc->mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid,
+ RF_ACTIVE);
+ if (sc->mem_res == NULL) {
+ device_printf(dev, "could not allocate memory resources.\n");
+ err = ENOMEM;
+ goto out;
+ }
+ rid = 0;
+ sc->irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
+ RF_ACTIVE);
+ if (sc->irq_res == NULL) {
+ device_printf(dev, "could not allocate interrupt resources.\n");
+ err = ENOMEM;
+ goto out;
+ }
+
err = ate_activate(dev);
if (err)
goto out;
@@ -188,8 +222,9 @@
CTLFLAG_RD, &sc->use_rmii, 0, "rmii in use");
/* calling atestop before ifp is set is OK */
+ ATE_LOCK(sc);
atestop(sc);
- ATE_LOCK_INIT(sc);
+ ATE_UNLOCK(sc);
callout_init_mtx(&sc->tick_ch, &sc->sc_mtx, 0);
if ((err = ate_get_mac(sc, eaddr)) != 0) {
@@ -238,30 +273,70 @@
ifp->if_linkmib = &sc->mibdata;
ifp->if_linkmiblen = sizeof(sc->mibdata);
sc->mibdata.dot3Compliance = DOT3COMPLIANCE_COLLS;
+ sc->if_flags = ifp->if_flags;
ether_ifattach(ifp, eaddr);
/*
- * Activate the interrupt
+ * Activate the interrupt.
*/
err = bus_setup_intr(dev, sc->irq_res, INTR_TYPE_NET | INTR_MPSAFE,
NULL, ate_intr, sc, &sc->intrhand);
if (err) {
+ device_printf(dev, "could not establish interrupt handler.\n");
ether_ifdetach(ifp);
- ATE_LOCK_DESTROY(sc);
+ goto out;
}
-out:;
+
+out:
if (err)
- ate_deactivate(dev);
- if (err && ifp)
- if_free(ifp);
+ ate_detach(dev);
return (err);
}
static int
ate_detach(device_t dev)
{
- return EBUSY; /* XXX TODO(1) */
+ struct ate_softc *sc;
+ struct ifnet *ifp;
+
+ sc = device_get_softc(dev);
+ KASSERT(sc != NULL, ("[ate: %d]: sc is NULL", __LINE__));
+ ifp = sc->ifp;
+ if (device_is_attached(dev)) {
+ ATE_LOCK(sc);
+ sc->flags |= ATE_FLAG_DETACHING;
+ atestop(sc);
+ ATE_UNLOCK(sc);
+ callout_drain(&sc->tick_ch);
+ ether_ifdetach(ifp);
+ }
+ if (sc->miibus != NULL) {
+ device_delete_child(dev, sc->miibus);
+ sc->miibus = NULL;
+ }
+ bus_generic_detach(sc->dev);
+ ate_deactivate(sc);
+ if (sc->intrhand != NULL) {
+ bus_teardown_intr(dev, sc->irq_res, sc->intrhand);
+ sc->intrhand = NULL;
+ }
+ if (ifp != NULL) {
+ if_free(ifp);
+ sc->ifp = NULL;
+ }
+ if (sc->mem_res != NULL) {
+ bus_release_resource(dev, SYS_RES_IOPORT,
+ rman_get_rid(sc->mem_res), sc->mem_res);
+ sc->mem_res = NULL;
+ }
+ if (sc->irq_res != NULL) {
+ bus_release_resource(dev, SYS_RES_IRQ,
+ rman_get_rid(sc->irq_res), sc->irq_res);
+ sc->irq_res = NULL;
+ }
+ ATE_LOCK_DESTROY(sc);
+ return (0);
}
static void
@@ -307,26 +382,39 @@
* of different MAC chips use this method (or the reverse the bits)
* method.
*/
-static void
+static int
ate_setmcast(struct ate_softc *sc)
{
uint32_t index;
uint32_t mcaf[2];
u_char *af = (u_char *) mcaf;
struct ifmultiaddr *ifma;
+ struct ifnet *ifp;
+ ifp = sc->ifp;
+
+ if ((ifp->if_flags & IFF_PROMISC) != 0)
+ return (0);
+ if ((ifp->if_flags & IFF_ALLMULTI) != 0) {
+ WR4(sc, ETH_HSL, 0xffffffff);
+ WR4(sc, ETH_HSH, 0xffffffff);
+ return (1);
+ }
+
+ /*
+ * Compute the multicast hash.
+ */
mcaf[0] = 0;
mcaf[1] = 0;
-
- IF_ADDR_LOCK(sc->ifp);
- TAILQ_FOREACH(ifma, &sc->ifp->if_multiaddrs, ifma_link) {
+ IF_ADDR_LOCK(ifp);
+ TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
index = ether_crc32_be(LLADDR((struct sockaddr_dl *)
ifma->ifma_addr), ETHER_ADDR_LEN) >> 26;
af[index >> 3] |= 1 << (index & 7);
}
- IF_ADDR_UNLOCK(sc->ifp);
+ IF_ADDR_UNLOCK(ifp);
/*
* Write the hash to the hash register. This card can also
@@ -337,26 +425,16 @@
*/
WR4(sc, ETH_HSL, mcaf[0]);
WR4(sc, ETH_HSH, mcaf[1]);
+ return (mcaf[0] || mcaf[1]);
}
static int
ate_activate(device_t dev)
{
struct ate_softc *sc;
- int rid, err, i;
+ int err, i;
sc = device_get_softc(dev);
- rid = 0;
- sc->mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid,
- RF_ACTIVE);
- if (sc->mem_res == NULL)
- goto errout;
- rid = 0;
- sc->irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
- RF_ACTIVE);
- if (sc->irq_res == NULL)
- goto errout;
-
/*
* Allocate DMA tags and maps
*/
@@ -399,7 +477,6 @@
sc->rx_descs, ATE_MAX_RX_BUFFERS * sizeof(eth_rx_desc_t),
ate_getaddr, sc, 0) != 0)
goto errout;
- /* XXX TODO(5) Put this in ateinit_locked? */
for (i = 0; i < ATE_MAX_RX_BUFFERS; i++) {
sc->rx_buf_ptr = i;
if (bus_dmamem_alloc(sc->rxtag, (void **)&sc->rx_buf[i],
@@ -415,65 +492,69 @@
/* Write the descriptor queue address. */
WR4(sc, ETH_RBQP, sc->rx_desc_phys);
return (0);
+
errout:
- ate_deactivate(dev);
return (ENOMEM);
}
static void
-ate_deactivate(device_t dev)
+ate_deactivate(struct ate_softc *sc)
{
- struct ate_softc *sc;
+ int i;
- sc = device_get_softc(dev);
- /* XXX TODO(2) teardown busdma junk, below from fxp -- customize */
-#if 0
- if (sc->fxp_mtag) {
- for (i = 0; i < FXP_NRFABUFS; i++) {
- rxp = &sc->fxp_desc.rx_list[i];
- if (rxp->rx_mbuf != NULL) {
- bus_dmamap_sync(sc->fxp_mtag, rxp->rx_map,
- BUS_DMASYNC_POSTREAD);
- bus_dmamap_unload(sc->fxp_mtag, rxp->rx_map);
- m_freem(rxp->rx_mbuf);
+ KASSERT(sc != NULL, ("[ate, %d]: sc is NULL!", __LINE__));
+ if (sc->mtag != NULL) {
+ for (i = 0; i < ATE_MAX_TX_BUFFERS; i++) {
+ if (sc->sent_mbuf[i] != NULL) {
+ bus_dmamap_sync(sc->mtag, sc->tx_map[i],
+ BUS_DMASYNC_POSTWRITE);
+ bus_dmamap_unload(sc->mtag, sc->tx_map[i]);
+ m_freem(sc->sent_mbuf[i]);
+ }
+ bus_dmamap_destroy(sc->mtag, sc->tx_map[i]);
+ sc->sent_mbuf[i] = NULL;
+ sc->tx_map[i] = NULL;
+ }
+ bus_dma_tag_destroy(sc->mtag);
+ }
+ if (sc->rx_desc_tag != NULL) {
+ if (sc->rx_descs != NULL) {
+ if (sc->rx_desc_phys != 0) {
+ bus_dmamap_sync(sc->rx_desc_tag,
+ sc->rx_desc_map, BUS_DMASYNC_POSTREAD);
+ bus_dmamap_unload(sc->rx_desc_tag,
+ sc->rx_desc_map);
+ sc->rx_desc_phys = 0;
}
- bus_dmamap_destroy(sc->fxp_mtag, rxp->rx_map);
}
- bus_dmamap_destroy(sc->fxp_mtag, sc->spare_map);
- for (i = 0; i < FXP_NTXCB; i++) {
- txp = &sc->fxp_desc.tx_list[i];
- if (txp->tx_mbuf != NULL) {
- bus_dmamap_sync(sc->fxp_mtag, txp->tx_map,
- BUS_DMASYNC_POSTWRITE);
- bus_dmamap_unload(sc->fxp_mtag, txp->tx_map);
- m_freem(txp->tx_mbuf);
+ }
+ if (sc->rxtag != NULL) {
+ for (i = 0; i < ATE_MAX_RX_BUFFERS; i++) {
+ if (sc->rx_buf[i] != NULL) {
+ if (sc->rx_descs[i].addr != 0) {
+ bus_dmamap_sync(sc->rxtag,
+ sc->rx_map[i],
+ BUS_DMASYNC_POSTREAD);
+ bus_dmamap_unload(sc->rxtag,
+ sc->rx_map[i]);
+ sc->rx_descs[i].addr = 0;
+ }
+ bus_dmamem_free(sc->rxtag, sc->rx_buf[i],
+ sc->rx_map[i]);
+ sc->rx_buf[i] = NULL;
+ sc->rx_map[i] = NULL;
}
- bus_dmamap_destroy(sc->fxp_mtag, txp->tx_map);
}
- bus_dma_tag_destroy(sc->fxp_mtag);
+ bus_dma_tag_destroy(sc->rxtag);
+ }
+ if (sc->rx_desc_tag != NULL) {
+ if (sc->rx_descs != NULL)
+ bus_dmamem_free(sc->rx_desc_tag, sc->rx_descs,
+ sc->rx_desc_map);
+ bus_dma_tag_destroy(sc->rx_desc_tag);
+ sc->rx_descs = NULL;
+ sc->rx_desc_tag = NULL;
}
- if (sc->fxp_stag)
- bus_dma_tag_destroy(sc->fxp_stag);
- if (sc->cbl_tag)
- bus_dma_tag_destroy(sc->cbl_tag);
- if (sc->mcs_tag)
- bus_dma_tag_destroy(sc->mcs_tag);
-#endif
- if (sc->intrhand)
- bus_teardown_intr(dev, sc->irq_res, sc->intrhand);
- sc->intrhand = 0;
- bus_generic_detach(sc->dev);
- if (sc->miibus)
- device_delete_child(sc->dev, sc->miibus);
- if (sc->mem_res)
- bus_release_resource(dev, SYS_RES_IOPORT,
- rman_get_rid(sc->mem_res), sc->mem_res);
- sc->mem_res = 0;
- if (sc->irq_res)
- bus_release_resource(dev, SYS_RES_IRQ,
- rman_get_rid(sc->irq_res), sc->irq_res);
- sc->irq_res = 0;
- return;
}
/*
@@ -512,18 +593,19 @@
static void
ate_stat_update(struct ate_softc *sc, int active)
{
+ uint32_t reg;
+
/*
* The speed and full/half-duplex state needs to be reflected
* in the ETH_CFG register.
*/
- if (IFM_SUBTYPE(active) == IFM_10_T)
- WR4(sc, ETH_CFG, RD4(sc, ETH_CFG) & ~ETH_CFG_SPD);
- else
- WR4(sc, ETH_CFG, RD4(sc, ETH_CFG) | ETH_CFG_SPD);
+ reg = RD4(sc, ETH_CFG);
+ reg &= ~(ETH_CFG_SPD | ETH_CFG_FD);
+ if (IFM_SUBTYPE(active) != IFM_10_T)
+ reg |= ETH_CFG_SPD;
if (active & IFM_FDX)
- WR4(sc, ETH_CFG, RD4(sc, ETH_CFG) | ETH_CFG_FD);
- else
- WR4(sc, ETH_CFG, RD4(sc, ETH_CFG) & ~ETH_CFG_FD);
+ reg |= ETH_CFG_FD;
+ WR4(sc, ETH_CFG, reg);
}
static void
@@ -635,11 +717,10 @@
{
struct ate_softc *sc = xsc;
struct ifnet *ifp = sc->ifp;
- int status;
+ struct mbuf *mb;
+ void *bp;
+ uint32_t status, reg, rx_stat;
int i;
- void *bp;
- struct mbuf *mb;
- uint32_t rx_stat;
status = RD4(sc, ETH_ISR);
if (status == 0)
@@ -653,7 +734,8 @@
bp = sc->rx_buf[i];
rx_stat = sc->rx_descs[i].status;
if ((rx_stat & ETH_LEN_MASK) == 0) {
- printf("ignoring bogus 0 len packet\n");
+ if (bootverbose)
+ device_printf(sc->dev, "ignoring bogus zero-length packet\n");
bus_dmamap_sync(sc->rx_desc_tag, sc->rx_desc_map,
BUS_DMASYNC_PREWRITE);
sc->rx_descs[i].addr &= ~ETH_CPU_OWNER;
@@ -694,6 +776,7 @@
if (sc->sent_mbuf[0]) {
bus_dmamap_sync(sc->mtag, sc->tx_map[0],
BUS_DMASYNC_POSTWRITE);
+ bus_dmamap_unload(sc->mtag, sc->tx_map[0]);
m_freem(sc->sent_mbuf[0]);
ifp->if_opackets++;
sc->sent_mbuf[0] = NULL;
@@ -702,6 +785,7 @@
if (RD4(sc, ETH_TSR) & ETH_TSR_IDLE) {
bus_dmamap_sync(sc->mtag, sc->tx_map[1],
BUS_DMASYNC_POSTWRITE);
+ bus_dmamap_unload(sc->mtag, sc->tx_map[1]);
m_freem(sc->sent_mbuf[1]);
ifp->if_opackets++;
sc->txcur = 0;
@@ -724,10 +808,13 @@
ATE_UNLOCK(sc);
}
if (status & ETH_ISR_RBNA) {
- printf("RBNA workaround\n");
/* Workaround Errata #11 */
- WR4(sc, ETH_CTL, RD4(sc, ETH_CTL) &~ ETH_CTL_RE);
- WR4(sc, ETH_CTL, RD4(sc, ETH_CTL) | ETH_CTL_RE);
+ if (bootverbose)
+ device_printf(sc->dev, "RBNA workaround\n");
+ reg = RD4(sc, ETH_CTL);
+ WR4(sc, ETH_CTL, reg & ~ETH_CTL_RE);
+ BARRIER(sc, ETH_CTL, 4, BUS_SPACE_BARRIER_WRITE);
+ WR4(sc, ETH_CTL, reg | ETH_CTL_RE);
}
}
@@ -740,6 +827,7 @@
struct ate_softc *sc = xsc;
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list