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>