Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 May 2009 13:57:02 GMT
From:      John Baldwin <jhb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 162010 for review
Message-ID:  <200905131357.n4DDv2bS015740@repoman.freebsd.org>

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

Change 162010 by jhb@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) <<<



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