From rwatson at FreeBSD.org Sun Feb 1 03:16:10 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Sun Feb 1 03:16:19 2009 Subject: PERFORCE change 156989 for review Message-ID: <200902011116.n11BG9Kh066980@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=156989 Change 156989 by rwatson@rwatson_freebsd_capabilities on 2009/02/01 11:15:48 Call init_rtld() before we evaluate whether or not a valid file descriptor has been passed in capability mode -- this improves our chances of printing an error message on a failure significantly. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf/rtld.c#6 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf/rtld.c#6 (text+ko) ==== @@ -346,6 +346,10 @@ aux_info[auxp->a_type] = auxp; } + /* Initialize and relocate ourselves. */ + assert(aux_info[AT_BASE] != NULL); + init_rtld((caddr_t) aux_info[AT_BASE]->a_un.a_ptr); + #ifdef IN_RTLD_CAP /* * In capability mode, the kernel has executed ld-elf-cap.so directly, @@ -367,10 +371,6 @@ } #endif - /* Initialize and relocate ourselves. */ - assert(aux_info[AT_BASE] != NULL); - init_rtld((caddr_t) aux_info[AT_BASE]->a_un.a_ptr); - /* XXXRW: Need to do something about program names in capability mode. */ __progname = obj_rtld.path; argv0 = argv[0] != NULL ? argv[0] : "(null)"; From hselasky at c2i.net Sun Feb 1 03:44:48 2009 From: hselasky at c2i.net (Hans Petter Selasky) Date: Sun Feb 1 03:44:54 2009 Subject: PERFORCE change 156978 for review In-Reply-To: <49850FB9.9040008@bluezbox.com> References: <200902010059.n110xfXx079961@repoman.freebsd.org> <49850FB9.9040008@bluezbox.com> Message-ID: <200902011247.10404.hselasky@c2i.net> On Sunday 01 February 2009, Oleksandr Tymoshenko wrote: > Arnar Mar Sig wrote: > > http://perforce.freebsd.org/chv.cgi?CH=156978 > > > > Change 156978 by antab@antab_farm on 2009/02/01 00:58:58 > > > > AVR32 support. The kernel boots on NGW100 but there is still alot of > > work to be done. At the moment it crashes somewhere in uma_startup3. > > That's just cool! :) Thanks a lot for your hard work. Just a small style nit: Use \t or TAB after "#define" instead of space. Looking forward to programming USB support for the AVR32. --HPS From hselasky at FreeBSD.org Sun Feb 1 03:58:55 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Sun Feb 1 03:59:02 2009 Subject: PERFORCE change 156990 for review Message-ID: <200902011158.n11BwqMx070294@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=156990 Change 156990 by hselasky@hselasky_laptop001 on 2009/02/01 11:58:35 IFC @ 156988 Affected files ... .. //depot/projects/usb/src/sys/amd64/amd64/cpu_switch.S#10 integrate .. //depot/projects/usb/src/sys/amd64/amd64/fpu.c#3 integrate .. //depot/projects/usb/src/sys/amd64/amd64/io_apic.c#6 integrate .. //depot/projects/usb/src/sys/amd64/amd64/local_apic.c#12 integrate .. //depot/projects/usb/src/sys/amd64/amd64/mp_machdep.c#15 integrate .. //depot/projects/usb/src/sys/amd64/amd64/msi.c#7 integrate .. //depot/projects/usb/src/sys/amd64/ia32/ia32_signal.c#6 integrate .. //depot/projects/usb/src/sys/amd64/ia32/ia32_sigtramp.S#3 integrate .. //depot/projects/usb/src/sys/amd64/include/apicvar.h#6 integrate .. //depot/projects/usb/src/sys/amd64/include/cpufunc.h#4 integrate .. //depot/projects/usb/src/sys/amd64/include/fpu.h#2 integrate .. //depot/projects/usb/src/sys/amd64/include/intr_machdep.h#6 integrate .. //depot/projects/usb/src/sys/amd64/linux32/linux32_locore.s#4 integrate .. //depot/projects/usb/src/sys/amd64/linux32/linux32_sysvec.c#13 integrate .. //depot/projects/usb/src/sys/arm/arm/busdma_machdep.c#13 integrate .. //depot/projects/usb/src/sys/boot/i386/pxeldr/pxeboot.8#3 integrate .. //depot/projects/usb/src/sys/cam/scsi/scsi_pass.c#9 integrate .. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#6 integrate .. //depot/projects/usb/src/sys/compat/linux/linux_stats.c#9 integrate .. //depot/projects/usb/src/sys/compat/ndis/winx32_wrap.S#3 integrate .. //depot/projects/usb/src/sys/compat/svr4/svr4_types.h#2 integrate .. //depot/projects/usb/src/sys/conf/options#19 integrate .. //depot/projects/usb/src/sys/dev/adb/adb_mouse.c#3 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ah.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ah.h#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ah_internal.h#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ah_regdomain.c#3 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5210/ar5210.h#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c#3 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5210/ar5210_xmit.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5211/ar5211.h#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c#3 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c#3 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5211/ar5211_xmit.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar2316.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar2317.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar2413.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar2425.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5111.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5112.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212.h#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_ani.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c#3 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c#3 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5413.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5312/ar5312.h#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5312/ar5312_reset.c#3 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar2133.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar5416.h#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar5416_ani.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar5416_cal.h#2 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c#3 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c#2 integrate .. //depot/projects/usb/src/sys/dev/ath/if_ath.c#15 integrate .. //depot/projects/usb/src/sys/dev/ath/if_athvar.h#12 integrate .. //depot/projects/usb/src/sys/dev/hwpmc/hwpmc_core.c#2 integrate .. //depot/projects/usb/src/sys/dev/hwpmc/hwpmc_intel.c#4 integrate .. //depot/projects/usb/src/sys/dev/hwpmc/pmc_events.h#5 integrate .. //depot/projects/usb/src/sys/dev/mmc/mmc.c#7 integrate .. //depot/projects/usb/src/sys/dev/puc/pucdata.c#9 integrate .. //depot/projects/usb/src/sys/dev/sdhci/sdhci.c#3 integrate .. //depot/projects/usb/src/sys/dev/sound/pci/hda/hdac.c#22 integrate .. //depot/projects/usb/src/sys/dev/usb/u3g.c#4 integrate .. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2.c#21 integrate .. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ubtbcmfw2.c#12 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/at91dci_atmelarm.c#19 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_pci.c#22 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/musb2_otg_atmelarm.c#16 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_atmelarm.c#17 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_pci.c#18 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2_pci.c#20 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci_atmelarm.c#10 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_compat_linux.c#16 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#36 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_aue2.c#18 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axe2.c#18 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdce2.c#16 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cue2.c#17 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kue2.c#17 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_rue2.c#17 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udav2.c#17 integrate .. //depot/projects/usb/src/sys/dev/usb2/input/uhid2.c#15 integrate .. //depot/projects/usb/src/sys/dev/usb2/input/ukbd2.c#15 integrate .. //depot/projects/usb/src/sys/dev/usb2/misc/udbp2.c#12 integrate .. //depot/projects/usb/src/sys/dev/usb2/misc/ufm2.c#10 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/u3g2.c#9 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uark2.c#15 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/ubsa2.c#21 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/ubser2.c#15 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uchcom2.c#18 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/ucycom2.c#16 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/ufoma2.c#21 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uftdi2.c#18 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/ugensa2.c#22 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uipaq2.c#17 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/umct2.c#15 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/umodem2.c#18 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/umoscom2.c#16 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uplcom2.c#18 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uvisor2.c#16 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uvscom2.c#18 integrate .. //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#26 integrate .. //depot/projects/usb/src/sys/dev/usb2/storage/ata-usb2.c#15 integrate .. //depot/projects/usb/src/sys/dev/usb2/storage/umass2.c#25 integrate .. //depot/projects/usb/src/sys/dev/usb2/storage/urio2.c#15 integrate .. //depot/projects/usb/src/sys/dev/usb2/storage/ustorage2_fs.c#16 integrate .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#24 integrate .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#25 integrate .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zyd2.c#28 integrate .. //depot/projects/usb/src/sys/dev/xen/blkback/blkback.c#2 integrate .. //depot/projects/usb/src/sys/fs/cd9660/cd9660_lookup.c#3 integrate .. //depot/projects/usb/src/sys/fs/cd9660/cd9660_node.c#5 integrate .. //depot/projects/usb/src/sys/fs/cd9660/cd9660_node.h#3 integrate .. //depot/projects/usb/src/sys/fs/cd9660/cd9660_rrip.c#6 integrate .. //depot/projects/usb/src/sys/fs/cd9660/cd9660_vfsops.c#6 integrate .. //depot/projects/usb/src/sys/fs/cd9660/cd9660_vnops.c#6 integrate .. //depot/projects/usb/src/sys/fs/coda/coda_vfsops.c#4 integrate .. //depot/projects/usb/src/sys/fs/devfs/devfs_devs.c#11 integrate .. //depot/projects/usb/src/sys/fs/devfs/devfs_vnops.c#15 integrate .. //depot/projects/usb/src/sys/fs/fifofs/fifo_vnops.c#8 integrate .. //depot/projects/usb/src/sys/fs/hpfs/hpfs_vfsops.c#7 integrate .. //depot/projects/usb/src/sys/fs/nullfs/null_vnops.c#11 integrate .. //depot/projects/usb/src/sys/fs/nwfs/nwfs_subr.c#4 integrate .. //depot/projects/usb/src/sys/fs/nwfs/nwfs_vnops.c#6 integrate .. //depot/projects/usb/src/sys/fs/smbfs/smbfs_vnops.c#9 integrate .. //depot/projects/usb/src/sys/fs/tmpfs/tmpfs_subr.c#7 integrate .. //depot/projects/usb/src/sys/fs/udf/udf_vnops.c#9 integrate .. //depot/projects/usb/src/sys/geom/geom.h#6 integrate .. //depot/projects/usb/src/sys/geom/geom_subr.c#8 integrate .. //depot/projects/usb/src/sys/i386/i386/io_apic.c#6 integrate .. //depot/projects/usb/src/sys/i386/i386/local_apic.c#12 integrate .. //depot/projects/usb/src/sys/i386/i386/locore.s#5 integrate .. //depot/projects/usb/src/sys/i386/i386/mp_machdep.c#13 integrate .. //depot/projects/usb/src/sys/i386/i386/msi.c#7 integrate .. //depot/projects/usb/src/sys/i386/i386/swtch.s#6 integrate .. //depot/projects/usb/src/sys/i386/include/apicvar.h#7 integrate .. //depot/projects/usb/src/sys/i386/include/cpufunc.h#7 integrate .. //depot/projects/usb/src/sys/i386/include/intr_machdep.h#6 integrate .. //depot/projects/usb/src/sys/i386/linux/linux_locore.s#3 integrate .. //depot/projects/usb/src/sys/i386/svr4/svr4_locore.s#2 integrate .. //depot/projects/usb/src/sys/i386/xen/mp_machdep.c#6 integrate .. //depot/projects/usb/src/sys/kern/kern_jail.c#15 integrate .. //depot/projects/usb/src/sys/kern/kern_mib.c#10 integrate .. //depot/projects/usb/src/sys/kern/kern_sysctl.c#10 integrate .. //depot/projects/usb/src/sys/kern/tty_info.c#3 integrate .. //depot/projects/usb/src/sys/kern/vfs_cache.c#16 integrate .. //depot/projects/usb/src/sys/modules/usb2/Makefile#10 integrate .. //depot/projects/usb/src/sys/net/if_llatbl.c#2 integrate .. //depot/projects/usb/src/sys/net80211/_ieee80211.h#10 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211.c#13 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211.h#11 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_crypto.h#7 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_ddb.c#8 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_ht.h#8 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_ioctl.c#16 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_ioctl.h#9 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_node.c#15 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_node.h#11 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_regdomain.c#7 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_regdomain.h#3 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_tdma.c#2 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_var.h#14 integrate .. //depot/projects/usb/src/sys/netinet/ip_fw2.c#16 integrate .. //depot/projects/usb/src/sys/netinet6/frag6.c#11 integrate .. //depot/projects/usb/src/sys/netinet6/in6.c#15 integrate .. //depot/projects/usb/src/sys/netinet6/in6_gif.c#10 integrate .. //depot/projects/usb/src/sys/netinet6/in6_ifattach.c#13 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_forward.c#11 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_input.c#15 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_var.h#10 integrate .. //depot/projects/usb/src/sys/netinet6/nd6.c#13 integrate .. //depot/projects/usb/src/sys/netinet6/nd6_nbr.c#12 integrate .. //depot/projects/usb/src/sys/netinet6/nd6_rtr.c#11 integrate .. //depot/projects/usb/src/sys/netinet6/vinet6.h#4 integrate .. //depot/projects/usb/src/sys/netipsec/ipsec_mbuf.c#5 integrate .. //depot/projects/usb/src/sys/netipsec/ipsec_output.c#10 integrate .. //depot/projects/usb/src/sys/nfs4client/nfs4_subs.c#3 integrate .. //depot/projects/usb/src/sys/nfsclient/nfs_vfsops.c#14 integrate .. //depot/projects/usb/src/sys/nfsclient/nfs_vnops.c#16 integrate .. //depot/projects/usb/src/sys/nfsserver/nfs_srvsubs.c#13 integrate .. //depot/projects/usb/src/sys/opencrypto/cryptosoft.c#6 integrate .. //depot/projects/usb/src/sys/sys/_null.h#2 integrate .. //depot/projects/usb/src/sys/sys/cdefs.h#5 integrate .. //depot/projects/usb/src/sys/sys/conf.h#13 integrate .. //depot/projects/usb/src/sys/sys/malloc.h#5 integrate .. //depot/projects/usb/src/sys/sys/param.h#19 integrate .. //depot/projects/usb/src/sys/sys/pmc.h#6 integrate .. //depot/projects/usb/src/sys/sys/types.h#7 integrate .. //depot/projects/usb/src/sys/sys/unistd.h#3 integrate .. //depot/projects/usb/src/sys/sys/vnode.h#15 integrate .. //depot/projects/usb/src/sys/ufs/ffs/ffs_alloc.c#8 integrate .. //depot/projects/usb/src/sys/ufs/ffs/ffs_balloc.c#5 integrate .. //depot/projects/usb/src/sys/ufs/ffs/ffs_extern.h#6 integrate .. //depot/projects/usb/src/sys/ufs/ffs/ffs_inode.c#9 integrate .. //depot/projects/usb/src/sys/ufs/ffs/ffs_vfsops.c#14 integrate .. //depot/projects/usb/src/sys/ufs/ffs/ffs_vnops.c#11 integrate Differences ... ==== //depot/projects/usb/src/sys/amd64/amd64/cpu_switch.S#10 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.165 2009/01/20 12:07:49 kib Exp $ + * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.166 2009/01/31 11:37:21 obrien Exp $ */ #include @@ -260,12 +260,12 @@ jmp do_tss store_seg: - movl %gs,PCB_GS(%r8) + mov %gs,PCB_GS(%r8) testl $PCB_GS32BIT,PCB_FLAGS(%r8) jnz 2f -1: movl %ds,PCB_DS(%r8) - movl %es,PCB_ES(%r8) - movl %fs,PCB_FS(%r8) +1: mov %ds,PCB_DS(%r8) + mov %es,PCB_ES(%r8) + mov %fs,PCB_FS(%r8) jmp done_store_seg 2: movq PCPU(GS32P),%rax movq (%rax),%rax @@ -277,11 +277,11 @@ jnz 2f 1: movl $MSR_GSBASE,%ecx rdmsr - movl PCB_GS(%r8),%gs + mov PCB_GS(%r8),%gs wrmsr - movl PCB_DS(%r8),%ds - movl PCB_ES(%r8),%es - movl PCB_FS(%r8),%fs + mov PCB_DS(%r8),%ds + mov PCB_ES(%r8),%es + mov PCB_FS(%r8),%fs jmp restore_fsbase /* Restore userland %gs while preserving kernel gsbase */ 2: movq PCPU(GS32P),%rax ==== //depot/projects/usb/src/sys/amd64/amd64/fpu.c#3 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/fpu.c,v 1.159 2006/06/19 22:36:01 davidxu Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/fpu.c,v 1.160 2009/01/28 20:35:16 jhb Exp $"); #include #include @@ -391,6 +391,7 @@ { struct pcb *pcb; register_t s; + u_short control; if (PCPU_GET(fpcurthread) == curthread) { printf("fpudna: fpcurthread == curthread %d times\n", @@ -421,6 +422,10 @@ * explicitly load sanitized registers. */ fxrstor(&fpu_cleanstate); + if (pcb->pcb_flags & PCB_32BIT) { + control = __INITIAL_FPUCW_I386__; + fldcw(&control); + } pcb->pcb_flags |= PCB_FPUINITDONE; } else fxrstor(&pcb->pcb_save); ==== //depot/projects/usb/src/sys/amd64/amd64/io_apic.c#6 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.31 2007/06/05 18:57:48 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.32 2009/01/29 09:22:56 jeff Exp $"); #include "opt_isa.h" @@ -327,39 +327,56 @@ { struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; struct ioapic *io = (struct ioapic *)isrc->is_pic; + u_int old_vector; + u_int old_id; + + /* + * keep 1st core as the destination for NMI + */ + if (intpin->io_irq == IRQ_NMI) + apic_id = 0; + + /* + * Set us up to free the old irq. + */ + old_vector = intpin->io_vector; + old_id = intpin->io_cpu; + if (old_vector && apic_id == old_id) + return; + /* + * Allocate an APIC vector for this interrupt pin. Once + * we have a vector we program the interrupt pin. + */ intpin->io_cpu = apic_id; + intpin->io_vector = apic_alloc_vector(apic_id, intpin->io_irq); if (bootverbose) { - printf("ioapic%u: Assigning ", io->io_id); + printf("ioapic%u: routing intpin %u (", io->io_id, + intpin->io_intpin); ioapic_print_irq(intpin); - printf(" to local APIC %u\n", intpin->io_cpu); + printf(") to lapic %u vector %u\n", intpin->io_cpu, + intpin->io_vector); } ioapic_program_intpin(intpin); + /* + * Free the old vector after the new one is established. This is done + * to prevent races where we could miss an interrupt. + */ + if (old_vector) + apic_free_vector(old_id, old_vector, intpin->io_irq); } static void ioapic_enable_intr(struct intsrc *isrc) { struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; - struct ioapic *io = (struct ioapic *)isrc->is_pic; - if (intpin->io_vector == 0) { - /* - * Allocate an APIC vector for this interrupt pin. Once - * we have a vector we program the interrupt pin. - */ - intpin->io_vector = apic_alloc_vector(intpin->io_irq); - if (bootverbose) { - printf("ioapic%u: routing intpin %u (", io->io_id, - intpin->io_intpin); - ioapic_print_irq(intpin); - printf(") to vector %u\n", intpin->io_vector); - } - ioapic_program_intpin(intpin); - apic_enable_vector(intpin->io_vector); - } + if (intpin->io_vector == 0) + ioapic_assign_cpu(isrc, pcpu_find(0)->pc_apic_id); + apic_enable_vector(intpin->io_cpu, intpin->io_vector); } + static void ioapic_disable_intr(struct intsrc *isrc) { @@ -369,11 +386,11 @@ if (intpin->io_vector != 0) { /* Mask this interrupt pin and free its APIC vector. */ vector = intpin->io_vector; - apic_disable_vector(vector); + apic_disable_vector(intpin->io_cpu, vector); intpin->io_masked = 1; intpin->io_vector = 0; ioapic_program_intpin(intpin); - apic_free_vector(vector, intpin->io_irq); + apic_free_vector(intpin->io_cpu, vector, intpin->io_irq); } } ==== //depot/projects/usb/src/sys/amd64/amd64/local_apic.c#12 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.50 2008/12/11 15:56:30 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.51 2009/01/29 09:22:56 jeff Exp $"); #include "opt_hwpmc_hooks.h" #include "opt_kdtrace.h" @@ -46,6 +46,8 @@ #include #include #include +#include +#include #include #include @@ -109,6 +111,8 @@ u_long la_hard_ticks; u_long la_stat_ticks; u_long la_prof_ticks; + /* Include IDT_SYSCALL to make indexing easier. */ + u_int la_ioint_irqs[APIC_NUM_IOINTS + 1]; } static lapics[MAX_APIC_ID + 1]; /* XXX: should thermal be an NMI? */ @@ -134,8 +138,6 @@ IDTVEC(apic_isr7), /* 224 - 255 */ }; -/* Include IDT_SYSCALL to make indexing easier. */ -static u_int ioint_irqs[APIC_NUM_IOINTS + 1]; static u_int32_t lapic_timer_divisors[] = { APIC_TDCR_1, APIC_TDCR_2, APIC_TDCR_4, APIC_TDCR_8, APIC_TDCR_16, @@ -215,14 +217,12 @@ /* Perform basic initialization of the BSP's local APIC. */ lapic_enable(); - ioint_irqs[IDT_SYSCALL - APIC_IO_INTS] = IRQ_SYSCALL; /* Set BSP's per-CPU local APIC ID. */ PCPU_SET(apic_id, lapic_id()); /* Local APIC timer interrupt. */ setidt(APIC_TIMER_INT, IDTVEC(timerint), SDT_SYSIGT, SEL_KPL, 0); - ioint_irqs[APIC_TIMER_INT - APIC_IO_INTS] = IRQ_TIMER; /* XXX: error/thermal interrupts */ } @@ -254,6 +254,9 @@ lapics[apic_id].la_lvts[i] = lvts[i]; lapics[apic_id].la_lvts[i].lvt_active = 0; } + lapics[apic_id].la_ioint_irqs[IDT_SYSCALL - APIC_IO_INTS] = IRQ_SYSCALL; + lapics[apic_id].la_ioint_irqs[APIC_TIMER_INT - APIC_IO_INTS] = + IRQ_TIMER; #ifdef SMP cpu_add(apic_id, boot_cpu); @@ -664,7 +667,8 @@ if (vector == -1) panic("Couldn't get vector from ISR!"); - isrc = intr_lookup_source(apic_idt_to_irq(vector)); + isrc = intr_lookup_source(apic_idt_to_irq(PCPU_GET(apic_id), + vector)); intr_execute_handlers(isrc, frame); } @@ -779,9 +783,19 @@ lapic->lvt_timer = value; } +u_int +apic_cpuid(u_int apic_id) +{ +#ifdef SMP + return apic_cpuids[apic_id]; +#else + return 0; +#endif +} + /* Request a free IDT vector to be used by the specified IRQ. */ u_int -apic_alloc_vector(u_int irq) +apic_alloc_vector(u_int apic_id, u_int irq) { u_int vector; @@ -793,9 +807,9 @@ */ mtx_lock_spin(&icu_lock); for (vector = 0; vector < APIC_NUM_IOINTS; vector++) { - if (ioint_irqs[vector] != 0) + if (lapics[apic_id].la_ioint_irqs[vector] != 0) continue; - ioint_irqs[vector] = irq; + lapics[apic_id].la_ioint_irqs[vector] = irq; mtx_unlock_spin(&icu_lock); return (vector + APIC_IO_INTS); } @@ -810,7 +824,7 @@ * satisfied, 0 is returned. */ u_int -apic_alloc_vectors(u_int *irqs, u_int count, u_int align) +apic_alloc_vectors(u_int apic_id, u_int *irqs, u_int count, u_int align) { u_int first, run, vector; @@ -833,7 +847,7 @@ for (vector = 0; vector < APIC_NUM_IOINTS; vector++) { /* Vector is in use, end run. */ - if (ioint_irqs[vector] != 0) { + if (lapics[apic_id].la_ioint_irqs[vector] != 0) { run = 0; first = 0; continue; @@ -853,7 +867,8 @@ /* Found a run, assign IRQs and return the first vector. */ for (vector = 0; vector < count; vector++) - ioint_irqs[first + vector] = irqs[vector]; + lapics[apic_id].la_ioint_irqs[first + vector] = + irqs[vector]; mtx_unlock_spin(&icu_lock); return (first + APIC_IO_INTS); } @@ -862,8 +877,14 @@ return (0); } +/* + * Enable a vector for a particular apic_id. Since all lapics share idt + * entries and ioint_handlers this enables the vector on all lapics. lapics + * which do not have the vector configured would report spurious interrupts + * should it fire. + */ void -apic_enable_vector(u_int vector) +apic_enable_vector(u_int apic_id, u_int vector) { KASSERT(vector != IDT_SYSCALL, ("Attempt to overwrite syscall entry")); @@ -873,7 +894,7 @@ } void -apic_disable_vector(u_int vector) +apic_disable_vector(u_int apic_id, u_int vector) { KASSERT(vector != IDT_SYSCALL, ("Attempt to overwrite syscall entry")); @@ -884,27 +905,42 @@ /* Release an APIC vector when it's no longer in use. */ void -apic_free_vector(u_int vector, u_int irq) +apic_free_vector(u_int apic_id, u_int vector, u_int irq) { + struct thread *td; KASSERT(vector >= APIC_IO_INTS && vector != IDT_SYSCALL && vector <= APIC_IO_INTS + APIC_NUM_IOINTS, ("Vector %u does not map to an IRQ line", vector)); KASSERT(irq < NUM_IO_INTS, ("Invalid IRQ %u", irq)); - KASSERT(ioint_irqs[vector - APIC_IO_INTS] == irq, ("IRQ mismatch")); + KASSERT(lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS] == + irq, ("IRQ mismatch")); + + /* + * Bind us to the cpu that owned the vector before freeing it so + * we don't lose an interrupt delivery race. + */ + td = curthread; + thread_lock(td); + if (sched_is_bound(td)) + panic("apic_free_vector: Thread already bound.\n"); + sched_bind(td, apic_cpuid(apic_id)); mtx_lock_spin(&icu_lock); - ioint_irqs[vector - APIC_IO_INTS] = 0; + lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS] = 0; mtx_unlock_spin(&icu_lock); + sched_unbind(td); + thread_unlock(td); + } /* Map an IDT vector (APIC) to an IRQ (interrupt source). */ u_int -apic_idt_to_irq(u_int vector) +apic_idt_to_irq(u_int apic_id, u_int vector) { KASSERT(vector >= APIC_IO_INTS && vector != IDT_SYSCALL && vector <= APIC_IO_INTS + APIC_NUM_IOINTS, ("Vector %u does not map to an IRQ line", vector)); - return (ioint_irqs[vector - APIC_IO_INTS]); + return (lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS]); } #ifdef DDB @@ -915,6 +951,7 @@ { struct intsrc *isrc; int i, verbose; + u_int apic_id; u_int irq; if (strcmp(modif, "vv") == 0) @@ -923,9 +960,14 @@ verbose = 1; else verbose = 0; - for (i = 0; i < APIC_NUM_IOINTS + 1 && !db_pager_quit; i++) { - irq = ioint_irqs[i]; - if (irq != 0 && irq != IRQ_SYSCALL) { + for (apic_id = 0; apic_id <= MAX_APIC_ID; apic_id++) { + if (lapics[apic_id].la_present == 0) + continue; + db_printf("Interrupts bound to lapic %u\n", apic_id); + for (i = 0; i < APIC_NUM_IOINTS + 1 && !db_pager_quit; i++) { + irq = lapics[apic_id].la_ioint_irqs[i]; + if (irq == 0 || irq == IRQ_SYSCALL) + continue; db_printf("vec 0x%2x -> ", i + APIC_IO_INTS); if (irq == IRQ_TIMER) db_printf("lapic timer\n"); ==== //depot/projects/usb/src/sys/amd64/amd64/mp_machdep.c#15 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.295 2008/11/26 19:25:13 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.296 2009/01/29 09:22:56 jeff Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -152,6 +152,7 @@ int cpu_disabled:1; } static cpu_info[MAX_APIC_ID + 1]; int cpu_apic_ids[MAXCPU]; +int apic_cpuids[MAX_APIC_ID + 1]; /* Holds pending bitmap based IPIs per CPU */ static volatile u_int cpu_ipi_pending[MAXCPU]; @@ -349,6 +350,7 @@ KASSERT(boot_cpu_id == PCPU_GET(apic_id), ("BSP's APIC ID doesn't match boot_cpu_id")); cpu_apic_ids[0] = boot_cpu_id; + apic_cpuids[boot_cpu_id] = 0; assign_cpu_ids(); @@ -656,6 +658,7 @@ if (mp_ncpus < MAXCPU) { cpu_apic_ids[mp_ncpus] = i; + apic_cpuids[i] = mp_ncpus; mp_ncpus++; } else cpu_info[i].cpu_disabled = 1; ==== //depot/projects/usb/src/sys/amd64/amd64/msi.c#7 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.9 2009/01/12 19:17:35 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.10 2009/01/29 09:22:56 jeff Exp $"); #include #include @@ -161,7 +161,9 @@ { struct msi_intsrc *msi = (struct msi_intsrc *)isrc; - apic_enable_vector(msi->msi_vector); + if (msi->msi_vector == 0) + msi_assign_cpu(isrc, 0); + apic_enable_vector(msi->msi_cpu, msi->msi_vector); } static void @@ -169,7 +171,7 @@ { struct msi_intsrc *msi = (struct msi_intsrc *)isrc; - apic_disable_vector(msi->msi_vector); + apic_disable_vector(msi->msi_cpu, msi->msi_vector); } static int @@ -199,15 +201,35 @@ msi_assign_cpu(struct intsrc *isrc, u_int apic_id) { struct msi_intsrc *msi = (struct msi_intsrc *)isrc; + int old_vector; + u_int old_id; + int vector; + /* Store information to free existing irq. */ + old_vector = msi->msi_vector; + old_id = msi->msi_cpu; + if (old_vector && old_id == apic_id) + return; + /* Allocate IDT vector on this cpu. */ + vector = apic_alloc_vector(apic_id, msi->msi_irq); + if (vector == 0) + return; /* XXX alloc_vector panics on failure. */ msi->msi_cpu = apic_id; + msi->msi_vector = vector; if (bootverbose) - printf("msi: Assigning %s IRQ %d to local APIC %u\n", + printf("msi: Assigning %s IRQ %d to local APIC %u vector %u\n", msi->msi_msix ? "MSI-X" : "MSI", msi->msi_irq, - msi->msi_cpu); + msi->msi_cpu, msi->msi_vector); pci_remap_msi_irq(msi->msi_dev, msi->msi_irq); + /* + * Free the old vector after the new one is established. This is done + * to prevent races where we could miss an interrupt. + */ + if (old_vector) + apic_free_vector(old_id, old_vector, msi->msi_irq); } + void msi_init(void) { @@ -263,7 +285,7 @@ msi_alloc(device_t dev, int count, int maxcount, int *irqs) { struct msi_intsrc *msi, *fsrc; - int cnt, i, vector; + int cnt, i; if (!msi_enabled) return (ENXIO); @@ -309,22 +331,12 @@ /* Ok, we now have the IRQs allocated. */ KASSERT(cnt == count, ("count mismatch")); - /* Allocate 'count' IDT vectors. */ - vector = apic_alloc_vectors(irqs, count, maxcount); - if (vector == 0) { - mtx_unlock(&msi_lock); - return (ENOSPC); - } - /* Assign IDT vectors and make these messages owned by 'dev'. */ fsrc = (struct msi_intsrc *)intr_lookup_source(irqs[0]); for (i = 0; i < count; i++) { msi = (struct msi_intsrc *)intr_lookup_source(irqs[i]); msi->msi_dev = dev; - msi->msi_vector = vector + i; - if (bootverbose) - printf("msi: routing MSI IRQ %d to vector %u\n", - msi->msi_irq, msi->msi_vector); + msi->msi_vector = 0; msi->msi_first = fsrc; KASSERT(msi->msi_intsrc.is_handlers == 0, ("dead MSI has handlers")); @@ -377,14 +389,18 @@ KASSERT(msi->msi_dev == first->msi_dev, ("owner mismatch")); msi->msi_first = NULL; msi->msi_dev = NULL; - apic_free_vector(msi->msi_vector, msi->msi_irq); + if (msi->msi_vector) + apic_free_vector(msi->msi_cpu, msi->msi_vector, + msi->msi_irq); msi->msi_vector = 0; } /* Clear out the first message. */ first->msi_first = NULL; first->msi_dev = NULL; - apic_free_vector(first->msi_vector, first->msi_irq); + if (first->msi_vector) + apic_free_vector(first->msi_cpu, first->msi_vector, + first->msi_irq); first->msi_vector = 0; first->msi_count = 0; @@ -433,7 +449,7 @@ msix_alloc(device_t dev, int *irq) { struct msi_intsrc *msi; - int i, vector; + int i; if (!msi_enabled) return (ENXIO); @@ -468,15 +484,9 @@ goto again; } - /* Allocate an IDT vector. */ - vector = apic_alloc_vector(i); - if (bootverbose) - printf("msi: routing MSI-X IRQ %d to vector %u\n", msi->msi_irq, - vector); - /* Setup source. */ msi->msi_dev = dev; - msi->msi_vector = vector; + msi->msi_vector = 0; msi->msi_msix = 1; KASSERT(msi->msi_intsrc.is_handlers == 0, ("dead MSI-X has handlers")); @@ -508,7 +518,8 @@ /* Clear out the message. */ msi->msi_dev = NULL; - apic_free_vector(msi->msi_vector, msi->msi_irq); + if (msi->msi_vector) + apic_free_vector(msi->msi_cpu, msi->msi_vector, msi->msi_irq); msi->msi_vector = 0; msi->msi_msix = 0; ==== //depot/projects/usb/src/sys/amd64/ia32/ia32_signal.c#6 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/ia32/ia32_signal.c,v 1.19 2008/09/02 17:52:11 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/ia32/ia32_signal.c,v 1.20 2009/01/31 11:37:21 obrien Exp $"); #include "opt_compat.h" @@ -328,8 +328,8 @@ sf.sf_uc.uc_mcontext.mc_onstack = (oonstack) ? 1 : 0; sf.sf_uc.uc_mcontext.mc_gs = rgs(); sf.sf_uc.uc_mcontext.mc_fs = rfs(); - __asm __volatile("movl %%es,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_es)); - __asm __volatile("movl %%ds,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_ds)); + __asm __volatile("mov %%es,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_es)); + __asm __volatile("mov %%ds,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_ds)); sf.sf_uc.uc_mcontext.mc_edi = regs->tf_rdi; sf.sf_uc.uc_mcontext.mc_esi = regs->tf_rsi; sf.sf_uc.uc_mcontext.mc_ebp = regs->tf_rbp; @@ -443,8 +443,8 @@ sf.sf_uc.uc_mcontext.mc_onstack = (oonstack) ? 1 : 0; sf.sf_uc.uc_mcontext.mc_gs = rgs(); sf.sf_uc.uc_mcontext.mc_fs = rfs(); - __asm __volatile("movl %%es,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_es)); - __asm __volatile("movl %%ds,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_ds)); + __asm __volatile("mov %%es,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_es)); + __asm __volatile("mov %%ds,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_ds)); sf.sf_uc.uc_mcontext.mc_edi = regs->tf_rdi; sf.sf_uc.uc_mcontext.mc_esi = regs->tf_rsi; sf.sf_uc.uc_mcontext.mc_ebp = regs->tf_rbp; ==== //depot/projects/usb/src/sys/amd64/ia32/ia32_sigtramp.S#3 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/ia32/ia32_sigtramp.S,v 1.3 2006/09/23 13:42:09 davidxu Exp $ + * $FreeBSD: src/sys/amd64/ia32/ia32_sigtramp.S,v 1.4 2009/01/31 11:37:21 obrien Exp $ */ #include "opt_compat.h" @@ -45,8 +45,8 @@ calll *IA32_SIGF_HANDLER(%esp) leal IA32_SIGF_UC(%esp),%eax /* get ucontext */ pushl %eax - movl IA32_UC_ES(%eax),%es /* restore %es */ - movl IA32_UC_DS(%eax),%ds /* restore %ds */ + mov IA32_UC_ES(%eax),%es /* restore %es */ + mov IA32_UC_DS(%eax),%ds /* restore %ds */ movl $SYS_sigreturn,%eax pushl %eax /* junk to fake return addr. */ int $0x80 /* enter kernel with args */ @@ -60,8 +60,8 @@ calll *IA32_SIGF_HANDLER(%esp) leal IA32_SIGF_UC4(%esp),%eax/* get ucontext */ pushl %eax - movl IA32_UC4_ES(%eax),%es /* restore %es */ - movl IA32_UC4_DS(%eax),%ds /* restore %ds */ + mov IA32_UC4_ES(%eax),%es /* restore %es */ + mov IA32_UC4_DS(%eax),%ds /* restore %ds */ movl $344,%eax /* 4.x SYS_sigreturn */ pushl %eax /* junk to fake return addr. */ int $0x80 /* enter kernel with args */ ==== //depot/projects/usb/src/sys/amd64/include/apicvar.h#6 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/apicvar.h,v 1.26 2008/12/11 15:56:30 jhb Exp $ + * $FreeBSD: src/sys/amd64/include/apicvar.h,v 1.27 2009/01/29 09:22:56 jeff Exp $ */ #ifndef _MACHINE_APICVAR_H_ @@ -176,14 +176,17 @@ IDTVEC(apic_isr7), IDTVEC(spuriousint), IDTVEC(timerint); extern vm_paddr_t lapic_paddr; +extern int apic_cpuids[]; -u_int apic_alloc_vector(u_int irq); -u_int apic_alloc_vectors(u_int *irqs, u_int count, u_int align); -void apic_disable_vector(u_int vector); -void apic_enable_vector(u_int vector); -void apic_free_vector(u_int vector, u_int irq); -u_int apic_idt_to_irq(u_int vector); +u_int apic_alloc_vector(u_int apic_id, u_int irq); +u_int apic_alloc_vectors(u_int apic_id, u_int *irqs, u_int count, + u_int align); +void apic_disable_vector(u_int apic_id, u_int vector); +void apic_enable_vector(u_int apic_id, u_int vector); +void apic_free_vector(u_int apic_id, u_int vector, u_int irq); +u_int apic_idt_to_irq(u_int apic_id, u_int vector); void apic_register_enumerator(struct apic_enumerator *enumerator); +u_int apic_cpuid(u_int apic_id); void *ioapic_create(vm_paddr_t addr, int32_t apic_id, int intbase); int ioapic_disable_pin(void *cookie, u_int pin); int ioapic_get_vector(void *cookie, u_int pin); ==== //depot/projects/usb/src/sys/amd64/include/cpufunc.h#4 (text+ko) ==== @@ -27,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/cpufunc.h,v 1.150 2008/08/08 16:26:53 stas Exp $ + * $FreeBSD: src/sys/amd64/include/cpufunc.h,v 1.151 2009/01/31 11:37:21 obrien Exp $ */ /* @@ -482,7 +482,7 @@ rfs(void) { u_int sel; - __asm __volatile("movl %%fs,%0" : "=rm" (sel)); + __asm __volatile("mov %%fs,%0" : "=rm" (sel)); return (sel); } @@ -490,7 +490,7 @@ rgs(void) { u_int sel; - __asm __volatile("movl %%gs,%0" : "=rm" (sel)); + __asm __volatile("mov %%gs,%0" : "=rm" (sel)); return (sel); } @@ -498,20 +498,20 @@ rss(void) { u_int sel; - __asm __volatile("movl %%ss,%0" : "=rm" (sel)); + __asm __volatile("mov %%ss,%0" : "=rm" (sel)); return (sel); } static __inline void load_ds(u_int sel) { - __asm __volatile("movl %0,%%ds" : : "rm" (sel)); + __asm __volatile("mov %0,%%ds" : : "rm" (sel)); } static __inline void load_es(u_int sel) { - __asm __volatile("movl %0,%%es" : : "rm" (sel)); + __asm __volatile("mov %0,%%es" : : "rm" (sel)); } static inline void @@ -539,7 +539,7 @@ /* Preserve the fsbase value across the selector load */ fsbase = MSR_FSBASE; - __asm __volatile("rdmsr; movl %0,%%fs; wrmsr" + __asm __volatile("rdmsr; mov %0,%%fs; wrmsr" : : "rm" (sel), "c" (fsbase) : "eax", "edx"); } @@ -557,7 +557,7 @@ * being trashed happens to be the kernel gsbase at the time. */ gsbase = MSR_GSBASE; - __asm __volatile("pushfq; cli; rdmsr; movl %0,%%gs; wrmsr; popfq" + __asm __volatile("pushfq; cli; rdmsr; mov %0,%%gs; wrmsr; popfq" : : "rm" (sel), "c" (gsbase) : "eax", "edx"); } #else @@ -565,13 +565,13 @@ static __inline void load_fs(u_int sel) { - __asm __volatile("movl %0,%%fs" : : "rm" (sel)); + __asm __volatile("mov %0,%%fs" : : "rm" (sel)); >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Sun Feb 1 04:02:02 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Sun Feb 1 04:02:09 2009 Subject: PERFORCE change 156991 for review Message-ID: <200902011201.n11C1uNY070555@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=156991 Change 156991 by hselasky@hselasky_laptop001 on 2009/02/01 12:01:52 USB bluetooth firmware load: Clearify a comment. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ubtbcmfw2.c#13 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/bluetooth/ubtbcmfw2.c#13 (text+ko) ==== @@ -385,8 +385,8 @@ else if (fflags & FWRITE) xfer = sc->sc_xfer[UBTBCMFW_BULK_DT_WR]; else - return (EINVAL); /* XXX can happen? */ - + return (EINVAL); /* should not happen */ + if (usb2_fifo_alloc_buffer(fifo, xfer->max_data_length, UBTBCMFW_IFQ_MAXLEN) != 0) return (ENOMEM); From rene at FreeBSD.org Sun Feb 1 04:39:36 2009 From: rene at FreeBSD.org (Rene Ladan) Date: Sun Feb 1 04:39:43 2009 Subject: PERFORCE change 156992 for review Message-ID: <200902011239.n11CdZrX074677@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=156992 Change 156992 by rene@rene_self on 2009/02/01 12:38:45 IFC Affected files ... .. //depot/projects/docproj_nl/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml#12 integrate .. //depot/projects/docproj_nl/en_US.ISO8859-1/books/handbook/network-servers/chapter.sgml#12 integrate .. //depot/projects/docproj_nl/en_US.ISO8859-1/books/handbook/ppp-and-slip/chapter.sgml#8 integrate .. //depot/projects/docproj_nl/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml#19 integrate .. //depot/projects/docproj_nl/www/en/where.sgml#3 integrate Differences ... ==== //depot/projects/docproj_nl/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml#12 (text+ko) ==== @@ -1,7 +1,7 @@ @@ -1588,9 +1588,190 @@ The Canonical Way to Update Your System To update your system, you should check - /usr/src/UPDATING for any pre-buildworld steps - necessary for your version of the sources and then use the following - procedure: + /usr/src/UPDATING for any pre-buildworld + steps necessary for your version of the sources and then use the + procedure outlined here. + + These upgrade steps assume that you are currently using an old + &os; version, consisting of an old compiler, old kernel, old world and + old configuration files. By world here we mean the + core system binaries, libraries and programming files. The compiler + is part of world, but has a few special concerns. + + We also assume that you have already obtained the sources to a + newer system. If the sources available on the particular system are + old too, see for detailed help about + synchronizing them to a newer version. + + Updating the system from sources is a bit more subtle than it + might initially seem to be, and the &os; developers have found it + necessary over the years to change the recommended approach fairly + dramatically as new kinds of unavoidable dependencies come to light. + The rest of this section describes the rationale behind the currently + recommended upgrade sequence. + + Any successful update sequence must deal with the following + issues: + + + + The old compiler might not be able to compile the new + kernel. (Old compilers sometimes have bugs.) So, the new + kernel should be built with the new compiler. In particular, + the new compiler must be built before the new kernel is built. + This does not necessarily mean that the new compiler must + be installed before building the new + kernel. + + + + The new world might rely on new kernel features. So, the + new kernel must be installed before the new world is + installed. + + + + These first two issues are the basis for the + core buildworld, + buildkernel, + installkernel, + installworld sequence that we describe in + the following paragraphs. This is not an exhaustive list of all the + reasons why you should prefer the currently recommended upgrade + process. Some of the less obvious ones are listed below: + + + + The old world might not run correctly on the new kernel, so + you must install the new world immediately upon installing the + new kernel. + + + + Some configuration changes must be done before the new world + is installed, but others might break the old world. Hence, two + different configuration upgrade steps are generally + needed. + + + + For the most part, the update process only replaces or adds + files; existing old files are not deleted. In a few cases, this + can cause problems. As a result, the update procedure will + sometimes specify certain files that should be manually deleted + at certain steps. This may or may not be automated in the + future. + + + + These concerns have led to the following recommended sequence. + Note that the detailed sequence for particular updates may require + additional steps, but this core process should remain unchanged for + some time: + + + + make buildworld + + This first compiles the new compiler and a few related + tools, then uses the new compiler to compile the rest of the new + world. The result ends up + in /usr/obj. + + + + make buildkernel + + Unlike the older approach, using &man.config.8; and + &man.make.1;, this uses the new compiler + residing in /usr/obj. + This protects you against compiler-kernel mismatches. + + + + make installkernel + + Place the new kernel and kernel modules onto the disk, + making it possible to boot with the newly updated kernel. + + + + Reboot into single user mode. + + Single user mode minimizes problems from updating software + that's already running. It also minimizes any problems from + running the old world on a new kernel. + + + + mergemaster + + This does some initial configuration file updates in + preparation for the new world. For instance it may add new user + groups to the system, or new user names to the password database. + This is often necessary when new groups or special system-user + accounts have been added since the last update, so that + the installworld step will be able to + use the newly installed system user or system group names + without problems. + + + + make installworld + + Copies the world + from /usr/obj. You now + have a new kernel and new world on disk. + + + + mergemaster + + Now you can update the remaining configuration files, since + you have a new world on disk. + + + + Reboot. + + A full machine reboot is needed now to load the new kernel + and new world with new configuration files. + + + + Note that if you're upgrading from one release of the same &os; + branch to a more recent release of the same branch, i.e. from 7.0 to + 7.1, then this procedure may not be absolutely necessary, since + you're unlikely to run into serious mismatches between compiler, + kernel, userland and configuration files. The older approach + of make world followed + by building and installing a new kernel might work well enough for + minor updates. + + But, when upgrading across major releases, people who don't + follow this procedure should expect some problems. + + It is also worth noting that many upgrades + (i.e. 4.X to 5.0) may require + specific additional steps (renaming or deleting specific files prior + to installworld, for instance). Read + the /usr/src/UPDATING file carefully, + especially at the end, where the currently recommended upgrade + sequence is explicitly spelled out. + + This procedure has evolved over time as the developers have + found it impossible to completely prevent certain kinds of mismatch + problems. Hopefully, the current procedure will remain stable for a + long time. + + + Upgrading from &os; 3.X or earlier + releases is a bit trickier; read UPDATING + carefully if you have to perform this sort of upgrade. + + + To summarize, the currently recommended way of upgrading &os; + from sources is: &prompt.root; cd /usr/src &prompt.root; make buildworld ==== //depot/projects/docproj_nl/en_US.ISO8859-1/books/handbook/network-servers/chapter.sgml#12 (text+ko) ==== @@ -1,7 +1,7 @@ @@ -3227,7 +3227,7 @@ relatively simple. The default named configuration - is that of a basic resolving name server, ran in a + is that of a basic resolving name server, running in a &man.chroot.8; environment. To start the server one time with this configuration, use the following command: ==== //depot/projects/docproj_nl/en_US.ISO8859-1/books/handbook/ppp-and-slip/chapter.sgml#8 (text+ko) ==== @@ -1,7 +1,7 @@ @@ -156,9 +156,9 @@ - You have a modem or - other device connected to your system and configured - correctly which allows you to connect to your ISP. + A modem or + other device connected to your system and properly configured + to allow you to connect to your ISP. @@ -1825,9 +1825,14 @@ Check the Device Nodes - If you reconfigured your kernel then you recall the - sio device. If you did not - configure your kernel, there is no reason to worry. Just + When using a custom kernel, make sure to include the following + line in your kernel configuration file: + + device sio + + The sio device is already included + in the GENERIC kernel, so no additional steps + are necessary in this case. Just check the dmesg output for the modem device with: ==== //depot/projects/docproj_nl/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml#19 (text+ko) ==== @@ -1,7 +1,7 @@ @@ -178,9 +178,9 @@ - U heeft een modem of een ander apparaat verbonden - met uw pc en correct geconfigureerd wat het u mogelijk - maakt om verbinding te maken met uw ISP. + Een modem of een ander apparaat verbonden met uw PC en + correct geconfigureerd zodat u verbinding kan maken met uw + ISP. @@ -1966,28 +1966,33 @@ te zetten. - Controleer de apparaat nodes + Controleer de apparaatknooppunten + + Als er een eigen kernel gebruikt wordt, vergeet dan niet om + de volgende regel in uw kernelinstellingenbestand op te + nemen: + + device sio - Als u de kernel opnieuw geconfigureerd heeft herinnert - u zich ongetwijfeld het sio - apparaat. Als u uw kernel niet opnieuw heeft geconfigureerd - is er geen reden tot paniek. U kunt de resultaten van het - van het dmesg commando inzien voor het - modem apparaat door middel van: + Het apparaat sio is al in de kernel + GENERIC opgenomen, dus zijn er in dit geval + geen extra stappen nodig. Controleer de resultaten van het + commando dmesg voor het modemapparaat door + middel van: - &prompt.root; dmesg | grep sio + &prompt.root; dmesg | grep sio - U zou enige informatie moeten ontvangen over de - sio apparaten. Deze bevinden zich - op de COM poorten die we nodig hebben. Als uw modem zich - gedraagt als een standaard seriële poort zou u deze - moeten vinden als zijnde sio1 of - COM2. Als dat klopt hoeft u de - kernel niet opnieuw te bouwen. Wanneer u de sio apparaten - controleert en de modem is op sio1 - te vinden of als COM2 als u zich - onder &ms-dos; bevindt, dan is uw modem apparaat - /dev/cuad1. + U zou enige informatie moeten ontvangen over de + sio apparaten. Deze bevinden zich op + de COM-poorten die we nodig hebben. Als uw modem zich gedraagt + als een standaard seriële poort zou u deze moeten vinden + als zijnde sio1 of + COM2. Als dat klopt hoeft u de kernel + niet opnieuw te bouwen. Wanneer u de sio-apparaten controleert + en de modem is op sio1 te vinden of als + COM2 als u zich onder &ms-dos; bevindt, + dan is uw modemapparaat + /dev/cuad1. From hselasky at FreeBSD.org Sun Feb 1 07:04:03 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Sun Feb 1 07:04:10 2009 Subject: PERFORCE change 156995 for review Message-ID: <200902011504.n11F41fV098644@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=156995 Change 156995 by hselasky@hselasky_laptop001 on 2009/02/01 15:03:41 Turn around dependencies in config file so that defining any USB device will automatically get the USB device group module built aswell. Suggested by Sam Leffler. Before example: device usb2_ethernet device usb2_ethernet_axe After example: device usb2_ethernet_axe Affected files ... .. //depot/projects/usb/src/sys/conf/files#48 edit Differences ... ==== //depot/projects/usb/src/sys/conf/files#48 (text+ko) ==== @@ -1535,28 +1535,33 @@ # # USB2 controller drivers # -dev/usb2/controller/at91dci.c optional usb2_core usb2_controller usb2_controller_at91dci -dev/usb2/controller/at91dci_atmelarm.c optional usb2_core usb2_controller usb2_controller_at91dci at91rm9200 -dev/usb2/controller/musb2_otg.c optional usb2_core usb2_controller usb2_controller_musb -dev/usb2/controller/musb2_otg_atmelarm.c optional usb2_core usb2_controller usb2_controller_musb at91rm9200 -dev/usb2/controller/ehci2.c optional usb2_core usb2_controller usb2_controller_ehci -dev/usb2/controller/ehci2_pci.c optional usb2_core usb2_controller usb2_controller_ehci pci -dev/usb2/controller/ohci2.c optional usb2_core usb2_controller usb2_controller_ohci -dev/usb2/controller/ohci2_atmelarm.c optional usb2_core usb2_controller usb2_controller_ohci at91rm9200 -dev/usb2/controller/ohci2_pci.c optional usb2_core usb2_controller usb2_controller_ohci pci -dev/usb2/controller/uhci2.c optional usb2_core usb2_controller usb2_controller_uhci -dev/usb2/controller/uhci2_pci.c optional usb2_core usb2_controller usb2_controller_uhci pci -dev/usb2/controller/uss820dci.c optional usb2_core usb2_controller usb2_controller_uss820dci -dev/usb2/controller/uss820dci_atmelarm.c optional usb2_core usb2_controller usb2_controller_uss820dci at91rm9200 -dev/usb2/controller/usb2_controller.c optional usb2_core usb2_controller +dev/usb2/controller/at91dci.c optional usb2_core usb2_controller_at91dci +dev/usb2/controller/at91dci_atmelarm.c optional usb2_core usb2_controller_at91dci at91rm9200 +dev/usb2/controller/musb2_otg.c optional usb2_core usb2_controller_musb +dev/usb2/controller/musb2_otg_atmelarm.c optional usb2_core usb2_controller_musb at91rm9200 +dev/usb2/controller/ehci2.c optional usb2_core usb2_controller_ehci +dev/usb2/controller/ehci2_pci.c optional usb2_core usb2_controller_ehci pci +dev/usb2/controller/ohci2.c optional usb2_core usb2_controller_ohci +dev/usb2/controller/ohci2_atmelarm.c optional usb2_core usb2_controller_ohci at91rm9200 +dev/usb2/controller/ohci2_pci.c optional usb2_core usb2_controller_ohci pci +dev/usb2/controller/uhci2.c optional usb2_core usb2_controller_uhci +dev/usb2/controller/uhci2_pci.c optional usb2_core usb2_controller_uhci pci +dev/usb2/controller/uss820dci.c optional usb2_core usb2_controller_uss820dci +dev/usb2/controller/uss820dci_atmelarm.c optional usb2_core usb2_controller_uss820dci at91rm9200 +dev/usb2/controller/usb2_controller.c optional usb2_core \ +(usb2_controller | usb2_controller_at91dci | usb2_controller_musb | \ + usb2_controller_ehci | usb2_controller_ohci | usb2_controller_uhci | \ + usb2_controller_uss820dci) # # USB2 storage drivers # -dev/usb2/storage/ata-usb2.c optional usb2_core usb2_storage usb2_storage_ata -dev/usb2/storage/umass2.c optional usb2_core usb2_storage usb2_storage_mass -dev/usb2/storage/urio2.c optional usb2_core usb2_storage usb2_storage_rio -dev/usb2/storage/usb2_storage.c optional usb2_core usb2_storage -dev/usb2/storage/ustorage2_fs.c optional usb2_core usb2_storage usb2_storage_fs +dev/usb2/storage/ata-usb2.c optional usb2_core usb2_storage_ata +dev/usb2/storage/umass2.c optional usb2_core usb2_storage_mass +dev/usb2/storage/urio2.c optional usb2_core usb2_storage_rio +dev/usb2/storage/ustorage2_fs.c optional usb2_core usb2_storage_fs +dev/usb2/storage/usb2_storage.c optional usb2_core \ +(usb2_storage | usb2_storage_ata | usb2_storage_mass | \ + usb2_storage_rio | usb2_storage_fs) # # USB2 NDIS driver # @@ -1591,63 +1596,74 @@ # # USB2 ethernet drivers # -dev/usb2/ethernet/if_aue2.c optional usb2_core usb2_ethernet usb2_ethernet_aue -dev/usb2/ethernet/if_axe2.c optional usb2_core usb2_ethernet usb2_ethernet_axe -dev/usb2/ethernet/if_cdce2.c optional usb2_core usb2_ethernet usb2_ethernet_cdce -dev/usb2/ethernet/if_cue2.c optional usb2_core usb2_ethernet usb2_ethernet_cue -dev/usb2/ethernet/if_kue2.c optional usb2_core usb2_ethernet usb2_ethernet_kue -dev/usb2/ethernet/if_rue2.c optional usb2_core usb2_ethernet usb2_ethernet_rue -dev/usb2/ethernet/if_udav2.c optional usb2_core usb2_ethernet usb2_ethernet_dav -dev/usb2/ethernet/usb2_ethernet.c optional usb2_core usb2_ethernet +dev/usb2/ethernet/if_aue2.c optional usb2_core usb2_ethernet_aue +dev/usb2/ethernet/if_axe2.c optional usb2_core usb2_ethernet_axe +dev/usb2/ethernet/if_cdce2.c optional usb2_core usb2_ethernet_cdce +dev/usb2/ethernet/if_cue2.c optional usb2_core usb2_ethernet_cue +dev/usb2/ethernet/if_kue2.c optional usb2_core usb2_ethernet_kue +dev/usb2/ethernet/if_rue2.c optional usb2_core usb2_ethernet_rue +dev/usb2/ethernet/if_udav2.c optional usb2_core usb2_ethernet_dav +dev/usb2/ethernet/usb2_ethernet.c optional usb2_core \ +(usb2_ethernet | usb2_ethernet_aue | usb2_ethernet_axe | \ + usb2_ethernet_cdce | usb2_ethernet_cue | usb2_ethernet_kue | \ + usb2_ethernet_rue | usb2_ethernet_dav) # # USB2 WLAN drivers # -dev/usb2/wlan/if_rum2.c optional usb2_core usb2_wlan usb2_wlan_rum -dev/usb2/wlan/if_ural2.c optional usb2_core usb2_wlan usb2_wlan_ral -dev/usb2/wlan/if_zyd2.c optional usb2_core usb2_wlan usb2_wlan_zyd -dev/usb2/wlan/usb2_wlan.c optional usb2_core usb2_wlan +dev/usb2/wlan/if_rum2.c optional usb2_core usb2_wlan_rum +dev/usb2/wlan/if_ural2.c optional usb2_core usb2_wlan_ral +dev/usb2/wlan/if_zyd2.c optional usb2_core usb2_wlan_zyd +dev/usb2/wlan/usb2_wlan.c optional usb2_core \ +(usb2_wlan | usb2_wlan_rum | usb2_wlan_ral | usb2_wlan_zyd) # # USB2 serial and parallel port drivers # -dev/usb2/serial/u3g2.c optional usb2_core usb2_serial usb2_serial_3g -dev/usb2/serial/uark2.c optional usb2_core usb2_serial usb2_serial_ark -dev/usb2/serial/ubsa2.c optional usb2_core usb2_serial usb2_serial_bsa -dev/usb2/serial/ubser2.c optional usb2_core usb2_serial usb2_serial_bser -dev/usb2/serial/uchcom2.c optional usb2_core usb2_serial usb2_serial_chcom -dev/usb2/serial/ucycom2.c optional usb2_core usb2_serial usb2_serial_cycom -dev/usb2/serial/ufoma2.c optional usb2_core usb2_serial usb2_serial_foma -dev/usb2/serial/uftdi2.c optional usb2_core usb2_serial usb2_serial_ftdi -dev/usb2/serial/ugensa2.c optional usb2_core usb2_serial usb2_serial_gensa -dev/usb2/serial/uipaq2.c optional usb2_core usb2_serial usb2_serial_ipaq -dev/usb2/serial/ulpt2.c optional usb2_core usb2_serial usb2_serial_lpt -dev/usb2/serial/umct2.c optional usb2_core usb2_serial usb2_serial_mct -dev/usb2/serial/umodem2.c optional usb2_core usb2_serial usb2_serial_modem -dev/usb2/serial/umoscom2.c optional usb2_core usb2_serial usb2_serial_moscom -dev/usb2/serial/uplcom2.c optional usb2_core usb2_serial usb2_serial_plcom -dev/usb2/serial/usb2_serial.c optional usb2_core usb2_serial -dev/usb2/serial/uvisor2.c optional usb2_core usb2_serial usb2_serial_visor -dev/usb2/serial/uvscom2.c optional usb2_core usb2_serial usb2_serial_vscom -dev/usb2/serial/u3g2.c optional usb2_core usb2_serial usb2_serial_3g +dev/usb2/serial/u3g2.c optional usb2_core usb2_serial_3g +dev/usb2/serial/uark2.c optional usb2_core usb2_serial_ark +dev/usb2/serial/ubsa2.c optional usb2_core usb2_serial_bsa +dev/usb2/serial/ubser2.c optional usb2_core usb2_serial_bser +dev/usb2/serial/uchcom2.c optional usb2_core usb2_serial_chcom +dev/usb2/serial/ucycom2.c optional usb2_core usb2_serial_cycom +dev/usb2/serial/ufoma2.c optional usb2_core usb2_serial_foma +dev/usb2/serial/uftdi2.c optional usb2_core usb2_serial_ftdi +dev/usb2/serial/ugensa2.c optional usb2_core usb2_serial_gensa +dev/usb2/serial/uipaq2.c optional usb2_core usb2_serial_ipaq +dev/usb2/serial/ulpt2.c optional usb2_core usb2_serial_lpt +dev/usb2/serial/umct2.c optional usb2_core usb2_serial_mct +dev/usb2/serial/umodem2.c optional usb2_core usb2_serial_modem +dev/usb2/serial/umoscom2.c optional usb2_core usb2_serial_moscom +dev/usb2/serial/uplcom2.c optional usb2_core usb2_serial_plcom +dev/usb2/serial/uvisor2.c optional usb2_core usb2_serial_visor +dev/usb2/serial/uvscom2.c optional usb2_core usb2_serial_vscom +dev/usb2/serial/usb2_serial.c optional usb2_core \ +(usb2_serial | usb2_serial_3g | usb2_serial_ark | usb2_serial_bsa | \ + usb2_serial_bser | usb2_serial_chcom | usb2_serial_cycom | \ + usb2_serial_foma | usb2_serial_ftdi | usb2_serial_gensa | \ + usb2_serial_ipaq | usb2_serial_lpt | usb2_serial_mct | \ + usb2_serial_modem | usb2_serial_moscom | usb2_serial_plcom | \ + usb2_serial_visor | usb2_serial_vscom) # # USB2 bluetooth drivers # -dev/usb2/bluetooth/usb2_bluetooth.c optional usb2_core usb2_bluetooth -dev/usb2/bluetooth/ng_ubt2.c optional usb2_core usb2_bluetooth usb2_bluetooth_ng -dev/usb2/bluetooth/ubtbcmfw2.c optional usb2_core usb2_bluetooth usb2_bluetooth_fw - +dev/usb2/bluetooth/ng_ubt2.c optional usb2_core usb2_bluetooth_ng +dev/usb2/bluetooth/ubtbcmfw2.c optional usb2_core usb2_bluetooth_fw +dev/usb2/bluetooth/usb2_bluetooth.c optional usb2_core \ +(usb2_bluetooth | usb2_bluetooth_ng | usb2_bluetooth_fw) # # USB2 misc drivers # -dev/usb2/misc/usb2_misc.c optional usb2_core usb2_misc -dev/usb2/misc/ufm2.c optional usb2_core usb2_misc usb2_misc_fm -dev/usb2/misc/udbp2.c optional usb2_core usb2_misc usb2_misc_dbp +dev/usb2/misc/ufm2.c optional usb2_core usb2_misc_fm +dev/usb2/misc/udbp2.c optional usb2_core usb2_misc_dbp +dev/usb2/misc/usb2_misc.c optional usb2_core \ +(usb2_misc | usb2_misc_fm | usb2_misc_dbp) # # USB2 input drivers # -dev/usb2/input/uhid2.c optional usb2_core usb2_input usb2_input_hid -dev/usb2/input/ukbd2.c optional usb2_core usb2_input usb2_input_kbd -dev/usb2/input/ums2.c optional usb2_core usb2_input usb2_input_ms -dev/usb2/input/usb2_input.c optional usb2_core usb2_input +dev/usb2/input/uhid2.c optional usb2_core usb2_input_hid +dev/usb2/input/ukbd2.c optional usb2_core usb2_input_kbd +dev/usb2/input/ums2.c optional usb2_core usb2_input_ms +dev/usb2/input/usb2_input.c optional usb2_core \ +(usb2_input | usb2_input_hid | usb2_input_kbd | usb2_input_ms) # # USB2 quirks # @@ -1662,8 +1678,9 @@ # # USB2 image drivers # -dev/usb2/image/usb2_image.c optional usb2_core usb2_image -dev/usb2/image/uscanner2.c optional usb2_core usb2_image usb2_scanner +dev/usb2/image/uscanner2.c optional usb2_core usb2_scanner +dev/usb2/image/usb2_image.c optional usb2_core \ +(usb2_image | usb2_scanner) # # USB2 sound and MIDI drivers # From hselasky at FreeBSD.org Sun Feb 1 09:02:02 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Sun Feb 1 09:02:08 2009 Subject: PERFORCE change 156997 for review Message-ID: <200902011702.n11H21AF018951@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=156997 Change 156997 by hselasky@hselasky_laptop001 on 2009/02/01 17:01:25 Integrate EHCI Marvell++ support from the old USB stack. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.h#14 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_ixp4xx.c#1 add .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_mbus.c#1 add .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_pci.c#23 edit .. //depot/projects/usb/src/sys/modules/usb2/controller_ehci/Makefile#6 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.h#14 (text+ko) ==== @@ -468,7 +468,6 @@ struct ehci_sitd *sc_isoc_fs_p_last[EHCI_VIRTUAL_FRAMELIST_COUNT]; struct ehci_itd *sc_isoc_hs_p_last[EHCI_VIRTUAL_FRAMELIST_COUNT]; void *sc_intr_hdl; - device_t sc_dev; bus_size_t sc_io_size; bus_space_tag_t sc_io_tag; bus_space_handle_t sc_io_hdl; ==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_pci.c#23 (text+ko) ==== @@ -237,7 +237,6 @@ USB_GET_DMA_TAG(self), &ehci_iterate_hw_softc)) { return (ENOMEM); } - sc->sc_dev = self; pci_enable_busmaster(self); ==== //depot/projects/usb/src/sys/modules/usb2/controller_ehci/Makefile#6 (text+ko) ==== @@ -36,4 +36,12 @@ SRCS+= ehci2.c SRCS+= ehci2_pci.c +.if defined(HAS_MARVELL_EHCI) +SRCS+= ehci2_mbus.c +.endif + +.if defined(HAS_IXP4XX_EHCI) +SRCS+= ehci2_ixp4xx.c +.endif + .include From rwatson at FreeBSD.org Sun Feb 1 09:42:44 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Sun Feb 1 09:42:52 2009 Subject: PERFORCE change 156998 for review Message-ID: <200902011742.n11HggQp023074@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=156998 Change 156998 by rwatson@rwatson_freebsd_capabilities on 2009/02/01 17:42:22 Since fexecve(2) will be run directly on rtld-elf-cap, include an ELF ABI brand section (borrowed from csu). Affected files ... .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#8 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#8 (text+ko) ==== @@ -1,5 +1,5 @@ # $FreeBSD$ -# $P4: //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#7 $ +# $P4: //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#8 $ WITHOUT_SSP= @@ -8,7 +8,8 @@ PROG?= ld-elf-cap.so.1 SRCS= rtld_start.S \ reloc.c rtld.c rtld_lock.c map_object.c \ - malloc.c xmalloc.c debug.c libmap.c + malloc.c xmalloc.c debug.c libmap.c \ + crtbrand.c MAN= rtld-elf-cap.1 CSTD?= gnu99 CFLAGS+= -Wall -DFREEBSD_ELF -DIN_RTLD -DIN_RTLD_CAP -g @@ -54,6 +55,7 @@ .PATH: ${.CURDIR}/../rtld-elf .PATH: ${.CURDIR}/../rtld-elf/${MACHINE_ARCH} +.PATH: ${.CURDIR}/../../lib/csu/common .include From rwatson at FreeBSD.org Sun Feb 1 09:55:57 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Sun Feb 1 09:56:04 2009 Subject: PERFORCE change 156999 for review Message-ID: <200902011755.n11HttTl024054@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=156999 Change 156999 by rwatson@rwatson_freebsd_capabilities on 2009/02/01 17:55:21 There has never been a ld-elf-cap.so in /usr/libexec so don't set up a symlink. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#9 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#9 (text+ko) ==== @@ -1,5 +1,5 @@ # $FreeBSD$ -# $P4: //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#8 $ +# $P4: //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#9 $ WITHOUT_SSP= @@ -18,7 +18,6 @@ INSTALLFLAGS= -C -b PRECIOUSPROG= BINDIR= /libexec -SYMLINKS= ${BINDIR}/${PROG} /usr/libexec/${PROG} CFLAGS+= -fpic -DPIC LDFLAGS+= -shared -Wl,-Bsymbolic @@ -46,17 +45,9 @@ .include "${.CURDIR}/../rtld-elf/${MACHINE_ARCH}/Makefile.inc" .endif -# Since moving rtld-elf to /libexec, we need to create a symlink. -# Fixup the existing binary that's there so we can symlink over it. -beforeinstall: -.if exists(${DESTDIR}/usr/libexec/${PROG}) - -chflags noschg ${DESTDIR}/usr/libexec/${PROG} -.endif - .PATH: ${.CURDIR}/../rtld-elf .PATH: ${.CURDIR}/../rtld-elf/${MACHINE_ARCH} .PATH: ${.CURDIR}/../../lib/csu/common - .include .include From rwatson at FreeBSD.org Sun Feb 1 10:42:44 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Sun Feb 1 10:42:53 2009 Subject: PERFORCE change 157000 for review Message-ID: <200902011842.n11IghGH031421@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157000 Change 157000 by rwatson@rwatson_freebsd_capabilities on 2009/02/01 18:42:01 Add comment to rtld-elf-cap's linker script to remind me that I'd like to not have a custom linker script. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/rtld-elf-cap.xs#4 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/rtld-elf-cap.xs#4 (text+ko) ==== @@ -1,4 +1,10 @@ -/* Script for ld --shared: link shared library */ +/* + * Script to generate ld-elf-cap.so -- based on /usr/libdata/ldscripts shared + * object script. + * + * XXXRW: Is there a way to override the executable start using the base + * script without a custom one? + */ OUTPUT_FORMAT("elf32-i386-freebsd", "elf32-i386-freebsd", "elf32-i386-freebsd") OUTPUT_ARCH(i386) From rene at FreeBSD.org Sun Feb 1 11:10:12 2009 From: rene at FreeBSD.org (Rene Ladan) Date: Sun Feb 1 11:10:19 2009 Subject: PERFORCE change 157001 for review Message-ID: <200902011910.n11JABns034613@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157001 Change 157001 by rene@rene_self on 2009/02/01 19:09:55 MFen handbook/cutting-edge 1.239 -> 1.240 Affected files ... .. //depot/projects/docproj_nl/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml#20 edit Differences ... ==== //depot/projects/docproj_nl/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml#20 (text+ko) ==== @@ -5,7 +5,7 @@ $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml,v 1.47 2006/01/07 11:27:42 siebrand Exp $ %SOURCE% en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml - %SRCID% 1.239 + %SRCID% 1.240 --> @@ -1722,10 +1722,217 @@ De universele wijze om een systeem bij te werken - Een systeem bijwerken kan met de volgende procedure, nadat - /usr/src/UPDATING is geraadpleegd om te - controleren of er voor buildworld voor de gebruikte versie van - de broncode nog acties zijn uit te voeren: + Om uw systeem bij te werken, dient u + /usr/src/UPDATING te controleren op + eventuele pre-buildworld stappen die nodig zijn voor uw versie + van de broncode en daarna de procedure te gebruiken die hier + beschreven staat. + + Deze bijwerkstappen nemen aan dat u nu een oude versie van + &os; gebruikt, die uit een oude compiler, een oude kernel, een + oude wereld en oude instellingenbestanden bestaat. Onder + wereld worden de binairen, bibliotheken, en + programmeerbestanden van het kernsysteem verstaan. De compiler + is deel van wereld, maar heeft enkele speciale + aandachtspunten. + + We nemen ook aan dat u reeds de broncode van een nieuwer + systeem heeft verkregen. Bekijk, als de bronnen op een bepaald + systeem ook oud zijn, voor uitgebreide + hulp over het synchroniseren ervan naar een nieuwere + versie. + + Het bijwerken van het systeem vanaf de broncode is wat + subtieler dan het op het eerste gezicht lijkt, en de + ontwikkelaars van &os; vonden het in de loop der jaren nodig om + de aangeraden methode redelijk drastisch te veranderen met het + aan het licht komen van nieuwe soorten onontwijkbare + afhankelijkheden. De rest van deze sectie beschrijft de + rationale achter de huidige aanbevolen bijwerkmethode. + + Elke succesvolle bijwerkmethode krijgt te maken met de + volgende punten: + + + + Het kan voorkomen dat de oude compiler de nieuwe kernel + niet kan compileren. (Oude compilers bevatten soms bugs.) + De nieuwe kernel dient dus met de nieuwe compiler gebouwd te + worden. In het bijzonder moet de nieuwe compiler gebouwd + worden voordat de nieuwe kernel gebouwd wordt. Dit betekent + niet per se dat de nieuwe compiler + geïnstalleerd moet worden voordat + de nieuwe kernel gebouwd wordt. + + + + De nieuwe wereld kan afhankelijk zijn van mogelijkheden + van de nieuwe kernel. Dus moet de nieuwe kernel worden + geïnstalleerd voordat de nieuwe wereld wordt + geïnstalleerd. + + + + De eerste twee gevallen zijn de basis voor de methode + buildworld, + buildkernel, + installkernel, + installworld die we in de volgende + paragrafen beschrijven. Dit is geen uitputtende lijst van alle + redenen waarom het huidige aanbevolen bijwerkproces de voorkeur + verdient. Wat minder voor de hand liggende redenen worden + hieronder genoemd: + + + + Het kan zijn dat de oude wereld niet correct draait op + de nieuwe kernel, dus moet de nieuwe wereld onmiddellijk na + het installeren van de nieuwe kernel geïnstalleerd + worden. + + + + Sommige instellingen moeten veranderd worden voordat de + nieuwe wereld wordt geïnstalleerd, maar anderen kunnen + de oude wereld kapot maken. Vandaar dat over het algemeen + twee verschillende bijwerkstappen voor de instellingen nodig + zijn. + + + + Voor het grootste gedeelte houdt het bijwerkproces zich + alleen bezig met het vervangen of toevoegen van bestanden; + bestaande oude bestanden worden niet verwijderd. Dit kan in + sommige gevallen problemen geven. Als een gevolg zal de + bijwerkprocedure soms aangeven dat bepaalde bestanden + tijdens bepaalde stappen handmatig verwijderd dienen te + worden. Dit kan in de toekomst eventueel geautomatiseerd + worden. + + + + Deze zorgen hebben tot het volgende aanbevolen bijwerkproces + geleid. Merk op dat het gedetailleerde proces voor bepaalde + updates aanvullende stappen nodig kan hebben, maar dit + kernproces zou de komende tijd ongewijzigd moeten + blijven: + + + + make buildworld + + Dit compileert eerst de nieuwe compiler en enkele + aanverwante gereedschappen, daarna wordt de nieuwe compiler + gebruikt om de rest van de nieuwe wereld te compileren. Het + resultaat komt in /usr/obj te staan. + + + + make buildkernel + + In tegenstelling tot de oude aanpak, die &man.config.8; + en &man.make.1; gebruikt, gebruikt dit de + nieuwe compiler die in /usr/obj verblijft. Dit + beschermt u tegen mismatches tussen de compiler en de + kernel. + + + + make installkernel + + Plaatst de nieuwe kernel en kernelmodules op de schijf, + waardoor het mogelijk wordt om met de nieuw bijgewerkte + kernel op te starten. + + + + Start opnieuw op in enkele-gebruikersmodus. + + De enkele-gebruikersmodus minimaliseert problemen met + het bijwerken van software die al draait. Het minimaliseert + ook problemen die opduiken door een oude wereld op een + nieuwe kernel te draaien. + + + + mergemaster + + Dit voert wat initiële updates aan + instellingenbestanden uit ter voorbereiding op de nieuwe + wereld. Het kan bijvoorbeeld nieuwe gebruikersgroepen aan + het systeem, of nieuwe gebruikersnamen aan de + wachtwoorddatabase toevoegen. Dit is vaak nodig wanneer er + nieuwe groepen of speciale accounts voor systeemgebruikers + zijn toegevoegd sinds de laatste keer bijwerken, zodat de + stap installworld zonder problemen + de nieuw geïnstalleerde namen van systeemgebruikers of + systeemgroepen kan gebruiken. + + + + make installworld + + Kopieert de wereld van /usr/obj. U heeft nu een + nieuwe kernel en een nieuwe wereld op schijf staan. + + + + mergemaster + + Nu kunt u de overgebleven instellingenbestanden + bijwerken, aangezien u een nieuwe wereld op schijf heeft + staan. + + + + Start opnieuw op. + + Een volledige nieuwe start van de machine is nodig om de + nieuwe kernel en de nieuwe wereld met nieuwe + instellingenbestanden te laden. + + + + Merk op dat als u van de ene uitgave van dezelfde tak van + &os; bijwerkt naar een recentere uitgave van dezelfde tak, i.e. + van 7.0 naar 7.1, dat deze procedure dan niet absoluut nodig is, + aangezien het onwaarschijnlijk is dat u serieuze problemen + krijgt met de compiler, kernel, gebruikersland en + instellingenbestanden. De oudere aanpak met make + world gevolgd door het + bouwen en installeren van een nieuwe kernel kan voor kleine + updates goed genoeg zijn. + + Maar mensen die deze procedure niet volgen tijdens het + bijwerken tussen grote uitgaven kunnen wat problemen + verwachten. + + Het is ook goed om op te merken dat veel upgrades (i.e. + 4.X naar 5.0) wat specifieke + aanvullende stappen nodig hebben (bijvoorbeeld het hernoemen of + verwijderen van specifieke bestanden voorafgaand aan + installworld). Lees het bestand + /usr/src/UPDATING zorgvuldig, met name het + einde, waar het huidig aangeraden bijwerkproces expliciet wordt + beschreven. + + Deze procedure is in de loop der tijd veranderd aangezien de + ontwikkelaars zagen dat het onmogelijk was om bepaalde + mismatch-problemen volledig te voorkomen. Hopelijk blijft de + huidige procedure voor een lange tijd stabiel. + + + Het bijwerken van &os; 3.X of + eerdere uitgaven is wat lastiger; lees + UPDATING zorgvuldig door als u zo'n soort + upgrade moet uitvoeren. + + + Samengevat is de huidige aanbevolen manier om &os; vanaf + broncode bij te werken: &prompt.root; cd /usr/src &prompt.root; make buildworld From gabor at FreeBSD.org Sun Feb 1 13:46:52 2009 From: gabor at FreeBSD.org (Gabor Kovesdan) Date: Sun Feb 1 13:47:00 2009 Subject: PERFORCE change 157008 for review Message-ID: <200902012146.n11Lko24059000@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157008 Change 157008 by gabor@gabor_server on 2009/02/01 21:46:39 - Add some lines for the upcoming -B flag Affected files ... .. //depot/projects/soc2008/gabor_textproc/diff/diff.c#18 edit .. //depot/projects/soc2008/gabor_textproc/diff/diff.h#7 edit .. //depot/projects/soc2008/gabor_textproc/diff/diffreg.c#9 edit Differences ... ==== //depot/projects/soc2008/gabor_textproc/diff/diff.c#18 (text+ko) ==== @@ -45,7 +45,7 @@ #include "diff.h" -int aflag, bflag, dflag, iflag, lflag, Nflag, Pflag, pflag, rflag; +int aflag, bflag, Bflag, dflag, iflag, lflag, Nflag, Pflag, pflag, rflag; int sflag, tflag, Tflag, wflag, uniflag, strip_cr; int format, status; int fcase_behave = FCASE_SENSITIVE; @@ -67,7 +67,7 @@ NOOP_OPT }; -#define OPTIONS "0123456789abC:cdD:efhI:iL:lnNPpqrS:sTtU:uvwX:x:" +#define OPTIONS "0123456789abBC:cdD:efhI:iL:lnNPpqrS:sTtU:uvwX:x:" static struct option longopts[] = { { "ignore-file-name-case", no_argument, NULL, FCASE_IGNORE_OPT }, { "no-ignore-file-name-case", no_argument, NULL, FCASE_SENSITIVE_OPT }, @@ -80,8 +80,7 @@ { "to-file", required_argument, NULL, TOFILE_OPT }, { "help", no_argument, NULL, HELP_OPT }, { "text", no_argument, NULL, 'a' }, -/* XXX: UNIMPLEMENTED - { "ignore-blank-lines", no_argument, NULL, 'B' }, */ + { "ignore-blank-lines", no_argument, NULL, 'B' }, { "ignore-space-change", no_argument, NULL, 'b' }, { "context", optional_argument, NULL, 'C' }, { "ifdef", required_argument, NULL, 'D' }, @@ -169,6 +168,8 @@ case 'b': bflag = 1; break; + case 'B': + Bflag = 1; case 'C': case 'c': format = D_CONTEXT; ==== //depot/projects/soc2008/gabor_textproc/diff/diff.h#7 (text+ko) ==== @@ -82,7 +82,7 @@ struct excludes *next; }; -extern int aflag, bflag, dflag, iflag, lflag, Nflag, Pflag, pflag, rflag, +extern int aflag, bflag, Bflag, dflag, iflag, lflag, Nflag, Pflag, pflag, rflag, sflag, tflag, Tflag, wflag, uniflag, strip_cr; extern int format, status; extern int fcase_behave; ==== //depot/projects/soc2008/gabor_textproc/diff/diffreg.c#9 (text+ko) ==== @@ -766,7 +766,7 @@ ixnew[j] = ctnew += skipline(f2); j++; } - if (bflag || wflag || iflag || strip_cr) { + if (bflag || Bflag || wflag || iflag || strip_cr) { for (;;) { c = getc(f1); d = getc(f2); @@ -779,6 +779,11 @@ (c == '\n' && d == EOF))) { break; } + // XXX: Bflag + while (Bflag && isspace(c)) + c = skipline(f1); + while (Bflag && isspace(d)) + d = skipline(f2); ctold++; ctnew++; while ((strip_cr) && (c == '\r') && (d == '\n')) @@ -1229,7 +1234,7 @@ sum = 1; space = 0; - if (!bflag && !wflag) { + if (!bflag && !Bflag && !wflag) { if (iflag) for (i = 0; (t = getc(f)) != '\n'; i++) { if (t == '\r' && strip_cr) @@ -1275,6 +1280,8 @@ return (0); /* FALLTHROUGH */ case '\n': + if (Bflag && space == 0 && i == 0) + continue; break; } break; @@ -1284,6 +1291,7 @@ * There is a remote possibility that we end up with a zero sum. * Zero is used as an EOF marker, so return 1 instead. */ + printf("HASH: %d\n", (sum == 0 ? 1 : sum)); return (sum == 0 ? 1 : sum); } From antab at FreeBSD.org Sun Feb 1 15:44:52 2009 From: antab at FreeBSD.org (Arnar Mar Sig) Date: Sun Feb 1 15:44:58 2009 Subject: PERFORCE change 157013 for review Message-ID: <200902012344.n11NioTZ069636@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157013 Change 157013 by antab@antab_farm on 2009/02/01 23:44:50 Misc changes to get AVR32 working. Stops at cpu_fork() now. Affected files ... .. //depot/projects/avr32/src/sys/avr32/avr32/cpu.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/db_disasm.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/db_interface.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/db_trace.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/gdb_machdep.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/machdep.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/pm_machdep.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/pmap.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/stack_machdep.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/support.S#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/tlb.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/uboot.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/vm_machdep.c#2 edit .. //depot/projects/avr32/src/sys/avr32/conf/NGW100#2 edit .. //depot/projects/avr32/src/sys/avr32/include/atomic.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/cpu.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/cpufunc.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/db_machdep.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/gdb_machdep.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/pcpu.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/pte.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/tlb.h#2 edit .. //depot/projects/avr32/src/sys/conf/files.avr32#2 edit Differences ... ==== //depot/projects/avr32/src/sys/avr32/avr32/cpu.c#2 (text+ko) ==== @@ -108,22 +108,3 @@ avr32_debug(": needs implementing\n"); while (1) { } } - -void avr32_hexdump(uint8_t *data, size_t size) { - int i; - - printf("*** %4d bytes *******************************************\n", size); - for (i = 0; i < size; i++) { - if (!(i % 32)) { - printf("%08X ", (uint32_t)data + i); - } - printf("%02X", data[i]); - - if (!((i + 1) % 32)) { - printf("\n"); - } else if (!((i + 1) % 4)) { - printf(" "); - } - } - printf("\n"); -} ==== //depot/projects/avr32/src/sys/avr32/avr32/machdep.c#2 (text+ko) ==== @@ -54,6 +54,14 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -71,20 +79,25 @@ extern vm_offset_t proc0_stack_end; vm_offset_t phys_avail[10]; -long realmem = 0; +long realmem; +struct kva_md_info kmi; + +static void cpu_startup(void *); +SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL); // Prototypes (Should be in headers!) void mi_startup(void); void avr32_init(void); void avr32_init_proc0(void); - void avr32_init() { cninit(); // Init console cpu_init(); // Init needed cpu things (evb and irq) uboot_parse_tags(); // Parse uboot tags + + realmem = btoc(phys_avail[1] - phys_avail[0]); init_param1(); - init_param2(phys_avail[1] - phys_avail[2]); + init_param2(realmem); pmap_bootstrap(); // Bootstrap pmap so we so virtual memory works avr32_init_proc0(); // Init proc0 mutex_init(); @@ -96,16 +109,37 @@ proc_linkup(&proc0, &thread0); thread0.td_kstack = proc0_stack_end; thread0.td_kstack_pages = KSTACK_PAGES - 1; - thread0.td_pcb = &proc0_pcb; - thread0.td_frame = &thread0.td_pcb->pcb_regs; + thread0.td_pcb = &proc0_pcb; + thread0.td_frame = &thread0.td_pcb->pcb_regs; pcpu_init(pcpup, 0, sizeof(struct pcpu)); PCPU_SET(curthread, &thread0); PCPU_SET(curpcb, thread0.td_pcb); } +static void cpu_startup(void *dummy) { + if (boothowto & RB_VERBOSE) { + bootverbose++; + } + bootverbose++; + printf("real memory = %u (%u MB)\n", ptoa(realmem), + ptoa(realmem) / 1048576); + + + vm_ksubmap_init(&kmi); + + printf("avail memory = %u (%uMB)\n", ptoa(cnt.v_free_count), + ptoa(cnt.v_free_count) / 1048576); + + /* + * Set up buffers, so they can be used to read disk labels. + */ + bufinit(); + vm_pager_bufferinit(); +} + void cpu_pcpu_init(struct pcpu *pcpu, int cpuid, size_t size) { - pcpu->pc_next_asid = 1; + pcpu->pc_asid_next = 1; pcpu->pc_asid_generation = 1; } @@ -167,6 +201,7 @@ int savectx(struct pcb *pcb) { avr32_impl(); + return (0); } void makectx(struct trapframe *tf, struct pcb *pcb) { ==== //depot/projects/avr32/src/sys/avr32/avr32/pm_machdep.c#2 (text+ko) ==== @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -53,10 +54,12 @@ int get_mcontext(struct thread *td, mcontext_t *mcp, int flags) { avr32_impl(); + return (0); } int set_mcontext(struct thread *td, const mcontext_t *mcp) { avr32_impl(); + return (0); } void exec_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings) { @@ -65,14 +68,17 @@ int ptrace_set_pc(struct thread *td, unsigned long addr) { avr32_impl(); + return (0); } int ptrace_single_step(struct thread *td) { avr32_impl(); + return (0); } int ptrace_clear_single_step(struct thread *td) { avr32_impl(); + return (0); } void cpu_switch(struct thread *td, struct thread *newtd, struct mtx *lock) { @@ -88,5 +94,6 @@ */ int sigreturn(struct thread *td, struct sigreturn_args *uap) { avr32_impl(); + return (0); } ==== //depot/projects/avr32/src/sys/avr32/avr32/pmap.c#2 (text+ko) ==== @@ -53,7 +53,6 @@ vm_offset_t kernel_vm_end = 0; vm_offset_t virtual_avail; /* VA of first avail page (after kernel bss) */ vm_offset_t virtual_end; /* VA of last avail page (end of kernel AS) */ -int asid_current, asid_current_generation; /* * Data for the pv entry allocation mechanism @@ -96,6 +95,7 @@ } // Enable paging + tlb_flush(); sysreg_write(PTBR, (uint32_t)kernel_pmap); sysreg_write(MMUCR, bit_offset(SYS, MMUCR, S) | bit_offset(SYS, MMUCR, E) | @@ -148,15 +148,26 @@ * such as one in a vmspace structure. */ int pmap_pinit(pmap_t pmap) { -/* mtx_init(&(pmap)->pm_mtx, "pmap", NULL, MTX_DEF); + vm_page_t ptdpg; + + PMAP_LOCK_INIT(pmap); + + /* allocate the page directory page */ + ptdpg = vm_page_alloc(NULL, 512, + VM_ALLOC_NOOBJ | VM_ALLOC_NORMAL | + VM_ALLOC_WIRED | VM_ALLOC_ZERO); - pmap->pm_active = 0; - pmap->pm_asid.asid = PMAP_ASID_RESERVED; - pmap->pm_asid.gen = 0; + pmap->pm_pd = (pd_entry_t *)AVR32_PHYS_TO_P2(VM_PAGE_TO_PHYS(ptdpg)); + if ((ptdpg->flags & PG_ZERO) == 0) { + bzero(pmap->pm_pd, PAGE_SIZE); + } + pmap->pm_active = 0; + pmap->pm_asid = 0; + pmap->pm_asid_generation = 0; TAILQ_INIT(&pmap->pm_pvlist); - bzero(&pmap->pm_stats, sizeof(pmap->pm_stats)); */ - avr32_impl(); + bzero(&pmap->pm_stats, sizeof(pmap->pm_stats)); + return(1); } @@ -166,6 +177,7 @@ boolean_t pmap_is_modified(vm_page_t m) { avr32_impl(); + return (0); } void pmap_clear_modify(vm_page_t m) { @@ -174,6 +186,7 @@ int pmap_ts_referenced(vm_page_t m) { avr32_impl(); + return (0); } void pmap_clear_reference(vm_page_t m) { @@ -226,6 +239,7 @@ */ boolean_t pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr) { avr32_impl(); + return (0); } void pmap_copy(pmap_t dst_pmap, pmap_t src_pmap, vm_offset_t dst_addr, vm_size_t len, vm_offset_t src_addr) { @@ -239,7 +253,7 @@ void pmap_zero_page(vm_page_t m) { vm_paddr_t phys = VM_PAGE_TO_PHYS(m); - bzero(AVR32_PHYS_TO_P2(phys), PAGE_SIZE); + bzero((caddr_t)AVR32_PHYS_TO_P2(phys), PAGE_SIZE); } void pmap_zero_page_area(vm_page_t m, int off, int size) { @@ -250,12 +264,20 @@ avr32_impl(); } -void pmap_qenter(vm_offset_t sva, vm_page_t *m, int count) { - avr32_impl(); +void pmap_qenter(vm_offset_t va, vm_page_t *m, int count) { + int i; + + for (i = 0; i < count; i++) { + pmap_kenter(va, VM_PAGE_TO_PHYS(m[i])); + va += PAGE_SIZE; + } } -void pmap_qremove(vm_offset_t sva, int count) { - avr32_impl(); +void pmap_qremove(vm_offset_t va, int count) { + while (count-- > 0) { + pmap_kremove(va); + va += PAGE_SIZE; + } } void pmap_page_init(vm_page_t m) { @@ -270,7 +292,6 @@ void pmap_growkernel(vm_offset_t addr) { // Not really sure what to do here, need to look better into it, but the // kernel should have all the pages tables needed to grow within the P3 segment - avr32_debug("pmap_growkernel: Needs implementing?\n"); } /* @@ -480,10 +501,12 @@ vm_page_t pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot) { avr32_impl(); + return (0); } boolean_t pmap_page_exists_quick(pmap_t pmap, vm_page_t m) { avr32_impl(); + return (0); } /* @@ -507,6 +530,7 @@ */ int pmap_page_wired_mappings(vm_page_t m) { avr32_impl(); + return (0); } /* @@ -516,6 +540,7 @@ */ int pmap_mincore(pmap_t pmap, vm_offset_t addr) { avr32_impl(); + return (0); } /* @@ -675,7 +700,7 @@ static void pmap_update_page(pmap_t pmap, vm_offset_t va, pt_entry_t pte) { uint32_t tlbehi, mmucr; - if (pmap->pm_asid_generation != asid_current_generation) { + if (pmap->pm_asid_generation != PCPU_GET(asid_generation)) { return; } @@ -703,8 +728,6 @@ pmap_t pmap = (pmap_t)sysreg_read(PTBR); pt_entry_t *ent; - - ent = pmap_pte(pmap, tlbear); if (!ent || !*ent) { printf("\nTLB miss: %x\n", ecr); @@ -718,20 +741,20 @@ } // Generate ASID? - if (pmap->pm_asid == 0 || pmap->pm_asid_generation < asid_current_generation) { - asid_current++; - if (asid_current == ASID_MAX) { - asid_current_generation++; - asid_current = 1; + if (pmap->pm_asid_generation < PCPU_GET(asid_generation)) { + if (PCPU_GET(asid_next) == ASID_MAX) { + PCPU_INC(asid_generation); + PCPU_SET(asid_next, 0); } - pmap->pm_asid = asid_current; - pmap->pm_asid_generation = asid_current_generation; + pmap->pm_asid = PCPU_GET(asid_next); + pmap->pm_asid_generation = PCPU_GET(asid_generation); + PCPU_INC(asid_next); } // Insert into TLB sysreg_write(TLBEHI, (tlbehi & bit_mask(SYS, TLBEHI, VPN)) | bit_offset(SYS, TLBEHI, V) | - asid_current); + pmap->pm_asid); sysreg_write(TLBELO, (*ent & ~bit_mask(SYS, TLBELO, SZ)) | PTE_DIRTY | PTE_SIZE_4K); sysreg_write(MMUCR, bit_offset(SYS, MMUCR, S) | bit_offset(SYS, MMUCR, E) | @@ -743,7 +766,7 @@ cpu_sync_pipeline(); tlb_at++; - if (tlb_at == 32) { + if (tlb_at == TLB_SIZE) { tlb_at = 0; } } ==== //depot/projects/avr32/src/sys/avr32/avr32/support.S#2 (text+ko) ==== @@ -189,9 +189,6 @@ -ENTRY(breakpoint) - - ENTRY(setjmp) ENTRY(longjmp) sub r12, pc, (. - 2f) ==== //depot/projects/avr32/src/sys/avr32/avr32/tlb.c#2 (text+ko) ==== @@ -47,7 +47,7 @@ uint32_t i, tlbehi, tlbelo, mmucr, mmucr_save; mmucr_save = sysreg_read(MMUCR); - for (i = 0; i < 32; i++) { + for (i = 0; i < TLB_SIZE; i++) { mmucr = (mmucr_save & ~bit_mask(SYS, MMUCR, DRP)) | (i << bit_shift(SYS, MMUCR, DRP)); sysreg_write(MMUCR, mmucr); @@ -60,3 +60,19 @@ } sysreg_write(MMUCR, mmucr_save); } + +void tlb_flush() { + uint32_t i, mmucr, mmucr_save; + + mmucr_save = sysreg_read(MMUCR); + sysreg_write(TLBEHI, 0); + sysreg_write(TLBELO, 0); + for (i = 0; i < TLB_SIZE; i++) { + mmucr = (mmucr_save & ~bit_mask(SYS, MMUCR, DRP)) | (i << bit_shift(SYS, MMUCR, DRP)); + sysreg_write(MMUCR, mmucr); + + __builtin_tlbw(); + cpu_sync_pipeline(); + } + sysreg_write(MMUCR, mmucr_save); +} ==== //depot/projects/avr32/src/sys/avr32/avr32/uboot.c#2 (text+ko) ==== @@ -25,9 +25,6 @@ if (tag->u.mem_range.size > 0) { phys_avail[0] = AVR32_P1_TO_PHYS(&_end); phys_avail[1] = tag->u.mem_range.addr + tag->u.mem_range.size; - printf("Memory start: %x to %x\n", - phys_avail[0], - phys_avail[1]); } break; ==== //depot/projects/avr32/src/sys/avr32/avr32/vm_machdep.c#2 (text+ko) ==== @@ -50,6 +50,8 @@ #include #include +#include +#include #include /* @@ -95,7 +97,8 @@ } void cpu_thread_alloc(struct thread *td) { - avr32_impl(); + td->td_pcb = (struct pcb *)(td->td_kstack + td->td_kstack_pages * PAGE_SIZE) - 1; + td->td_frame = &td->td_pcb->pcb_regs; } /* ==== //depot/projects/avr32/src/sys/avr32/conf/NGW100#2 (text+ko) ==== @@ -9,12 +9,21 @@ hints "NGW100.hints" makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols -options VERBOSE_SYSINIT +options VERBOSE_SYSINIT #options DDB #options KDB +#options GDB +options MUTEX_DEBUG +#options WITNESS +#options WITNESS_KDB +#options WITNESS_SKIPSPIN +options INVARIANTS +options INVARIANT_SUPPORT +options DIAGNOSTIC + options SCHED_4BSD #4BSD scheduler -options INET #InterNETworking +#options INET #InterNETworking #ioptions NFSCLIENT #Network Filesystem Client #options NFS_ROOT #NFS usable as /, requires NFSCLIENT #options PSEUDOFS #Pseudo-filesystem framework @@ -35,7 +44,7 @@ #device atmel_ssc # Sync Serial controller #device atmel_mci # Media card interface -device loop -device ether +#device loop +#device ether #device md #device mem ==== //depot/projects/avr32/src/sys/avr32/include/atomic.h#2 (text+ko) ==== @@ -38,7 +38,7 @@ * antab todo: Make this atomic. when needed */ -#ifndef _MACHINE_ATOMIC_H_ +#ifndef _MACHINE_ATOMIC_H_ #define _MACHINE_ATOMIC_H_ #include @@ -47,6 +47,10 @@ #include #endif +#define mb() +#define wmb() +#define rmb() + #ifdef _KERNEL static __inline void atomic_set_32(volatile uint32_t *address, uint32_t setmask) ==== //depot/projects/avr32/src/sys/avr32/include/cpu.h#2 (text+ko) ==== @@ -33,6 +33,8 @@ #include #include #include +#include +#include // Macros for segment addressing #define AVR32_SEG_P0 0x00000000 @@ -45,8 +47,9 @@ #define AVR32_P2_TO_PHYS(x) ((unsigned)(x) & ~AVR32_SEG_MASK) #define AVR32_PHYS_TO_P1(x) ((unsigned)(x) | AVR32_SEG_P1) #define AVR32_PHYS_TO_P2(x) ((unsigned)(x) | AVR32_SEG_P2) +#define AVR32_MODE_USER bit_value(SYS, SR, MODE, 0) -#define TRAPF_USERMODE(frame) ((frame->regs.sr & PSR_MODE) == PSR_USR32_MODE) +#define TRAPF_USERMODE(frame) ((frame->regs.sr & bit_mask(SYS, SR, MODE)) == AVR32_MODE_USER) #define TRAPF_PC(tfp) ((tfp)->regs.pc) #define cpu_getstack(td) ((td)->td_frame->regs.sp) //#define cpu_setstack(td, sp) ((td)->td_frame->sp = (sp)) ==== //depot/projects/avr32/src/sys/avr32/include/cpufunc.h#2 (text+ko) ==== @@ -45,5 +45,11 @@ register_t intr_disable(void); void intr_restore(register_t s); +static __inline void +breakpoint(void) +{ + __asm __volatile ("breakpoint"); +} + #endif /* _KERNEL */ #endif /* _MACHINE_CPUFUNC_H_ */ ==== //depot/projects/avr32/src/sys/avr32/include/db_machdep.h#2 (text+ko) ==== @@ -37,16 +37,18 @@ typedef vm_offset_t db_addr_t; typedef int db_expr_t; -#define PC_REGS() ((db_addr_t)kdb_thrctx->pcb_pc) +#define PC_REGS() ((db_addr_t)kdb_thrctx->pcb_regs.regs.pc) -#define BKPT_INST (KERNEL_BREAKPOINT) -#define BKPT_SIZE (4) +#define BKPT_INST (0xD673) +#define BKPT_SIZE (2) #define BKPT_SET(inst) (BKPT_INST) -#define BKPT_SKIP do { \ - kdb_frame->tf_pc += BKPT_SIZE; \ +#define BKPT_SKIP do { \ + kdb_frame->regs.pc += BKPT_SIZE; \ } while (0) +#define SOFTWARE_SSTEP 1 + #define T_BREAKPOINT 0xffff #define IS_BREAKPOINT_TRAP(type, code) (type == T_BREAKPOINT) ==== //depot/projects/avr32/src/sys/avr32/include/pcpu.h#2 (text+ko) ==== @@ -39,9 +39,9 @@ struct vmspace; -#define PCPU_MD_FIELDS \ - struct pmap *pc_curpmap; /* pmap of curthread */ \ - u_int32_t pc_next_asid; /* next ASID to alloc */ \ +#define PCPU_MD_FIELDS \ + struct pmap *pc_curpmap; /* pmap of curthread */ \ + u_int32_t pc_asid_next; /* next ASID to alloc */ \ u_int32_t pc_asid_generation; /* current ASID generation */ struct pcb; @@ -50,15 +50,14 @@ extern struct pcpu *pcpup; extern struct pcpu __pcpu; -#define PCPU_GET(member) (__pcpu.pc_ ## member) - /* * XXX The implementation of this operation should be made atomic * with respect to preemption. */ +#define PCPU_GET(member) (__pcpu.pc_ ## member) #define PCPU_ADD(member, value) (__pcpu.pc_ ## member += (value)) -#define PCPU_INC(member) PCPU_ADD(member, 1) -#define PCPU_PTR(member) (&__pcpu.pc_ ## member) +#define PCPU_INC(member) PCPU_ADD(member, 1) +#define PCPU_PTR(member) (&__pcpu.pc_ ## member) #define PCPU_SET(member,value) (__pcpu.pc_ ## member = (value)) #endif /* _KERNEL */ ==== //depot/projects/avr32/src/sys/avr32/include/pte.h#2 (text+ko) ==== @@ -61,6 +61,7 @@ #define PTE_DIRTY bit_offset(SYS, TLBELO, D) /* Dirty */ #define pfn_get(x) (x & bit_mask(SYS, TLBELO, PFN)) #define pfn_set(x, pfn) x &= ~bit_mask(SYS, TLBELO, PFN); x |= (pfn & bit_mask(SYS, TLBELO, PFN)); +#define PTE_RW (PTE_PERM_READ | PTE_PERM_WRITE) // Page size, not set in PTE, always 4K #define PTE_SIZE_1K bit_value(SYS, TLBELO, SZ, 0) ==== //depot/projects/avr32/src/sys/avr32/include/tlb.h#2 (text+ko) ==== @@ -1,6 +1,9 @@ #ifndef _MACHINE_TLB_H_ #define _MACHINE_TLB_H_ -void tlb_dump(void); +#define TLB_SIZE 32 /* Number of TLB entries, this should be read from config1 */ + +void tlb_dump(void); /* Dump content of TLB to console */ +void tlb_flush(void); /* Invalid all TLB entries */ #endif // !_MACHINE_TLB_H_ ==== //depot/projects/avr32/src/sys/conf/files.avr32#2 (text+ko) ==== @@ -19,6 +19,11 @@ avr32/avr32/at32.c standard avr32/avr32/trap.c standard avr32/avr32/tlb.c standard +avr32/avr32/db_interface.c optional ddb +avr32/avr32/db_trace.c optional ddb +avr32/avr32/db_disasm.c optional gdb +avr32/avr32/stack_machdep.c optional ddb | stack +avr32/avr32/gdb_machdep.c optional gdb libkern/ashldi3.c standard libkern/ashrdi3.c standard From weongyo at FreeBSD.org Sun Feb 1 18:10:33 2009 From: weongyo at FreeBSD.org (Weongyo Jeong) Date: Sun Feb 1 18:10:39 2009 Subject: PERFORCE change 157016 for review Message-ID: <200902020210.n122AWLU001315@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157016 Change 157016 by weongyo@weongyo_ws on 2009/02/02 02:09:32 when the channel is changed it seems it should flush control pipe not just flushing data pipe. Without this the device sometimes got stuck. Affected files ... .. //depot/projects/vap/sys/dev/usb/if_uath.c#8 edit Differences ... ==== //depot/projects/vap/sys/dev/usb/if_uath.c#8 (text+ko) ==== @@ -2372,6 +2372,18 @@ "could not set led state, error %d\n", error); goto failed; } + error = uath_flush(sc); + if (error) { + device_printf(sc->sc_dev, + "could not flush data pipe, error %d\n", error); + goto failed; + } + error = uath_cmd_write(sc, WDCMSG_FLUSH, NULL, 0, 0); + if (error) { + device_printf(sc->sc_dev, + "could not flush control pipe, error %d\n", error); + goto failed; + } failed: return (error); } @@ -2455,18 +2467,11 @@ uath_codename(WDCMSG_TARGET_START), be32toh(val)); UATH_LOCK(sc); - error = uath_wme_init(sc); - if (error) { - device_printf(sc->sc_dev, - "could not setup WME parameters, error %d\n", error); - goto fail; - } - /* set default channel */ - error = uath_set_chan(sc, ic->ic_curchan); + error = uath_switch_channel(sc, ic->ic_curchan); if (error) { device_printf(sc->sc_dev, - "could not set channel, error %d\n", error); + "could not switch channel, error %d\n", error); goto fail; } From weongyo at FreeBSD.org Sun Feb 1 18:12:35 2009 From: weongyo at FreeBSD.org (Weongyo Jeong) Date: Sun Feb 1 18:12:41 2009 Subject: PERFORCE change 157017 for review Message-ID: <200902020212.n122CY7L001457@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157017 Change 157017 by weongyo@weongyo_ws on 2009/02/02 02:12:04 don't try to print a variable uninitialized. Affected files ... .. //depot/projects/vap/sys/dev/usb/if_uath.c#9 edit Differences ... ==== //depot/projects/vap/sys/dev/usb/if_uath.c#9 (text+ko) ==== @@ -964,7 +964,7 @@ struct ieee80211_node *ni = vap->iv_bss; struct uath_vap *uvp = UATH_VAP(vap); enum ieee80211_state ostate = vap->iv_state; - int ret; + int error; UATH_LOCK(sc); switch (sc->sc_state) { @@ -982,9 +982,10 @@ /* XXX good place? set RTS threshold */ uath_config(sc, CFG_USER_RTS_THRESHOLD, vap->iv_rtsthreshold); /* XXX bad place */ - if (uath_set_keys(sc, vap) != 0) { + error = uath_set_keys(sc, vap); + if (error != 0) { device_printf(sc->sc_dev, - "could not set crypto keys, error %d\n", ret); + "could not set crypto keys, error %d\n", error); break; } if (uath_switch_channel(sc, ni->ni_chan) != 0) { From weongyo at FreeBSD.org Sun Feb 1 18:23:47 2009 From: weongyo at FreeBSD.org (Weongyo Jeong) Date: Sun Feb 1 18:23:54 2009 Subject: PERFORCE change 157018 for review Message-ID: <200902020223.n122NjgY002283@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157018 Change 157018 by weongyo@weongyo_ws on 2009/02/02 02:23:00 code nits for readability. Affected files ... .. //depot/projects/vap/sys/dev/usb/if_uath.c#10 edit Differences ... ==== //depot/projects/vap/sys/dev/usb/if_uath.c#10 (text+ko) ==== @@ -266,6 +266,9 @@ static void uath_update_promisc(struct ifnet *); static int uath_raw_xmit(struct ieee80211_node *, struct mbuf *, const struct ieee80211_bpf_params *); +static int uath_dataflush(struct uath_softc *); +static int uath_cmdflush(struct uath_softc *); +static int uath_flush(struct uath_softc *); static int uath_match(device_t dev) @@ -1723,6 +1726,30 @@ static int uath_flush(struct uath_softc *sc) { + int error; + + error = uath_dataflush(sc); + if (error != 0) + goto failed; + + error = uath_cmdflush(sc); + if (error != 0) + goto failed; + +failed: + return (error); +} + +static int +uath_cmdflush(struct uath_softc *sc) +{ + + return uath_cmd_write(sc, WDCMSG_FLUSH, NULL, 0, 0); +} + +static int +uath_dataflush(struct uath_softc *sc) +{ struct uath_data *data; struct uath_chunk *chunk; struct uath_tx_desc *desc; @@ -2376,15 +2403,9 @@ error = uath_flush(sc); if (error) { device_printf(sc->sc_dev, - "could not flush data pipe, error %d\n", error); + "could not flush pipes, error %d\n", error); goto failed; } - error = uath_cmd_write(sc, WDCMSG_FLUSH, NULL, 0, 0); - if (error) { - device_printf(sc->sc_dev, - "could not flush control pipe, error %d\n", error); - goto failed; - } failed: return (error); } @@ -2543,8 +2564,7 @@ /* abort pending transmits */ uath_abort_pipes(sc); /* flush data & control requests into the target */ - uath_flush(sc); - uath_cmd_write(sc, WDCMSG_FLUSH, NULL, 0, 0); + (void)uath_flush(sc); /* set a LED status to the disconnected. */ uath_set_ledstate(sc, 0); /* stop the target */ From hselasky at FreeBSD.org Mon Feb 2 02:44:16 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Mon Feb 2 02:44:23 2009 Subject: PERFORCE change 157030 for review Message-ID: <200902021044.n12AiFTe069594@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157030 Change 157030 by hselasky@hselasky_laptop001 on 2009/02/02 10:43:38 Hopefully the final version of my BUS-DMA patch. Affected files ... .. //depot/projects/usb/src/sys/amd64/amd64/busdma_machdep.c#11 edit .. //depot/projects/usb/src/sys/arm/arm/busdma_machdep.c#14 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_busdma.c#19 edit .. //depot/projects/usb/src/sys/i386/i386/busdma_machdep.c#14 edit .. //depot/projects/usb/src/sys/ia64/ia64/busdma_machdep.c#10 edit .. //depot/projects/usb/src/sys/sys/bus_dma.h#8 edit Differences ... ==== //depot/projects/usb/src/sys/amd64/amd64/busdma_machdep.c#11 (text+ko) ==== @@ -1128,11 +1128,13 @@ bz->active_bpages++; mtx_unlock(&bounce_lock); - /* page offset needs to be preserved */ - bpage->vaddr &= ~PAGE_MASK; - bpage->busaddr &= ~PAGE_MASK; - bpage->vaddr |= vaddr & PAGE_MASK; - bpage->busaddr |= vaddr & PAGE_MASK; + if (dmat->flags & BUS_DMA_KEEP_PG_OFFSET) { + /* page offset needs to be preserved */ + bpage->vaddr &= ~PAGE_MASK; + bpage->busaddr &= ~PAGE_MASK; + bpage->vaddr |= vaddr & PAGE_MASK; + bpage->busaddr |= vaddr & PAGE_MASK; + } bpage->datavaddr = vaddr; bpage->datacount = size; STAILQ_INSERT_TAIL(&(map->bpages), bpage, links); ==== //depot/projects/usb/src/sys/arm/arm/busdma_machdep.c#14 (text+ko) ==== @@ -1417,11 +1417,13 @@ bz->active_bpages++; mtx_unlock(&bounce_lock); - /* page offset needs to be preserved */ - bpage->vaddr &= ~PAGE_MASK; - bpage->busaddr &= ~PAGE_MASK; - bpage->vaddr |= vaddr & PAGE_MASK; - bpage->busaddr |= vaddr & PAGE_MASK; + if (dmat->flags & BUS_DMA_KEEP_PG_OFFSET) { + /* page offset needs to be preserved */ + bpage->vaddr &= ~PAGE_MASK; + bpage->busaddr &= ~PAGE_MASK; + bpage->vaddr |= vaddr & PAGE_MASK; + bpage->busaddr |= vaddr & PAGE_MASK; + } bpage->datavaddr = vaddr; bpage->datacount = size; STAILQ_INSERT_TAIL(&(map->bpages), bpage, links); ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_busdma.c#19 (text+ko) ==== @@ -351,7 +351,7 @@ (2 + (size / USB_PAGE_SIZE)) : 1, /* maxsegsz */ (align == 1) ? USB_PAGE_SIZE : size, - /* flags */ 0, + /* flags */ BUS_DMA_KEEP_PG_OFFSET, /* lockfn */ &usb2_dma_lock_cb, /* lockarg */ NULL, &tag)) { ==== //depot/projects/usb/src/sys/i386/i386/busdma_machdep.c#14 (text+ko) ==== @@ -1146,11 +1146,13 @@ bz->active_bpages++; mtx_unlock(&bounce_lock); - /* page offset needs to be preserved */ - bpage->vaddr &= ~PAGE_MASK; - bpage->busaddr &= ~PAGE_MASK; - bpage->vaddr |= vaddr & PAGE_MASK; - bpage->busaddr |= vaddr & PAGE_MASK; + if (dmat->flags & BUS_DMA_KEEP_PG_OFFSET) { + /* page offset needs to be preserved */ + bpage->vaddr &= ~PAGE_MASK; + bpage->busaddr &= ~PAGE_MASK; + bpage->vaddr |= vaddr & PAGE_MASK; + bpage->busaddr |= vaddr & PAGE_MASK; + } bpage->datavaddr = vaddr; bpage->datacount = size; STAILQ_INSERT_TAIL(&(map->bpages), bpage, links); ==== //depot/projects/usb/src/sys/ia64/ia64/busdma_machdep.c#10 (text+ko) ==== @@ -936,12 +936,13 @@ active_bpages++; mtx_unlock(&bounce_lock); - /* page offset needs to be preserved */ - bpage->vaddr &= ~PAGE_MASK; - bpage->busaddr &= ~PAGE_MASK; - bpage->vaddr |= vaddr & PAGE_MASK; - bpage->busaddr |= vaddr & PAGE_MASK; - + if (dmat->flags & BUS_DMA_KEEP_PG_OFFSET) { + /* page offset needs to be preserved */ + bpage->vaddr &= ~PAGE_MASK; + bpage->busaddr &= ~PAGE_MASK; + bpage->vaddr |= vaddr & PAGE_MASK; + bpage->busaddr |= vaddr & PAGE_MASK; + } bpage->datavaddr = vaddr; bpage->datacount = size; STAILQ_INSERT_TAIL(&(map->bpages), bpage, links); ==== //depot/projects/usb/src/sys/sys/bus_dma.h#8 (text+ko) ==== @@ -102,6 +102,13 @@ #define BUS_DMA_NOWRITE 0x100 #define BUS_DMA_NOCACHE 0x200 +/* + * The following flag is a DMA tag hint that the page offset of the + * loaded kernel virtual address must be preserved in the first + * physical segment address, when the KVA is loaded into DMA. + */ +#define BUS_DMA_KEEP_PG_OFFSET 0x400 + /* Forwards needed by prototypes below. */ struct mbuf; struct uio; From pgj at FreeBSD.org Mon Feb 2 08:53:36 2009 From: pgj at FreeBSD.org (Gabor Pali) Date: Mon Feb 2 08:53:44 2009 Subject: PERFORCE change 157040 for review Message-ID: <200902021653.n12GrYf1037503@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157040 Change 157040 by pgj@beehive on 2009/02/02 16:52:59 IFC Affected files ... .. //depot/projects/docproj_hu/doc/en_US.ISO8859-1/share/sgml/authors.ent#20 integrate .. //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/fdp-primer/book.sgml#12 integrate .. //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/fdp-primer/examples/appendix.sgml#6 integrate .. //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/fdp-primer/psgml-mode/chapter.sgml#6 integrate .. //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/fdp-primer/see-also/chapter.sgml#7 integrate .. //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/fdp-primer/structure/chapter.sgml#8 integrate .. //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/fdp-primer/the-website/chapter.sgml#6 integrate .. //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/fdp-primer/writing-style/chapter.sgml#7 integrate .. //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/handbook/cutting-edge/chapter.sgml#18 integrate .. //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/handbook/eresources/chapter.sgml#23 integrate .. //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/handbook/ports/chapter.sgml#19 integrate .. //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/share/sgml/mailing-lists.ent#22 integrate .. //depot/projects/docproj_hu/doc/share/pgpkeys/beat.key#1 branch .. //depot/projects/docproj_hu/doc/share/pgpkeys/jamie.key#1 branch .. //depot/projects/docproj_hu/doc/share/pgpkeys/pgpkeys-core.sgml#2 integrate .. //depot/projects/docproj_hu/doc/share/pgpkeys/pgpkeys-developers.sgml#14 integrate .. //depot/projects/docproj_hu/doc/share/pgpkeys/pgpkeys.ent#14 integrate .. //depot/projects/docproj_hu/doc/share/sgml/mirrors.xml#6 integrate .. //depot/projects/docproj_hu/www/en/developers.sgml#16 integrate .. //depot/projects/docproj_hu/www/en/donations/donors.sgml#12 integrate .. //depot/projects/docproj_hu/www/en/news/status/Makefile#4 integrate .. //depot/projects/docproj_hu/www/en/news/status/report-2008-10-2008-12.xml#1 branch .. //depot/projects/docproj_hu/www/en/news/status/status.sgml#6 integrate .. //depot/projects/docproj_hu/www/en/where.sgml#3 integrate .. //depot/projects/docproj_hu/www/hu/community.xsl#10 integrate .. //depot/projects/docproj_hu/www/share/sgml/news.xml#36 integrate Differences ... ==== //depot/projects/docproj_hu/doc/en_US.ISO8859-1/share/sgml/authors.ent#20 (text+ko) ==== @@ -13,7 +13,7 @@ builds for the other languages, and we will poke fun of you in public. - $FreeBSD: doc/en_US.ISO8859-1/share/sgml/authors.ent,v 1.467 2008/11/24 06:38:24 pgj Exp $ + $FreeBSD: doc/en_US.ISO8859-1/share/sgml/authors.ent,v 1.469 2009/01/30 22:09:36 jamie Exp $ --> aaron@FreeBSD.org"> @@ -110,6 +110,8 @@ bean@FreeBSD.org"> +beat@FreeBSD.org"> + beech@FreeBSD.org"> ben@FreeBSD.org"> @@ -446,6 +448,8 @@ jake@FreeBSD.org"> +jamie@FreeBSD.org"> + jasone@FreeBSD.org"> jayanth@FreeBSD.org"> ==== //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/fdp-primer/book.sgml#12 (text+ko) ==== @@ -27,7 +27,7 @@ ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - $FreeBSD: doc/hu_HU.ISO8859-2/books/fdp-primer/book.sgml,v 1.3 2008/12/24 12:00:57 pgj Exp $ + $FreeBSD: doc/hu_HU.ISO8859-2/books/fdp-primer/book.sgml,v 1.4 2009/01/26 22:30:37 pgj Exp $ --> - + &a.wilko; &pgpkey.wilko; - + &a.brooks; &pgpkey.brooks; - + &a.keramida; &pgpkey.keramida; - - &a.imp; - &pgpkey.imp; - - - + &a.gnn; &pgpkey.gnn; - - &a.wes; - &pgpkey.wes; - - - + &a.hrs; &pgpkey.hrs; - + &a.murray; &pgpkey.murray; + + + &a.kris; + &pgpkey.kris; + ==== //depot/projects/docproj_hu/doc/share/pgpkeys/pgpkeys-developers.sgml#14 (text+ko) ==== @@ -1,7 +1,7 @@ @@ -376,6 +376,11 @@ &pgpkey.billf; + + &a.beat; + &pgpkey.beat; + + &a.danger; &pgpkey.danger; @@ -406,6 +411,11 @@ &pgpkey.grehan; + + &a.jamie; + &pgpkey.jamie; + + &a.jmg; &pgpkey.jmg; ==== //depot/projects/docproj_hu/doc/share/pgpkeys/pgpkeys.ent#14 (text+ko) ==== @@ -1,5 +1,5 @@ - + @@ -24,6 +24,7 @@ + @@ -112,6 +113,7 @@ + ==== //depot/projects/docproj_hu/doc/share/sgml/mirrors.xml#6 (text+ko) ==== @@ -2,7 +2,7 @@ - $FreeBSD: doc/share/sgml/mirrors.xml,v 1.76 2008/09/22 19:27:39 manolis Exp $ + $FreeBSD: doc/share/sgml/mirrors.xml,v 1.77 2009/01/29 14:20:25 pav Exp $ @@ -506,6 +506,12 @@ + + ftp2.cz.FreeBSD.org + ftp://ftp2.cz.FreeBSD.org/pub/FreeBSD/ + http://ftp2.cz.FreeBSD.org/pub/FreeBSD/ + + cvsup.cz.FreeBSD.org ==== //depot/projects/docproj_hu/www/en/developers.sgml#16 (text+ko) ==== @@ -6,7 +6,7 @@ us to update author names, or the representation of those names (such as adding email addresses), by just editing a single file. -$FreeBSD: www/en/developers.sgml,v 1.209 2008/11/04 22:17:30 blackend Exp $ +$FreeBSD: www/en/developers.sgml,v 1.211 2009/01/30 22:09:36 jamie Exp $ --> @@ -58,6 +58,7 @@ + @@ -224,6 +225,7 @@ + ==== //depot/projects/docproj_hu/www/en/donations/donors.sgml#12 (text+ko) ==== @@ -1,6 +1,6 @@ - + %developers; @@ -1162,7 +1162,7 @@ 256MB PC2100 DDR 266MHz RAM, Savage8 3D Video Accelerator, 80GB 7200rpm ATA100 IDE Harddrive, Integrated 10/100 LAN VT8233 trhodes - shipping + Received ==== //depot/projects/docproj_hu/www/en/news/status/Makefile#4 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: www/en/news/status/Makefile,v 1.44 2008/11/11 03:52:54 brd Exp $ +# $FreeBSD: www/en/news/status/Makefile,v 1.45 2009/01/29 06:50:26 brd Exp $ .if exists(../Makefile.conf) .include "../Makefile.conf" @@ -42,6 +42,7 @@ XMLDOCS+= report-2008-01-2008-03 XMLDOCS+= report-2008-04-2008-06 XMLDOCS+= report-2008-07-2008-09 +XMLDOCS+= report-2008-10-2008-12 XSLT.DEFAULT= report.xsl ==== //depot/projects/docproj_hu/www/en/news/status/status.sgml#6 (text+ko) ==== @@ -1,6 +1,6 @@ - + ]> @@ -8,7 +8,7 @@ &header; -

Next submissions due: January 14, 2009

+

Next submissions due: April 14, 2009

Use the xml generator or download and edit the @@ -42,6 +42,8 @@

2008

    +
  • October, 2008 - + December, 2008
  • July, 2008 - September, 2008
  • April, 2008 - ==== //depot/projects/docproj_hu/www/en/where.sgml#3 (text+ko) ==== @@ -1,5 +1,5 @@ + @@ -169,9 +169,10 @@ listing of mirror sites in the handbook to see if there is a site - closer to you. For more information about past, present and - future releases in general, please visit the release information page.

    + closer to you. Alternatively, you may want to download &os; using + the BitTorrent protocol. The .torrent files can be + downloaded from the &os; BitTorrent Tracker.

    snapshot release of FreeBSD-CURRENT (AKA &rel.head;-CURRENT), aimed at developers and bleeding-edge testers only, then please see the &os; Snapshot Releases page.

    + href="&base;/snapshots/">&os; Snapshot Releases page. For + more information about past, present and future releases in + general, please visit the release information + page.

    FreeBSD-derived Operating System Distributions

    ==== //depot/projects/docproj_hu/www/hu/community.xsl#10 (text+ko) ==== @@ -6,7 +6,7 @@ ]> - + @@ -3252,7 +3252,7 @@ megfelelõen az állományrendszerek a mount /dev/da0s4 /mnt vagy (DOS - esetén) a mount_msdos /dev/da0s4 + esetén) a mount -t msdosfs /dev/da0s4 /mnt parancs kiadásával csatlakoztathatóak. @@ -7290,7 +7290,7 @@ class="directory">/dev könyvtárban, amelyet majd csatlakoztatni tudunk: - &prompt.root; mount -t msdos /dev/da1s5 /dos/e + &prompt.root; mount -t msdosfs /dev/da1s5 /dos/e @@ -7567,13 +7567,13 @@ akkor azt parancssorból így érhetjük el, ha floppy: - &prompt.root; mount -t msdos /dev/fd0c /floppy + &prompt.root; mount -t msdosfs /dev/fd0c /floppy vagy így, ha egy gyári beállításokkal rendelkezõ ZIP-lemez: - &prompt.root; mount -t msdos /dev/da2s4 /zip + &prompt.root; mount -t msdosfs /dev/da2s4 /zip A többi lemez esetén a &man.fdisk.8; vagy a &man.sysinstall.8; segítségével @@ -7878,7 +7878,7 @@ könyvtárába: &prompt.user; mkdir ~/az-én-csatlakozási-pontom -&prompt.user; mount -t msdos /dev/fd0 ~/az-én-csatlakozási-pontom +&prompt.user; mount -t msdosfs /dev/fd0 ~/az-én-csatlakozási-pontom A operator csoport tagjai is képesek most már az ==== //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/handbook/cutting-edge/chapter.sgml#19 (text+ko) ==== @@ -7,7 +7,7 @@ @@ -222,7 +222,7 @@ következõ mûvelet elkezdése elõtt tiltsuk le. - + A konfigurációs állományok Elõfordulhat, hogy változtatni akarunk valamin @@ -352,7 +352,7 @@ állományokat fogja frissíteni. - + Biztonsági javítások A biztonsági javítások mindig egy @@ -792,7 +792,7 @@ véget ért. - + Rendszerek állapotainak összehasonlítása @@ -2245,7 +2245,7 @@ eljárásra. - + A rendszer frissítése dióhéjban @@ -2255,8 +2255,316 @@ ahol a letöltött források használatához elvégzendõ elõzetes intézkedésekrõl kaphatunk hírt. - Ezután adjuk ki az alábbi - utasításokat: + Ezután kövessük az alábbiakban + körvonalazott módszer egyes + lépéseit. + + Ezek a lépések feltételezik, hogy egy + korábbi &os; verziót használunk, tehát + a fordító, a rendszermag, az alaprendszer + és a konfigurációs állományok + valamelyik régebbi változatát. + Alaprendszer alatt, amelyet sokszor csak a world + néven hivatkozunk, a rendszer számára + alapvetõ fontosságú binárisokat, + programkönyvtárakat és + programfejlesztéshez szükséges egyéb + állományokat értjük. Maga a + fordítóprogram is része ennek, azonban + tartalmaz néhány speciális + megszorítást. + + Mindezek mellett továbbá + feltételezzük, hogy elõzetesen már + valamilyen módon letöltöttük a friss + forrásokat. Ha rendszerünkön ezt még + nem tettük volna meg, akkor a + segítségével + tájékozódhatunk részletesen + arról, hogyan tölthetjük le a legfrissebb + verziót. + + A rendszer forráskódon keresztüli + frissítése egy kicsivel + körülményesebb, mint amennyire elsõre + látszik. A &os; fejlesztõk az évek + során fontosnak találták, hogy a + folyamatosan felszínre bukkanó, + elkerülhetetlen függõségek + tükrében meglehetõsen drámai + módon megváltoztassák az erre javasolt + módszert. Ezért a szakasz további + részében a pillanatnyilag javasolt + frissítési megoldás nyomán fogunk + haladni. + + A sikeres frissítések során az + alábbi akadályokkal kell mindenképpen + szembenéznünk: + + + + A fordító régebbi változata + nem feltétlenül lesz képes + lefordítani az új rendszermagot. (Illetve a + régebbi fordítóprogramok + tartalmazhatnak hibákat.) Ezért az új + rendszermagot már a fordító új + változatával kell + elõállítanunk. Ebbõl + következik, hogy az új rendszermag + elkészítéséhez elõször + a fordítóprogram újabb + változatát kell lefordítanunk. Ez + viszont nem feltétlenül jelenti azt, hogy az + új rendszermag fordítása elõtt az + új fordítóprogramot + telepítenünk is + kellene. + + + + Az új alaprendszer esetenként bizonyos + új funkciókat igényelhet a + rendszermagtól. Ezért a frissebb alaprendszer + telepítése elõtt telepítenünk + kell a frissebb rendszermagot. + + + + Ez az elõbb említett két + akadály képzi az okát a + következõ bekezdésekben bemutatott + buildworld, + buildkernel, + installkernel, + installworld sorozatnak. + Természetesen léteznek további + egyéb indokok is, amiért még + érdemes az itt leírtak szerint + frissíteni a rendszerünket. Ezek + közül most vegyünk néhány + kevésbé nyilvánvalóbbat: + + + + A régebbi alaprendszer nem minden esetben fog + problémamentesen együttmûködni az + új rendszermaggal, ezért az alaprendszer + újabb változatát szinte azonnal az + új rendszermagot követõen kell + telepítenünk. + + + + Vannak olyan konfigurációs + változtatások, amelyeket még az + új alaprendszer telepítése + elõtt el kell végeznünk, a többi + viszont veszélyes lehet a korábbi + alaprendszerre. Ezért a + konfigurációs állományokat + általában két külön + lépésben kell frissíteni. + + + + A frissítés során + nagyrészt csak állományok + cserélõdnek el és újabbak + érkeznek, a korábbiak nem + törlõdnek. Ez bizonyos esetekben azonban + gondokat okozhat. Ennek eredményeképpen a + frissítés során + idõnként elõfordulhat, hogy magunknak + kell manuálisan némely megadott + állományokat törölnünk. + Elképzelhetõ, hogy ezt a jövõben + még majd automatizálni + fogják. + + + + Ezek a megfontolások vezettek tehát az + ismertetendõ eljárás + kialakításához. Ettõl + függetlenül adódhatnak olyan helyzetek, + amikor további lépéseket is be kell + iktatnunk, viszont az itt bemutatott folyamat egy ideje + már viszonylag elfogadottnak tekinthetõ: + + + + make buildworld + + Elõször lefordítja az új + fordítóprogramot és + néhány hozzátartozó + eszközt, majd ennek + felhasználásával + elkészíti az alaprendszer többi + részét. Az eredmény a /usr/obj + könyvtárban keletkezik. + + + + make buildkernel + + Eltérõen a &man.config.8; és + &man.make.1; programok korábban javasolt + alkalmazásától, ezzel a paranccsal + már a /usr/obj + könyvtárban létrehozott + új fordítót + használjuk. Ez védelmet nyújt a + fordító és rendszermag + változatai közti + eltérésekbõl fakadó + problémák ellen. + + + + make installkernel + + Telepíti a lemezre az új rendszermagot + és a hozzátartozó modulokat, + ezáltal lehetõvé válik a + frissített rendszermag + betöltése. + + + + Átváltás + egyfelhasználós módba. + + Egyfelhasználós módban a + minimálisra csökkenthetjük a futó + szoftverek frissítésébõl + adódó bonyodalmakat. Ezzel együtt + minimálissá válik a régi + alaprendszer és az új rendszermag + eltéréseibõl eredõ + problémák elõfordulása + is. + + + + mergemaster -p + + Az új alaprendszer + telepítéséhez elvégzi a + konfigurációs állományok + részérõl szükséges + frissítéseket. Például + felvesz még nem létezõ csoportokat + vagy felhasználókat. Ez gyakran + elengedhetetlennek bizonyulhat, mivel ha a rendszer + legutóbbi frissítése óta + újabb csoportok vagy felhasználók + kerültek be az alaprendszerbe, a + installworld csak akkor tud + hibamentesen lefutni, ha ezek már a + futásakor is elérhetõek. + + + + make installworld + + Átmásolja a /usr/obj + könyvtárból a korábban + elkészített új alaprendszert. + Lefutása után már mind az új + rendszermag és az új alaprendszer a + megfelelõ helyén + található. + + + + mergemaster + + Feldolgozzuk a korábbi fázisból + fennmaradó konfigurációs + állományok + frissítését, mivel most már + elérhetõ az új alaprendszer. + + + + A rendszer újraindítása. + + Az új rendszermag és az új + konfigurációs állományokkal + futó alaprendszer használatához + teljesen újra kell indítanunk a + számítógépünket. + + + + Ha a &os; ugyanazon fejlesztési + ágán belül frissítjük a + rendszerünket, például a 7.0 + kiadásról a 7.1 kiadásra, akkor + értelemszerûen nem kell az iménti + eljárás minden lépését + szorosan követni, hiszen nagyon + valószínûtlen, hogy komoly + eltérések lennének a + fordítóprogram, a rendszermag, az alaprendszer + és a konfigurációs + állományok között. Ilyenkor + akár nyugodtan kiadhatjuk a make + world parancsot, majd kérhetjük a + rendszermag fordítását és + telepítését. + + A fejlesztési ágak közti + váltás során azonban könnyen + érhetnek minket meglepetések, ha nem a + megadottak szerint járunk el. + + Egyes váltásokhoz (például + 4.X és 5.0 + között) további lépések + megtétele is szükséges lehet + (például adott állományok + törlése vagy átnevezése még + az installworld elõtt). + Ilyenkor mindig figyelmesen olvassuk át a + /usr/src/UPDATING + állományt, különös tekintettel + a végére, mivel gyakran ott adják meg a + konkrét verzióváltáshoz + szükséges teendõket. + + A szakaszban összefoglalt lépések + egyfajta evolúciós folyamat eredményei, + melynek során a fejlesztõk felismerték, + hogy nem tökéletesen kivédeni az + összes frissítéssel járó + problémát. A javasolt eljárás + remélhetõleg viszont még sokáig + érvényes marad. + + + A &os; 3.X vagy + annál is korábbi változatok + frissítése még ennél is + több ügyességet kíván. Ha + ilyen verziót akarunk frissíteni, akkor + feltétlenül olvassuk el az + UPDATING + állományt! + + + Röviden tehát a &os; + forráskódon keresztüli + frissítését így foglalhatjuk + össze: + + &prompt.root; cd /usr/src &prompt.root; make buildworld @@ -2285,7 +2593,8 @@ parancssorában adjuk ki boot -s parancsot). Itt futtassuk a következõket: - &prompt.root; mount -a -t ufs + &prompt.root; adjkerntz -i +&prompt.root; mount -a -t ufs &prompt.root; mergemaster -p &prompt.root; cd /usr/src &prompt.root; make installworld @@ -2303,10 +2612,9 @@ szakaszokat is, különösen abban az esetben, ha saját rendszermagot akarunk használni. - - + Nézzük meg a <filename>/usr/src/UPDATING</filename> állományt @@ -2333,10 +2641,9 @@ elvárás nem kizárja, hanem kiegészíti egymást. - - + Ellenõrizzük az <filename>/etc/make.conf</filename> állományt @@ -2375,10 +2682,9 @@ és így tovább) használatáról már mindenki maga dönt. - - + Frissítsük az <filename>/etc</filename> tartalmát @@ -2450,7 +2756,6 @@ tartozó összes állományt a rendszerünkben. - @@ -2538,10 +2843,9 @@ beállítani — nélküle késõbb még gondjaink akadhatnak. - - + Töröljük a <filename>/usr/obj</filename> könyvtárat @@ -2570,7 +2874,6 @@ &prompt.root; cd /usr/obj &prompt.root; chflags -R noschg * &prompt.root; rm -rf * - @@ -2603,7 +2906,7 @@ &prompt.root; script /var/tmp/mw.out Script started, output file is /var/tmp/mw.out &prompt.root; make TARGET -… fordít, fordít, fordít … +… fordít, fordít, fordít … &prompt.root; exit Script done, … @@ -2616,7 +2919,6 @@ tettük azt az elõbbi példában is) vagy a root felhasználó könyvtárába mentünk. - @@ -2790,7 +3092,6 @@ rendszermagot indítottunk el, akkor érdemes 6 és 10 közötti értékekkel kísérleteznünk. - @@ -2812,11 +3113,10 @@ taksálható. A &os.current; fához ennél valamivel több idõre lesz szükségünk. - - + Fordítsunk és telepítsünk egy új rendszermagot @@ -2895,10 +3195,9 @@ különbözõ állományjelzõkrõl pedig a &man.chflags.1; oldalán olvashatunk. - - + Indítsuk újra a rendszert egyfelhasználós módban @@ -2909,8 +3208,7 @@ leteszteléséhez indítsuk újra a rendszert egyfelhasználós módban. Ennek pontos részleteit lásd . - + linkend="makeworld-singleuser">. @@ -2957,10 +3255,9 @@ make buildworld futása során nem jöttek létre. - - + Frissítsük a <command>make installworld</command> által kihagyott állományokat @@ -3104,7 +3401,6 @@ végén a megmaradt ideiglenes állományok törlésére (remove) vár választ. - @@ -3339,7 +3635,6 @@ &prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"` - @@ -3353,7 +3648,6 @@ elegendõ: &prompt.root; shutdown -r now - @@ -3375,10 +3669,9 @@ &prompt.root; cd /usr/src/usr.bin/file &prompt.root; make all install - - + Kérdések @@ -3778,7 +4071,6 @@ - @@ -3888,10 +4180,9 @@ /usr/src/sys/arch/conf könyvtárában meglevõ állományaival. - - + Az alaprendszer Most, miután mindent megfelelõen @@ -3928,10 +4219,9 @@ eljárással telepítsük fel a fordítási csoportban levõ összes többi gépre is az új szoftvereket. - - + Portok Ugyanezt a gondolatmenet alkalmazható a portfa @@ -3960,7 +4250,6 @@ változót a DISTDIR változóhoz hasonlóan beállítani. - ==== //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/handbook/mirrors/chapter.sgml#22 (text+ko) ==== @@ -7,7 +7,7 @@ The FreeBSD Hungarian Documentation Project Translated by: PALI, Gabor %SOURCE% en_US.ISO8859-1/books/handbook/mirrors/chapter.sgml - %SRCID% 1.457 + %SRCID% 1.458 --> @@ -3775,27 +3775,6 @@ - Németország - - - rsync://grappa.unix-ag.uni-kl.de/ - - Elérhetõ gyûjtemények: - - - - freebsd-cvs: a &os; teljes CVS - tárháza. - - - - Ez a gép ezen kívül még - tükrözi a NetBSD és OpenBSD CVS - repositorykat is. - - - - Hollandia ==== //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/handbook/network-servers/chapter.sgml#23 (text+ko) ==== @@ -7,7 +7,7 @@ ==== //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/handbook/ports/chapter.sgml#20 (text+ko) ==== @@ -7,7 +7,7 @@ @@ -522,8 +522,7 @@ rendszeren tudjuk megnézni a telepített csomagokat, tudunk vele csomagokat telepíteni vagy törölni. Ezzel részletesebben a telepítés utáni - teendõket tartalmazó része foglalkozik. + linkend="packages"> foglalkozik. ==== //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/handbook/ppp-and-slip/chapter.sgml#14 (text+ko) ==== @@ -7,7 +7,7 @@ @@ -313,11 +313,13 @@ A ppp és a pppd (a PPP rendszerszintû megvalósítása) egyaránt az - /etc/ppp könyvtárban - található konfigurációs - állományokat használja. A - felhasználói PPP-hez ezenkívül - még a /usr/share/examples/ppp/ + /etc/ppp + könyvtárban található + konfigurációs állományokat + használja. A felhasználói PPP-hez + ezenkívül még a + /usr/share/examples/ppp/ könyvtárban vannak példák. A ppp parancs @@ -432,9 +434,9 @@ Itt adjuk meg az eszközt, amelyre a modem csatlakozik. A COM1 neve - /dev/cuad0, a - COM2 neve pedig - /dev/cuad1. + /dev/cuad0, a + COM2 neve pedig /dev/cuad1. @@ -727,7 +729,8 @@ fogjuk bõvebben kifejteni. Erre példákat a - /usr/share/examples/ppp/ + /usr/share/examples/ppp/ könyvtárban találhatunk. @@ -1016,9 +1019,10 @@ pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup - Hozzunk létre egy /home/ppp - nevû könyvtárat a következõ - bárki által olvasható 0 byte-os + Hozzunk létre egy /home/ppp nevû + könyvtárat a következõ bárki + által olvasható 0 byte-os állományokkal: -r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin @@ -1609,10 +1613,11 @@ Ellenõrizzük, hogy a - tunN + tunN eszközhöz tartozó állomány rendelkezésre áll a - /dev könyvtárban. + /dev + könyvtárban. @@ -1657,9 +1662,10 @@ Gyõzõdjünk meg róla, hogy a - tunN - eszköz megtalálható a - /dev könyvtárban. + tunN + eszköz megtalálható a /dev + könyvtárban. @@ -1695,7 +1701,6 @@ állományunkat. - @@ -1730,10 +1735,10 @@ Mielõtt a gépünkön nekikezdünk a PPP beállításának, ellenõrizzük, hogy a pppd - megtalálható a /usr/sbin - könyvtárban és az - /etc/ppp könyvtár - létezik. + megtalálható a /usr/sbin könyvtárban + és az /etc/ppp + könyvtár létezik. A pppd két módban képes mûködni: @@ -2275,14 +2280,19 @@ Az eszközleírók ellenõrzése - Ha újrakonfiguráltuk a rendszermagunkat, - akkor minden bizonnyal még emlékszünk a - sio eszközre. Ha nem - készítettünk volna új rendszermagot, - ne aggódjunk. Egyszerûen csak a - dmesg parancs kimenetében - keressük meg a modemes eszközhöz tartozó - adatokat: + Ha saját rendszermagot használunk, ne + felejtsük el felvenni a következõ sort a + konfigurációs állományba: + + device sio + + A GENERIC rendszermag a + sio eszközt már + alapértelmezés szerint tartalmazza, ezért + ilyenkor már nincs több teendõnk. + Egyszerûen csak a dmesg parancs + kimenetében keressük meg a modemes + eszközhöz tartozó adatokat: &prompt.root; dmesg | grep sio @@ -2298,8 +2308,8 @@ vonali modemünk a sio1 vagy COM2 porton csatlakozik DOS-ban, akkor itt a neki megfelelõ eszköz a - /dev/cuad1 lesz. - + /dev/cuad1 + lesz. @@ -2327,7 +2337,7 @@ Ezzel elindítottuk a ppp programot. - ppp ON pelda> set device /dev/cuad1 + ppp ON pelda> set device /dev/cuad1 Beállítjuk a modemünket, ami ebben az esetben a cuad1. @@ -2354,7 +2364,7 @@ Váltsunk terminál módba, így mi irányítjuk a modemet. - deflink: Entering terminal mode on /dev/cuad1 + deflink: Entering terminal mode on /dev/cuad1 type '~h' for help at @@ -2888,17 +2898,17 @@ szolgáltatónk igényei szerint. A port a rengeteg leírással megtûzdelt minta konfigurációs állományait a - PREFIX/etc/mpd/ + PREFIX/etc/mpd/ könyvtárba teszi. Itt a PREFIX azt a könyvtárat jelöli, ahova a portok kerülnek. Ez alapból a - /usr/local/. Az + /usr/local/. Az mpd beállításáról szóló teljes dokumentáció a telepítés után elérhetõ HTML formátumban a - PREFIX/share/doc/mpd/ + PREFIX/share/doc/mpd/ könyvtárban. Íme egy példa az mpd beállítására ADSL kapcsolatok @@ -3161,9 +3171,10 @@ Elõször is állapítsuk meg, hogy a modemünk melyik soros portra csatlakozik. Sokan - /dev/modem néven egy szimbolikus - linket hoznak létre a valódi eszközre, - például a /dev/cuadN + /dev/modem néven + egy szimbolikus linket hoznak létre a valódi + eszközre, például a /dev/cuadN leíróra. Ennek köszönhetõen az eszköz tényleges névetõl el tudunk vonatkoztatni és soha nem kell módosítanunk @@ -3171,15 +3182,17 @@ portra kell átraknunk. Ugyanis könnyedén kacifántossá tud válni a helyzet, amikor egyszerre kell megváltoztatnunk egy rakat dolgot az - /etc könyvtárban és - módosítanunk az összes - .kermrc állományt! + /etc + könyvtárban és módosítanunk az + összes .kermrc + állományt! - A /dev/cuad0 a - COM1 port, a - cuad1 a COM2 - és így tovább. + A /dev/cuad0 a + COM1 port, a /dev/cuad1 a + COM2 és így + tovább. A rendszermag beállításait @@ -3196,7 +3209,7 @@ kitöröltük. - Dolgok, amiket csak egyszer kell megtenni + Amiket csak egyszer kell megtenni @@ -3689,9 +3702,9 @@ A sliplogin beállítása Ahogy arra már korábban is utaltunk, az - /etc/sliphome könyvtárban - három állomány felelõs a - /usr/sbin/sliplogin + /etc/sliphome + könyvtárban három állomány + felelõs a /usr/sbin/sliplogin beállításáért (lásd &man.sliplogin.8;): a slip.hosts, amelyekben a SLIP felhasználókat és a ==== //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/handbook/security/chapter.sgml#19 (text+ko) ==== >>> TRUNCATED FOR MAIL (1000 lines) <<< From pgj at FreeBSD.org Mon Feb 2 12:09:02 2009 From: pgj at FreeBSD.org (Gabor Pali) Date: Mon Feb 2 12:09:08 2009 Subject: PERFORCE change 157058 for review Message-ID: <200902022008.n12K8xeP056471@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157058 Change 157058 by pgj@beehive on 2009/02/02 20:08:54 MFen (www): 1.99 -> 1.100 hu/where.sgml Affected files ... .. //depot/projects/docproj_hu/www/hu/where.sgml#12 edit Differences ... ==== //depot/projects/docproj_hu/www/hu/where.sgml#12 (text+ko) ==== @@ -8,7 +8,7 @@ @@ -189,12 +189,13 @@ található tükörszerverek listájában keressük meg a hozzánk - legközelebbi kiszolgálót. Ha bõvebb - információt szeretnénk kapni a régi, - jelenlegi és jövõbeli kiadásokról, - látogassuk meg a kiadási információs oldalt. -

    + legközelebbi kiszolgálót. + Lehetõségünk van letölteni a &os; + legújabb változatát a BitTorrent protokollon + keresztül is. Az ehhez szükséges .torrent + állományok a &os; BitTorrent Tracker + honlapjáról érhetõek el.

    pillanatkiadásai, tekintsünk meg a pillanatkiadások tároló szerver - FTP oldalát.

    + href="&base;/snapshots/">pillanatkiadásokat tároló szerver + oldalát. A régebbi, jelenlegi és tervezett + kiadásokkal kapcsolatos további + információkat a kiadások információs oldalán + találhatjuk meg.

    A &os;-bõl származó operációs From marius at FreeBSD.org Mon Feb 2 13:54:52 2009 From: marius at FreeBSD.org (Marius Strobl) Date: Mon Feb 2 13:55:03 2009 Subject: PERFORCE change 157064 for review Message-ID: <200902022154.n12LspKS076590@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157064 Change 157064 by marius@flak on 2009/02/02 21:54:09 Flesh out cas(4); basic support for Cassini+ and Saturn works, Cassini are untested. Affected files ... .. //depot/projects/usiii/dev/cas/if_cas.c#1 add .. //depot/projects/usiii/dev/cas/if_casreg.h#3 edit .. //depot/projects/usiii/dev/cas/if_casvar.h#1 add .. //depot/projects/usiii/dev/mii/nsgphy.c#2 edit Differences ... ==== //depot/projects/usiii/dev/cas/if_casreg.h#3 (text+ko) ==== @@ -13,7 +13,7 @@ * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - * THIS software IS PROVIDED BY THE AUTHOR ``AS IS'' AND + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE @@ -22,11 +22,11 @@ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS software, EVEN IF ADVISED OF THE POSSIBILITY OF + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * from: NetBSD: gemreg.h,v 1.8 2005/12/11 12:21:26 christos Exp - * from: FreeBSD: head/sys/dev/gem/if_gemvar.h 174987 2007-12-30 01:32:03Z marius + * from: FreeBSD: if_gemvar.h 174987 2007-12-30 01:32:03Z marius * * $FreeBSD$ */ @@ -34,7 +34,10 @@ #ifndef _IF_CASREG_H #define _IF_CASREG_H -/* register definitions for Sun Cassini Gigabit Ethernet */ +/* + * register definitions for Sun Cassini/Cassini+ and National Semiconductor + * DP83065 Saturn Gigabit Ethernet controllers + */ /* glocal resources */ #define CAS_CAW 0x0004 /* core arbitration weight */ @@ -100,7 +103,8 @@ #define CAS_INTR_MIF 0x00020000 /* MIF interrupt */ #define CAS_INTR_PCI_ERROR_INT 0x00040000 /* PCI error interrupt */ -#define CAS_STATUS_TX_COMP3 0xfff80000 /* TX completion 3 */ +#define CAS_STATUS_TX_COMP3_MASK 0xfff80000 /* TX completion 3 */ +#define CAS_STATUS_TX_COMP3_SHFT 19 /* CAS_ERROR_STATUS and CAS_ERROR_MASK PCI error bits */ #define CAS_ERROR_DTRTO 0x00000002 /* delayed trans. timeout */ @@ -125,7 +129,7 @@ #define CAS_RESET_TX 0x00000001 /* Reset TX DMA engine. */ #define CAS_RESET_RX 0x00000002 /* Reset RX DMA engine. */ #define CAS_RESET_RSTOUT 0x00000004 /* Force PCI RSTOUT#. */ -#define CAS_RESET_PCS_DIS 0x00000004 /* PCS reset disable */ +#define CAS_RESET_PCS_DIS 0x00000008 /* PCS reset disable */ #define CAS_RESET_BREQ_SM 0x00007f00 /* breq state machine */ #define CAS_RESET_PCIARB 0x00070000 /* PCI arbitration state */ #define CAS_RESET_RDPCI 0x00300000 /* read PCI state */ @@ -187,16 +191,16 @@ #define CAS_TX_COMP2 0x204c /* TX completion 2 */ #define CAS_TX_COMP3 0x2050 /* TX completion 3 */ #define CAS_TX_COMP4 0x2054 /* TX completion 4 */ -#define CAS_TX_COMP_BASE_WB_LO 0x2058 /* TX completion writeback base low */ -#define CAS_TX_COMP_BASE_WB_HI 0x205c /* TX completion writeback base high */ -#define CAS_TX_DESC_BASE_LO1 0x2060 /* TX descriptor ring base low 1 */ -#define CAS_TX_DESC_BASE_HI1 0x2064 /* TX descriptor ring base high 1 */ -#define CAS_TX_DESC_BASE_LO2 0x2068 /* TX descriptor ring base low 2 */ -#define CAS_TX_DESC_BASE_HI2 0x206c /* TX descriptor ring base high 2 */ -#define CAS_TX_DESC_BASE_LO3 0x2070 /* TX descriptor ring base low 3 */ -#define CAS_TX_DESC_BASE_HI3 0x2074 /* TX descriptor ring base high 3 */ -#define CAS_TX_DESC_BASE_LO4 0x2078 /* TX descriptor ring base low 4 */ -#define CAS_TX_DESC_BASE_HI4 0x207c /* TX descriptor ring base high 4 */ +#define CAS_TX_COMPWB_BASE_LO 0x2058 /* TX completion writeback base low */ +#define CAS_TX_COMPWB_BASE_HI 0x205c /* TX completion writeback base high */ +#define CAS_TX_DESC1_BASE_LO 0x2060 /* TX descriptor ring 1 base low */ +#define CAS_TX_DESC1_BASE_HI 0x2064 /* TX descriptor ring 1 base high */ +#define CAS_TX_DESC2_BASE_LO 0x2068 /* TX descriptor ring 2 base low */ +#define CAS_TX_DESC2_BASE_HI 0x206c /* TX descriptor ring 2 base high */ +#define CAS_TX_DESC3_BASE_LO 0x2070 /* TX descriptor ring 2 base low */ +#define CAS_TX_DESC3_BASE_HI 0x2074 /* TX descriptor ring 2 base high */ +#define CAS_TX_DESC4_BASE_LO 0x2078 /* TX descriptor ring 2 base low */ +#define CAS_TX_DESC4_BASE_HI 0x207c /* TX descriptor ring 2 base high */ #define CAS_TX_MAXBURST1 0x2080 /* TX MaxBurst 1 */ #define CAS_TX_MAXBURST2 0x2084 /* TX MaxBurst 2 */ #define CAS_TX_MAXBURST3 0x2088 /* TX MaxBurst 3 */ @@ -206,7 +210,7 @@ #define CAS_TX_FIFO_DATA_LO 0x210c /* TX FIFO data low */ #define CAS_TX_FIFO_DATA_HI_T1 0x2110 /* TX FIFO data highT1 */ #define CAS_TX_FIFO_DATA_HI_T0 0x2114 /* TX FIFO data highT0 */ -#define CAS_TX_FIFO_SIZE 0x2118 /* TX FIFO size */ +#define CAS_TX_FIFO_SIZE 0x2118 /* TX FIFO size in 64 byte multiples */ #define CAS_TX_RAM_BIST 0x211c /* TX RAM BIST control/status */ #define CAS_TX_CONF_TXDMA_EN 0x00000001 /* TX DMA enable */ @@ -229,6 +233,10 @@ #define CAS_TX_CONF_CTX_MASK 0xc0000000 /* test port selection */ #define CAS_TX_CONF_CTX_SHFT 30 +#define CAS_TX_COMPWB_ALIGN 2048 /* TX compl. W/B alignment */ + +#define CAS_TX_DESC_ALIGN 2048 /* TX descriptor alignment */ + /* descriptor ring size bits for both CAS_TX_CONF and CAS_RX_CONF */ #define CAS_DESC_32 0x0 /* 32 descriptors */ #define CAS_DESC_64 0x1 /* 64 descriptors */ @@ -244,7 +252,7 @@ #define CAS_TX_SM1_CKSUM 0x00000c00 /* checksum state machine */ #define CAS_TX_SM1_TX_FIFO_LOAD 0x0003f000 /* TX FIFO load state machine */ #define CAS_TX_SM1_TX_FIFO_UNLD 0x003c0000 /* TX FIFO unload state mach. */ -#define CAS_TX_SM1_CACHE_CTRL 0x03c00000 /* cache controll state mach. */ +#define CAS_TX_SM1_CACHE_CTRL 0x03c00000 /* cache control state mach. */ #define CAS_TX_SM1_CBQARB 0x03c00000 /* CBQ arbiter state machine */ #define CAS_TX_SM2_COMPWB 0x00000007 /* compl. WB state machine */ @@ -311,14 +319,14 @@ #define CAS_RX_REAS_DMA_DATA_MD 0x4130 /* RX reassembly DMA table data mid */ #define CAS_RX_REAS_DMA_DATA_HI 0x4134 /* RX reassembly DMA table data high */ /* The rest of the RX DMA registers are Cassini+/Saturn only. */ -#define CAS_RX_DESC_BASE_LO2 0x4200 /* RX descriptor ring base low 2 */ -#define CAS_RX_DESC_BASE_HI2 0x4204 /* RX descriptor ring base high 2 */ -#define CAS_RX_COMP_BASE_LO2 0x4208 /* RX completion ring base low 2 */ -#define CAS_RX_COMP_BASE_HI2 0x420c /* RX completion ring base high 2 */ -#define CAS_RX_COMP_BASE_LO3 0x4210 /* RX completion ring base low 3 */ -#define CAS_RX_COMP_BASE_HI3 0x4214 /* RX completion ring base high 3 */ -#define CAS_RX_COMP_BASE_LO4 0x4218 /* RX completion ring base low 4 */ -#define CAS_RX_COMP_BASE_HI4 0x421c /* RX completion ring base high 4 */ +#define CAS_RX_DESC2_BASE_LO 0x4200 /* RX descriptor ring 2 base low */ +#define CAS_RX_DESC2_BASE_HI 0x4204 /* RX descriptor ring 2 base high */ +#define CAS_RX_COMP2_BASE_LO 0x4208 /* RX completion ring 2 base low */ +#define CAS_RX_COMP2_BASE_HI 0x420c /* RX completion ring 2 base high */ +#define CAS_RX_COMP3_BASE_LO 0x4210 /* RX completion ring 3 base low */ +#define CAS_RX_COMP3_BASE_HI 0x4214 /* RX completion ring 3 base high */ +#define CAS_RX_COMP4_BASE_LO 0x4218 /* RX completion ring 4 base low */ +#define CAS_RX_COMP4_BASE_HI 0x421c /* RX completion ring 4 base high */ #define CAS_RX_KICK2 0x4220 /* RX kick 2 */ #define CAS_RX_COMP2 0x4224 /* RX completion 2 */ #define CAS_RX_COMP_HEAD2 0x4228 /* RX completion head 2 */ @@ -338,8 +346,8 @@ #define CAS_RX_CONF_SOFF_MASK 0x00001c00 /* swivel offset */ #define CAS_RX_CONF_SOFF_SHFT 10 /* The RX descriptor ring 2 is Cassini+/Saturn only. */ -#define CAS_RX_CONF_DESC_MASK 0x000f0000 /* RX descriptor ring 2 size */ -#define CAS_RX_CONF_DESC_SHFT 16 +#define CAS_RX_CONF_DESC2_MASK 0x000f0000 /* RX descriptor ring 2 size */ +#define CAS_RX_CONF_DESC2_SHFT 16 #define CAS_RX_CONF_COMP_128 0x0 /* 128 descriptors */ #define CAS_RX_CONF_COMP_256 0x1 /* 256 descriptors */ @@ -375,6 +383,10 @@ #define CAS_RX_PSZ_MB_OFF_96 0x2 /* MTU buf. offset 96 bytes */ #define CAS_RX_PSZ_MB_OFF_128 0x3 /* MTU buf. offset 128 bytes */ +#define CAS_RX_DESC_ALIGN 8192 /* RX descriptor alignment */ + +#define CAS_RX_COMP_ALIGN 8192 /* RX complition alignment */ + /* The RX PAUSE thresholds are specified in multiples of 64 bytes. */ #define CAS_RX_PTHRS_XOFF_MASK 0x000001ff /* XOFF PAUSE */ #define CAS_RX_PTHRS_XOFF_SHFT 0 @@ -389,7 +401,7 @@ */ #define CAS_RX_BLANK_PKTS_MASK 0x000001ff /* RX blanking packets */ #define CAS_RX_BLANK_PKTS_SHFT 0 -#define CAS_RX_BLANK_TIME_MASK 0x3ffff000 /* RX blanking packets */ +#define CAS_RX_BLANK_TIME_MASK 0x3ffff000 /* RX blanking time */ #define CAS_RX_BLANK_TIME_SHFT 12 /* CAS_RX_AEMPTY_THRS and CAS_RX_AEMPTY_THRS2 bits */ @@ -508,8 +520,8 @@ #define CAS_HP_STATUS3_JMBHS_EN 0x00000400 /* jumbo header split enable */ #define CAS_HP_STATUS3_BWO_REAS 0x00000800 /* batching w/o reassembly */ #define CAS_HP_STATUS3_FRC_DROP 0x00001000 /* force drop */ -#define CAS_HP_STATUS3_AR2_MASK 0x000fe000 /* accu_R1 */ -#define CAS_HP_STATUS3_AR2_SHFT 13 +#define CAS_HP_STATUS3_AR1_MASK 0x000fe000 /* accu_R1 */ +#define CAS_HP_STATUS3_AR1_SHFT 13 #define CAS_HP_STATUS3_CSO_MASK 0x07f00000 /* checksum start offset */ #define CAS_HP_STATUS3_CSO_SHFT 19 #define CAS_HP_STATUS3_AR2_MASK 0xf0000000 /* accu_R2[3:0] */ @@ -602,11 +614,11 @@ #define CAS_MAC_ADDR42 0x6128 /* MAC address 42 */ #define CAS_MAC_ADDR43 0x612c /* MAC address 43 */ #define CAS_MAC_ADDR44 0x6130 /* MAC address 44 */ -#define CAS_MAC_ADDR_FILTER0 0x614c /* address filter 0 */ -#define CAS_MAC_ADDR_FILTER1 0x6150 /* address filter 1 */ -#define CAS_MAC_ADDR_FILTER2 0x6154 /* address filter 2 */ -#define CAS_MAC_ADR_FLT_MASK1_2 0x6158 /* address filter 2 & 1 mask*/ -#define CAS_MAC_ADR_FLT_MASK0 0x615c /* address filter 0 mask */ +#define CAS_MAC_AFILTER0 0x614c /* address filter 0 */ +#define CAS_MAC_AFILTER1 0x6150 /* address filter 1 */ +#define CAS_MAC_AFILTER2 0x6154 /* address filter 2 */ +#define CAS_MAC_AFILTER_MASK1_2 0x6158 /* address filter 2 & 1 mask*/ +#define CAS_MAC_AFILTER_MASK0 0x615c /* address filter 0 mask */ #define CAS_MAC_HASH0 0x6160 /* hash table 0 */ #define CAS_MAC_HASH1 0x6164 /* hash table 1 */ #define CAS_MAC_HASH2 0x6168 /* hash table 2 */ @@ -642,7 +654,7 @@ #define CAS_MAC_SPC_SEND 0x00010000 /* Send PAUSE frame. */ /* CAS_MAC_TX_STATUS and CAS_MAC_TX_MASK register bits */ -#define CAS_MAC_TX_FRAME_XMTTD 0x00000001 /* Frame transmitted. */ +#define CAS_MAC_TX_FRAME_XMTD 0x00000001 /* Frame transmitted. */ #define CAS_MAC_TX_UNDERRUN 0x00000002 /* TX data starvation */ #define CAS_MAC_TX_MAX_PKT_ERR 0x00000004 /* frame > CAS_MAC_MAX_FRAME */ #define CAS_MAC_TX_NCC_EXP 0x00000008 /* normal coll. counter wrap */ @@ -881,6 +893,9 @@ #define CAS_PHYAD_INTERNAL 1 #define CAS_PHYAD_EXTERNAL 0 +/* wired RX FIFO size in bytes */ +#define CAS_RX_FIFO_SIZE 16 * 1024 + /* * descriptor ring structures */ @@ -914,10 +929,10 @@ * receive completion ring structure */ struct cas_rx_comp { - uint64_t word1; - uint64_t word2; - uint64_t word3; - uint64_t word4; + uint64_t crc_word1; + uint64_t crc_word2; + uint64_t crc_word3; + uint64_t crc_word4; }; #define CAS_RC1_DATA_SIZE_MASK 0x0000000007ffe000ULL /* pkt. data length */ @@ -968,7 +983,7 @@ #define CAS_RC3_PLUS_L3HO_MASK 0x0000fc0000000000ULL /* layer 3 hdr. off. */ #define CAS_RC3_PLUS_L3HO_SHFT 42 #define CAS_RC3_SAP_MASK 0xffff000000000000ULL /* ethertype */ -#define CAS_RC3_SAP_SHIFT 48 +#define CAS_RC3_SAP_SHFT 48 #define CAS_RC4_TCP_CSUM_MASK 0x000000000000ffffULL /* TCP checksum */ #define CAS_RC4_TCP_CSUM_SHFT 0 @@ -983,4 +998,6 @@ #define CAS_RC4_BAD 0x4000000000000000ULL /* CRC error */ #define CAS_RC4_LEN_MMATCH 0x8000000000000000ULL /* length field mism. */ +#define CAS_GET(reg, bits) (((reg) & (bits ## _MASK)) >> (bits ## _SHFT)) + #endif ==== //depot/projects/usiii/dev/mii/nsgphy.c#2 (text+ko) ==== @@ -38,20 +38,22 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/mii/nsgphy.c,v 1.24 2006/12/02 15:32:33 marius Exp $"); +__FBSDID("$FreeBSD: head/sys/dev/mii/nsgphy.c 164827 2006-12-02 15:32:34Z marius $"); /* - * Driver for the National Semiconductor DP83891 and DP83861 + * Driver for the National Semiconductor DP83861, DP83865 and DP83891 * 10/100/1000 PHYs. * Datasheet available at: http://www.national.com/ds/DP/DP83861.pdf + * and at: http://www.national.com/ds/DP/DP83865.pdf * - * The DP83891 is the older NatSemi gigE PHY which isn't being sold - * anymore. The DP83861 is its replacement, which is an 'enhanced' - * firmware driven component. The major difference between the - * two is that the 83891 can't generate interrupts, while the - * 83861 can. (I think it wasn't originally designed to do this, but - * it can now thanks to firmware updates.) The 83861 also allows - * access to its internal RAM via indirect register access. + * The DP83891 is the older NS GigE PHY which isn't being sold + * anymore. The DP83861 is its replacement, which is an 'enhanced' + * firmware driven component. The major difference between the + * two is that the DP83891 can't generate interrupts, while the + * 83861 can (probably it wasn't originally designed to do this, but + * it can now thanks to firmware updates). The DP83861 also allows + * access to its internal RAM via indirect register access. The + * DP83865 is an ultra low power version of the DP83861 and DP83891. */ #include @@ -99,6 +101,7 @@ static const struct mii_phydesc nsgphys[] = { MII_PHY_DESC(NATSEMI, DP83861), + MII_PHY_DESC(NATSEMI, DP83865), MII_PHY_DESC(NATSEMI, DP83891), MII_PHY_END }; @@ -133,8 +136,14 @@ mii->mii_instance++; + mii_phy_reset(sc); + + /* + * NB: the PHY has the 10baseT BMSR bits hard-wired to 0, + * even though it supports 10baseT. + */ sc->mii_capabilities = (PHY_READ(sc, MII_BMSR) | - (BMSR_10TFDX|BMSR_10THDX)) & ma->mii_capmask; + (BMSR_10TFDX | BMSR_10THDX)) & ma->mii_capmask; if (sc->mii_capabilities & BMSR_EXTSTAT) sc->mii_extcapabilities = PHY_READ(sc, MII_EXTSR); @@ -238,7 +247,7 @@ return; } - switch (physup & (PHY_SUP_SPEED1|PHY_SUP_SPEED0)) { + switch (physup & (PHY_SUP_SPEED1 | PHY_SUP_SPEED0)) { case PHY_SUP_SPEED1: mii->mii_media_active |= IFM_1000_T; gtsr = PHY_READ(sc, MII_100T2SR); @@ -257,9 +266,13 @@ default: mii->mii_media_active |= IFM_NONE; mii->mii_media_status = 0; + return; } + if (physup & PHY_SUP_DUPLEX) mii->mii_media_active |= IFM_FDX; + else + mii->mii_media_active |= IFM_HDX; } else mii->mii_media_active = ife->ifm_media; } From hselasky at FreeBSD.org Mon Feb 2 15:13:12 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Mon Feb 2 15:13:20 2009 Subject: PERFORCE change 157069 for review Message-ID: <200902022313.n12NDBeb085841@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157069 Change 157069 by hselasky@hselasky_laptop001 on 2009/02/02 23:12:27 Integrate USB serial patches from Andrew Thompson. The changes are mostly about refactoring the code, renaming fields, and preparing for tasqueue conversion of usb2_proc_xxx() . Change "usb2_pause_mtx" so that it takes the timeout value in ticks instead of milliseconds, hence this is more close to the behaviour of pause() . Propagate this change to the rest of the USB code. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/controller/at91dci.c#26 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/at91dci_atmelarm.c#20 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/atmegadci.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#29 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_pci.c#24 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/musb2_otg.c#25 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#26 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.c#27 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci.c#22 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#50 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#37 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_msctest.c#17 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.c#15 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.h#7 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#31 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#41 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_util.c#11 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_util.h#7 edit .. //depot/projects/usb/src/sys/dev/usb2/misc/ufm2.c#11 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uipaq2.c#18 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.c#23 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.h#12 edit .. //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#27 edit .. //depot/projects/usb/src/sys/dev/usb2/storage/umass2.c#26 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/controller/at91dci.c#26 (text+ko) ==== @@ -275,7 +275,7 @@ DELAY(8000); } else { /* Wait for reset to complete. */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 8); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 125); } AT91_UDP_WRITE_4(sc, AT91_UDP_GSTATE, 0); @@ -1395,7 +1395,7 @@ (sc->sc_clocks_on) (sc->sc_clocks_arg); } /* wait a little for things to stabilise */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); /* disable and clear all interrupts */ ==== //depot/projects/usb/src/sys/dev/usb2/controller/at91dci_atmelarm.c#20 (text+ko) ==== @@ -168,7 +168,7 @@ at91_udp_pull_down(sc); /* wait 10ms for pulldown to stabilise */ - usb2_pause_mtx(NULL, 10); + usb2_pause_mtx(NULL, hz / 100); sc->sc_iclk = at91_pmc_clock_ref("udc_clk"); sc->sc_fclk = at91_pmc_clock_ref("udpck"); ==== //depot/projects/usb/src/sys/dev/usb2/controller/atmegadci.c#4 (text+ko) ==== @@ -221,7 +221,7 @@ DELAY(8000); } else { /* Wait for reset to complete. */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 8); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 125); } /* hardware should have cleared RMWKUP bit */ @@ -1253,7 +1253,7 @@ (sc->sc_clocks_on) (&sc->sc_bus); /* wait a little for things to stabilise */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); /* enable interrupts */ ATMEGA_WRITE_1(sc, ATMEGA_UDIEN, ==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#29 (text+ko) ==== @@ -177,7 +177,7 @@ EOWRITE4(sc, EHCI_USBCMD, 0); /* Halt controller */ for (n = 0; n != 100; n++) { - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); hcr = EOREAD4(sc, EHCI_USBSTS); if (hcr & EHCI_STS_HCH) { hcr = 0; @@ -193,7 +193,7 @@ EOWRITE4(sc, EHCI_USBCMD, EHCI_CMD_HCRESET); for (n = 0; n != 100; n++) { - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); hcr = EOREAD4(sc, EHCI_USBCMD); if (!(hcr & EHCI_CMD_HCRESET)) { if (sc->sc_flags & EHCI_SCFLG_SETMODE) @@ -479,7 +479,7 @@ EOWRITE4(sc, EHCI_CONFIGFLAG, EHCI_CONF_CF); for (i = 0; i < 100; i++) { - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); hcr = EOREAD4(sc, EHCI_USBSTS) & EHCI_STS_HCH; if (!hcr) { break; @@ -516,7 +516,7 @@ DPRINTF("reset failed!\n"); } /* XXX let stray task complete */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 50); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 20); USB_BUS_UNLOCK(&sc->sc_bus); @@ -553,7 +553,7 @@ if (hcr == 0) { break; } - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); } if (hcr != 0) { @@ -567,7 +567,7 @@ if (hcr == EHCI_STS_HCH) { break; } - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); } if (hcr != EHCI_STS_HCH) { @@ -611,7 +611,7 @@ if (hcr) { usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_RESUME_WAIT); + USB_MS_TO_TICKS(USB_RESUME_WAIT)); for (i = 1; i <= sc->sc_noport; i++) { cmd = EOREAD4(sc, EHCI_PORTSC(i)); @@ -629,16 +629,17 @@ if (hcr != EHCI_STS_HCH) { break; } - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); } if (hcr == EHCI_STS_HCH) { device_printf(sc->sc_bus.bdev, "config timeout\n"); } - usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_RESUME_WAIT); USB_BUS_UNLOCK(&sc->sc_bus); + usb2_pause_mtx(NULL, + USB_MS_TO_TICKS(USB_RESUME_WAIT)); + /* catch any lost interrupts */ ehci_do_poll(&sc->sc_bus); } @@ -3216,9 +3217,9 @@ /* wait 20ms for resume sequence to complete */ if (use_polling) { /* polling */ - DELAY(20 * 1000); + DELAY(20000); } else { - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 20); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 50); } EOWRITE4(sc, port, v & ~(EHCI_PS_SUSP | @@ -3227,9 +3228,9 @@ /* settle time */ if (use_polling) { /* polling */ - DELAY(4 * 1000); + DELAY(4000); } else { - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 4); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 250); } break; case UHF_PORT_POWER: @@ -3385,7 +3386,7 @@ } else { /* Wait for reset to complete. */ usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_PORT_ROOT_RESET_DELAY); + USB_MS_TO_TICKS(USB_PORT_ROOT_RESET_DELAY)); } /* Terminate reset sequence. */ @@ -3398,7 +3399,7 @@ } else { /* Wait for HC to complete reset. */ usb2_pause_mtx(&sc->sc_bus.bus_mtx, - EHCI_PORT_RESET_COMPLETE); + USB_MS_TO_TICKS(EHCI_PORT_RESET_COMPLETE)); } v = EOREAD4(sc, port); ==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_pci.c#24 (text+ko) ==== @@ -455,7 +455,7 @@ "timed out waiting for BIOS\n"); break; } - usb2_pause_mtx(NULL, 10); /* wait 10ms */ + usb2_pause_mtx(NULL, hz / 100); /* wait 10ms */ } } } ==== //depot/projects/usb/src/sys/dev/usb2/controller/musb2_otg.c#25 (text+ko) ==== @@ -223,7 +223,7 @@ DELAY(8000); } else { /* Wait for reset to complete. */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 8); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 125); } temp = MUSB2_READ_1(sc, MUSB2_REG_POWER); @@ -1708,7 +1708,7 @@ (sc->sc_clocks_on) (sc->sc_clocks_arg); } /* wait a little for things to stabilise */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); /* disable all interrupts */ @@ -1721,7 +1721,7 @@ musbotg_pull_common(sc, 0); /* wait a little bit (10ms) */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 10); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 100); /* disable double packet buffering */ MUSB2_WRITE_2(sc, MUSB2_REG_RXDBDIS, 0xFFFF); ==== //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#26 (text+ko) ==== @@ -168,7 +168,7 @@ DPRINTF("SMM active, request owner change\n"); OWRITE4(sc, OHCI_COMMAND_STATUS, OHCI_OCR); for (i = 0; (i < 100) && (ctl & OHCI_IR); i++) { - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); ctl = OREAD4(sc, OHCI_CONTROL); } if (ctl & OHCI_IR) { @@ -182,7 +182,7 @@ reset: /* controller was cold started */ usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_BUS_RESET_DELAY); + USB_MS_TO_TICKS(USB_BUS_RESET_DELAY)); } /* @@ -193,7 +193,7 @@ OWRITE4(sc, OHCI_CONTROL, OHCI_HCFS_RESET); usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_BUS_RESET_DELAY); + USB_MS_TO_TICKS(USB_BUS_RESET_DELAY)); /* we now own the host controller and the bus has been reset */ ival = OHCI_GET_IVAL(OREAD4(sc, OHCI_FM_INTERVAL)); @@ -256,7 +256,7 @@ OWRITE4(sc, OHCI_RH_DESCRIPTOR_A, desca | OHCI_NOCP); OWRITE4(sc, OHCI_RH_STATUS, OHCI_LPSC); /* Enable port power */ usb2_pause_mtx(&sc->sc_bus.bus_mtx, - OHCI_ENABLE_POWER_DELAY); + USB_MS_TO_TICKS(OHCI_ENABLE_POWER_DELAY)); OWRITE4(sc, OHCI_RH_DESCRIPTOR_A, desca); /* @@ -266,7 +266,7 @@ sc->sc_noport = 0; for (i = 0; (i < 10) && (sc->sc_noport == 0); i++) { usb2_pause_mtx(&sc->sc_bus.bus_mtx, - OHCI_READ_DESC_DELAY); + USB_MS_TO_TICKS(OHCI_READ_DESC_DELAY)); sc->sc_noport = OHCI_GET_NDP(OREAD4(sc, OHCI_RH_DESCRIPTOR_A)); } @@ -425,10 +425,10 @@ OWRITE4(sc, OHCI_INTERRUPT_DISABLE, OHCI_ALL_INTRS); OWRITE4(sc, OHCI_CONTROL, OHCI_HCFS_RESET); + USB_BUS_UNLOCK(&sc->sc_bus); + /* XXX let stray task complete */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 50); - - USB_BUS_UNLOCK(&sc->sc_bus); + usb2_pause_mtx(NULL, hz / 20); usb2_callout_drain(&sc->sc_tmo_rhsc); } @@ -463,7 +463,7 @@ OWRITE4(sc, OHCI_CONTROL, ctl); usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_RESUME_WAIT); + USB_MS_TO_TICKS(USB_RESUME_WAIT)); USB_BUS_UNLOCK(&sc->sc_bus); } @@ -494,10 +494,12 @@ ctl = OREAD4(sc, OHCI_CONTROL); ctl |= OHCI_HCFS_RESUME; OWRITE4(sc, OHCI_CONTROL, ctl); - usb2_pause_mtx(&sc->sc_bus.bus_mtx, USB_RESUME_DELAY); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, + USB_MS_TO_TICKS(USB_RESUME_DELAY)); ctl = (ctl & ~OHCI_HCFS_MASK) | OHCI_HCFS_OPERATIONAL; OWRITE4(sc, OHCI_CONTROL, ctl); - usb2_pause_mtx(&sc->sc_bus.bus_mtx, USB_RESUME_RECOVERY); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, + USB_MS_TO_TICKS(USB_RESUME_RECOVERY)); sc->sc_control = sc->sc_intre = 0; USB_BUS_UNLOCK(&sc->sc_bus); @@ -2410,7 +2412,7 @@ DELAY(USB_PORT_ROOT_RESET_DELAY * 1000); } else { usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_PORT_ROOT_RESET_DELAY); + USB_MS_TO_TICKS(USB_PORT_ROOT_RESET_DELAY)); } if ((OREAD4(sc, port) & UPS_RESET) == 0) { ==== //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.c#27 (text+ko) ==== @@ -271,7 +271,7 @@ /* wait */ usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_BUS_RESET_DELAY); + USB_MS_TO_TICKS(USB_BUS_RESET_DELAY)); /* terminate all transfers */ @@ -283,7 +283,7 @@ while (n--) { /* wait one millisecond */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); if (!(UREAD2(sc, UHCI_CMD) & UHCI_CMD_HCRESET)) { goto done_1; @@ -299,7 +299,7 @@ while (n--) { /* wait one millisecond */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); /* check if HC is stopped */ if (UREAD2(sc, UHCI_STS) & UHCI_STS_HCH) { @@ -345,7 +345,7 @@ while (n--) { /* wait one millisecond */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); /* check that controller has started */ @@ -638,7 +638,8 @@ UHCICMD(sc, UHCI_CMD_EGSM); - usb2_pause_mtx(&sc->sc_bus.bus_mtx, USB_RESUME_WAIT); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, + USB_MS_TO_TICKS(USB_RESUME_WAIT)); USB_BUS_UNLOCK(&sc->sc_bus); } @@ -657,7 +658,7 @@ UHCICMD(sc, UHCI_CMD_FGR); usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_RESUME_DELAY); + USB_MS_TO_TICKS(USB_RESUME_DELAY)); /* and start traffic again */ @@ -2410,7 +2411,7 @@ if (use_polling) { DELAY(10000); } else { - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 10); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 100); } } @@ -2422,7 +2423,7 @@ DELAY(USB_PORT_ROOT_RESET_DELAY * 1000); } else { usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_PORT_ROOT_RESET_DELAY); + USB_MS_TO_TICKS(USB_PORT_ROOT_RESET_DELAY)); } DPRINTFN(4, "uhci port %d reset, status0 = 0x%04x\n", @@ -2455,7 +2456,7 @@ DELAY(USB_PORT_RESET_DELAY * 1000); } else { usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_PORT_RESET_DELAY); + USB_MS_TO_TICKS(USB_PORT_RESET_DELAY)); } x = UREAD2(sc, port); @@ -2782,9 +2783,9 @@ /* wait 20ms for resume sequence to complete */ if (use_polling) { /* polling */ - DELAY(20 * 1000); + DELAY(20000); } else { - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 20); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 50); } /* clear suspend and resume detect */ @@ -2792,7 +2793,7 @@ UHCI_PORTSC_SUSP)); /* wait a little bit */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 2); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 500); sc->sc_isresumed |= (1 << index); ==== //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci.c#22 (text+ko) ==== @@ -1335,7 +1335,7 @@ uss820dci_pull_down(sc); /* wait 10ms for pulldown to stabilise */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 10); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 100); /* check hardware revision */ temp = USS820_READ_1(sc, USS820_REV); ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#50 (text+ko) ==== @@ -1401,7 +1401,8 @@ "(ignored)\n", udev->address); } /* allow device time to set new address */ - usb2_pause_mtx(&Giant, USB_SET_ADDRESS_SETTLE); + usb2_pause_mtx(&Giant, + USB_MS_TO_TICKS(USB_SET_ADDRESS_SETTLE)); } else { /* We are not self powered */ udev->flags.self_powered = 0; ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#37 (text+ko) ==== @@ -335,7 +335,8 @@ /* wait for maximum device power up time */ - usb2_pause_mtx(&Giant, USB_PORT_POWERUP_DELAY); + usb2_pause_mtx(&Giant, + USB_MS_TO_TICKS(USB_PORT_POWERUP_DELAY)); /* reset port, which implies enabling it */ @@ -736,7 +737,7 @@ goto error; } /* wait with power off for a while */ - usb2_pause_mtx(&Giant, USB_POWER_DOWN_TIME); + usb2_pause_mtx(&Giant, USB_MS_TO_TICKS(USB_POWER_DOWN_TIME)); /* * To have the best chance of success we do things in the exact same @@ -794,7 +795,7 @@ portno); /* wait for stable power */ - usb2_pause_mtx(&Giant, pwrdly); + usb2_pause_mtx(&Giant, USB_MS_TO_TICKS(pwrdly)); } device_printf(dev, "%d port%s with %d " @@ -1666,7 +1667,7 @@ return; } /* resume settle time */ - usb2_pause_mtx(&Giant, USB_PORT_RESUME_DELAY); + usb2_pause_mtx(&Giant, USB_MS_TO_TICKS(USB_PORT_RESUME_DELAY)); if (bus->methods->device_resume != NULL) { /* resume USB device on the USB controller */ @@ -1802,7 +1803,7 @@ /* do DMA delay */ temp = usb2_get_dma_delay(udev->bus); - usb2_pause_mtx(&Giant, temp); + usb2_pause_mtx(&Giant, USB_MS_TO_TICKS(temp)); } /* suspend current port */ ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_msctest.c#17 (text+ko) ==== @@ -562,7 +562,7 @@ goto done; } } else if ((err != 2) && --timeout) { - usb2_pause_mtx(&sc->mtx, USB_MS_HZ); + usb2_pause_mtx(&sc->mtx, hz); goto repeat_inquiry; } err = USB_ERR_INVAL; ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.c#15 (text+ko) ==== @@ -176,8 +176,9 @@ * 0: success * Else: failure *------------------------------------------------------------------------*/ -uint8_t -usb2_proc_setup(struct usb2_process *up, struct mtx *p_mtx, uint8_t prio) +int +usb2_proc_create(struct usb2_process *up, struct mtx *p_mtx, + const char *pmesg, uint8_t prio) { up->up_mtx = p_mtx; up->up_prio = prio; @@ -188,7 +189,7 @@ usb2_cv_init(&up->up_drain, "dmsg"); if (USB_THREAD_CREATE(&usb2_process, up, - &up->up_ptr, "usbproc")) { + &up->up_ptr, pmesg)) { DPRINTFN(0, "Unable to create USB process."); up->up_ptr = NULL; goto error; @@ -197,7 +198,13 @@ error: usb2_proc_unsetup(up); - return (1); + return (ENOMEM); +} + +uint8_t +usb2_proc_setup(struct usb2_process *up, struct mtx *p_mtx, uint8_t prio) +{ + return (usb2_proc_create(up, p_mtx, "usbproc", prio) ? 1 : 0); } /*------------------------------------------------------------------------* @@ -225,6 +232,12 @@ up->up_mtx = NULL; } +void +usb2_proc_free(struct usb2_process *up) +{ + usb2_proc_unsetup(up); +} + /*------------------------------------------------------------------------* * usb2_proc_msignal * ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.h#7 (text+ko) ==== @@ -81,10 +81,13 @@ uint8_t usb2_proc_is_gone(struct usb2_process *up); uint8_t usb2_proc_setup(struct usb2_process *up, struct mtx *p_mtx, uint8_t prio); +int usb2_proc_create(struct usb2_process *up, struct mtx *p_mtx, + const char *pmesg, uint8_t prio); void usb2_proc_csignal(struct usb2_process *up); void usb2_proc_drain(struct usb2_process *up); void usb2_proc_mwait(struct usb2_process *up, void *pm0, void *pm1); void usb2_proc_unsetup(struct usb2_process *up); +void usb2_proc_free(struct usb2_process *up); void *usb2_proc_msignal(struct usb2_process *up, void *pm0, void *pm1); #endif /* _USB2_PROCESS_H_ */ ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#31 (text+ko) ==== @@ -371,7 +371,7 @@ if (temp > 0) { usb2_pause_mtx( xfer->xroot->xfer_mtx, - temp); + USB_MS_TO_TICKS(temp)); } #endif xfer->flags.manual_status = 0; @@ -520,11 +520,11 @@ while (1) { #if USB_DEBUG /* wait for the device to recover from reset */ - usb2_pause_mtx(mtx, pr_poll_delay); + usb2_pause_mtx(mtx, USB_MS_TO_TICKS(pr_poll_delay)); n += pr_poll_delay; #else /* wait for the device to recover from reset */ - usb2_pause_mtx(mtx, USB_PORT_RESET_DELAY); + usb2_pause_mtx(mtx, USB_MS_TO_TICKS(USB_PORT_RESET_DELAY)); n += USB_PORT_RESET_DELAY; #endif err = usb2_req_get_port_status(udev, mtx, &ps, port); @@ -559,10 +559,10 @@ } #if USB_DEBUG /* wait for the device to recover from reset */ - usb2_pause_mtx(mtx, pr_recovery_delay); + usb2_pause_mtx(mtx, USB_MS_TO_TICKS(pr_recovery_delay)); #else /* wait for the device to recover from reset */ - usb2_pause_mtx(mtx, USB_PORT_RESET_RECOVERY); + usb2_pause_mtx(mtx, USB_MS_TO_TICKS(USB_PORT_RESET_RECOVERY)); #endif done: @@ -624,7 +624,7 @@ } retries--; - usb2_pause_mtx(mtx, 200); + usb2_pause_mtx(mtx, hz / 5); continue; } @@ -1369,7 +1369,7 @@ udev->address = old_addr; /* allow device time to set new address */ - usb2_pause_mtx(mtx, USB_SET_ADDRESS_SETTLE); + usb2_pause_mtx(mtx, USB_MS_TO_TICKS(USB_SET_ADDRESS_SETTLE)); /* get the device descriptor */ err = usb2_req_get_desc(udev, mtx, &udev->ddesc, @@ -1389,7 +1389,7 @@ done: if (err && do_retry) { /* give the USB firmware some time to load */ - usb2_pause_mtx(mtx, 500); + usb2_pause_mtx(mtx, hz / 2); /* no more retries after this retry */ do_retry = 0; /* try again */ ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#41 (text+ko) ==== @@ -1066,7 +1066,8 @@ if (needs_delay) { temp = usb2_get_dma_delay(info->bus); - usb2_pause_mtx(&info->bus->bus_mtx, temp); + usb2_pause_mtx(&info->bus->bus_mtx, + USB_MS_TO_TICKS(temp)); } /* make sure that our done messages are not queued anywhere */ ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_util.c#11 (text+ko) ==== @@ -124,36 +124,37 @@ /*------------------------------------------------------------------------* * usb2_pause_mtx - factored out code * - * This function will delay the code by the passed number of - * milliseconds. The passed mutex "mtx" will be dropped while waiting, - * if "mtx" is not NULL. The number of milliseconds per second is 1024 - * for sake of optimisation. + * This function will delay the code by the passed number of system + * ticks. The passed mutex "mtx" will be dropped while waiting, if + * "mtx" is not NULL. *------------------------------------------------------------------------*/ void -usb2_pause_mtx(struct mtx *mtx, uint32_t ms) +usb2_pause_mtx(struct mtx *mtx, int _ticks) { + if (mtx != NULL) + mtx_unlock(mtx); + if (cold) { - ms = (ms + 1) * 1024; - DELAY(ms); + /* convert to milliseconds */ + _ticks = (_ticks * 1000) / hz; + /* convert to microseconds, rounded up */ + _ticks = (_ticks + 1) * 1000; + DELAY(_ticks); } else { - ms = USB_MS_TO_TICKS(ms); /* * Add one to the number of ticks so that we don't return * too early! */ - ms++; + _ticks++; - if (mtx != NULL) - mtx_unlock(mtx); - - if (pause("USBWAIT", ms)) { + if (pause("USBWAIT", _ticks)) { /* ignore */ } - if (mtx != NULL) - mtx_lock(mtx); } + if (mtx != NULL) + mtx_lock(mtx); } /*------------------------------------------------------------------------* ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_util.h#7 (text+ko) ==== @@ -31,7 +31,7 @@ uint32_t usb2_get_devid(device_t dev); uint8_t usb2_make_str_desc(void *ptr, uint16_t max_len, const char *s); void device_set_usb2_desc(device_t dev); -void usb2_pause_mtx(struct mtx *mtx, uint32_t ms); +void usb2_pause_mtx(struct mtx *mtx, int _ticks); void usb2_printBCD(char *p, uint16_t p_len, uint16_t bcd); void usb2_trim_spaces(char *p); ==== //depot/projects/usb/src/sys/dev/usb2/misc/ufm2.c#11 (text+ko) ==== @@ -288,10 +288,7 @@ * Note, there's a 240ms settle time before the status * will be valid, so sleep that amount. */ - - mtx_lock(&sc->sc_mtx); - usb2_pause_mtx(&sc->sc_mtx, USB_MS_HZ / 4); - mtx_unlock(&sc->sc_mtx); + usb2_pause_mtx(NULL, hz / 4); if (ufm_do_req(sc, UFM_CMD0, 0x00, 0x24, &ret)) { ==== //depot/projects/usb/src/sys/dev/usb2/serial/uipaq2.c#18 (text+ko) ==== @@ -1149,7 +1149,7 @@ NULL, 0, NULL, 100); if (error == 0) break; - usb2_pause_mtx(NULL, 100); + usb2_pause_mtx(NULL, hz / 10); } iface_index = UIPAQ_IFACE_INDEX; ==== //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.c#23 (text+ko) ==== @@ -67,11 +67,6 @@ * POSSIBILITY OF SUCH DAMAGE. */ -/* - * NOTE: all function names beginning like "usb2_com_cfg_" can only - * be called from within the config thread function ! - */ - #include #include #include @@ -110,14 +105,12 @@ static uint8_t usb2_com_units_alloc(uint32_t, uint32_t *); static void usb2_com_units_free(uint32_t, uint32_t); -static int usb2_com_attach_sub(struct usb2_com_softc *); -static void usb2_com_detach_sub(struct usb2_com_softc *); -static void usb2_com_queue_command(struct usb2_com_softc *sc, - uint8_t cmd); -static void usb2_com_wait_command(struct usb2_com_softc *sc, - uint8_t cmd); +static int usb2_com_attach_tty(struct usb2_com_softc *); +static void usb2_com_detach_tty(struct usb2_com_softc *); +static void usb2_com_queue_command(struct usb2_com_softc *, + usb2_proc_callback_t *, struct termios *pt, + struct usb2_proc_msg *t0, struct usb2_proc_msg *t1); static void usb2_com_shutdown(struct usb2_com_softc *); -static void usb2_com_start_transfers(struct usb2_com_softc *); static void usb2_com_break(struct usb2_com_softc *, uint8_t); static void usb2_com_dtr(struct usb2_com_softc *, uint8_t); static void usb2_com_rts(struct usb2_com_softc *, uint8_t); @@ -127,14 +120,14 @@ static tsw_ioctl_t usb2_com_ioctl; static tsw_modem_t usb2_com_modem; static tsw_param_t usb2_com_param; -static tsw_outwakeup_t usb2_com_start_write; +static tsw_outwakeup_t usb2_com_outwakeup; static tsw_free_t usb2_com_free; static struct ttydevsw usb2_com_class = { .tsw_flags = TF_INITLOCK | TF_CALLOUT, .tsw_open = usb2_com_open, .tsw_close = usb2_com_close, - .tsw_outwakeup = usb2_com_start_write, + .tsw_outwakeup = usb2_com_outwakeup, .tsw_ioctl = usb2_com_ioctl, .tsw_param = usb2_com_param, .tsw_modem = usb2_com_modem, @@ -221,15 +214,14 @@ * sub-units can be used to differentiate among * different types of devices. * - * The mutex pointed to by "p_mtx" is applied before all - * callbacks are called back. Also "p_mtx" must be applied - * before calling into the ucom-layer! Currently only Giant - * is supported. + * The mutex pointed to by "mtx" is applied before all + * callbacks are called back. Also "mtx" must be applied + * before calling into the ucom-layer! */ int usb2_com_attach(struct usb2_com_super_softc *ssc, struct usb2_com_softc *sc, uint32_t sub_units, void *parent, - const struct usb2_com_callback *callback, struct mtx *p_mtx) + const struct usb2_com_callback *callback, struct mtx *mtx) { uint32_t n; uint32_t root_unit; @@ -241,33 +233,39 @@ (callback == NULL)) { return (EINVAL); } + + /* XXX unit management does not really belong here */ if (usb2_com_units_alloc(sub_units, &root_unit)) { return (ENOMEM); } - if (usb2_proc_setup(&ssc->sc_config_td, p_mtx, USB_PRI_MED)) { + + error = usb2_proc_create(&ssc->sc_tq, mtx, "ucom", USB_PRI_MED); + if (error) { usb2_com_units_free(root_unit, sub_units); - return (ENOMEM); + return (error); } - for (n = 0; n < sub_units; n++, sc++) { + + for (n = 0; n != sub_units; n++, sc++) { sc->sc_unit = root_unit + n; sc->sc_local_unit = n; sc->sc_super = ssc; - sc->sc_parent_mtx = p_mtx; + sc->sc_mtx = mtx; sc->sc_parent = parent; sc->sc_callback = callback; - error = usb2_com_attach_sub(sc); + error = usb2_com_attach_tty(sc); if (error) { usb2_com_detach(ssc, sc - n, n); usb2_com_units_free(root_unit + n, sub_units - n); - break; + return (error); } sc->sc_flag |= UCOM_FLAG_ATTACHED; } - return (error); + return (0); } -/* NOTE: the following function will do nothing if +/* + * NOTE: the following function will do nothing if * the structure pointed to by "ssc" and "sc" is zero. */ void @@ -276,12 +274,12 @@ { uint32_t n; - usb2_proc_drain(&ssc->sc_config_td); + usb2_proc_drain(&ssc->sc_tq); - for (n = 0; n < sub_units; n++, sc++) { + for (n = 0; n != sub_units; n++, sc++) { if (sc->sc_flag & UCOM_FLAG_ATTACHED) { - usb2_com_detach_sub(sc); + usb2_com_detach_tty(sc); usb2_com_units_free(sc->sc_unit, 1); @@ -289,18 +287,17 @@ sc->sc_flag &= ~UCOM_FLAG_ATTACHED; } } - usb2_proc_unsetup(&ssc->sc_config_td); + usb2_proc_free(&ssc->sc_tq); } static int -usb2_com_attach_sub(struct usb2_com_softc *sc) +usb2_com_attach_tty(struct usb2_com_softc *sc) { struct tty *tp; int error = 0; - uint8_t n; char buf[32]; /* temporary TTY device name buffer */ - tp = tty_alloc(&usb2_com_class, sc, sc->sc_parent_mtx); + tp = tty_alloc(&usb2_com_class, sc, sc->sc_mtx); if (tp == NULL) { error = ENOMEM; goto done; @@ -327,45 +324,12 @@ DPRINTF("ttycreate: %s\n", buf); usb2_cv_init(&sc->sc_cv, "usb2_com"); - /* - * Set all function callback pointers for deferred COM - * operations: - */ - for (n = 0; n != 2; n++) { - sc->sc_cmds[(2*USB_COM_CFG_START_TRANSFERS) + n].hdr.pm_callback = - &usb2_com_cfg_start_transfers; - sc->sc_cmds[(2*USB_COM_CFG_OPEN) + n].hdr.pm_callback = - &usb2_com_cfg_open; - sc->sc_cmds[(2*USB_COM_CFG_CLOSE) + n].hdr.pm_callback = - &usb2_com_cfg_close; - sc->sc_cmds[(2*USB_COM_CFG_BREAK_ON) + n].hdr.pm_callback = - &usb2_com_cfg_break_on; - sc->sc_cmds[(2*USB_COM_CFG_BREAK_OFF) + n].hdr.pm_callback = - &usb2_com_cfg_break_off; - sc->sc_cmds[(2*USB_COM_CFG_DTR_ON) + n].hdr.pm_callback = - &usb2_com_cfg_dtr_on; - sc->sc_cmds[(2*USB_COM_CFG_DTR_OFF) + n].hdr.pm_callback = - &usb2_com_cfg_dtr_off; - sc->sc_cmds[(2*USB_COM_CFG_RTS_ON) + n].hdr.pm_callback = - &usb2_com_cfg_rts_on; - sc->sc_cmds[(2*USB_COM_CFG_RTS_OFF) + n].hdr.pm_callback = - &usb2_com_cfg_rts_off; - sc->sc_cmds[(2*USB_COM_CFG_STATUS_CHANGE) + n].hdr.pm_callback = - &usb2_com_cfg_status_change; - sc->sc_cmds[(2*USB_COM_CFG_PARAM) + n].hdr.pm_callback = - &usb2_com_cfg_param; - } - - /* initialise all callback pointer arguments */ - for (n = 0; n != (2*USB_COM_CFG_MAX); n++) { - sc->sc_cmds[n].cc_softc = sc; - } done: return (error); } static void -usb2_com_detach_sub(struct usb2_com_softc *sc) +usb2_com_detach_tty(struct usb2_com_softc *sc) { struct tty *tp = sc->sc_tty; >>> TRUNCATED FOR MAIL (1000 lines) <<< From weongyo at FreeBSD.org Mon Feb 2 18:27:35 2009 From: weongyo at FreeBSD.org (Weongyo Jeong) Date: Mon Feb 2 18:27:42 2009 Subject: PERFORCE change 157073 for review Message-ID: <200902030227.n132RWkU025947@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157073 Change 157073 by weongyo@weongyo_ws on 2009/02/03 02:27:17 enable the background scan and looks it works without problems. Affected files ... .. //depot/projects/vap/sys/dev/usb/if_uath.c#11 edit Differences ... ==== //depot/projects/vap/sys/dev/usb/if_uath.c#11 (text+ko) ==== @@ -425,7 +425,8 @@ IEEE80211_C_TXPMGT | /* tx power management */ IEEE80211_C_SHPREAMBLE | /* short preamble supported */ IEEE80211_C_SHSLOT | /* short slot time supported */ - IEEE80211_C_WPA; /* 802.11i */ + IEEE80211_C_WPA | /* 802.11i */ + IEEE80211_C_BGSCAN; /* capable of bg scanning */ /* put a regulatory domain to reveal informations. */ uath_regdomain = sc->sc_devcap.regDomain; From hselasky at FreeBSD.org Tue Feb 3 11:20:44 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Feb 3 11:20:50 2009 Subject: PERFORCE change 157100 for review Message-ID: <200902031920.n13JKgk5066026@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157100 Change 157100 by hselasky@hselasky_laptop001 on 2009/02/03 19:19:59 Integrate Andrew Thompsons USB Ethernet patches which basically are about factoring out common code into the USB ethernet module ++ There should be no functional changes to the USB ethernet drivers. Cleanup CDC-Ethernet driver. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_aue2.c#19 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_auereg.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axe2.c#19 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axereg.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdce2.c#17 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdcereg.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cue2.c#18 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cuereg.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kue2.c#18 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kuefw.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kuereg.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_rue2.c#18 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_ruereg.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udav2.c#18 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udavreg.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.c#7 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.h#7 edit .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_cdc.h#7 edit .. //depot/projects/usb/src/sys/dev/usb2/template/usb2_template_cdce.c#10 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_aue2.c#19 (text+ko) ==== @@ -2,6 +2,9 @@ * Copyright (c) 1997, 1998, 1999, 2000 * Bill Paul . All rights reserved. * + * Copyright (c) 2006 + * Alfred Perlstein . All rights reserved. + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -40,6 +43,9 @@ * Written by Bill Paul * Electrical Engineering Department * Columbia University, New York City + * + * SMP locking by Alfred Perlstein . + * RED Inc. */ /* @@ -58,29 +64,20 @@ * the controller uses an external PHY chip, it's possible that board * designers might simply choose a 10Mbps PHY. * - * Registers are accessed using usb2_do_request(). Packet transfers are - * done using usb2_transfer() and friends. + * Registers are accessed using usb2_ether_do_request(). Packet + * transfers are done using usb2_transfer() and friends. */ -/* - * NOTE: all function names beginning like "aue_cfg_" can only - * be called from within the config thread function ! - */ - #include #include #include #include -#define usb2_config_td_cc usb2_ether_cc -#define usb2_config_td_softc aue_softc - #define USB_DEBUG_VAR aue_debug #include #include #include -#include #include #include #include @@ -89,11 +86,6 @@ #include #include -MODULE_DEPEND(aue, usb2_ethernet, 1, 1, 1); -MODULE_DEPEND(aue, usb2_core, 1, 1, 1); -MODULE_DEPEND(aue, ether, 1, 1, 1); -MODULE_DEPEND(aue, miibus, 1, 1, 1); - #if USB_DEBUG static int aue_debug = 0; @@ -106,74 +98,74 @@ * Various supported device vendors/products. */ static const struct usb2_device_id aue_devs[] = { - {USB_VPI(USB_VENDOR_3COM, USB_PRODUCT_3COM_3C460B, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_DSB650TX_PNA, 0)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_UFE1000, AUE_FLAG_LSYS)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX10, 0)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX1, AUE_FLAG_PNA | AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX2, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX4, AUE_FLAG_PNA)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX5, AUE_FLAG_PNA)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX6, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX7, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX8, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX9, AUE_FLAG_PNA)}, - {USB_VPI(USB_VENDOR_ACCTON, USB_PRODUCT_ACCTON_SS1001, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ACCTON, USB_PRODUCT_ACCTON_USB320_EC, 0)}, - {USB_VPI(USB_VENDOR_ADMTEK, USB_PRODUCT_ADMTEK_PEGASUSII_2, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ADMTEK, USB_PRODUCT_ADMTEK_PEGASUSII_3, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ADMTEK, USB_PRODUCT_ADMTEK_PEGASUSII_4, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ADMTEK, USB_PRODUCT_ADMTEK_PEGASUSII, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ADMTEK, USB_PRODUCT_ADMTEK_PEGASUS, AUE_FLAG_PNA | AUE_FLAG_DUAL_PHY)}, - {USB_VPI(USB_VENDOR_AEI, USB_PRODUCT_AEI_FASTETHERNET, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ALLIEDTELESYN, USB_PRODUCT_ALLIEDTELESYN_ATUSB100, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ATEN, USB_PRODUCT_ATEN_UC110T, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_USB2LAN, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USB100, 0)}, - {USB_VPI(USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USBE100, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USBEL100, 0)}, - {USB_VPI(USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USBLP100, AUE_FLAG_PNA)}, - {USB_VPI(USB_VENDOR_COREGA, USB_PRODUCT_COREGA_FETHER_USB_TXS, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_COREGA, USB_PRODUCT_COREGA_FETHER_USB_TX, 0)}, - {USB_VPI(USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX1, AUE_FLAG_LSYS)}, - {USB_VPI(USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX2, AUE_FLAG_LSYS | AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX3, AUE_FLAG_LSYS | AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX4, AUE_FLAG_LSYS | AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX_PNA, AUE_FLAG_PNA)}, - {USB_VPI(USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX, AUE_FLAG_LSYS)}, - {USB_VPI(USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650, AUE_FLAG_LSYS)}, - {USB_VPI(USB_VENDOR_ELCON, USB_PRODUCT_ELCON_PLAN, AUE_FLAG_PNA | AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSB20, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBLTX, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX0, 0)}, - {USB_VPI(USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX1, AUE_FLAG_LSYS)}, - {USB_VPI(USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX2, 0)}, - {USB_VPI(USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX3, AUE_FLAG_LSYS)}, - {USB_VPI(USB_VENDOR_ELSA, USB_PRODUCT_ELSA_USB2ETHERNET, 0)}, - {USB_VPI(USB_VENDOR_GIGABYTE, USB_PRODUCT_GIGABYTE_GNBR402W, 0)}, - {USB_VPI(USB_VENDOR_HAWKING, USB_PRODUCT_HAWKING_UF100, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_HN210E, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_IODATA, USB_PRODUCT_IODATA_USBETTXS, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_IODATA, USB_PRODUCT_IODATA_USBETTX, 0)}, - {USB_VPI(USB_VENDOR_KINGSTON, USB_PRODUCT_KINGSTON_KNU101TX, 0)}, - {USB_VPI(USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB100H1, AUE_FLAG_LSYS | AUE_FLAG_PNA)}, - {USB_VPI(USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB100TX, AUE_FLAG_LSYS)}, - {USB_VPI(USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10TA, AUE_FLAG_LSYS)}, - {USB_VPI(USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10TX1, AUE_FLAG_LSYS | AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10TX2, AUE_FLAG_LSYS | AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10T, AUE_FLAG_LSYS)}, - {USB_VPI(USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUA2TX5, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUATX1, 0)}, - {USB_VPI(USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUATX5, 0)}, - {USB_VPI(USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_MN110, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_NETGEAR, USB_PRODUCT_NETGEAR_FA101, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_SIEMENS, USB_PRODUCT_SIEMENS_SPEEDSTREAM, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_SIIG2, USB_PRODUCT_SIIG2_USBTOETHER, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_SMARTBRIDGES, USB_PRODUCT_SMARTBRIDGES_SMARTNIC, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_SMC, USB_PRODUCT_SMC_2202USB, 0)}, - {USB_VPI(USB_VENDOR_SMC, USB_PRODUCT_SMC_2206USB, AUE_FLAG_PII)}, - {USB_VPI(USB_VENDOR_SOHOWARE, USB_PRODUCT_SOHOWARE_NUB100, 0)}, - {USB_VPI(USB_VENDOR_SOHOWARE, USB_PRODUCT_SOHOWARE_NUB110, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_3COM, USB_PRODUCT_3COM_3C460B, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_DSB650TX_PNA, 0)}, + {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_UFE1000, AUE_FLAG_LSYS)}, + {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX10, 0)}, + {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX1, AUE_FLAG_PNA | AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX2, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX4, AUE_FLAG_PNA)}, + {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX5, AUE_FLAG_PNA)}, + {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX6, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX7, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX8, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_XX9, AUE_FLAG_PNA)}, + {USB_VPI(USB_VENDOR_ACCTON, USB_PRODUCT_ACCTON_SS1001, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ACCTON, USB_PRODUCT_ACCTON_USB320_EC, 0)}, + {USB_VPI(USB_VENDOR_ADMTEK, USB_PRODUCT_ADMTEK_PEGASUSII_2, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ADMTEK, USB_PRODUCT_ADMTEK_PEGASUSII_3, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ADMTEK, USB_PRODUCT_ADMTEK_PEGASUSII_4, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ADMTEK, USB_PRODUCT_ADMTEK_PEGASUSII, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ADMTEK, USB_PRODUCT_ADMTEK_PEGASUS, AUE_FLAG_PNA | AUE_FLAG_DUAL_PHY)}, + {USB_VPI(USB_VENDOR_AEI, USB_PRODUCT_AEI_FASTETHERNET, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ALLIEDTELESYN, USB_PRODUCT_ALLIEDTELESYN_ATUSB100, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ATEN, USB_PRODUCT_ATEN_UC110T, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_USB2LAN, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USB100, 0)}, + {USB_VPI(USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USBE100, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USBEL100, 0)}, + {USB_VPI(USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USBLP100, AUE_FLAG_PNA)}, + {USB_VPI(USB_VENDOR_COREGA, USB_PRODUCT_COREGA_FETHER_USB_TXS, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_COREGA, USB_PRODUCT_COREGA_FETHER_USB_TX, 0)}, + {USB_VPI(USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX1, AUE_FLAG_LSYS)}, + {USB_VPI(USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX2, AUE_FLAG_LSYS | AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX3, AUE_FLAG_LSYS | AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX4, AUE_FLAG_LSYS | AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX_PNA, AUE_FLAG_PNA)}, + {USB_VPI(USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650TX, AUE_FLAG_LSYS)}, + {USB_VPI(USB_VENDOR_DLINK, USB_PRODUCT_DLINK_DSB650, AUE_FLAG_LSYS)}, + {USB_VPI(USB_VENDOR_ELCON, USB_PRODUCT_ELCON_PLAN, AUE_FLAG_PNA | AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSB20, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBLTX, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX0, 0)}, + {USB_VPI(USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX1, AUE_FLAG_LSYS)}, + {USB_VPI(USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX2, 0)}, + {USB_VPI(USB_VENDOR_ELECOM, USB_PRODUCT_ELECOM_LDUSBTX3, AUE_FLAG_LSYS)}, + {USB_VPI(USB_VENDOR_ELSA, USB_PRODUCT_ELSA_USB2ETHERNET, 0)}, + {USB_VPI(USB_VENDOR_GIGABYTE, USB_PRODUCT_GIGABYTE_GNBR402W, 0)}, + {USB_VPI(USB_VENDOR_HAWKING, USB_PRODUCT_HAWKING_UF100, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_HN210E, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_IODATA, USB_PRODUCT_IODATA_USBETTXS, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_IODATA, USB_PRODUCT_IODATA_USBETTX, 0)}, + {USB_VPI(USB_VENDOR_KINGSTON, USB_PRODUCT_KINGSTON_KNU101TX, 0)}, + {USB_VPI(USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB100H1, AUE_FLAG_LSYS | AUE_FLAG_PNA)}, + {USB_VPI(USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB100TX, AUE_FLAG_LSYS)}, + {USB_VPI(USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10TA, AUE_FLAG_LSYS)}, + {USB_VPI(USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10TX1, AUE_FLAG_LSYS | AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10TX2, AUE_FLAG_LSYS | AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_LINKSYS, USB_PRODUCT_LINKSYS_USB10T, AUE_FLAG_LSYS)}, + {USB_VPI(USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUA2TX5, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUATX1, 0)}, + {USB_VPI(USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUATX5, 0)}, + {USB_VPI(USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_MN110, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_NETGEAR, USB_PRODUCT_NETGEAR_FA101, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_SIEMENS, USB_PRODUCT_SIEMENS_SPEEDSTREAM, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_SIIG2, USB_PRODUCT_SIIG2_USBTOETHER, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_SMARTBRIDGES, USB_PRODUCT_SMARTBRIDGES_SMARTNIC, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_SMC, USB_PRODUCT_SMC_2202USB, 0)}, + {USB_VPI(USB_VENDOR_SMC, USB_PRODUCT_SMC_2206USB, AUE_FLAG_PII)}, + {USB_VPI(USB_VENDOR_SOHOWARE, USB_PRODUCT_SOHOWARE_NUB100, 0)}, + {USB_VPI(USB_VENDOR_SOHOWARE, USB_PRODUCT_SOHOWARE_NUB110, AUE_FLAG_PII)}, }; /* prototypes */ @@ -182,6 +174,9 @@ static device_attach_t aue_attach; static device_detach_t aue_detach; static device_shutdown_t aue_shutdown; +static miibus_readreg_t aue_miibus_readreg; +static miibus_writereg_t aue_miibus_writereg; +static miibus_statchg_t aue_miibus_statchg; static usb2_callback_t aue_intr_clear_stall_callback; static usb2_callback_t aue_intr_callback; @@ -190,41 +185,27 @@ static usb2_callback_t aue_bulk_write_clear_stall_callback; static usb2_callback_t aue_bulk_write_callback; -static void aue_cfg_do_request(struct aue_softc *, - struct usb2_device_request *, void *); -static uint8_t aue_cfg_csr_read_1(struct aue_softc *, uint16_t); -static uint16_t aue_cfg_csr_read_2(struct aue_softc *, uint16_t); -static void aue_cfg_csr_write_1(struct aue_softc *, uint16_t, uint8_t); -static void aue_cfg_csr_write_2(struct aue_softc *, uint16_t, uint16_t); -static void aue_cfg_eeprom_getword(struct aue_softc *, uint8_t, uint8_t *); -static void aue_cfg_read_eeprom(struct aue_softc *, uint8_t *, uint16_t, +static usb2_ether_fn_t aue_attach_post; +static usb2_ether_fn_t aue_init; +static usb2_ether_fn_t aue_stop; +static usb2_ether_fn_t aue_start; +static usb2_ether_fn_t aue_tick; +static usb2_ether_fn_t aue_setmulti; +static usb2_ether_fn_t aue_setpromisc; + +static uint8_t aue_csr_read_1(struct aue_softc *, uint16_t); +static uint16_t aue_csr_read_2(struct aue_softc *, uint16_t); +static void aue_csr_write_1(struct aue_softc *, uint16_t, uint8_t); +static void aue_csr_write_2(struct aue_softc *, uint16_t, uint16_t); +static void aue_eeprom_getword(struct aue_softc *, int, uint16_t *); +static void aue_read_eeprom(struct aue_softc *, uint8_t *, uint16_t, uint16_t); +static void aue_reset(struct aue_softc *); +static void aue_reset_pegasus_II(struct aue_softc *); -static miibus_readreg_t aue_cfg_miibus_readreg; -static miibus_writereg_t aue_cfg_miibus_writereg; -static miibus_statchg_t aue_cfg_miibus_statchg; +static int aue_ifmedia_upd(struct ifnet *); +static void aue_ifmedia_sts(struct ifnet *, struct ifmediareq *); -static usb2_config_td_command_t aue_cfg_setmulti; -static usb2_config_td_command_t aue_cfg_first_time_setup; -static usb2_config_td_command_t aue_config_copy; -static usb2_config_td_command_t aue_cfg_tick; -static usb2_config_td_command_t aue_cfg_pre_init; -static usb2_config_td_command_t aue_cfg_init; -static usb2_config_td_command_t aue_cfg_promisc_upd; -static usb2_config_td_command_t aue_cfg_ifmedia_upd; -static usb2_config_td_command_t aue_cfg_pre_stop; -static usb2_config_td_command_t aue_cfg_stop; - -static void aue_cfg_reset_pegasus_II(struct aue_softc *); -static void aue_cfg_reset(struct aue_softc *); -static void aue_start_cb(struct ifnet *); -static void aue_init_cb(void *); -static void aue_start_transfers(struct aue_softc *); -static int aue_ifmedia_upd_cb(struct ifnet *); -static void aue_ifmedia_sts_cb(struct ifnet *, struct ifmediareq *); -static int aue_ioctl_cb(struct ifnet *, u_long, caddr_t); -static void aue_watchdog(void *); - static const struct usb2_config aue_config[AUE_N_TRANSFER] = { [AUE_BULK_DT_WR] = { @@ -233,7 +214,7 @@ .direction = UE_DIR_OUT, .mh.bufsize = (MCLBYTES + 2), .mh.flags = {.pipe_bof = 1,.force_short_xfer = 1,}, - .mh.callback = &aue_bulk_write_callback, + .mh.callback = aue_bulk_write_callback, .mh.timeout = 10000, /* 10 seconds */ }, @@ -243,7 +224,7 @@ .direction = UE_DIR_IN, .mh.bufsize = (MCLBYTES + 4 + ETHER_CRC_LEN), .mh.flags = {.pipe_bof = 1,.short_xfer_ok = 1,}, - .mh.callback = &aue_bulk_read_callback, + .mh.callback = aue_bulk_read_callback, }, [AUE_BULK_CS_WR] = { @@ -252,7 +233,7 @@ .direction = UE_DIR_ANY, .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, - .mh.callback = &aue_bulk_write_clear_stall_callback, + .mh.callback = aue_bulk_write_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ .mh.interval = 50, /* 50ms */ }, @@ -263,7 +244,7 @@ .direction = UE_DIR_ANY, .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, - .mh.callback = &aue_bulk_read_clear_stall_callback, + .mh.callback = aue_bulk_read_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ .mh.interval = 50, /* 50ms */ }, @@ -274,7 +255,7 @@ .direction = UE_DIR_IN, .mh.flags = {.pipe_bof = 1,.short_xfer_ok = 1,}, .mh.bufsize = 0, /* use wMaxPacketSize */ - .mh.callback = &aue_intr_callback, + .mh.callback = aue_intr_callback, }, [AUE_INTR_CS_RD] = { @@ -283,7 +264,7 @@ .direction = UE_DIR_ANY, .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, - .mh.callback = &aue_intr_clear_stall_callback, + .mh.callback = aue_intr_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ .mh.interval = 50, /* 50ms */ }, @@ -301,9 +282,9 @@ DEVMETHOD(bus_driver_added, bus_generic_driver_added), /* MII interface */ - DEVMETHOD(miibus_readreg, aue_cfg_miibus_readreg), - DEVMETHOD(miibus_writereg, aue_cfg_miibus_writereg), - DEVMETHOD(miibus_statchg, aue_cfg_miibus_statchg), + DEVMETHOD(miibus_readreg, aue_miibus_readreg), + DEVMETHOD(miibus_writereg, aue_miibus_writereg), + DEVMETHOD(miibus_statchg, aue_miibus_statchg), {0, 0} }; @@ -318,44 +299,34 @@ DRIVER_MODULE(aue, ushub, aue_driver, aue_devclass, NULL, 0); DRIVER_MODULE(miibus, aue, miibus_driver, miibus_devclass, 0, 0); +MODULE_DEPEND(aue, usb2_ethernet, 1, 1, 1); +MODULE_DEPEND(aue, usb2_core, 1, 1, 1); +MODULE_DEPEND(aue, ether, 1, 1, 1); +MODULE_DEPEND(aue, miibus, 1, 1, 1); -static void -aue_cfg_do_request(struct aue_softc *sc, struct usb2_device_request *req, - void *data) -{ - uint16_t length; - usb2_error_t err; +static const struct usb2_ether_methods aue_ue_methods = { + .ue_attach_post = aue_attach_post, + .ue_start = aue_start, + .ue_init = aue_init, + .ue_stop = aue_stop, + .ue_tick = aue_tick, + .ue_setmulti = aue_setmulti, + .ue_setpromisc = aue_setpromisc, + .ue_mii_upd = aue_ifmedia_upd, + .ue_mii_sts = aue_ifmedia_sts, +}; - if (usb2_config_td_is_gone(&sc->sc_config_td)) { - goto error; - } - err = usb2_do_request_flags - (sc->sc_udev, &sc->sc_mtx, req, data, 0, NULL, 1000); +#define AUE_SETBIT(sc, reg, x) \ + aue_csr_write_1(sc, reg, aue_csr_read_1(sc, reg) | (x)) - if (err) { - - DPRINTF("device request failed, err=%s " - "(ignored)\n", usb2_errstr(err)); - -error: - length = UGETW(req->wLength); - - if ((req->bmRequestType & UT_READ) && length) { - bzero(data, length); - } - } -} - -#define AUE_CFG_SETBIT(sc, reg, x) \ - aue_cfg_csr_write_1(sc, reg, aue_cfg_csr_read_1(sc, reg) | (x)) - -#define AUE_CFG_CLRBIT(sc, reg, x) \ - aue_cfg_csr_write_1(sc, reg, aue_cfg_csr_read_1(sc, reg) & ~(x)) +#define AUE_CLRBIT(sc, reg, x) \ + aue_csr_write_1(sc, reg, aue_csr_read_1(sc, reg) & ~(x)) static uint8_t -aue_cfg_csr_read_1(struct aue_softc *sc, uint16_t reg) +aue_csr_read_1(struct aue_softc *sc, uint16_t reg) { struct usb2_device_request req; + usb2_error_t err; uint8_t val; req.bmRequestType = UT_READ_VENDOR_DEVICE; @@ -364,14 +335,17 @@ USETW(req.wIndex, reg); USETW(req.wLength, 1); - aue_cfg_do_request(sc, &req, &val); + err = usb2_ether_do_request(&sc->sc_ue, &req, &val, 1000); + if (err) + return (0); return (val); } static uint16_t -aue_cfg_csr_read_2(struct aue_softc *sc, uint16_t reg) +aue_csr_read_2(struct aue_softc *sc, uint16_t reg) { struct usb2_device_request req; + usb2_error_t err; uint16_t val; req.bmRequestType = UT_READ_VENDOR_DEVICE; @@ -380,12 +354,14 @@ USETW(req.wIndex, reg); USETW(req.wLength, 2); - aue_cfg_do_request(sc, &req, &val); + err = usb2_ether_do_request(&sc->sc_ue, &req, &val, 1000); + if (err) + return (0); return (le16toh(val)); } static void -aue_cfg_csr_write_1(struct aue_softc *sc, uint16_t reg, uint8_t val) +aue_csr_write_1(struct aue_softc *sc, uint16_t reg, uint8_t val) { struct usb2_device_request req; @@ -396,11 +372,13 @@ USETW(req.wIndex, reg); USETW(req.wLength, 1); - aue_cfg_do_request(sc, &req, &val); + if (usb2_ether_do_request(&sc->sc_ue, &req, &val, 1000)) { + /* error ignored */ + } } static void -aue_cfg_csr_write_2(struct aue_softc *sc, uint16_t reg, uint16_t val) +aue_csr_write_2(struct aue_softc *sc, uint16_t reg, uint16_t val) { struct usb2_device_request req; @@ -412,197 +390,149 @@ val = htole16(val); - aue_cfg_do_request(sc, &req, &val); + if (usb2_ether_do_request(&sc->sc_ue, &req, &val, 1000)) { + /* error ignored */ + } } /* * Read a word of data stored in the EEPROM at address 'addr.' */ static void -aue_cfg_eeprom_getword(struct aue_softc *sc, uint8_t addr, - uint8_t *dest) +aue_eeprom_getword(struct aue_softc *sc, int addr, uint16_t *dest) { - uint16_t i; + int i; + uint16_t word = 0; - aue_cfg_csr_write_1(sc, AUE_EE_REG, addr); - aue_cfg_csr_write_1(sc, AUE_EE_CTL, AUE_EECTL_READ); + aue_csr_write_1(sc, AUE_EE_REG, addr); + aue_csr_write_1(sc, AUE_EE_CTL, AUE_EECTL_READ); - for (i = 0;; i++) { - - if (i < AUE_TIMEOUT) { - - if (aue_cfg_csr_read_1(sc, AUE_EE_CTL) & AUE_EECTL_DONE) { - break; - } - if (usb2_config_td_sleep(&sc->sc_config_td, hz / 100)) { - break; - } - } else { - DPRINTF("EEPROM read timed out!\n"); + for (i = 0; i != AUE_TIMEOUT; i++) { + if (aue_csr_read_1(sc, AUE_EE_CTL) & AUE_EECTL_DONE) break; - } } - i = aue_cfg_csr_read_2(sc, AUE_EE_DATA); + if (i == AUE_TIMEOUT) + device_printf(sc->sc_ue.ue_dev, "EEPROM read timed out\n"); - dest[0] = (i & 0xFF); - dest[1] = (i >> 8); + word = aue_csr_read_2(sc, AUE_EE_DATA); + *dest = word; } /* * Read a sequence of words from the EEPROM. */ static void -aue_cfg_read_eeprom(struct aue_softc *sc, uint8_t *dest, +aue_read_eeprom(struct aue_softc *sc, uint8_t *dest, uint16_t off, uint16_t len) { - uint16_t i; + uint16_t *ptr = (uint16_t *)dest; + int i; - for (i = 0; i < len; i++) { - aue_cfg_eeprom_getword(sc, off + i, dest + (i * 2)); - } + for (i = 0; i != len; i++, ptr++) + aue_eeprom_getword(sc, off + i, ptr); } static int -aue_cfg_miibus_readreg(device_t dev, int phy, int reg) +aue_miibus_readreg(device_t dev, int phy, int reg) { struct aue_softc *sc = device_get_softc(dev); - uint16_t i; - uint8_t do_unlock; + int i, locked; + uint16_t val = 0; - /* avoid recursive locking */ - if (mtx_owned(&sc->sc_mtx)) { - do_unlock = 0; - } else { - mtx_lock(&sc->sc_mtx); - do_unlock = 1; - } + locked = mtx_owned(&sc->sc_mtx); + if (!locked) + AUE_LOCK(sc); /* - * The Am79C901 HomePNA PHY actually contains - * two transceivers: a 1Mbps HomePNA PHY and a - * 10Mbps full/half duplex ethernet PHY with - * NWAY autoneg. However in the ADMtek adapter, - * only the 1Mbps PHY is actually connected to - * anything, so we ignore the 10Mbps one. It - * happens to be configured for MII address 3, - * so we filter that out. + * The Am79C901 HomePNA PHY actually contains two transceivers: a 1Mbps + * HomePNA PHY and a 10Mbps full/half duplex ethernet PHY with NWAY + * autoneg. However in the ADMtek adapter, only the 1Mbps PHY is + * actually connected to anything, so we ignore the 10Mbps one. It + * happens to be configured for MII address 3, so we filter that out. */ if (sc->sc_flags & AUE_FLAG_DUAL_PHY) { - - if (phy == 3) { - i = 0; + if (phy == 3) goto done; - } #if 0 - if (phy != 1) { - i = 0; + if (phy != 1) goto done; - } #endif } - aue_cfg_csr_write_1(sc, AUE_PHY_ADDR, phy); - aue_cfg_csr_write_1(sc, AUE_PHY_CTL, reg | AUE_PHYCTL_READ); + aue_csr_write_1(sc, AUE_PHY_ADDR, phy); + aue_csr_write_1(sc, AUE_PHY_CTL, reg | AUE_PHYCTL_READ); - for (i = 0;; i++) { - - if (i < AUE_TIMEOUT) { - - if (aue_cfg_csr_read_1(sc, AUE_PHY_CTL) & AUE_PHYCTL_DONE) { - break; - } - if (usb2_config_td_sleep(&sc->sc_config_td, hz / 100)) { - break; - } - } else { - DPRINTF("MII read timed out\n"); + for (i = 0; i != AUE_TIMEOUT; i++) { + if (aue_csr_read_1(sc, AUE_PHY_CTL) & AUE_PHYCTL_DONE) break; - } } - i = aue_cfg_csr_read_2(sc, AUE_PHY_DATA); + if (i == AUE_TIMEOUT) + device_printf(sc->sc_ue.ue_dev, "MII read timed out\n"); + + val = aue_csr_read_2(sc, AUE_PHY_DATA); done: - if (do_unlock) { - mtx_unlock(&sc->sc_mtx); - } - return (i); + if (!locked) + AUE_UNLOCK(sc); + return (val); } static int -aue_cfg_miibus_writereg(device_t dev, int phy, int reg, int data) +aue_miibus_writereg(device_t dev, int phy, int reg, int data) { struct aue_softc *sc = device_get_softc(dev); - uint16_t i; - uint8_t do_unlock; + int i; + int locked; - if (phy == 3) { + if (phy == 3) return (0); - } - /* avoid recursive locking */ - if (mtx_owned(&sc->sc_mtx)) { - do_unlock = 0; - } else { - mtx_lock(&sc->sc_mtx); - do_unlock = 1; - } - aue_cfg_csr_write_2(sc, AUE_PHY_DATA, data); - aue_cfg_csr_write_1(sc, AUE_PHY_ADDR, phy); - aue_cfg_csr_write_1(sc, AUE_PHY_CTL, reg | AUE_PHYCTL_WRITE); + locked = mtx_owned(&sc->sc_mtx); + if (!locked) + AUE_LOCK(sc); - for (i = 0;; i++) { + aue_csr_write_2(sc, AUE_PHY_DATA, data); + aue_csr_write_1(sc, AUE_PHY_ADDR, phy); + aue_csr_write_1(sc, AUE_PHY_CTL, reg | AUE_PHYCTL_WRITE); - if (i < AUE_TIMEOUT) { - if (aue_cfg_csr_read_1(sc, AUE_PHY_CTL) & AUE_PHYCTL_DONE) { - break; - } - if (usb2_config_td_sleep(&sc->sc_config_td, hz / 100)) { - break; - } - } else { - DPRINTF("MII write timed out\n"); + for (i = 0; i != AUE_TIMEOUT; i++) { + if (aue_csr_read_1(sc, AUE_PHY_CTL) & AUE_PHYCTL_DONE) break; - } } - if (do_unlock) { - mtx_unlock(&sc->sc_mtx); - } + if (i == AUE_TIMEOUT) + device_printf(sc->sc_ue.ue_dev, "MII read timed out\n"); + + if (!locked) + AUE_UNLOCK(sc); return (0); } static void -aue_cfg_miibus_statchg(device_t dev) +aue_miibus_statchg(device_t dev) { struct aue_softc *sc = device_get_softc(dev); struct mii_data *mii = GET_MII(sc); - uint8_t do_unlock; + int locked; - /* avoid recursive locking */ - if (mtx_owned(&sc->sc_mtx)) { - do_unlock = 0; - } else { - mtx_lock(&sc->sc_mtx); - do_unlock = 1; - } + locked = mtx_owned(&sc->sc_mtx); + if (!locked) + AUE_LOCK(sc); - AUE_CFG_CLRBIT(sc, AUE_CTL0, AUE_CTL0_RX_ENB | AUE_CTL0_TX_ENB); + AUE_CLRBIT(sc, AUE_CTL0, AUE_CTL0_RX_ENB | AUE_CTL0_TX_ENB); + if (IFM_SUBTYPE(mii->mii_media_active) == IFM_100_TX) + AUE_SETBIT(sc, AUE_CTL1, AUE_CTL1_SPEEDSEL); + else + AUE_CLRBIT(sc, AUE_CTL1, AUE_CTL1_SPEEDSEL); - if (IFM_SUBTYPE(mii->mii_media_active) == IFM_100_TX) { - AUE_CFG_SETBIT(sc, AUE_CTL1, AUE_CTL1_SPEEDSEL); - } else { - AUE_CFG_CLRBIT(sc, AUE_CTL1, AUE_CTL1_SPEEDSEL); - } + if ((mii->mii_media_active & IFM_GMASK) == IFM_FDX) + AUE_SETBIT(sc, AUE_CTL1, AUE_CTL1_DUPLEX); + else + AUE_CLRBIT(sc, AUE_CTL1, AUE_CTL1_DUPLEX); - if ((mii->mii_media_active & IFM_GMASK) == IFM_FDX) { - AUE_CFG_SETBIT(sc, AUE_CTL1, AUE_CTL1_DUPLEX); - } else { - AUE_CFG_CLRBIT(sc, AUE_CTL1, AUE_CTL1_DUPLEX); - } + AUE_SETBIT(sc, AUE_CTL0, AUE_CTL0_RX_ENB | AUE_CTL0_TX_ENB); - AUE_CFG_SETBIT(sc, AUE_CTL0, AUE_CTL0_RX_ENB | AUE_CTL0_TX_ENB); - /* * Set the LED modes on the LinkSys adapter. * This turns on the 'dual link LED' bin in the auxmode @@ -611,75 +541,78 @@ if (sc->sc_flags & AUE_FLAG_LSYS) { uint16_t auxmode; - auxmode = aue_cfg_miibus_readreg(dev, 0, 0x1b); - aue_cfg_miibus_writereg(dev, 0, 0x1b, auxmode | 0x04); + auxmode = aue_miibus_readreg(dev, 0, 0x1b); + aue_miibus_writereg(dev, 0, 0x1b, auxmode | 0x04); } - if (do_unlock) { - mtx_unlock(&sc->sc_mtx); - } + if (!locked) + AUE_UNLOCK(sc); } +#define AUE_BITS 6 static void -aue_cfg_setmulti(struct aue_softc *sc, - struct usb2_config_td_cc *cc, uint16_t refcount) +aue_setmulti(struct usb2_ether *ue) { - uint16_t i; + struct aue_softc *sc = usb2_ether_getsc(ue); + struct ifnet *ifp = usb2_ether_getifp(ue); + struct ifmultiaddr *ifma; + uint32_t h = 0; + uint32_t i; + uint8_t hashtbl[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + + AUE_LOCK_ASSERT(sc, MA_OWNED); - if ((cc->if_flags & IFF_ALLMULTI) || - (cc->if_flags & IFF_PROMISC)) { - AUE_CFG_SETBIT(sc, AUE_CTL0, AUE_CTL0_ALLMULTI); + if (ifp->if_flags & IFF_ALLMULTI || ifp->if_flags & IFF_PROMISC) { + AUE_SETBIT(sc, AUE_CTL0, AUE_CTL0_ALLMULTI); return; } - AUE_CFG_CLRBIT(sc, AUE_CTL0, AUE_CTL0_ALLMULTI); - /* clear existing ones */ - for (i = 0; i < 8; i++) { - aue_cfg_csr_write_1(sc, AUE_MAR0 + i, 0); - } + AUE_CLRBIT(sc, AUE_CTL0, AUE_CTL0_ALLMULTI); /* now program new ones */ - for (i = 0; i < 8; i++) { - aue_cfg_csr_write_1(sc, AUE_MAR0 + i, cc->if_hash[i]); + IF_ADDR_LOCK(ifp); + TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { + if (ifma->ifma_addr->sa_family != AF_LINK) + continue; + h = ether_crc32_le(LLADDR((struct sockaddr_dl *) + ifma->ifma_addr), ETHER_ADDR_LEN) & ((1 << AUE_BITS) - 1); + hashtbl[(h >> 3)] |= 1 << (h & 0x7); } + IF_ADDR_UNLOCK(ifp); + + /* write the hashtable */ + for (i = 0; i != 8; i++) + aue_csr_write_1(sc, AUE_MAR0 + i, hashtbl[i]); } static void -aue_cfg_reset_pegasus_II(struct aue_softc *sc) +aue_reset_pegasus_II(struct aue_softc *sc) { /* Magic constants taken from Linux driver. */ - aue_cfg_csr_write_1(sc, AUE_REG_1D, 0); - aue_cfg_csr_write_1(sc, AUE_REG_7B, 2); + aue_csr_write_1(sc, AUE_REG_1D, 0); + aue_csr_write_1(sc, AUE_REG_7B, 2); #if 0 if ((sc->sc_flags & HAS_HOME_PNA) && mii_mode) - aue_cfg_csr_write_1(sc, AUE_REG_81, 6); + aue_csr_write_1(sc, AUE_REG_81, 6); else #endif - aue_cfg_csr_write_1(sc, AUE_REG_81, 2); + aue_csr_write_1(sc, AUE_REG_81, 2); } static void -aue_cfg_reset(struct aue_softc *sc) +aue_reset(struct aue_softc *sc) { - uint16_t i; + int i; - AUE_CFG_SETBIT(sc, AUE_CTL1, AUE_CTL1_RESETMAC); + AUE_SETBIT(sc, AUE_CTL1, AUE_CTL1_RESETMAC); - for (i = 0;; i++) { - - if (i < AUE_TIMEOUT) { - - if (!(aue_cfg_csr_read_1(sc, AUE_CTL1) & AUE_CTL1_RESETMAC)) { - break; - } - if (usb2_config_td_sleep(&sc->sc_config_td, hz / 100)) { - break; - } - } else { - DPRINTF("reset timed out\n"); + for (i = 0; i != AUE_TIMEOUT; i++) { + if (!(aue_csr_read_1(sc, AUE_CTL1) & AUE_CTL1_RESETMAC)) break; - } } + if (i == AUE_TIMEOUT) + device_printf(sc->sc_ue.ue_dev, "reset failed\n"); + /* * The PHY(s) attached to the Pegasus chip may be held * in reset until we flip on the GPIO outputs. Make sure @@ -689,24 +622,32 @@ * Note: We force all of the GPIO pins low first, *then* * enable the ones we want. */ - aue_cfg_csr_write_1(sc, AUE_GPIO0, (AUE_GPIO_OUT0 | AUE_GPIO_SEL0)); - aue_cfg_csr_write_1(sc, AUE_GPIO0, (AUE_GPIO_OUT0 | AUE_GPIO_SEL0 | - AUE_GPIO_SEL1)); + aue_csr_write_1(sc, AUE_GPIO0, AUE_GPIO_OUT0|AUE_GPIO_SEL0); + aue_csr_write_1(sc, AUE_GPIO0, AUE_GPIO_OUT0|AUE_GPIO_SEL0|AUE_GPIO_SEL1); if (sc->sc_flags & AUE_FLAG_LSYS) { /* Grrr. LinkSys has to be different from everyone else. */ - aue_cfg_csr_write_1(sc, AUE_GPIO0, - (AUE_GPIO_SEL0 | AUE_GPIO_SEL1)); - aue_cfg_csr_write_1(sc, AUE_GPIO0, - (AUE_GPIO_SEL0 | - AUE_GPIO_SEL1 | - AUE_GPIO_OUT0)); + aue_csr_write_1(sc, AUE_GPIO0, AUE_GPIO_SEL0|AUE_GPIO_SEL1); + aue_csr_write_1(sc, AUE_GPIO0, + AUE_GPIO_SEL0|AUE_GPIO_SEL1|AUE_GPIO_OUT0); } - if (sc->sc_flags & AUE_FLAG_PII) { - aue_cfg_reset_pegasus_II(sc); - } - /* wait a little while for the chip to get its brains in order: */ - usb2_config_td_sleep(&sc->sc_config_td, hz / 100); + if (sc->sc_flags & AUE_FLAG_PII) + aue_reset_pegasus_II(sc); + + /* Wait a little while for the chip to get its brains in order: */ + usb2_pause_mtx(&sc->sc_mtx, hz / 100); +} + +static void +aue_attach_post(struct usb2_ether *ue) +{ + struct aue_softc *sc = usb2_ether_getsc(ue); + + /* reset the adapter */ + aue_reset(sc); + + /* get station address from the EEPROM */ + aue_read_eeprom(sc, ue->ue_eaddr, 0, 3); } /* @@ -717,26 +658,22 @@ { struct usb2_attach_arg *uaa = device_get_ivars(dev); - if (uaa->usb2_mode != USB_MODE_HOST) { + if (uaa->usb2_mode != USB_MODE_HOST) return (ENXIO); - } - if (uaa->info.bConfigIndex != AUE_CONFIG_INDEX) { + if (uaa->info.bConfigIndex != AUE_CONFIG_INDEX) return (ENXIO); - } - if (uaa->info.bIfaceIndex != AUE_IFACE_IDX) { + if (uaa->info.bIfaceIndex != AUE_IFACE_IDX) return (ENXIO); - } /* - * Belkin USB Bluetooth dongles of the F8T012xx1 model series - * conflict with older Belkin USB2LAN adapters. Skip if_aue if - * we detect one of the devices that look like Bluetooth - * adapters. + * Belkin USB Bluetooth dongles of the F8T012xx1 model series conflict + * with older Belkin USB2LAN adapters. Skip if_aue if we detect one of + * the devices that look like Bluetooth adapters. */ - if ((uaa->info.idVendor == USB_VENDOR_BELKIN) && - (uaa->info.idProduct == USB_PRODUCT_BELKIN_F8T012) && - (uaa->info.bcdDevice == 0x0413)) { + if (uaa->info.idVendor == USB_VENDOR_BELKIN && + uaa->info.idProduct == USB_PRODUCT_BELKIN_F8T012 && + uaa->info.bcdDevice == 0x0413) return (ENXIO); - } + return (usb2_lookup_id_by_uaa(aue_devs, sizeof(aue_devs), uaa)); } @@ -749,53 +686,40 @@ { struct usb2_attach_arg *uaa = device_get_ivars(dev); struct aue_softc *sc = device_get_softc(dev); - int32_t error; + struct usb2_ether *ue = &sc->sc_ue; uint8_t iface_index; + int error; - sc->sc_udev = uaa->device; - sc->sc_dev = dev; - sc->sc_unit = device_get_unit(dev); sc->sc_flags = USB_GET_DRIVER_INFO(uaa); if (uaa->info.bcdDevice >= 0x0201) { - sc->sc_flags |= AUE_FLAG_VER_2; /* XXX currently undocumented */ + /* XXX currently undocumented */ + sc->sc_flags |= AUE_FLAG_VER_2; } + device_set_usb2_desc(dev); + mtx_init(&sc->sc_mtx, device_get_nameunit(dev), NULL, MTX_DEF); - snprintf(sc->sc_name, sizeof(sc->sc_name), "%s", - device_get_nameunit(dev)); - >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Tue Feb 3 11:40:04 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Feb 3 11:40:11 2009 Subject: PERFORCE change 157103 for review Message-ID: <200902031940.n13Je2Cn067653@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157103 Change 157103 by hselasky@hselasky_laptop001 on 2009/02/03 19:39:10 Fix a compilation issue when INVARIANTS is enabled. Move some code around so that the softc pointer is always used and we don't get a variable not used compilation warning. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdce2.c#18 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdce2.c#18 (text+ko) ==== @@ -419,7 +419,6 @@ */ usb2_transfer_start(sc->sc_xfer[CDCE_BULK_B]); usb2_transfer_start(sc->sc_xfer[CDCE_BULK_A]); - usb2_transfer_start(sc->sc_xfer[CDCE_INTR]); } static void @@ -551,12 +550,18 @@ static void cdce_init(struct usb2_ether *ue) { + struct cdce_softc *sc = usb2_ether_getsc(ue); struct ifnet *ifp = usb2_ether_getifp(ue); CDCE_LOCK_ASSERT(sc, MA_OWNED); ifp->if_drv_flags |= IFF_DRV_RUNNING; + + /* + * start all the transfers + */ cdce_start(ue); + usb2_transfer_start(sc->sc_xfer[CDCE_INTR]); } static void From hselasky at FreeBSD.org Tue Feb 3 13:33:00 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Feb 3 13:33:07 2009 Subject: PERFORCE change 157112 for review Message-ID: <200902032132.n13LWwvm087839@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157112 Change 157112 by hselasky@hselasky_laptop001 on 2009/02/03 21:32:50 Fix regressions after patch from Andrew Thompson in the USB ethernet drivers. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_aue2.c#20 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axe2.c#20 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cue2.c#19 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kue2.c#19 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_rue2.c#19 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udav2.c#19 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.c#8 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.h#8 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_aue2.c#20 (text+ko) ==== @@ -410,6 +410,8 @@ for (i = 0; i != AUE_TIMEOUT; i++) { if (aue_csr_read_1(sc, AUE_EE_CTL) & AUE_EECTL_DONE) break; + if (usb2_ether_pause(&sc->sc_ue, hz / 100)) + break; } if (i == AUE_TIMEOUT) @@ -465,6 +467,8 @@ for (i = 0; i != AUE_TIMEOUT; i++) { if (aue_csr_read_1(sc, AUE_PHY_CTL) & AUE_PHYCTL_DONE) break; + if (usb2_ether_pause(&sc->sc_ue, hz / 100)) + break; } if (i == AUE_TIMEOUT) @@ -499,6 +503,8 @@ for (i = 0; i != AUE_TIMEOUT; i++) { if (aue_csr_read_1(sc, AUE_PHY_CTL) & AUE_PHYCTL_DONE) break; + if (usb2_ether_pause(&sc->sc_ue, hz / 100)) + break; } if (i == AUE_TIMEOUT) @@ -608,6 +614,8 @@ for (i = 0; i != AUE_TIMEOUT; i++) { if (!(aue_csr_read_1(sc, AUE_CTL1) & AUE_CTL1_RESETMAC)) break; + if (usb2_ether_pause(&sc->sc_ue, hz / 100)) + break; } if (i == AUE_TIMEOUT) @@ -635,7 +643,7 @@ aue_reset_pegasus_II(sc); /* Wait a little while for the chip to get its brains in order: */ - usb2_pause_mtx(&sc->sc_mtx, hz / 100); + usb2_ether_pause(&sc->sc_ue, hz / 100); } static void ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axe2.c#20 (text+ko) ==== @@ -357,7 +357,7 @@ val = htole16(val); if (sc->sc_phyno != phy) - return (val); + return (0); locked = mtx_owned(&sc->sc_mtx); if (!locked) @@ -530,35 +530,35 @@ } axe_cmd(sc, AXE_CMD_WRITE_GPIO, 0, 0x008c, NULL); - usb2_pause_mtx(&sc->sc_mtx, hz / 16); + usb2_ether_pause(&sc->sc_ue, hz / 16); if ((eeprom >> 8) != 0x01) { axe_cmd(sc, AXE_CMD_WRITE_GPIO, 0, 0x003c, NULL); - usb2_pause_mtx(&sc->sc_mtx, hz / 32); + usb2_ether_pause(&sc->sc_ue, hz / 32); axe_cmd(sc, AXE_CMD_WRITE_GPIO, 0, 0x001c, NULL); - usb2_pause_mtx(&sc->sc_mtx, hz / 3); + usb2_ether_pause(&sc->sc_ue, hz / 3); axe_cmd(sc, AXE_CMD_WRITE_GPIO, 0, 0x003c, NULL); - usb2_pause_mtx(&sc->sc_mtx, hz / 32); + usb2_ether_pause(&sc->sc_ue, hz / 32); } else { axe_cmd(sc, AXE_CMD_WRITE_GPIO, 0, 0x0004, NULL); - usb2_pause_mtx(&sc->sc_mtx, hz / 32); + usb2_ether_pause(&sc->sc_ue, hz / 32); axe_cmd(sc, AXE_CMD_WRITE_GPIO, 0, 0x000c, NULL); - usb2_pause_mtx(&sc->sc_mtx, hz / 32); + usb2_ether_pause(&sc->sc_ue, hz / 32); } /* soft reset */ axe_cmd(sc, AXE_CMD_SW_RESET_REG, 0, AXE_SW_RESET_CLEAR, NULL); - usb2_pause_mtx(&sc->sc_mtx, hz / 4); + usb2_ether_pause(&sc->sc_ue, hz / 4); axe_cmd(sc, AXE_CMD_SW_RESET_REG, 0, AXE_SW_RESET_PRL | AXE_178_RESET_MAGIC, NULL); - usb2_pause_mtx(&sc->sc_mtx, hz / 4); + usb2_ether_pause(&sc->sc_ue, hz / 4); /* Enable MII/GMII/RGMII interface to work with external PHY. */ axe_cmd(sc, AXE_CMD_SW_PHY_SELECT, 0, 0, NULL); - usb2_pause_mtx(&sc->sc_mtx, hz / 4); + usb2_ether_pause(&sc->sc_ue, hz / 4); axe_cmd(sc, AXE_CMD_RXCTL_WRITE, 0, 0, NULL); } @@ -567,22 +567,22 @@ axe_ax88772_init(struct axe_softc *sc) { axe_cmd(sc, AXE_CMD_WRITE_GPIO, 0, 0x00b0, NULL); - usb2_pause_mtx(&sc->sc_mtx, hz / 16); + usb2_ether_pause(&sc->sc_ue, hz / 16); if (sc->sc_phyno == AXE_772_PHY_NO_EPHY) { /* ask for the embedded PHY */ axe_cmd(sc, AXE_CMD_SW_PHY_SELECT, 0, 0x01, NULL); - usb2_pause_mtx(&sc->sc_mtx, hz / 64); + usb2_ether_pause(&sc->sc_ue, hz / 64); /* power down and reset state, pin reset state */ axe_cmd(sc, AXE_CMD_SW_RESET_REG, 0, AXE_SW_RESET_CLEAR, NULL); - usb2_pause_mtx(&sc->sc_mtx, hz / 16); + usb2_ether_pause(&sc->sc_ue, hz / 16); /* power down/reset state, pin operating state */ axe_cmd(sc, AXE_CMD_SW_RESET_REG, 0, AXE_SW_RESET_IPPD | AXE_SW_RESET_PRL, NULL); - usb2_pause_mtx(&sc->sc_mtx, hz / 4); + usb2_ether_pause(&sc->sc_ue, hz / 4); /* power up, reset */ axe_cmd(sc, AXE_CMD_SW_RESET_REG, 0, AXE_SW_RESET_PRL, NULL); @@ -593,14 +593,14 @@ } else { /* ask for external PHY */ axe_cmd(sc, AXE_CMD_SW_PHY_SELECT, 0, 0x00, NULL); - usb2_pause_mtx(&sc->sc_mtx, hz / 64); + usb2_ether_pause(&sc->sc_ue, hz / 64); /* power down internal PHY */ axe_cmd(sc, AXE_CMD_SW_RESET_REG, 0, AXE_SW_RESET_IPPD | AXE_SW_RESET_PRL, NULL); } - usb2_pause_mtx(&sc->sc_mtx, hz / 4); + usb2_ether_pause(&sc->sc_ue, hz / 4); axe_cmd(sc, AXE_CMD_RXCTL_WRITE, 0, 0, NULL); } @@ -618,7 +618,7 @@ DPRINTF("reset failed (ignored)\n"); /* Wait a little while for the chip to get its brains in order. */ - usb2_pause_mtx(&sc->sc_mtx, hz / 100); + usb2_ether_pause(&sc->sc_ue, hz / 100); } static void ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cue2.c#19 (text+ko) ==== @@ -370,7 +370,7 @@ /* * wait a little while for the chip to get its brains in order: */ - usb2_pause_mtx(&sc->sc_mtx, hz / 100); + usb2_ether_pause(&sc->sc_ue, hz / 100); } static void ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kue2.c#19 (text+ko) ==== @@ -427,7 +427,7 @@ DPRINTF("reset failed (ignored)\n"); /* wait a little while for the chip to get its brains in order */ - usb2_pause_mtx(&sc->sc_mtx, hz / 100); + usb2_ether_pause(&sc->sc_ue, hz / 100); } static void ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_rue2.c#19 (text+ko) ==== @@ -553,14 +553,15 @@ rue_csr_write_1(sc, RUE_CR, RUE_CR_SOFT_RST); for (i = 0; i != RUE_TIMEOUT; i++) { - usb2_pause_mtx(&sc->sc_mtx, hz / 1000); + if (usb2_ether_pause(&sc->sc_ue, hz / 1000)) + break; if (!(rue_csr_read_1(sc, RUE_CR) & RUE_CR_SOFT_RST)) break; } if (i == RUE_TIMEOUT) device_printf(sc->sc_ue.ue_dev, "reset never completed!\n"); - usb2_pause_mtx(&sc->sc_mtx, hz / 100); + usb2_ether_pause(&sc->sc_ue, hz / 100); } static void ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udav2.c#19 (text+ko) ==== @@ -488,10 +488,11 @@ for (i = 0; i < UDAV_TX_TIMEOUT; i++) { if (!(udav_csr_read1(sc, UDAV_NCR) & UDAV_NCR_RST)) break; - usb2_pause_mtx(&sc->sc_mtx, hz / 100); + if (usb2_ether_pause(&sc->sc_ue, hz / 100)) + break; } - usb2_pause_mtx(&sc->sc_mtx, hz / 100); + usb2_ether_pause(&sc->sc_ue, hz / 100); } #define UDAV_BITS 6 ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.c#8 (text+ko) ==== @@ -33,6 +33,7 @@ #include #include #include +#include #include @@ -57,8 +58,24 @@ static int ue_ifmedia_upd(struct ifnet *); static void ue_watchdog(void *); +/* + * Return values: + * 0: success + * Else: device has been detached + */ +uint8_t +usb2_ether_pause(struct usb2_ether *ue, unsigned int _ticks) +{ + if (usb2_proc_is_gone(&ue->ue_tq)) { + /* nothing to do */ + return (1); + } + usb2_pause_mtx(ue->ue_mtx, _ticks); + return (0); +} + static void -usb2_ether_queue_command(struct usb2_ether *ue, +ue_queue_command(struct usb2_ether *ue, usb2_proc_callback_t *fn, struct usb2_proc_msg *t0, struct usb2_proc_msg *t1) { @@ -136,9 +153,11 @@ } /* fork rest of the attach code */ - usb2_ether_queue_command(ue, ue_attach_post_task, + UE_LOCK(ue); + ue_queue_command(ue, ue_attach_post_task, &ue->ue_attach_task[0].hdr, &ue->ue_attach_task[1].hdr); + UE_UNLOCK(ue); error: return (error); @@ -154,6 +173,9 @@ int error; char num[14]; /* sufficient for 32 bits */ + /* first call driver's post attach routine */ + ue->ue_methods->ue_attach_post(ue); + UE_UNLOCK(ue); ue->ue_unit = alloc_unr(ueunit); @@ -183,8 +205,10 @@ if (ue->ue_methods->ue_mii_upd != NULL && ue->ue_methods->ue_mii_sts != NULL) { + mtx_lock(&Giant); /* device_xxx() depends on this */ error = mii_phy_probe(ue->ue_dev, &ue->ue_miibus, ue_ifmedia_upd, ue->ue_methods->ue_mii_sts); + mtx_unlock(&Giant); if (error) { device_printf(ue->ue_dev, "MII without any PHY\n"); goto error; @@ -208,7 +232,6 @@ error: free_unr(ueunit, ue->ue_unit); - usb2_proc_free(&ue->ue_tq); if (ue->ue_ifp != NULL) { if_free(ue->ue_ifp); ue->ue_ifp = NULL; @@ -239,8 +262,11 @@ usb2_callout_drain(&ue->ue_watchdog); /* detach miibus */ - if (ue->ue_miibus != NULL) + if (ue->ue_miibus != NULL) { + mtx_lock(&Giant); /* device_xxx() depends on this */ device_delete_child(ue->ue_dev, ue->ue_miibus); + mtx_unlock(&Giant); + } /* detach ethernet */ ether_ifdetach(ifp); @@ -273,7 +299,7 @@ UE_LOCK(ue); if (ifp->if_drv_flags & IFF_DRV_RUNNING) - usb2_ether_queue_command(ue, ue_stop_task, + ue_queue_command(ue, ue_stop_task, &ue->ue_start_stop_task[0].hdr, &ue->ue_start_stop_task[1].hdr); UE_UNLOCK(ue); @@ -317,7 +343,7 @@ struct usb2_ether *ue = arg; UE_LOCK(ue); - usb2_ether_queue_command(ue, ue_start_task, + ue_queue_command(ue, ue_start_task, &ue->ue_start_stop_task[0].hdr, &ue->ue_start_stop_task[1].hdr); UE_UNLOCK(ue); @@ -395,9 +421,11 @@ struct usb2_ether *ue = ifp->if_softc; /* Defer to process context */ - usb2_ether_queue_command(ue, ue_ifmedia_task, + UE_LOCK(ue); + ue_queue_command(ue, ue_ifmedia_task, &ue->ue_media_task[0].hdr, &ue->ue_media_task[1].hdr); + UE_UNLOCK(ue); return (0); } @@ -422,7 +450,7 @@ if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) return; - usb2_ether_queue_command(ue, ue_tick_task, + ue_queue_command(ue, ue_tick_task, &ue->ue_tick_task[0].hdr, &ue->ue_tick_task[1].hdr); @@ -456,15 +484,15 @@ UE_LOCK(ue); if (ifp->if_flags & IFF_UP) { if (ifp->if_drv_flags & IFF_DRV_RUNNING) - usb2_ether_queue_command(ue, ue_promisc_task, + ue_queue_command(ue, ue_promisc_task, &ue->ue_promisc_task[0].hdr, &ue->ue_promisc_task[1].hdr); else - usb2_ether_queue_command(ue, ue_start_task, + ue_queue_command(ue, ue_start_task, &ue->ue_start_stop_task[0].hdr, &ue->ue_start_stop_task[1].hdr); } else { - usb2_ether_queue_command(ue, ue_stop_task, + ue_queue_command(ue, ue_stop_task, &ue->ue_start_stop_task[0].hdr, &ue->ue_start_stop_task[1].hdr); } @@ -473,7 +501,7 @@ case SIOCADDMULTI: case SIOCDELMULTI: UE_LOCK(ue); - usb2_ether_queue_command(ue, ue_setmulti_task, + ue_queue_command(ue, ue_setmulti_task, &ue->ue_multi_task[0].hdr, &ue->ue_multi_task[1].hdr); UE_UNLOCK(ue); ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.h#8 (text+ko) ==== @@ -102,6 +102,7 @@ uint8_t ue_eaddr[ETHER_ADDR_LEN]; }; +uint8_t usb2_ether_pause(struct usb2_ether *, unsigned int); usb2_error_t usb2_ether_do_request(struct usb2_ether *, struct usb2_device_request *, void *, unsigned int timeout); @@ -111,10 +112,11 @@ int usb2_ether_ifattach(struct usb2_ether *); void usb2_ether_ifdetach(struct usb2_ether *); int usb2_ether_ioctl(struct ifnet *, u_long, caddr_t); -int usb2_ether_rxmbuf(struct usb2_ether *ue, struct mbuf *m, - unsigned int len); -int usb2_ether_rxbuf(struct usb2_ether *ue, struct usb2_page_cache *pc, - unsigned int offset, unsigned int len); +int usb2_ether_rxmbuf(struct usb2_ether *, struct mbuf *, + unsigned int); +int usb2_ether_rxbuf(struct usb2_ether *, + struct usb2_page_cache *, + unsigned int, unsigned int); void usb2_ether_rxflush(struct usb2_ether *); void usb2_ether_ifshutdown(struct usb2_ether *); uint8_t usb2_ether_is_gone(struct usb2_ether *); From marius at FreeBSD.org Tue Feb 3 13:41:16 2009 From: marius at FreeBSD.org (Marius Strobl) Date: Tue Feb 3 13:41:22 2009 Subject: PERFORCE change 157114 for review Message-ID: <200902032141.n13LfD1w088590@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157114 Change 157114 by marius@flak on 2009/02/03 21:40:36 Add glue for FreeBSD < 800016. Affected files ... .. //depot/projects/usiii/dev/cas/if_cas.c#2 edit .. //depot/projects/usiii/dev/cas/if_casvar.h#2 edit Differences ... ==== //depot/projects/usiii/dev/cas/if_cas.c#2 (text+ko) ==== @@ -812,8 +812,8 @@ sc->sc_rxcptr = 0; /* - * Initialize the receive descriptor rings. We leave the - * the second ring zeroed as we don't actually use it. + * Initialize the first receive descriptor ring. We leave + * the second one zeroed as we don't actually use it. */ for (i = 0; i < CAS_NRXDESC; i++) CAS_INIT_RXDESC(sc, i, i); @@ -1620,8 +1620,13 @@ refcount_acquire(&rxds->rxds_refcount); MEXTADD(m, (caddr_t)rxds->rxds_buf + CAS_GET(word2, CAS_RC2_HDR_OFF) * 256 + - ETHER_ALIGN, len, cas_free, sc, - (void *)(uintptr_t)idx, 0, EXT_NET_DRV); + ETHER_ALIGN, len, cas_free, +#if __FreeBSD_version < 800016 + rxds, +#else + sc, (void *)(uintptr_t)idx, +#endif + 0, EXT_NET_DRV); if ((m->m_flags & M_EXT) == 0) { m_freem(m); m = NULL; @@ -1663,8 +1668,13 @@ refcount_acquire(&rxds->rxds_refcount); MEXTADD(m, (caddr_t)rxds->rxds_buf + CAS_GET(word1, CAS_RC1_DATA_OFF) + - ETHER_ALIGN, len, cas_free, sc, - (void *)(uintptr_t)idx, 0, EXT_NET_DRV); + ETHER_ALIGN, len, cas_free, +#if __FreeBSD_version < 800016 + rxds, +#else + sc, (void *)(uintptr_t)idx, +#endif + 0, EXT_NET_DRV); if ((m->m_flags & M_EXT) == 0) { m_freem(m); m = NULL; @@ -1719,10 +1729,18 @@ cas_free(void *arg1, void *arg2) { struct cas_rxdsoft *rxds; - struct cas_softc *sc = arg1; - u_int idx = (uintptr_t)arg2; + struct cas_softc *sc; + u_int idx; +#if __FreeBSD_version < 800016 + rxds = arg2; + sc = rxds->rxds_sc; + idx = rxds->rxds_idx; +#else + sc = arg1; + idx = (uintptr_t)arg2; rxds = &sc->sc_rxdsoft[idx]; +#endif if (refcount_release(&rxds->rxds_refcount) == 0) return; @@ -1735,7 +1753,7 @@ cas_add_rxdesc(struct cas_softc *sc, u_int idx) { - CAS_INIT_RXDESC(sc, sc->sc_rxdptr, idx); + CAS_UPDATE_RXDESC(sc, sc->sc_rxdptr, idx); /* * Update the RX kick register. This register has to point to the ==== //depot/projects/usiii/dev/cas/if_casvar.h#2 (text+ko) ==== @@ -33,10 +33,6 @@ #ifndef _IF_CASVAR_H #define _IF_CASVAR_H -#include -#include -#include - /* * The page size is configurable, but needs to be at least 8k (the * default) in order to also support jumbo buffers. @@ -129,6 +125,10 @@ void *rxds_buf; /* receive buffer */ bus_dmamap_t rxds_dmamap; /* our DMA map */ bus_addr_t rxds_paddr; /* physical address of the segment */ +#if __FreeBSD_version < 800016 + struct cas_softc *rxds_sc; /* softc pointer */ + u_int rxds_idx; /* our index */ +#endif u_int rxds_refcount; /* hardware + mbuf references */ }; @@ -195,8 +195,8 @@ u_int sc_txnext; /* next ready TX descriptor */ u_int sc_txwin; /* TX desc. since last TX intr. */ - struct cas_txsq sc_txfreeq; /* free TX descsofts */ - struct cas_txsq sc_txdirtyq; /* dirty TX descsofts */ + struct cas_txsq sc_txfreeq; /* free software TX descriptors */ + struct cas_txsq sc_txdirtyq; /* dirty software TX descriptors */ u_int sc_rxcptr; /* next ready RX completion */ u_int sc_rxdptr; /* next ready RX descriptor */ @@ -228,18 +228,33 @@ #define CAS_CDSYNC(sc, ops) \ bus_dmamap_sync((sc)->sc_cdmatag, (sc)->sc_cddmamap, (ops)); +#define __CAS_UPDATE_RXDESC(rxd, rxds, s) \ +do { \ + \ + refcount_init(&(rxds)->rxds_refcount, 1); \ + (rxd)->cd_buf_ptr = htole64((rxds)->rxds_paddr); \ + KASSERT((s) < CAS_RD_BUF_INDEX_MASK >> CAS_RD_BUF_INDEX_SHFT, \ + ("%s: RX buffer index too large!", __func__)); \ + (rxd)->cd_flags = \ + htole64((uint64_t)((s) << CAS_RD_BUF_INDEX_SHFT)); \ +} while (0) + +#define CAS_UPDATE_RXDESC(sc, d, s) \ + __CAS_UPDATE_RXDESC(&(sc)->sc_rxdescs[(d)], \ + &(sc)->sc_rxdsoft[(s)], (s)) + +#if __FreeBSD_version < 800016 #define CAS_INIT_RXDESC(sc, d, s) \ do { \ - struct cas_rxdsoft *__rxds = &sc->sc_rxdsoft[(s)]; \ - struct cas_desc *__rxd = &sc->sc_rxdescs[(d)]; \ + struct cas_rxdsoft *__rxds = &(sc)->sc_rxdsoft[(s)]; \ \ - refcount_init(&__rxds->rxds_refcount, 1); \ - __rxd->cd_buf_ptr = htole64(__rxds->rxds_paddr); \ - KASSERT(s < CAS_RD_BUF_INDEX_MASK >> CAS_RD_BUF_INDEX_SHFT, \ - ("%s: RX buffer index too large!", __func__)); \ - __rxd->cd_flags = \ - htole64((uint64_t)(s << CAS_RD_BUF_INDEX_SHFT)); \ + __rxds->rxds_sc = (sc); \ + __rxds->rxds_idx = (s); \ + __CAS_UPDATE_RXDESC(&(sc)->sc_rxdescs[(d)], __rxds, (s)); \ } while (0) +#else +#define CAS_INIT_RXDESC(sc, d, s) CAS_UPDATE_RXDESC(sc, d, s) +#endif #define CAS_LOCK_INIT(_sc, _name) \ mtx_init(&(_sc)->sc_mtx, _name, MTX_NETWORK_LOCK, MTX_DEF) From rwatson at FreeBSD.org Tue Feb 3 14:37:12 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Tue Feb 3 14:37:19 2009 Subject: PERFORCE change 157118 for review Message-ID: <200902032237.n13MbB2g094399@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157118 Change 157118 by rwatson@rwatson_freebsd_capabilities on 2009/02/03 22:36:26 When running in capability mode, expose the __progname and environ symbols from rtld to the executing shared object, since we aren't using crt1.o for those objects. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#10 edit .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Symbol.map#1 add .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf/rtld.c#7 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#10 (text+ko) ==== @@ -1,5 +1,5 @@ # $FreeBSD$ -# $P4: //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#9 $ +# $P4: //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#10 $ WITHOUT_SSP= @@ -29,7 +29,7 @@ .if ${MK_SYMVER} == "yes" LIBCDIR= ${.CURDIR}/../../lib/libc VERSION_DEF= ${LIBCDIR}/Versions.def -SYMBOL_MAPS= ${.CURDIR}/../rtld-elf/Symbol.map +SYMBOL_MAPS= ${.CURDIR}/../rtld-elf/Symbol.map ${.CURDIR}/Symbol.map VERSION_MAP= Version.map LDFLAGS+= -Wl,--version-script=${VERSION_MAP} ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf/rtld.c#7 (text+ko) ==== @@ -184,6 +184,13 @@ #endif /* + * Global declarations normally provided by crt1. The dynamic linker is + * not built with crt1, so we have to provide them ourselves. + */ +char *__progname; +char **environ; + +/* * These are the functions the dynamic linker exports to application * programs. They are the only symbols the dynamic linker is willing * to export from itself. @@ -208,17 +215,14 @@ (func_ptr_type) &dl_iterate_phdr, (func_ptr_type) &_rtld_atfork_pre, (func_ptr_type) &_rtld_atfork_post, +#ifdef IN_RTLD_CAP + (func_ptr_type) &environ, + (func_ptr_type) &__progname, +#endif NULL }; /* - * Global declarations normally provided by crt1. The dynamic linker is - * not built with crt1, so we have to provide them ourselves. - */ -char *__progname; -char **environ; - -/* * Globals to control TLS allocation. */ size_t tls_last_offset; /* Static TLS offset of last module */ From weongyo at FreeBSD.org Tue Feb 3 18:42:22 2009 From: weongyo at FreeBSD.org (Weongyo Jeong) Date: Tue Feb 3 18:42:28 2009 Subject: PERFORCE change 157124 for review Message-ID: <200902040242.n142gKZt033347@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157124 Change 157124 by weongyo@weongyo_ws on 2009/02/04 02:41:35 don't need if_opackets++ at uath_raw_xmit() because the callback would update the value when the transmission completed. Affected files ... .. //depot/projects/vap/sys/dev/usb/if_uath.c#12 edit Differences ... ==== //depot/projects/vap/sys/dev/usb/if_uath.c#12 (text+ko) ==== @@ -2674,7 +2674,6 @@ } UATH_UNLOCK(sc); - ifp->if_opackets++; sc->sc_tx_timer = 5; return (0); } From imp at bsdimp.com Tue Feb 3 18:57:28 2009 From: imp at bsdimp.com (M. Warner Losh) Date: Tue Feb 3 18:57:34 2009 Subject: PERFORCE change 156942 for review In-Reply-To: <200901310425.n0V4Pbsb099265@repoman.freebsd.org> References: <200901310425.n0V4Pbsb099265@repoman.freebsd.org> Message-ID: <20090203.195643.-324790899.imp@bsdimp.com> In message: <200901310425.n0V4Pbsb099265@repoman.freebsd.org> Andrew Turner writes: : Get the S3c24x0 uart driver working on real hardware Cool! Warner From imp at bsdimp.com Tue Feb 3 19:03:20 2009 From: imp at bsdimp.com (M. Warner Losh) Date: Tue Feb 3 19:03:25 2009 Subject: PERFORCE change 156978 for review In-Reply-To: <2757071E-6E55-43F5-B298-408AFC6793C6@valka.is> References: <49850FB9.9040008@bluezbox.com> <200902011247.10404.hselasky@c2i.net> <2757071E-6E55-43F5-B298-408AFC6793C6@valka.is> Message-ID: <20090203.200051.-216598028.imp@bsdimp.com> In message: <2757071E-6E55-43F5-B298-408AFC6793C6@valka.is> Arnar Mar Sig writes: : On Feb 1, 2009, at 12:47 PM, Hans Petter Selasky wrote: : > On Sunday 01 February 2009, Oleksandr Tymoshenko wrote: : >> Arnar Mar Sig wrote: : >>> http://perforce.freebsd.org/chv.cgi?CH=156978 : >>> : >>> Change 156978 by antab@antab_farm on 2009/02/01 00:58:58 : >>> : >>> AVR32 support. The kernel boots on NGW100 but there is still alot : >>> of : >>> work to be done. At the moment it crashes somewhere in uma_startup3. : >> : >> That's just cool! :) Thanks a lot for your hard work. : > : > Just a small style nit: : > : > Use \t or TAB after "#define" instead of space. : Usually do, but some code is copied between terms and lost \t, coding : style is also not according style(9) but that will be fixes. : : > Looking forward to programming USB support for the AVR32. : Good, but i would like to get some clock framework in place before : doing any device driver, I really dislike the hardcoded clock speeds : that are used in in some at91 drivers. I'd love to see this to. They are only 'hard coded' in at91 drivers because of time pressures. Also, I'd move at91 devices to dev/atmel... warner From sson at FreeBSD.org Tue Feb 3 21:46:28 2009 From: sson at FreeBSD.org (Stacey Son) Date: Tue Feb 3 21:46:35 2009 Subject: PERFORCE change 157125 for review Message-ID: <200902040546.n145kQMW060158@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157125 Change 157125 by sson@sson_amd64 on 2009/02/04 05:46:22 Add support for automatic audit trail file expiration. Trails can expire and be removed based on the age of the trail, the total disk used by all the trails, or a combination of both. Expiration is specified by the "expire-after" parameter in audit_control(5). The "filesz" parameter in audit_control(5) value can now use the suffixes 'K' (Kilobytes), 'M' (Megabytes), and 'G' (Gigabytes). For example, "2M" can be used instead of "2097152" for the filesz value. Affected files ... .. //depot/projects/trustedbsd/openbsm/bin/audit/audit.8#14 edit .. //depot/projects/trustedbsd/openbsm/bin/audit/audit.c#14 edit .. //depot/projects/trustedbsd/openbsm/bin/auditd/audit_warn.c#11 edit .. //depot/projects/trustedbsd/openbsm/bin/auditd/auditd.c#43 edit .. //depot/projects/trustedbsd/openbsm/bin/auditd/auditd.h#13 edit .. //depot/projects/trustedbsd/openbsm/bsm/auditd_lib.h#4 edit .. //depot/projects/trustedbsd/openbsm/bsm/libbsm.h#42 edit .. //depot/projects/trustedbsd/openbsm/libauditd/auditd_lib.c#4 edit .. //depot/projects/trustedbsd/openbsm/libbsm/au_control.3#10 edit .. //depot/projects/trustedbsd/openbsm/libbsm/bsm_control.c#27 edit .. //depot/projects/trustedbsd/openbsm/man/audit_control.5#22 edit .. //depot/projects/trustedbsd/openbsm/man/auditon.2#15 edit .. //depot/projects/trustedbsd/openbsm/sys/bsm/audit.h#5 edit Differences ... ==== //depot/projects/trustedbsd/openbsm/bin/audit/audit.8#14 (text+ko) ==== @@ -1,4 +1,4 @@ -.\" Copyright (c) 2004 Apple Inc. +.\" Copyright (c) 2004-2009 Apple Inc. .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -25,9 +25,9 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $P4: //depot/projects/trustedbsd/openbsm/bin/audit/audit.8#13 $ +.\" $P4: //depot/projects/trustedbsd/openbsm/bin/audit/audit.8#14 $ .\" -.Dd December 11, 2008 +.Dd January 29, 2009 .Dt AUDIT 8 .Os .Sh NAME @@ -35,7 +35,7 @@ .Nd audit management utility .Sh SYNOPSIS .Nm -.Fl i | n | s | t +.Fl e | i | n | s | t .Sh DESCRIPTION The .Nm @@ -43,6 +43,10 @@ One of the following flags is required as an argument to .Nm : .Bl -tag -width indent +.It Fl e +Forces the audit system to immmediately removed audit log files that +meet the expiration criteria specified in the audit control file without +doing a log rotation. .It Fl i Initializes and starts auditing. This option is currently for Mac OS X only @@ -53,6 +57,8 @@ .It Fl n Forces the audit system to close the existing audit log file and rotate to a new log file in a location specified in the audit control file. +Also, audit log files that meet the expiration criteria specified in the +audit control file will be removed. .It Fl s Specifies that the audit system should [re]synchronize its configuration from the audit control file. ==== //depot/projects/trustedbsd/openbsm/bin/audit/audit.c#14 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2005-2008 Apple Inc. + * Copyright (c) 2005-2009 Apple Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,7 +26,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. * - * $P4: //depot/projects/trustedbsd/openbsm/bin/audit/audit.c#13 $ + * $P4: //depot/projects/trustedbsd/openbsm/bin/audit/audit.c#14 $ */ /* * Program to trigger the audit daemon with a message that is either: @@ -68,12 +68,15 @@ #include "auditd_control.h" /* - * XXX the following is temporary until this can be added to the kernel + * XXX The following are temporary until these can be added to the kernel * audit.h header. */ #ifndef AUDIT_TRIGGER_INITIALIZE #define AUDIT_TRIGGER_INITIALIZE 7 #endif +#ifndef AUDIT_TRIGGER_EXPIRE_TRAILS +#define AUDIT_TRIGGER_EXPIRE_TRAILS 8 +#endif static int send_trigger(unsigned int trigger) @@ -125,7 +128,7 @@ usage(void) { - (void)fprintf(stderr, "Usage: audit -i | -n | -s | -t \n"); + (void)fprintf(stderr, "Usage: audit -e | -i | -n | -s | -t \n"); exit(-1); } @@ -141,9 +144,13 @@ if (argc != 2) usage(); - while ((ch = getopt(argc, argv, "inst")) != -1) { + while ((ch = getopt(argc, argv, "einst")) != -1) { switch(ch) { + case 'e': + trigger = AUDIT_TRIGGER_EXPIRE_TRAILS; + break; + case 'i': trigger = AUDIT_TRIGGER_INITIALIZE; break; ==== //depot/projects/trustedbsd/openbsm/bin/auditd/audit_warn.c#11 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2005 Apple Inc. + * Copyright (c) 2005-2009 Apple Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,7 +26,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. * - * $P4: //depot/projects/trustedbsd/openbsm/bin/auditd/audit_warn.c#10 $ + * $P4: //depot/projects/trustedbsd/openbsm/bin/auditd/audit_warn.c#11 $ */ #include @@ -236,3 +236,18 @@ return (auditwarnlog(args)); } + +/* + * Indicates that this trail file has expired and was removed. + */ +int +audit_warn_expired(char *filename) +{ + char *args[3]; + + args[0] = EXPIRED_WARN; + args[1] = filename; + args[2] = NULL; + + return (auditwarnlog(args)); +} ==== //depot/projects/trustedbsd/openbsm/bin/auditd/auditd.c#43 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2004-2008 Apple Inc. + * Copyright (c) 2004-2009 Apple Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,7 +26,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. * - * $P4: //depot/projects/trustedbsd/openbsm/bin/auditd/auditd.c#42 $ + * $P4: //depot/projects/trustedbsd/openbsm/bin/auditd/auditd.c#43 $ */ #include @@ -67,12 +67,16 @@ #endif /* - * XXX the following is temporary until this can be added to the kernel + * XXX The following are temporary until these can be added to the kernel * audit.h header. */ #ifndef AUDIT_TRIGGER_INITIALIZE #define AUDIT_TRIGGER_INITIALIZE 7 #endif +#ifndef AUDIT_TRIGGER_EXPIRE_TRAILS +#define AUDIT_TRIGGER_EXPIRE_TRAILS 8 +#endif + /* * LaunchD flag (Mac OS X and, maybe, FreeBSD only.) See launchd(8) and @@ -275,6 +279,14 @@ return (-1); } + /* + * Finally, see if there are any trail files to expire. + */ + err = auditd_expire_trails(audit_warn_expired); + if (err) + auditd_log_err("auditd_expire_trails(): %s", + auditd_strerror(err)); + return (0); } @@ -550,6 +562,14 @@ audit_setup(); break; + case AUDIT_TRIGGER_EXPIRE_TRAILS: + auditd_log_info("Got audit expire trails trigger"); + err = auditd_expire_trails(audit_warn_expired); + if (err) + auditd_log_err("auditd_expire_trails(): %s", + auditd_strerror(err)); + break; + default: auditd_log_err("Got unknown trigger %d", trigger); break; @@ -669,13 +689,18 @@ */ err = auditd_set_host(); if (err) { - auditd_log_err("auditd_set_host() %s: %m", - auditd_strerror(err)); - ret = -1; + if (err == ADE_PARSE) { + auditd_log_notice( + "audit_control(5) may be missing 'host:' field"); + } else { + auditd_log_err("auditd_set_host() %s: %m", + auditd_strerror(err)); + ret = -1; + } } else auditd_log_debug( "Set audit host address information in kernel."); - + return (ret); } ==== //depot/projects/trustedbsd/openbsm/bin/auditd/auditd.h#13 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2005 Apple Inc. + * Copyright (c) 2005-2009 Apple Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,7 +26,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. * - * $P4: //depot/projects/trustedbsd/openbsm/bin/auditd/auditd.h#12 $ + * $P4: //depot/projects/trustedbsd/openbsm/bin/auditd/auditd.h#13 $ */ #ifndef _AUDITD_H_ @@ -57,6 +57,7 @@ #define POSTSIGTERM_WARN "postsigterm" #define SOFTLIM_WARN "soft" #define TMPFILE_WARN "tmpfile" +#define EXPIRED_WARN "expired" #define AUDITWARN_SCRIPT "/etc/security/audit_warn" #define AUDITD_PIDFILE "/var/run/auditd.pid" @@ -76,6 +77,7 @@ int audit_warn_postsigterm(void); int audit_warn_soft(char *filename); int audit_warn_tmpfile(void); +int audit_warn_expired(char *filename); void auditd_openlog(int debug, gid_t gid); void auditd_log_err(const char *fmt, ...); ==== //depot/projects/trustedbsd/openbsm/bsm/auditd_lib.h#4 (text+ko) ==== @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/openbsm/bsm/auditd_lib.h#3 $ + * $P4: //depot/projects/trustedbsd/openbsm/bsm/auditd_lib.h#4 $ */ #ifndef _BSM_AUDITD_LIB_H_ @@ -81,12 +81,14 @@ #define ADE_INVAL -16 /* Invalid argument. */ #define ADE_GETADDR -17 /* Error resolving address from hostname. */ #define ADE_ADDRFAM -18 /* Address family not supported. */ +#define ADE_EXPIRE -19 /* Error expiring audit trail files. */ /* * auditd_lib functions. */ const char *auditd_strerror(int errcode); int auditd_set_minfree(void); +int auditd_expire_trails(int (*warn_expired)(char *)); int auditd_read_dirs(int (*warn_soft)(char *), int (*warn_hard)(char *)); void auditd_close_dirs(void); int auditd_set_evcmap(void); ==== //depot/projects/trustedbsd/openbsm/bsm/libbsm.h#42 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2004-2008 Apple Inc. + * Copyright (c) 2004-2009 Apple Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/openbsm/bsm/libbsm.h#41 $ + * $P4: //depot/projects/trustedbsd/openbsm/bsm/libbsm.h#42 $ */ #ifndef _LIBBSM_H_ @@ -76,13 +76,14 @@ #define AUDIT_CONTROL_FILE "/etc/security/audit_control" #define AUDIT_USER_FILE "/etc/security/audit_user" -#define DIR_CONTROL_ENTRY "dir" -#define MINFREE_CONTROL_ENTRY "minfree" -#define FILESZ_CONTROL_ENTRY "filesz" -#define FLAGS_CONTROL_ENTRY "flags" -#define NA_CONTROL_ENTRY "naflags" -#define POLICY_CONTROL_ENTRY "policy" +#define DIR_CONTROL_ENTRY "dir" +#define MINFREE_CONTROL_ENTRY "minfree" +#define FILESZ_CONTROL_ENTRY "filesz" +#define FLAGS_CONTROL_ENTRY "flags" +#define NA_CONTROL_ENTRY "naflags" +#define POLICY_CONTROL_ENTRY "policy" #define AUDIT_HOST_CONTROL_ENTRY "host" +#define EXPIRE_AFTER_CONTROL_ENTRY "expire-after" #define AU_CLASS_NAME_MAX 8 #define AU_CLASS_DESC_MAX 72 @@ -766,6 +767,7 @@ int getacna(char *auditstr, int len); int getacpol(char *auditstr, size_t len); int getachost(char *auditstr, size_t len); +int getacexpire(int *andflg, time_t *age, size_t *size); int getauditflagsbin(char *auditstr, au_mask_t *masks); int getauditflagschar(char *auditstr, au_mask_t *masks, int verbose); ==== //depot/projects/trustedbsd/openbsm/libauditd/auditd_lib.c#4 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2008 Apple Inc. + * Copyright (c) 2008-2009 Apple Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/openbsm/libauditd/auditd_lib.c#3 $ + * $P4: //depot/projects/trustedbsd/openbsm/libauditd/auditd_lib.c#4 $ */ #include @@ -52,6 +52,7 @@ #include #include +#include #include #include #include @@ -77,6 +78,11 @@ #define AUDIT_HARD_LIMIT_FREE_BLOCKS 4 #endif +/* + * Number of seconds to January 1, 2000 + */ +#define JAN_01_2000 946598400 + struct dir_ent { char *dirname; uint8_t softlim; @@ -85,6 +91,13 @@ }; static TAILQ_HEAD(, dir_ent) dir_q; + +struct audit_trail { + time_t at_mtime; + char *at_path; + off_t at_size; +}; + static int auditd_minval = -1; static char auditd_host[MAXHOSTNAMELEN]; @@ -110,6 +123,7 @@ "invalid argument", /* ADE_INVAL (16) */ "could not resolve hostname to address", /* ADE_GETADDR (17) */ "address family not supported", /* ADE_ADDRFAM (18) */ + "error expiring audit trail files", /* ADE_EXPIRE (19) */ }; #define MAXERRCODE (sizeof(auditd_errmsg) / sizeof(auditd_errmsg[0])) @@ -295,6 +309,187 @@ } /* + * Comparison function for audit trail sorting. Compare modification times + * of trail files. + */ +static int +trails_cmp(const void *t1, const void *t2) +{ + struct audit_trail *a = (struct audit_trail *)t1; + struct audit_trail *b = (struct audit_trail *)t2; + + if (a->at_mtime < b->at_mtime) + return (-1); + if (a->at_mtime > b->at_mtime) + return (1); + return (0); +} + +/* + * Remove audit trails files according to the expiration conditions. Returns: + * ADE_NOERR on success or there is nothing to do. + * ADE_PARSE if error parsing audit_control(5). + * ADE_NOMEM if could not allocate memory. + * ADE_EXPIRE if there was an unespected error. + */ +int +auditd_expire_trails(int (*warn_expired)(char *)) +{ + int andflg, i, n = 0, num_trails = 0, ret = ADE_NOERR; + size_t expire_size, total_size = 0L; + time_t expire_age, oldest_time, current_time = time(NULL); + struct dir_ent *traildir; + struct audit_trail *trail; + char *afnp, *pn; + struct stat stbuf; + char activefn[MAXPATHLEN]; + + /* + * Read the expiration conditions. If no conditions then return no + * error. + */ + if (getacexpire(&andflg, &expire_age, &expire_size) < 0) + return (ADE_PARSE); + if (!expire_age && !expire_size) + return (ADE_NOERR); + + /* + * Read the 'current' trail file name. Trim off directory path. + */ + activefn[0] = '\0'; + readlink(AUDIT_CURRENT_LINK, activefn, MAXPATHLEN - 1); + if ((afnp = strrchr(activefn, '/')) != NULL) + afnp++; + + /* + * Count up the number of audit trail files we have in all the audit + * trail directories. + */ + num_trails = 0; + TAILQ_FOREACH(traildir, &dir_q, dirs) { + if (stat(traildir->dirname, &stbuf) == 0) + num_trails += (stbuf.st_nlink - 2); + } + + trail = (struct audit_trail *)malloc(sizeof(struct audit_trail) * + num_trails); + if (NULL == trail) + return (ADE_NOMEM); + + /* + * Build an array of the trail files. + */ + TAILQ_FOREACH(traildir, &dir_q, dirs) { + DIR *dirp; + struct dirent *dp; + + dirp = opendir(traildir->dirname); + while ((dp = readdir(dirp)) != NULL) { + + /* + * Filter non-trail files. + */ + if (dp->d_type != DT_REG || + dp->d_namlen != (FILENAME_LEN - 1) || + dp->d_name[POSTFIX_LEN] != '.') + continue; + + + if (n > num_trails) { + /* + * This shouldn't happen but, if it does, we + * break out of the loop and expire what trail + * files we have. Also, return there was an + * error. + */ + ret = ADE_EXPIRE; + break; + } + + if (asprintf(&pn, "%s/%s", traildir->dirname, + dp->d_name) < 0) { + ret = ADE_NOMEM; + break; + } + + if (stat(pn, &stbuf) < 0) { + free(pn); + continue; + } + + /* + * If the mtime is older than Jan 1, 2000 then update + * the mtime of the trail file to the current time. + * This is so we don't prematurely remove a trail file + * that was created while the system clock reset to the + * "beginning of time" but later the system clock is set + * to the correct current time. + */ + if (current_time >= JAN_01_2000 && + stbuf.st_mtime < JAN_01_2000) { + struct timeval tv[2]; + + stbuf.st_mtime = current_time; + TIMESPEC_TO_TIMEVAL(&tv[0], + &stbuf.st_atimespec); + TIMESPEC_TO_TIMEVAL(&tv[1], + &stbuf.st_mtimespec); + utimes(pn, tv); + } + + total_size += stbuf.st_size; + if (NULL != afnp && + strncmp(dp->d_name, afnp, FILENAME_LEN) == 0) { + free(pn); + continue; + } + + trail[n].at_mtime = stbuf.st_mtime; + trail[n].at_size = stbuf.st_size; + trail[n].at_path = pn; + n++; + } + } + + /* + * Sort the array of trail files by the modification date. + */ + qsort(trail, n, sizeof(struct audit_trail), trails_cmp); + + oldest_time = current_time - expire_age; + + /* + * Expire trail files, oldest (mtime) first, if the given + * conditions are met. + */ + for (i = 0; i < n; i++) { + if (andflg) { + if ((expire_size && total_size > expire_size) && + (expire_age && trail[i].at_mtime < oldest_time)) { + if (warn_expired) + (*warn_expired)(trail[i].at_path); + if (unlink(trail[i].at_path) < 0) + ret = ADE_EXPIRE; + total_size -= trail[i].at_size; + } + } else { + if ((expire_size && total_size > expire_size) || + (expire_age && trail[i].at_mtime < oldest_time)) { + if (warn_expired) + (*warn_expired)(trail[i].at_path); + if (unlink(trail[i].at_path) < 0) + ret = ADE_EXPIRE; + total_size -= trail[i].at_size; + } + } + free(trail[i].at_path); + } + free(trail); + + return (ret); +} + +/* * Parses the "dir" entry in audit_control(5) into an ordered list. Also, will * set the minfree and host values if not already set. Arguments include * function pointers to audit_warn functions for soft and hard limits. Returns: @@ -562,7 +757,7 @@ } /* Try until we succeed. */ - while ((dirent = TAILQ_FIRST(&dir_q))) { + TAILQ_FOREACH(dirent, &dir_q, dirs) { if (dirent->hardlim) continue; if ((fn = affixdir(timestr, dirent)) == NULL) ==== //depot/projects/trustedbsd/openbsm/libbsm/au_control.3#10 (text+ko) ==== @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $P4: //depot/projects/trustedbsd/openbsm/libbsm/au_control.3#9 $ +.\" $P4: //depot/projects/trustedbsd/openbsm/libbsm/au_control.3#10 $ .\" .Dd April 19, 2005 .Dt AU_CONTROL 3 @@ -33,6 +33,7 @@ .Nm endac , .Nm getacdir , .Nm getacmin , +.Nm getacexpire , .Nm getacfilesz , .Nm getacflg , .Nm getacna , @@ -53,6 +54,8 @@ .Ft int .Fn getacmin "int *min_val" .Ft int +.Fn getacexpire "int *andflg, time_t *age, size_t *size" +.Ft int .Fn getacfilesz "size_t *size_val" .Ft int .Fn getacflg "char *auditstr" "int len" @@ -101,6 +104,24 @@ variable. .Pp The +.Fn getacexpire +function +returns the audit trail file expiration parameters in the passed +.Vt int +buffer +.Fa andflg , +.Vt time_t +buffer +.Fa age +and +.Vt size_t +buffer +.Fa size . +If the parameter is not specified in the +.Xr audit_control 5 +file it is set to zero. +.Pp +The .Fn getacfilesz function returns the audit trail rotation size in the passed @@ -153,6 +174,7 @@ The .Fn getacdir , .Fn getacmin , +.Fn getacexpire , .Fn getacflg , .Fn getacna , .Fn getacpol , ==== //depot/projects/trustedbsd/openbsm/libbsm/bsm_control.c#27 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2004 Apple Inc. + * Copyright (c) 2004,2009 Apple Inc. * Copyright (c) 2006 Robert N. M. Watson * All rights reserved. * @@ -27,13 +27,14 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_control.c#26 $ + * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_control.c#27 $ */ #include #include +#include #include #include #ifdef HAVE_PTHREAD_MUTEX_LOCK @@ -138,6 +139,82 @@ } /* + * Convert a given time value with a multiplier (seconds, hours, days, years) to + * seconds. Return 0 on success. + */ +static int +au_timetosec(time_t *seconds, u_long value, char mult) +{ + if (NULL == seconds) + return (-1); + + switch(mult) { + case 's': + /* seconds */ + *seconds = (time_t)value; + break; + + case 'h': + /* hours */ + *seconds = (time_t)value * 60 * 60; + break; + + case 'd': + /* days */ + *seconds = (time_t)value * 60 * 60 * 24; + break; + + case 'y': + /* years. Add a day for each 4th (leap) year. */ + *seconds = (time_t)value * 60 * 60 * 24 * 364 + + ((time_t)value / 4) * 60 * 60 * 24; + break; + + default: + return (-1); + } + return (0); +} + +/* + * Convert a given disk space value with a multiplier (bytes, kilobytes, + * megabytes, gigabytes) to bytes. Return 0 on success. + */ +static int +au_spacetobytes(size_t *bytes, u_long value, char mult) +{ + if (NULL == bytes) + return (-1); + + switch(mult) { + case 'B': + case ' ': + /* Bytes */ + *bytes = (size_t)value; + break; + + case 'K': + /* Kilobytes */ + *bytes = (size_t)value * 1024; + break; + + case 'M': + /* Megabytes */ + *bytes = (size_t)value * 1024 * 1024; + break; + + case 'G': + /* Gigabytes */ + *bytes = (size_t)value * 1024 * 1024 * 1024; + break; + + default: + return (-1); + } + return (0); +} + +/* * Convert a policy to a string. Return -1 on failure, or >= 0 representing * the actual size of the string placed in the buffer (excluding terminating * nul). @@ -333,46 +410,65 @@ int getacfilesz(size_t *filesz_val) { - char *filesz, *dummy; - long long ll; + char *str; + size_t val; + char mult; + int nparsed; #ifdef HAVE_PTHREAD_MUTEX_LOCK pthread_mutex_lock(&mutex); #endif setac_locked(); - if (getstrfromtype_locked(FILESZ_CONTROL_ENTRY, &filesz) < 0) { + if (getstrfromtype_locked(FILESZ_CONTROL_ENTRY, &str) < 0) { #ifdef HAVE_PTHREAD_MUTEX_LOCK pthread_mutex_unlock(&mutex); #endif return (-2); } - if (filesz == NULL) { + if (str == NULL) { #ifdef HAVE_PTHREAD_MUTEX_LOCK pthread_mutex_unlock(&mutex); #endif errno = EINVAL; return (1); } - ll = strtoll(filesz, &dummy, 10); - if (*dummy != '\0') { + + /* Trim off any leading white space. */ + while (*str == ' ' || *str == '\t') + str++; + + nparsed = sscanf(str, "%lu%c", &val, &mult); + + switch (nparsed) { + case 1: + /* If no multiplier then assume 'B' (bytes). */ + mult = 'B'; + /* fall through */ + case 2: + if (au_spacetobytes(filesz_val, val, mult) == 0) + break; + /* fall through */ + default: + errno = EINVAL; #ifdef HAVE_PTHREAD_MUTEX_LOCK pthread_mutex_unlock(&mutex); #endif - errno = EINVAL; return (-1); } + /* * The file size must either be 0 or >= MIN_AUDIT_FILE_SIZE. 0 * indicates no rotation size. */ - if (ll < 0 || (ll > 0 && ll < MIN_AUDIT_FILE_SIZE)) { + if (*filesz_val < 0 || (*filesz_val > 0 && + *filesz_val < MIN_AUDIT_FILE_SIZE)) { #ifdef HAVE_PTHREAD_MUTEX_LOCK pthread_mutex_unlock(&mutex); #endif + filesz_val = 0L; errno = EINVAL; return (-1); } - *filesz_val = ll; #ifdef HAVE_PTHREAD_MUTEX_LOCK pthread_mutex_unlock(&mutex); #endif @@ -523,3 +619,105 @@ #endif return (0); } + +/* + * Set expiration conditions. + */ +static int +setexpirecond(time_t *age, size_t *size, u_long value, char mult) +{ + + if (isupper(mult) || ' ' == mult) + return (au_spacetobytes(size, value, mult)); + else + return (au_timetosec(age, value, mult)); +} + +/* + * Return the expire-after field from the audit control file. + */ +int +getacexpire(int *andflg, time_t *age, size_t *size) +{ + char *str; + int nparsed; + u_long val1, val2; + char mult1, mult2; + char andor[AU_LINE_MAX]; + + *age = 0L; + *size = 0LL; + *andflg = 0; + +#ifdef HAVE_PTHREAD_MUTEX_LOCK + pthread_mutex_lock(&mutex); +#endif + setac_locked(); + if (getstrfromtype_locked(EXPIRE_AFTER_CONTROL_ENTRY, &str) < 0) { +#ifdef HAVE_PTHREAD_MUTEX_LOCK + pthread_mutex_unlock(&mutex); +#endif + return (-2); + } + if (str == NULL) { +#ifdef HAVE_PTHREAD_MUTEX_LOCK + pthread_mutex_unlock(&mutex); +#endif + return (1); + } + + /* First, trim off any leading white space. */ + while (*str == ' ' || *str == '\t') + str++; + + nparsed = sscanf(str, "%lu%c%[ \tadnorADNOR]%lu%c", &val1, &mult1, + andor, &val2, &mult2); + + switch (nparsed) { + case 1: + /* If no multiplier then assume 'B' (Bytes). */ + mult1 = 'B'; + /* fall through */ + case 2: + /* One expiration condition. */ + if (setexpirecond(age, size, val1, mult1) != 0) { +#ifdef HAVE_PTHREAD_MUTEX_LOCK + pthread_mutex_unlock(&mutex); +#endif + return (-1); + } + break; + + case 5: + /* Two expiration conditions. */ + if (setexpirecond(age, size, val1, mult1) != 0 || + setexpirecond(age, size, val2, mult2) != 0) { +#ifdef HAVE_PTHREAD_MUTEX_LOCK + pthread_mutex_unlock(&mutex); +#endif + return (-1); + } + if (strcasestr(andor, "and") != NULL) + *andflg = 1; + else if (strcasestr(andor, "or") != NULL) + *andflg = 0; + else { +#ifdef HAVE_PTHREAD_MUTEX_LOCK + pthread_mutex_unlock(&mutex); +#endif + return (-1); + } + break; + + default: +#ifdef HAVE_PTHREAD_MUTEX_LOCK + pthread_mutex_unlock(&mutex); +#endif + return (-1); + } + +#ifdef HAVE_PTHREAD_MUTEX_LOCK + pthread_mutex_unlock(&mutex); +#endif + return (0); +} ==== //depot/projects/trustedbsd/openbsm/man/audit_control.5#22 (text+ko) ==== @@ -1,4 +1,4 @@ -.\" Copyright (c) 2004 Apple Inc. +.\" Copyright (c) 2004-2009 Apple Inc. .\" Copyright (c) 2006 Robert N. M. Watson .\" All rights reserved. .\" @@ -26,9 +26,9 @@ .\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" >>> TRUNCATED FOR MAIL (1000 lines) <<< From marius at FreeBSD.org Tue Feb 3 23:41:25 2009 From: marius at FreeBSD.org (Marius Strobl) Date: Tue Feb 3 23:41:31 2009 Subject: PERFORCE change 157126 for review Message-ID: <200902040741.n147fNv2071511@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157126 Change 157126 by marius@flak on 2009/02/04 07:41:17 Add DP83865. Affected files ... .. //depot/projects/usiii/dev/mii/miidevs#11 edit Differences ... ==== //depot/projects/usiii/dev/mii/miidevs#11 (text+ko) ==== @@ -200,6 +200,7 @@ model NATSEMI DP83847 0x0003 DP83847 10/100 media interface model NATSEMI DP83891 0x0005 DP83891 10/100/1000 media interface model NATSEMI DP83861 0x0006 DP83861 10/100/1000 media interface +model NATSEMI DP83865 0x0007 DP83865 10/100/1000 media interface /* Quality Semiconductor PHYs */ model QUALSEMI QS6612 0x0000 QS6612 10/100 media interface From gabor at FreeBSD.org Wed Feb 4 02:24:11 2009 From: gabor at FreeBSD.org (Gabor Kovesdan) Date: Wed Feb 4 02:24:17 2009 Subject: PERFORCE change 157128 for review Message-ID: <200902041024.n14AO7wk098554@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157128 Change 157128 by gabor@gabor_server on 2009/02/04 10:23:19 - Add --exclude-dir and --include-dir, options similar to --exclude and --include but for directories Requested by: bz Affected files ... .. //depot/projects/soc2008/gabor_textproc/grep/grep.c#80 edit .. //depot/projects/soc2008/gabor_textproc/grep/util.c#79 edit Differences ... ==== //depot/projects/soc2008/gabor_textproc/grep/grep.c#80 (text+ko) ==== @@ -182,8 +182,8 @@ {"colour", optional_argument, NULL, COLOR_OPT}, {"exclude", required_argument, NULL, R_EXCLUDE_OPT}, {"include", required_argument, NULL, R_INCLUDE_OPT}, -/* {"exclude-dir", required_argument, NULL, R_DEXCLUDE_OPT}, - {"include-dir", required_argument, NULL, R_DINCLUDE_OPT}, */ + {"exclude-dir", required_argument, NULL, R_DEXCLUDE_OPT}, + {"include-dir", required_argument, NULL, R_DINCLUDE_OPT}, {"after-context", required_argument, NULL, 'A'}, {"text", no_argument, NULL, 'a'}, {"before-context", required_argument, NULL, 'B'}, ==== //depot/projects/soc2008/gabor_textproc/grep/util.c#79 (text+ko) ==== @@ -66,6 +66,7 @@ FTS *fts; FTSENT *p; int i, c, ok, fts_flags; + char *d, *dirname; c = fts_flags = 0; @@ -99,14 +100,30 @@ /* Check for file exclusion/inclusion */ ok = 1; if (exclflag) { + d = strrchr(p->fts_path, '/'); + dirname = grep_malloc(sizeof(char) * (d - p->fts_path + 2)); + strlcpy(dirname, p->fts_path, (d - p->fts_path + 1)); for (i = 0; i < epatterns; ++i) { - if (fnmatch(epattern[i].pat, basename(p->fts_path), 0) == 0) { - if (epattern[i].mode == EXCL_PAT) - ok = 0; - else - ok = 1; + switch(epattern[i].type) { + case FILE_PAT: + if (fnmatch(epattern[i].pat, basename(p->fts_path), 0) == 0) { + if (epattern[i].mode == EXCL_PAT) + ok = 0; + else + ok = 1; + } + break; + case DIR_PAT: + if (strstr(dirname, epattern[i].pat) != NULL) { + if (epattern[i].mode == EXCL_PAT) + ok = 0; + else + ok = 1; + } + break; } } + free(dirname); } if (ok) From antab at FreeBSD.org Wed Feb 4 03:22:08 2009 From: antab at FreeBSD.org (Arnar Mar Sig) Date: Wed Feb 4 03:22:14 2009 Subject: PERFORCE change 157130 for review Message-ID: <200902041122.n14BM6KL005812@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157130 Change 157130 by antab@antab_farm on 2009/02/04 11:22:04 Update to AVR32, stops at cpu_switch now. Added at32_rtc and at32_pio (pio code could be shared with at91) drivers to test at32bus and resource managment, looks like its working at last uart,at32_pio and at32_rtc gets probed and attached at the right places. Added more placeholder functions to uart_atmel to get it to register, later share code with at91. Misc other changes all over. Affected files ... .. //depot/projects/avr32/src/sys/avr32/avr32/at32.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/at32_pio.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/at32_rtc.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/at32ap700x.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/autoconf.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/clock.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/cpu.c#3 edit .. //depot/projects/avr32/src/sys/avr32/avr32/db_disasm.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/db_interface.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/elf_machdep.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/exception.S#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/intr.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/machdep.c#3 edit .. //depot/projects/avr32/src/sys/avr32/avr32/nexus.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/pm_machdep.c#3 edit .. //depot/projects/avr32/src/sys/avr32/avr32/pmap.c#3 edit .. //depot/projects/avr32/src/sys/avr32/avr32/support.S#3 edit .. //depot/projects/avr32/src/sys/avr32/avr32/switch.S#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/trap.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/uboot.c#3 edit .. //depot/projects/avr32/src/sys/avr32/avr32/vm_machdep.c#3 edit .. //depot/projects/avr32/src/sys/avr32/conf/NGW100#3 edit .. //depot/projects/avr32/src/sys/avr32/include/at32.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/at32ap700x.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/cpu.h#3 edit .. //depot/projects/avr32/src/sys/avr32/include/frame.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/intr.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/pcb.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/pcpu.h#3 edit .. //depot/projects/avr32/src/sys/avr32/include/proc.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/pte.h#3 edit .. //depot/projects/avr32/src/sys/avr32/include/reg.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/reg_intc.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/reg_pio.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/reg_rtc.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/reg_sys.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/reg_usart.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/reg_wdt.h#1 add .. //depot/projects/avr32/src/sys/conf/files.avr32#3 edit .. //depot/projects/avr32/src/sys/conf/ldscript.avr32#2 edit .. //depot/projects/avr32/src/sys/conf/options.avr32#2 edit .. //depot/projects/avr32/src/sys/dev/uart/uart_bus_atmel.c#2 edit .. //depot/projects/avr32/src/sys/dev/uart/uart_dev_atmel.c#2 edit Differences ... ==== //depot/projects/avr32/src/sys/avr32/avr32/at32.c#2 (text+ko) ==== @@ -40,11 +40,53 @@ #include #include +#include #include #include #include +#include #include +/* Prototypes */ +static struct resource_list *at32_get_resource_list(device_t, device_t); +static int at32_print_child(device_t, device_t); +static int at32_activate_resource(device_t, device_t, int, int, struct resource *); +static int at32_teardown_intr(device_t, device_t, struct resource *, void *); +static int at32_setup_intr(device_t, device_t, struct resource *, int, driver_filter_t *, driver_intr_t *, void *, void **); +static int at32_release_resource(device_t, device_t, int, int, struct resource *); +static struct resource *at32_alloc_resource(device_t, device_t, int, int *, u_long, u_long, u_long, u_int); +static int at32_attach(device_t); +static void at32_add_child(device_t, int, const char *, int, bus_addr_t, bus_size_t, int); +static void at32_identify(driver_t *, device_t); +static int at32_probe(device_t); + +/* Driver variables and private data */ +static device_method_t at32_methods[] = { + DEVMETHOD(device_probe, at32_probe), + DEVMETHOD(device_attach, at32_attach), + DEVMETHOD(device_identify, at32_identify), + + DEVMETHOD(bus_alloc_resource, at32_alloc_resource), + DEVMETHOD(bus_setup_intr, at32_setup_intr), + DEVMETHOD(bus_teardown_intr, at32_teardown_intr), + DEVMETHOD(bus_activate_resource, at32_activate_resource), + DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), + DEVMETHOD(bus_get_resource_list, at32_get_resource_list), + DEVMETHOD(bus_set_resource, bus_generic_rl_set_resource), + DEVMETHOD(bus_get_resource, bus_generic_rl_get_resource), + DEVMETHOD(bus_release_resource, at32_release_resource), + DEVMETHOD(bus_print_child, at32_print_child), + {0, 0}, +}; +static driver_t at32_driver = { + "at32bus", + at32_methods, + sizeof(struct at32_softc), +}; +static devclass_t at32_devclass; +DRIVER_MODULE(at32bus, nexus, at32_driver, at32_devclass, 0, 0); + +/* Code */ static int at32_probe(device_t dev) { @@ -55,18 +97,82 @@ static void at32_identify(driver_t *drv, device_t parent) { - BUS_ADD_CHILD(parent, 0, "at32", 0); + BUS_ADD_CHILD(parent, 0, "at32bus", 0); } -static device_t -at32_add_child(device_t dev, int prio, const char *name, int unit) +static void +at32_add_child(device_t dev, int prio, const char *name, int unit, + bus_addr_t addr, bus_size_t size, int irq) { - return device_add_child_ordered(dev, prio, name, unit); + device_t kid; + struct at32_ivar *ivar; + + kid = device_add_child_ordered(dev, prio, name, unit); + if (kid == NULL) { + printf("Can't add child %s%d ordered\n", name, unit); + return; + } + ivar = malloc(sizeof(*ivar), M_DEVBUF, M_NOWAIT | M_ZERO); + if (ivar == NULL) { + device_delete_child(dev, kid); + printf("Can't add alloc ivar\n"); + return; + } + device_set_ivars(kid, ivar); + resource_list_init(&ivar->resources); + if (addr != 0) { + bus_set_resource(kid, SYS_RES_MEMORY, 0, addr, size); + } + if (irq != -1) { + bus_set_resource(kid, SYS_RES_IRQ, 0, irq, 1); + } } static int at32_attach(device_t dev) { + int i; + struct at32_softc *sc = device_get_softc(dev); + struct at32_cpu_device *walker; + + sc->sc_st = 0; + sc->sc_sh = AT32AP700X_BASE; + sc->dev = dev; + + // Resource list for IRQ + sc->sc_irq_rman.rm_type = RMAN_ARRAY; + sc->sc_irq_rman.rm_descr = "AT32 IRQs"; + if (rman_init(&sc->sc_irq_rman) != 0 || + rman_manage_region(&sc->sc_irq_rman, 1, IRQ_COUNT) != 0) { + panic("at32_attach: failed to set up IRQ rman"); + } + + // Resource list for system memory + sc->sc_mem_rman.rm_type = RMAN_ARRAY; + sc->sc_mem_rman.rm_descr = "AT32 Memory"; + if (rman_init(&sc->sc_mem_rman) != 0 || + rman_manage_region(&sc->sc_mem_rman, AVR32_SEG_P4, + 0xfffffffful) != 0) { + panic("at32_attach: fail to set up memory rman\n"); + } + + /* Reserve memory range for INTC, we will handle access to it */ + sc->sc_intc_res = rman_reserve_resource(&sc->sc_mem_rman, + AT32AP700X_BASE + AT32AP700X_INTC_OFFSET, + AT32AP700X_BASE + AT32AP700X_INTC_OFFSET + AT32AP700X_INTC_SIZE, + AT32AP700X_INTC_SIZE, 0, dev); + if (!sc->sc_intc_res) { + panic("at32_attach: unable to reserve INTC memory\n"); + } + + + // Add buildin devices + for (i = 0, walker = at32_cpu_devices; walker->name; i++, walker++) { + at32_add_child(dev, i, walker->name, walker->unit, + walker->mem_base, walker->mem_len, walker->irq); + }; + + bus_generic_probe(dev); bus_generic_attach(dev); return 0; } @@ -75,85 +181,127 @@ at32_alloc_resource(device_t dev, device_t child, int type, int *rid, u_long start, u_long end, u_long count, u_int flags) { - avr32_impl(); - return (0); + struct at32_softc *sc = device_get_softc(dev); + struct resource_list_entry *rle; + struct at32_ivar *ivar = device_get_ivars(child); + struct resource_list *rl = &ivar->resources; + + if (device_get_parent(child) != dev) { + return (BUS_ALLOC_RESOURCE(device_get_parent(dev), child, + type, rid, start, end, count, flags)); + } + rle = resource_list_find(rl, type, *rid); + if (rle == NULL) { + return (NULL); + } + if (rle->res) { + panic("Resource rid %d type %d already in use", *rid, type); + } + if (start == 0UL && end == ~0UL) { + start = rle->start; + count = ulmax(count, rle->count); + end = ulmax(rle->end, start + count - 1); + } + switch (type) { + case SYS_RES_IRQ: + rle->res = rman_reserve_resource(&sc->sc_irq_rman, + start, end, count, flags, child); + break; + case SYS_RES_MEMORY: + rle->res = rman_reserve_resource(&sc->sc_mem_rman, + start, end, count, flags, child); + if (rle->res != NULL) { + rman_set_bustag(rle->res, 0); + rman_set_bushandle(rle->res, start); + } + break; + } + if (rle->res) { + rle->start = rman_get_start(rle->res); + rle->end = rman_get_end(rle->res); + rle->count = count; + rman_set_rid(rle->res, *rid); + } + return (rle->res); } static int -at32_release_resource(device_t dev, device_t child, int type, int rid, struct resource *r) { - int error; +at32_release_resource(device_t dev, device_t child, int type, int rid, + struct resource *r) +{ + struct resource_list *rl; + struct resource_list_entry *rle; - if (rman_get_flags(r) & RF_ACTIVE) { - error = bus_deactivate_resource(child, type, rid, r); - if (error) - return error; + rl = at32_get_resource_list(dev, child); + if (rl == NULL) { + return (EINVAL); + } + rle = resource_list_find(rl, type, rid); + if (rle == NULL) { + return (EINVAL); } - return (rman_release_resource(r)); - + rman_release_resource(r); + rle->res = NULL; + return (0); } static int -at32_setup_intr(device_t dev, device_t child, struct resource *ires, int flags, driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep) { - avr32_impl(); +at32_setup_intr(device_t dev, device_t child, struct resource *ires, int flags, + driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep) +{ + if ((rman_get_flags(ires) & RF_SHAREABLE) == 0) { + flags |= INTR_EXCL; + } - return 0; + avr32_setup_irqhandler(device_get_nameunit(child), + filt, intr, arg, rman_get_start(ires), flags, cookiep); + return (0); } static int at32_teardown_intr(device_t dev, device_t child, struct resource *res, void *cookie) { - avr32_impl(); - - return 0; + return (avr32_remove_irqhandler(rman_get_start(res), cookie)); } static int at32_activate_resource(device_t bus, device_t child, int type, int rid, struct resource *r) { - avr32_impl(); - return (rman_activate_resource(r)); } static int -at32_deactivate_resource(device_t bus, device_t child, int type, int rid, struct resource *r) { - return (rman_deactivate_resource(r)); -} - -static int at32_print_child(device_t dev, device_t child) { - int retval; + struct at32_ivar *ivars; + struct resource_list *rl; + int retval = 0; + + ivars = device_get_ivars(child); + rl = &ivars->resources; retval += bus_print_child_header(dev, child); - retval += printf(" on at32\n"); + + retval += resource_list_print_type(rl, "port", SYS_RES_IOPORT, "%#lx"); + retval += resource_list_print_type(rl, "mem", SYS_RES_MEMORY, "%#lx"); + retval += resource_list_print_type(rl, "irq", SYS_RES_IRQ, "%ld"); + if (device_get_flags(dev)) { + retval += printf(" flags %#x", device_get_flags(dev)); + } + retval += bus_print_child_footer(dev, child); return (retval); } -static device_method_t at32_methods[] = { - DEVMETHOD(device_probe, at32_probe), - DEVMETHOD(device_attach, at32_attach), - DEVMETHOD(device_identify, at32_identify), +static struct resource_list * +at32_get_resource_list(device_t dev, device_t child) +{ + struct at32_ivar *ivar; - DEVMETHOD(bus_alloc_resource, at32_alloc_resource), - DEVMETHOD(bus_release_resource, at32_release_resource), - DEVMETHOD(bus_setup_intr, at32_setup_intr), - DEVMETHOD(bus_teardown_intr, at32_teardown_intr), - DEVMETHOD(bus_activate_resource, at32_activate_resource), - DEVMETHOD(bus_deactivate_resource, at32_deactivate_resource), - DEVMETHOD(bus_release_resource, at32_release_resource), + ivar = device_get_ivars(child); + return (&(ivar->resources)); +} - {0, 0}, -}; -static driver_t at32_driver = { - "at32", - at32_methods, - sizeof(struct at32_softc), -}; -static devclass_t at32_devclass; - -DRIVER_MODULE(at32, nexus, at32_driver, at32_devclass, 0, 0); ==== //depot/projects/avr32/src/sys/avr32/avr32/autoconf.c#2 (text+ko) ==== @@ -62,9 +62,9 @@ #include #include -static void configure_first (void *); -static void configure (void *); -static void configure_final (void *); +static void configure_first(void *); +static void configure(void *); +static void configure_final(void *); SYSINIT(configure1, SI_SUB_CONFIGURE, SI_ORDER_FIRST, configure_first, NULL); /* SI_ORDER_SECOND is hookable */ @@ -72,8 +72,6 @@ /* SI_ORDER_MIDDLE is hookable */ SYSINIT(configure3, SI_SUB_CONFIGURE, SI_ORDER_ANY, configure_final, NULL); -device_t nexus_dev; - /* * Determine i/o configuration for a machine. @@ -81,21 +79,21 @@ static void configure_first(void *dummy) { - device_add_child(root_bus, "nexus", 0); } static void configure(void *dummy) { - root_bus_configure(); } static void configure_final(void *dummy) { - cninit_finish(); + if (bootverbose) { + printf("Device configuration finished.\n"); + } cold = 0; } ==== //depot/projects/avr32/src/sys/avr32/avr32/clock.c#2 (text+ko) ==== @@ -2,10 +2,6 @@ * Copyright (c) 2008 Arnar Mar Sig * All rights reserved. * - * This code is derived from software contributed to Berkeley by - * the Systems Programming Group of the University of Utah Computer - * Science Department, and William Jolitz. - * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -44,29 +40,91 @@ #include #include +#include +#include #include -void cpu_initclocks(void) { +/* Prototypes */ +static unsigned count_get_timecount(struct timecounter *); + +/* Variable and private data */ +uint64_t clock_cpu_frequency; /* Finzd batter way for this */ +static uint64_t cycles_per_usec; +static uint64_t cycles_per_hz; +static struct timecounter count_timecounter = { + count_get_timecount, /* get_timecount */ + 0, /* no poll_pps */ + 0xffffffffu, /* counter_mask */ + 0, /* frequency */ + "AVR32", /* name */ + 1000, /* quality (adjusted in code) */ +}; + +/* Code */ +void +cpu_startprofclock(void) +{ avr32_impl(); } -void cpu_startprofclock(void) { +void +cpu_stopprofclock(void) +{ avr32_impl(); } -void cpu_stopprofclock(void) { +int +cpu_est_clockrate(int cpu_id, uint64_t *rate) +{ avr32_impl(); + return (ENXIO); } -int cpu_est_clockrate(int cpu_id, uint64_t *rate) { - avr32_impl(); - return (ENXIO); +void +cpu_initclocks(void) +{ + count_timecounter.tc_frequency = clock_cpu_frequency; + cycles_per_hz = clock_cpu_frequency / hz; + cycles_per_usec = (clock_cpu_frequency / (1000 * 1000)); + tc_init(&count_timecounter); } +static unsigned +count_get_timecount(struct timecounter *tc) +{ + return sysreg_read(COUNT); +} /* * Wait for about n microseconds (at least!). */ -void DELAY(int n) { - avr32_impl(); +void +DELAY(int n) +{ + uint32_t cur, last, delta, usecs; + + /* + * This works by polling the timer and counting the number of + * microseconds that go by. + */ + last = sysreg_read(COUNT); + delta = usecs = 0; + + while (n > usecs) { + cur = sysreg_read(COUNT); + + /* Check to see if the timer has wrapped around. */ + if (cur < last) { + delta += (cur + (cycles_per_hz - last)); + } else { + delta += (cur - last); + } + + last = cur; + + if (delta >= cycles_per_usec) { + usecs += delta / cycles_per_usec; + delta %= cycles_per_usec; + } + } } ==== //depot/projects/avr32/src/sys/avr32/avr32/cpu.c#3 (text+ko) ==== @@ -2,10 +2,6 @@ * Copyright (c) 2008 Arnar Mar Sig * All rights reserved. * - * This code is derived from software contributed to Berkeley by - * the Systems Programming Group of the University of Utah Computer - * Science Department, and William Jolitz. - * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -60,31 +56,53 @@ #include #include #include +#include #include #include +#include #include +#include extern vm_offset_t _evba; +extern vm_offset_t _evba_irq; -void cpu_init(void) { - // Set exception vector +void +cpu_init(void) +{ + int i; + + /* Set exception vector */ sysreg_write(EVBA, (uint32_t)&_evba); __asm__ __volatile__ ("csrf %0" : : "i"(AT32_SYS_SR_EM)); + + + /* Setup INTC, every interrupt is at priority 0 */ +/* for (i = 0; i < IRQ_COUNT; i++) { + reg_write(AT32AP700X_BASE + AT32AP700X_INTC_OFFSET + + (i * sizeof(register_t)), INTC, IPR, + (_evba_irq - _evba)); + } +*/ } -void cpu_idle(int busy) { +void +cpu_idle(int busy) +{ avr32_impl(); } -void cpu_halt(void) { +void +cpu_halt(void) +{ avr32_impl(); } -void cpu_reset(void) { +void +cpu_reset(void) +{ avr32_impl(); } - /** * Debugging code for avr32, this is here so i can do writes to usart1 without going thru all the * tty code ==== //depot/projects/avr32/src/sys/avr32/avr32/db_disasm.c#2 (text+ko) ==== @@ -1,11 +1,39 @@ +/*- + * Copyright (c) 2009 Arnar Mar Sig + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + #include __FBSDID("$FreeBSD: $"); #include +#include +#include #include #include #include -#include + #include #include ==== //depot/projects/avr32/src/sys/avr32/avr32/db_interface.c#2 (text+ko) ==== @@ -2,10 +2,6 @@ * Copyright (c) 2009 Arnar Mar Sig * All rights reserved. * - * This code is derived from software contributed to Berkeley by - * the Systems Programming Group of the University of Utah Computer - * Science Department, and William Jolitz. - * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: ==== //depot/projects/avr32/src/sys/avr32/avr32/elf_machdep.c#2 (text+ko) ==== @@ -2,10 +2,6 @@ * Copyright (c) 2008 Arnar Mar Sig * All rights reserved. * - * This code is derived from software contributed to Berkeley by - * the Systems Programming Group of the University of Utah Computer - * Science Department, and William Jolitz. - * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: ==== //depot/projects/avr32/src/sys/avr32/avr32/exception.S#2 (text+ko) ==== @@ -159,3 +159,10 @@ rcall trap_handle_breakpoint POP_TRAPFRAME rete + +.section .text.evba.irq +ENTRY(handle_irq) + sub r12, pc, (. - 2f) + bral panic + rete +2: .asciz "Interrupt handler needed" ==== //depot/projects/avr32/src/sys/avr32/avr32/intr.c#2 (text+ko) ==== @@ -2,10 +2,6 @@ * Copyright (c) 2008 Arnar Mar Sig * All rights reserved. * - * This code is derived from software contributed to Berkeley by - * the Systems Programming Group of the University of Utah Computer - * Science Department, and William Jolitz. - * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -44,26 +40,97 @@ #include #include #include +#include +#include +/* Private data */ +static struct intr_event *intr_events[IRQ_COUNT]; -register_t intr_disable(void) { +/* Code */ +register_t +intr_disable(void) +{ register_t s; s = sysreg_read(SR); - // Mask all interrupts - sysreg_write(SR, s & ~(bit_offset(SYS, SR, GM) | - bit_offset(SYS, SR, I0M) | - bit_offset(SYS, SR, I1M) | - bit_offset(SYS, SR, I2M) | - bit_offset(SYS, SR, I3M))); + __asm__ __volatile__ ("ssrf %0" : : "i"(AT32_SYS_SR_GM)); + return (s); +} + +void +intr_restore(register_t s) +{ + __asm__ __volatile__ ("csrf %0" : : "i"(AT32_SYS_SR_GM)); +} - return (s); +void +intr_handle_mni(void) +{ + avr32_impl(); } -void intr_restore(register_t s) { - sysreg_write(SR, s); +void +avr32_mask_irq(uintptr_t irq) +{ + int pri; + + avr32_impl(); + pri = bit_value(INTC, IPR, INTLEVEL, + reg_read(AT32AP700X_BASE + AT32AP700X_INTC_OFFSET + + (irq * sizeof(register_t)), INTC, IPR)); + sysreg_write(SR, sysreg_read(SR) | (bit_offset(SYS, SR, I0M) << pri)); } -void intr_handle_mni() { +void +avr32_unmask_irq(uintptr_t irq) +{ + int pri; + avr32_impl(); + pri = bit_value(INTC, IPR, INTLEVEL, + reg_read(AT32AP700X_BASE + AT32AP700X_INTC_OFFSET + + (irq * sizeof(register_t)), INTC, IPR)); + sysreg_write(SR, sysreg_read(SR) | ~(bit_offset(SYS, SR, I0M) << pri)); + +} + +void +avr32_setup_irqhandler(const char *name, driver_filter_t *filt, + void (*hand)(void*), void *arg, int irq, int flags, void **cookiep) +{ + struct intr_event *event; + int error; + + if (irq < 0 || irq >= IRQ_COUNT) { + return; + } + + event = intr_events[irq]; + if (event == NULL) { + error = intr_event_create(&event, (void *)irq, 0, irq, + (mask_fn)avr32_mask_irq, (mask_fn)avr32_unmask_irq, + NULL, NULL, "intr%d:", irq); + if (error) { + return; + } + intr_events[irq] = event; + } + intr_event_add_handler(event, name, filt, hand, arg, + intr_priority(flags), flags, cookiep); +} +int +avr32_remove_irqhandler(int irq, void *cookie) +{ + struct intr_event *event; + int error; + + event = intr_events[irq]; + avr32_mask_irq(irq); + + error = intr_event_remove_handler(cookie); + + if (!TAILQ_EMPTY(&event->ie_handlers)) { + avr32_unmask_irq(irq); + } + return (error); } ==== //depot/projects/avr32/src/sys/avr32/avr32/machdep.c#3 (text+ko) ==== @@ -2,10 +2,6 @@ * Copyright (c) 2008 Arnar Mar Sig * All rights reserved. * - * This code is derived from software contributed to Berkeley by - * the Systems Programming Group of the University of Utah Computer - * Science Department, and William Jolitz. - * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -77,6 +73,7 @@ struct pcpu *pcpup = &__pcpu; struct pcb proc0_pcb; extern vm_offset_t proc0_stack_end; +extern uint64_t clock_cpu_frequency; vm_offset_t phys_avail[10]; long realmem; @@ -118,16 +115,61 @@ } static void cpu_startup(void *dummy) { + uint32_t config; + char arch_type; + if (boothowto & RB_VERBOSE) { bootverbose++; } - bootverbose++; - printf("real memory = %u (%u MB)\n", ptoa(realmem), - ptoa(realmem) / 1048576); + bootverbose++; + + vm_ksubmap_init(&kmi); + + config = sysreg_read(CONFIG0); + switch (bit_value(SYS, CONFIG0, AT, config)) { + case 0: + arch_type = 'A'; + break; + case 1: + arch_type = 'B'; + break; + default: + arch_type = 'x'; + break; + } + printf("CPU: AVR32%c (ID %d, Rev %d) (%ju MHz)\n Features: " + , arch_type + , bit_value(SYS, CONFIG0, PROCESSORID, config) + , bit_value(SYS, CONFIG0, AR, config) + , clock_cpu_frequency / 1000000 + ); - vm_ksubmap_init(&kmi); + if (bit_value(SYS, CONFIG0, F, config)) { + printf("FPU "); + } + if (bit_value(SYS, CONFIG0, J, config)) { + printf("JAVA "); + } + if (bit_value(SYS, CONFIG0, P, config)) { + printf("PC "); + } + if (bit_value(SYS, CONFIG0, O, config)) { + printf("OCD "); + } + if (bit_value(SYS, CONFIG0, S, config)) { + printf("SIMD "); + } + if (bit_value(SYS, CONFIG0, D, config)) { + printf("DSP "); + } + if (bit_value(SYS, CONFIG0, R, config)) { + printf("RMW"); + } + printf("\n"); + printf("real memory = %u (%u MB)\n", ptoa(realmem), + ptoa(realmem) / 1048576); printf("avail memory = %u (%uMB)\n", ptoa(cnt.v_free_count), ptoa(cnt.v_free_count) / 1048576); ==== //depot/projects/avr32/src/sys/avr32/avr32/nexus.c#2 (text+ko) ==== @@ -67,11 +67,16 @@ static int nexus_attach(device_t); static int nexus_print_child(device_t, device_t); static device_t nexus_add_child(device_t, int, const char *, int); -static struct resource *nexus_alloc_resource(device_t, device_t, int, int *, u_long, u_long, u_long, u_int); -static int nexus_release_resource(device_t, device_t, int, int, struct resource *); -static int nexus_activate_resource(device_t, device_t, int, int, struct resource *); -static int nexus_deactivate_resource(device_t, device_t, int, int, struct resource *); -static int nexus_setup_intr(device_t, device_t, struct resource *, int flags, driver_filter_t filter, void (*)(void *), void *, void **); +static struct resource *nexus_alloc_resource(device_t, device_t, int, int *, + u_long, u_long, u_long, u_int); +static int nexus_release_resource(device_t, device_t, int, int, + struct resource *); +static int nexus_activate_resource(device_t, device_t, int, int, + struct resource *); +static int nexus_deactivate_resource(device_t, device_t, int, int, + struct resource *); +static int nexus_setup_intr(device_t, device_t, struct resource *, int flags, + driver_filter_t filter, void (*)(void *), void *, void **); static int nexus_teardown_intr(device_t, device_t, struct resource *, void *); /* Nexus data */ @@ -96,70 +101,42 @@ DEVMETHOD(bus_teardown_intr, nexus_teardown_intr), { 0, 0 } }; - static devclass_t nexus_devclass; DEFINE_CLASS_0(nexus, nexus_driver, nexus_methods, 1); DRIVER_MODULE(nexus, root, nexus_driver, nexus_devclass, 0, 0); -static struct rman rman_irq; /**< IRQs */ -static struct rman rman_mem; /**< Memory addresses */ - -static int nexus_probe(device_t dev) { +/* Code */ +static int +nexus_probe(device_t dev) +{ device_set_desc(dev, "AVR32 root nexus"); - rman_mem.rm_start = 0; - rman_mem.rm_end = ~0u; - rman_mem.rm_type = RMAN_ARRAY; - rman_mem.rm_descr = "Memory addresses"; - if (rman_init(&rman_mem) != 0 || rman_manage_region(&rman_mem, 0, ~0) != 0) { - panic("%s: mem_rman", __func__); - } - -/* rman_irq.rm_start = 0; - rman_irq.rm_end = XXX; - rman_irq.rm_type = RMAN_ARRAY; - rman_irq.rm_descr = "Hardware IRQs"; - if (rman_init(&rman_irq) != 0 || rman_manage_region(&rman_irq, 0, XXX) != 0) { - panic("%s: irq_rman", __func__); - } */ - - return 0; + return (0); } -static int nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags, driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep) { +static int +nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags, + driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep) +{ avr32_impl(); -/* int irq; - - if ((rman_get_flags(res) & RF_SHAREABLE) == 0) - flags |= INTR_EXCL; - - for (i = rman_get_start(res); i <= rman_get_end(res); i++) { - avr32_setup_irqhandler(device_get_nameunit(child), filt, intr, arg, i, flags, cookiep); - }*/ - return 0; + return (0); } static int nexus_teardown_intr(device_t dev, device_t child, struct resource *r, void *ih) { avr32_impl(); -/* int error; - int i; - - error = avr32_remove_irqhandler(ih); - return (error);*/ + return (0); } >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Wed Feb 4 03:26:12 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Wed Feb 4 03:26:18 2009 Subject: PERFORCE change 157131 for review Message-ID: <200902041126.n14BQAOI006430@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157131 Change 157131 by hselasky@hselasky_laptop001 on 2009/02/04 11:26:09 USB Ethernet cleanup patches by me: - use factored out clear stall code instead of having per-driver clear stall transfers. Remove unused clear stall flags. - only clear stall data write transfers at startup. - fix one or two comments - add new global function to USB core: usb2_get_mode() which returns the current USB device mode. - some minor nits Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_core.h#34 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#51 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_aue2.c#21 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_auereg.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axe2.c#21 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axereg.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdce2.c#19 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdcereg.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cue2.c#20 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cuereg.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kue2.c#20 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kuereg.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_rue2.c#20 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_ruereg.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udav2.c#20 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udavreg.h#4 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_core.h#34 (text+ko) ==== @@ -434,6 +434,7 @@ uint8_t usb2_get_interface_altindex(struct usb2_interface *iface); usb2_error_t usb2_set_alt_interface_index(struct usb2_device *udev, uint8_t iface_index, uint8_t alt_index); +uint8_t usb2_get_mode(struct usb2_device *udev); uint8_t usb2_get_speed(struct usb2_device *udev); uint32_t usb2_get_isoc_fps(struct usb2_device *udev); usb2_error_t usb2_transfer_setup(struct usb2_device *udev, ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#51 (text+ko) ==== @@ -1952,6 +1952,20 @@ } } +/* + * Returns: + * See: USB_MODE_XXX + */ +uint8_t +usb2_get_mode(struct usb2_device *udev) +{ + return (udev->flags.usb2_mode); +} + +/* + * Returns: + * See: USB_SPEED_XXX + */ uint8_t usb2_get_speed(struct usb2_device *udev) { ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_aue2.c#21 (text+ko) ==== @@ -178,11 +178,8 @@ static miibus_writereg_t aue_miibus_writereg; static miibus_statchg_t aue_miibus_statchg; -static usb2_callback_t aue_intr_clear_stall_callback; static usb2_callback_t aue_intr_callback; -static usb2_callback_t aue_bulk_read_clear_stall_callback; static usb2_callback_t aue_bulk_read_callback; -static usb2_callback_t aue_bulk_write_clear_stall_callback; static usb2_callback_t aue_bulk_write_callback; static usb2_ether_fn_t aue_attach_post; @@ -227,28 +224,6 @@ .mh.callback = aue_bulk_read_callback, }, - [AUE_BULK_CS_WR] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.flags = {}, - .mh.callback = aue_bulk_write_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, - - [AUE_BULK_CS_RD] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.flags = {}, - .mh.callback = aue_bulk_read_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, - [AUE_INTR_DT_RD] = { .type = UE_INTERRUPT, .endpoint = UE_ADDR_ANY, @@ -257,17 +232,6 @@ .mh.bufsize = 0, /* use wMaxPacketSize */ .mh.callback = aue_intr_callback, }, - - [AUE_INTR_CS_RD] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.flags = {}, - .mh.callback = aue_intr_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, }; static device_method_t aue_methods[] = { @@ -749,19 +713,6 @@ } static void -aue_intr_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct aue_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[AUE_INTR_DT_RD]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flags &= ~AUE_FLAG_INTR_STALL; - usb2_transfer_start(xfer_other); - } -} - -static void aue_intr_callback(struct usb2_xfer *xfer) { struct aue_softc *sc = xfer->priv_sc; @@ -784,38 +735,22 @@ } /* FALLTHROUGH */ case USB_ST_SETUP: - if (sc->sc_flags & AUE_FLAG_INTR_STALL) { - usb2_transfer_start(sc->sc_xfer[AUE_INTR_CS_RD]); - } else { - xfer->frlengths[0] = xfer->max_data_length; - usb2_start_hardware(xfer); - } +tr_setup: + xfer->frlengths[0] = xfer->max_data_length; + usb2_start_hardware(xfer); return; default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { - /* start clear stall */ - sc->sc_flags |= AUE_FLAG_INTR_STALL; - usb2_transfer_start(sc->sc_xfer[AUE_INTR_CS_RD]); + /* try to clear stall first */ + xfer->flags.stall_pipe = 1; + goto tr_setup; } return; } } static void -aue_bulk_read_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct aue_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[AUE_BULK_DT_RD]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flags &= ~AUE_FLAG_READ_STALL; - usb2_transfer_start(xfer_other); - } -} - -static void aue_bulk_read_callback(struct usb2_xfer *xfer) { struct aue_softc *sc = xfer->priv_sc; @@ -859,43 +794,25 @@ /* FALLTHROUGH */ case USB_ST_SETUP: tr_setup: - - if (sc->sc_flags & AUE_FLAG_READ_STALL) { - usb2_transfer_start(sc->sc_xfer[AUE_BULK_CS_RD]); - } else { - xfer->frlengths[0] = xfer->max_data_length; - usb2_start_hardware(xfer); - } + xfer->frlengths[0] = xfer->max_data_length; + usb2_start_hardware(xfer); usb2_ether_rxflush(ue); return; default: /* Error */ + DPRINTF("bulk read error, %s\n", + usb2_errstr(xfer->error)); + if (xfer->error != USB_ERR_CANCELLED) { /* try to clear stall first */ - sc->sc_flags |= AUE_FLAG_READ_STALL; - usb2_transfer_start(sc->sc_xfer[AUE_BULK_CS_RD]); + xfer->flags.stall_pipe = 1; + goto tr_setup; } - DPRINTF("bulk read error, %s\n", - usb2_errstr(xfer->error)); return; - } } static void -aue_bulk_write_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct aue_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[AUE_BULK_DT_WR]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flags &= ~AUE_FLAG_WRITE_STALL; - usb2_transfer_start(xfer_other); - } -} - -static void aue_bulk_write_callback(struct usb2_xfer *xfer) { struct aue_softc *sc = xfer->priv_sc; @@ -910,25 +827,19 @@ /* FALLTHROUGH */ case USB_ST_SETUP: - - if (sc->sc_flags & AUE_FLAG_WRITE_STALL) { - usb2_transfer_start(sc->sc_xfer[AUE_BULK_CS_WR]); - goto done; - } +tr_setup: if ((sc->sc_flags & AUE_FLAG_LINK) == 0) { /* * don't send anything if there is no link ! */ - goto done; + return; } IFQ_DRV_DEQUEUE(&ifp->if_snd, m); - if (m == NULL) { - goto done; - } - if (m->m_pkthdr.len > MCLBYTES) { + if (m == NULL) + return; + if (m->m_pkthdr.len > MCLBYTES) m->m_pkthdr.len = MCLBYTES; - } if (sc->sc_flags & AUE_FLAG_VER_2) { xfer->frlengths[0] = m->m_pkthdr.len; @@ -941,10 +852,12 @@ xfer->frlengths[0] = (m->m_pkthdr.len + 2); /* - * The ADMtek documentation says that the packet length is - * supposed to be specified in the first two bytes of the - * transfer, however it actually seems to ignore this info - * and base the frame size on the bulk transfer length. + * The ADMtek documentation says that the + * packet length is supposed to be specified + * in the first two bytes of the transfer, + * however it actually seems to ignore this + * info and base the frame size on the bulk + * transfer length. */ buf[0] = (uint8_t)(m->m_pkthdr.len); buf[1] = (uint8_t)(m->m_pkthdr.len >> 8); @@ -964,22 +877,20 @@ m_freem(m); usb2_start_hardware(xfer); - -done: return; default: /* Error */ DPRINTFN(11, "transfer error, %s\n", usb2_errstr(xfer->error)); + ifp->if_oerrors++; + if (xfer->error != USB_ERR_CANCELLED) { /* try to clear stall first */ - sc->sc_flags |= AUE_FLAG_WRITE_STALL; - usb2_transfer_start(sc->sc_xfer[AUE_BULK_CS_WR]); + xfer->flags.stall_pipe = 1; + goto tr_setup; } - ifp->if_oerrors++; return; - } } @@ -1042,7 +953,7 @@ AUE_SETBIT(sc, AUE_CTL0, AUE_CTL0_TX_ENB); AUE_SETBIT(sc, AUE_CTL2, AUE_CTL2_EP3_CLR); - sc->sc_flags |= AUE_FLAG_READ_STALL | AUE_FLAG_WRITE_STALL; + usb2_transfer_set_stall(sc->sc_xfer[AUE_BULK_DT_WR]); ifp->if_drv_flags |= IFF_DRV_RUNNING; aue_start(ue); @@ -1121,10 +1032,7 @@ */ usb2_transfer_stop(sc->sc_xfer[AUE_BULK_DT_WR]); usb2_transfer_stop(sc->sc_xfer[AUE_BULK_DT_RD]); - usb2_transfer_stop(sc->sc_xfer[AUE_BULK_CS_WR]); - usb2_transfer_stop(sc->sc_xfer[AUE_BULK_CS_RD]); usb2_transfer_stop(sc->sc_xfer[AUE_INTR_DT_RD]); - usb2_transfer_stop(sc->sc_xfer[AUE_INTR_CS_RD]); aue_csr_write_1(sc, AUE_CTL0, 0); aue_csr_write_1(sc, AUE_CTL1, 0); ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_auereg.h#4 (text+ko) ==== @@ -63,11 +63,8 @@ enum { AUE_BULK_DT_WR, AUE_BULK_DT_RD, - AUE_BULK_CS_WR, - AUE_BULK_CS_RD, AUE_INTR_DT_RD, - AUE_INTR_CS_RD, - AUE_N_TRANSFER = 6, + AUE_N_TRANSFER, }; #define AUE_INTR_PKTLEN 0x8 @@ -214,9 +211,6 @@ #define AUE_FLAG_PNA 0x0002 /* has Home PNA */ #define AUE_FLAG_PII 0x0004 /* Pegasus II chip */ #define AUE_FLAG_LINK 0x0008 /* wait for link to come up */ -#define AUE_FLAG_READ_STALL 0x0010 /* wait for clearing of stall */ -#define AUE_FLAG_WRITE_STALL 0x0020 /* wait for clearing of stall */ -#define AUE_FLAG_INTR_STALL 0x0040 /* wait for clearing of stall */ #define AUE_FLAG_VER_2 0x0200 /* chip is version 2 */ #define AUE_FLAG_DUAL_PHY 0x0400 /* chip has two transcivers */ }; ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axe2.c#21 (text+ko) ==== @@ -101,7 +101,7 @@ * 1 4096 bytes * 2 8192 bytes * 3 16384 bytes - * use the largest your system can handle without usb stalling. + * use the largest your system can handle without USB stalling. * * NB: 88772 parts appear to generate lots of input errors with * a 2K rx buffer and 8K is only slightly faster than 4K on an @@ -153,11 +153,8 @@ static device_detach_t axe_detach; static device_shutdown_t axe_shutdown; -static usb2_callback_t axe_intr_clear_stall_callback; static usb2_callback_t axe_intr_callback; -static usb2_callback_t axe_bulk_read_clear_stall_callback; static usb2_callback_t axe_bulk_read_callback; -static usb2_callback_t axe_bulk_write_clear_stall_callback; static usb2_callback_t axe_bulk_write_callback; static miibus_readreg_t axe_miibus_readreg; @@ -204,28 +201,6 @@ .mh.timeout = 0, /* no timeout */ }, - [AXE_BULK_CS_WR] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.flags = {}, - .mh.callback = axe_bulk_write_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, - - [AXE_BULK_CS_RD] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.flags = {}, - .mh.callback = axe_bulk_read_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, - [AXE_INTR_DT_RD] = { .type = UE_INTERRUPT, .endpoint = UE_ADDR_ANY, @@ -234,17 +209,6 @@ .mh.bufsize = 0, /* use wMaxPacketSize */ .mh.callback = axe_intr_callback, }, - - [AXE_INTR_CS_RD] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.flags = {}, - .mh.callback = axe_intr_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, }; static device_method_t axe_methods[] = { @@ -739,57 +703,26 @@ } static void -axe_intr_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct axe_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[AXE_INTR_DT_RD]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flags &= ~AXE_FLAG_INTR_STALL; - usb2_transfer_start(xfer_other); - } -} - -static void axe_intr_callback(struct usb2_xfer *xfer) { - struct axe_softc *sc = xfer->priv_sc; - switch (USB_GET_STATE(xfer)) { case USB_ST_TRANSFERRED: case USB_ST_SETUP: - if (sc->sc_flags & AXE_FLAG_INTR_STALL) { - usb2_transfer_start(sc->sc_xfer[AXE_INTR_CS_RD]); - } else { - xfer->frlengths[0] = xfer->max_data_length; - usb2_start_hardware(xfer); - } +tr_setup: + xfer->frlengths[0] = xfer->max_data_length; + usb2_start_hardware(xfer); return; default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { - /* start clear stall */ - sc->sc_flags |= AXE_FLAG_INTR_STALL; - usb2_transfer_start(sc->sc_xfer[AXE_INTR_CS_RD]); + /* try to clear stall first */ + xfer->flags.stall_pipe = 1; + goto tr_setup; } return; } } -static void -axe_bulk_read_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct axe_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[AXE_BULK_DT_RD]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flags &= ~AXE_FLAG_READ_STALL; - usb2_transfer_start(xfer_other); - } -} - #if (AXE_BULK_BUF_SIZE >= 0x10000) #error "Please update axe_bulk_read_callback()!" #endif @@ -853,40 +786,25 @@ /* FALLTHROUGH */ case USB_ST_SETUP: tr_setup: - if (sc->sc_flags & AXE_FLAG_READ_STALL) { - usb2_transfer_start(sc->sc_xfer[AXE_BULK_CS_RD]); - } else { - xfer->frlengths[0] = xfer->max_data_length; - usb2_start_hardware(xfer); - } + xfer->frlengths[0] = xfer->max_data_length; + usb2_start_hardware(xfer); usb2_ether_rxflush(ue); return; default: /* Error */ + DPRINTF("bulk read error, %s\n", + usb2_errstr(xfer->error)); + if (xfer->error != USB_ERR_CANCELLED) { /* try to clear stall first */ - sc->sc_flags |= AXE_FLAG_READ_STALL; - usb2_transfer_start(sc->sc_xfer[AXE_BULK_CS_RD]); + xfer->flags.stall_pipe = 1; + goto tr_setup; } - DPRINTF("bulk read error, %s\n", usb2_errstr(xfer->error)); return; } } -static void -axe_bulk_write_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct axe_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[AXE_BULK_DT_WR]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flags &= ~AXE_FLAG_WRITE_STALL; - usb2_transfer_start(xfer_other); - } -} - #if ((AXE_BULK_BUF_SIZE >= 0x10000) || (AXE_BULK_BUF_SIZE < (MCLBYTES+4))) #error "Please update axe_bulk_write_callback()!" #endif @@ -906,16 +824,12 @@ ifp->if_opackets++; /* FALLTHROUGH */ case USB_ST_SETUP: - - if (sc->sc_flags & AXE_FLAG_WRITE_STALL) { - usb2_transfer_start(sc->sc_xfer[AXE_BULK_CS_WR]); - goto done; - } +tr_setup: if ((sc->sc_flags & AXE_FLAG_LINK) == 0) { /* * don't send anything if there is no link ! */ - goto done; + return; } pos = 0; @@ -926,8 +840,7 @@ if (m == NULL) { if (pos > 0) break; /* send out data */ - else - goto done; + return; } if (m->m_pkthdr.len > MCLBYTES) { m->m_pkthdr.len = MCLBYTES; @@ -975,20 +888,19 @@ xfer->frlengths[0] = pos; usb2_start_hardware(xfer); - -done: return; default: /* Error */ DPRINTFN(11, "transfer error, %s\n", usb2_errstr(xfer->error)); + ifp->if_oerrors++; + if (xfer->error != USB_ERR_CANCELLED) { /* try to clear stall first */ - sc->sc_flags |= AXE_FLAG_WRITE_STALL; - usb2_transfer_start(sc->sc_xfer[AXE_BULK_CS_WR]); + xfer->flags.stall_pipe = 1; + goto tr_setup; } - ifp->if_oerrors++; return; } @@ -1071,7 +983,7 @@ /* Load the multicast filter. */ axe_setmulti(ue); - sc->sc_flags |= AXE_FLAG_READ_STALL | AXE_FLAG_WRITE_STALL; + usb2_transfer_set_stall(sc->sc_xfer[AXE_BULK_DT_WR]); ifp->if_drv_flags |= IFF_DRV_RUNNING; axe_start(ue); @@ -1115,10 +1027,7 @@ */ usb2_transfer_stop(sc->sc_xfer[AXE_BULK_DT_WR]); usb2_transfer_stop(sc->sc_xfer[AXE_BULK_DT_RD]); - usb2_transfer_stop(sc->sc_xfer[AXE_BULK_CS_WR]); - usb2_transfer_stop(sc->sc_xfer[AXE_BULK_CS_RD]); usb2_transfer_stop(sc->sc_xfer[AXE_INTR_DT_RD]); - usb2_transfer_stop(sc->sc_xfer[AXE_INTR_CS_RD]); axe_reset(sc); } ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axereg.h#4 (text+ko) ==== @@ -172,11 +172,8 @@ enum { AXE_BULK_DT_WR, AXE_BULK_DT_RD, - AXE_BULK_CS_WR, - AXE_BULK_CS_RD, AXE_INTR_DT_RD, - AXE_INTR_CS_RD, - AXE_N_TRANSFER = 6, + AXE_N_TRANSFER, }; struct axe_softc { @@ -187,9 +184,6 @@ int sc_flags; #define AXE_FLAG_LINK 0x0001 -#define AXE_FLAG_INTR_STALL 0x0002 -#define AXE_FLAG_READ_STALL 0x0004 -#define AXE_FLAG_WRITE_STALL 0x0008 #define AXE_FLAG_772 0x1000 /* AX88772 */ #define AXE_FLAG_178 0x2000 /* AX88178 */ ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdce2.c#19 (text+ko) ==== @@ -557,11 +557,17 @@ ifp->if_drv_flags |= IFF_DRV_RUNNING; - /* - * start all the transfers - */ + /* start interrupt transfer */ + usb2_transfer_start(sc->sc_xfer[CDCE_INTR]); + + /* stall data write direction, which depends on USB mode */ + if (usb2_get_mode(sc->sc_ue.ue_udev) == USB_MODE_HOST) + usb2_transfer_set_stall(sc->sc_xfer[CDCE_BULK_A]); + else + usb2_transfer_set_stall(sc->sc_xfer[CDCE_BULK_B]); + + /* start data transfers */ cdce_start(ue); - usb2_transfer_start(sc->sc_xfer[CDCE_INTR]); } static void ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdcereg.h#4 (text+ko) ==== @@ -42,7 +42,7 @@ CDCE_BULK_A, CDCE_BULK_B, CDCE_INTR, - CDCE_N_TRANSFER = 3, + CDCE_N_TRANSFER, }; struct cdce_softc { @@ -52,7 +52,7 @@ struct mbuf *sc_rx_buf[CDCE_FRAMES_MAX]; struct mbuf *sc_tx_buf[CDCE_FRAMES_MAX]; - uint16_t sc_flags; + int sc_flags; #define CDCE_FLAG_ZAURUS 0x0001 #define CDCE_FLAG_NO_UNION 0x0002 #define CDCE_FLAG_RX_DATA 0x0010 ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cue2.c#20 (text+ko) ==== @@ -88,9 +88,7 @@ static device_detach_t cue_detach; static device_shutdown_t cue_shutdown; -static usb2_callback_t cue_bulk_read_clear_stall_callback; static usb2_callback_t cue_bulk_read_callback; -static usb2_callback_t cue_bulk_write_clear_stall_callback; static usb2_callback_t cue_bulk_write_callback; static usb2_ether_fn_t cue_attach_post; @@ -137,28 +135,6 @@ .mh.flags = {.pipe_bof = 1,.short_xfer_ok = 1,}, .mh.callback = cue_bulk_read_callback, }, - - [CUE_BULK_CS_WR] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.flags = {}, - .mh.callback = cue_bulk_write_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, - - [CUE_BULK_CS_RD] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.flags = {}, - .mh.callback = cue_bulk_read_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, }; static device_method_t cue_methods[] = { @@ -452,19 +428,6 @@ } static void -cue_bulk_read_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct cue_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[CUE_BULK_DT_RD]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flags &= ~CUE_FLAG_READ_STALL; - usb2_transfer_start(xfer_other); - } -} - -static void cue_bulk_read_callback(struct usb2_xfer *xfer) { struct cue_softc *sc = xfer->priv_sc; @@ -489,43 +452,26 @@ /* FALLTHROUGH */ case USB_ST_SETUP: tr_setup: - - if (sc->sc_flags & CUE_FLAG_READ_STALL) { - usb2_transfer_start(sc->sc_xfer[CUE_BULK_CS_RD]); - } else { - xfer->frlengths[0] = xfer->max_data_length; - usb2_start_hardware(xfer); - } + xfer->frlengths[0] = xfer->max_data_length; + usb2_start_hardware(xfer); usb2_ether_rxflush(ue); return; default: /* Error */ + DPRINTF("bulk read error, %s\n", + usb2_errstr(xfer->error)); + if (xfer->error != USB_ERR_CANCELLED) { /* try to clear stall first */ - sc->sc_flags |= CUE_FLAG_READ_STALL; - usb2_transfer_start(sc->sc_xfer[CUE_BULK_CS_RD]); + xfer->flags.stall_pipe = 1; + goto tr_setup; } - DPRINTF("bulk read error, %s\n", - usb2_errstr(xfer->error)); return; } } static void -cue_bulk_write_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct cue_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[CUE_BULK_DT_WR]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flags &= ~CUE_FLAG_WRITE_STALL; - usb2_transfer_start(xfer_other); - } -} - -static void cue_bulk_write_callback(struct usb2_xfer *xfer) { struct cue_softc *sc = xfer->priv_sc; @@ -540,19 +486,13 @@ /* FALLTHROUGH */ case USB_ST_SETUP: - - if (sc->sc_flags & CUE_FLAG_WRITE_STALL) { - usb2_transfer_start(sc->sc_xfer[CUE_BULK_CS_WR]); - goto done; - } +tr_setup: IFQ_DRV_DEQUEUE(&ifp->if_snd, m); - if (m == NULL) { - goto done; - } - if (m->m_pkthdr.len > MCLBYTES) { + if (m == NULL) + return; + if (m->m_pkthdr.len > MCLBYTES) m->m_pkthdr.len = MCLBYTES; - } xfer->frlengths[0] = (m->m_pkthdr.len + 2); /* the first two bytes are the frame length */ @@ -575,21 +515,20 @@ usb2_start_hardware(xfer); -done: return; default: /* Error */ DPRINTFN(11, "transfer error, %s\n", usb2_errstr(xfer->error)); + ifp->if_oerrors++; + if (xfer->error != USB_ERR_CANCELLED) { /* try to clear stall first */ - sc->sc_flags |= CUE_FLAG_WRITE_STALL; - usb2_transfer_start(sc->sc_xfer[CUE_BULK_CS_WR]); + xfer->flags.stall_pipe = 1; + goto tr_setup; } - ifp->if_oerrors++; return; - } } @@ -661,7 +600,7 @@ /* Program the LED operation. */ cue_csr_write_1(sc, CUE_LEDCTL, CUE_LEDCTL_FOLLOW_LINK); - sc->sc_flags |= CUE_FLAG_READ_STALL | CUE_FLAG_WRITE_STALL; + usb2_transfer_set_stall(sc->sc_xfer[CUE_BULK_DT_WR]); ifp->if_drv_flags |= IFF_DRV_RUNNING; cue_start(ue); @@ -686,8 +625,6 @@ */ usb2_transfer_stop(sc->sc_xfer[CUE_BULK_DT_WR]); usb2_transfer_stop(sc->sc_xfer[CUE_BULK_DT_RD]); - usb2_transfer_stop(sc->sc_xfer[CUE_BULK_CS_WR]); - usb2_transfer_stop(sc->sc_xfer[CUE_BULK_CS_RD]); cue_csr_write_1(sc, CUE_ETHCTL, 0); cue_reset(sc); ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cuereg.h#4 (text+ko) ==== @@ -115,9 +115,7 @@ enum { CUE_BULK_DT_WR, CUE_BULK_DT_RD, - CUE_BULK_CS_WR, - CUE_BULK_CS_RD, - CUE_N_TRANSFER = 4, + CUE_N_TRANSFER, }; struct cue_softc { @@ -126,11 +124,7 @@ struct usb2_xfer *sc_xfer[CUE_N_TRANSFER]; int sc_flags; -#define CUE_FLAG_READ_STALL 0x0010 /* wait for clearing of stall */ -#define CUE_FLAG_WRITE_STALL 0x0020 /* wait for clearing of stall */ -#define CUE_FLAG_LINK 0x0040 /* got a link */ -#define CUE_FLAG_DETACH 0x0080 /* card gone */ -#define CUE_FLAG_INTR_STALL 0x0100 /* wait for clearing of stall */ +#define CUE_FLAG_LINK 0x0001 /* got a link */ }; #define CUE_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx) ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kue2.c#20 (text+ko) ==== @@ -131,9 +131,7 @@ static device_detach_t kue_detach; static device_shutdown_t kue_shutdown; -static usb2_callback_t kue_bulk_read_clear_stall_callback; static usb2_callback_t kue_bulk_read_callback; -static usb2_callback_t kue_bulk_write_clear_stall_callback; static usb2_callback_t kue_bulk_write_callback; static usb2_ether_fn_t kue_attach_post; @@ -180,28 +178,6 @@ .mh.callback = kue_bulk_read_callback, .mh.timeout = 0, /* no timeout */ }, - - [KUE_BULK_CS_WR] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.flags = {}, - .mh.callback = kue_bulk_write_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, - - [KUE_BULK_CS_RD] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.flags = {}, - .mh.callback = kue_bulk_read_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, }; static device_method_t kue_methods[] = { @@ -540,19 +516,6 @@ * the higher level protocols. */ static void -kue_bulk_read_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct kue_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[KUE_BULK_DT_RD]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flags &= ~KUE_FLAG_READ_STALL; - usb2_transfer_start(xfer_other); - } -} - -static void kue_bulk_read_callback(struct usb2_xfer *xfer) { struct kue_softc *sc = xfer->priv_sc; @@ -577,43 +540,26 @@ /* FALLTHROUGH */ case USB_ST_SETUP: tr_setup: - - if (sc->sc_flags & KUE_FLAG_READ_STALL) { - usb2_transfer_start(sc->sc_xfer[KUE_BULK_CS_RD]); - } else { - xfer->frlengths[0] = xfer->max_data_length; - usb2_start_hardware(xfer); - } + xfer->frlengths[0] = xfer->max_data_length; + usb2_start_hardware(xfer); usb2_ether_rxflush(ue); return; default: /* Error */ + DPRINTF("bulk read error, %s\n", + usb2_errstr(xfer->error)); + if (xfer->error != USB_ERR_CANCELLED) { /* try to clear stall first */ - sc->sc_flags |= KUE_FLAG_READ_STALL; - usb2_transfer_start(sc->sc_xfer[KUE_BULK_CS_RD]); + xfer->flags.stall_pipe = 1; + goto tr_setup; } - DPRINTF("bulk read error, %s\n", - usb2_errstr(xfer->error)); return; >>> TRUNCATED FOR MAIL (1000 lines) <<< From weongyo at FreeBSD.org Wed Feb 4 04:42:35 2009 From: weongyo at FreeBSD.org (Weongyo Jeong) Date: Wed Feb 4 04:42:42 2009 Subject: PERFORCE change 157132 for review Message-ID: <200902041242.n14CgXj2014958@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157132 Change 157132 by weongyo@weongyo_ws on 2009/02/04 12:42:14 o remove UATH_RX_DATA_LIST_COUNT macro unused anymore. o change a strategy to allocate tx buffers based on STAILQ. It's more easy and useful to handle free lists. Affected files ... .. //depot/projects/vap/sys/dev/usb/if_uath.c#13 edit .. //depot/projects/vap/sys/dev/usb/if_uathvar.h#5 edit Differences ... ==== //depot/projects/vap/sys/dev/usb/if_uath.c#13 (text+ko) ==== @@ -670,10 +670,22 @@ static int uath_alloc_tx_data_list(struct uath_softc *sc) { + int error, i; + struct uath_data *tx; - return uath_alloc_data_list(sc, - sc->sc_data_tx, UATH_TX_DATA_LIST_COUNT, - UATH_MAX_TXBUFSZ, 0 /* no mbufs */); + error = uath_alloc_data_list(sc, + sc->sc_data_tx, UATH_TX_DATA_LIST_COUNT, UATH_MAX_TXBUFSZ, + 0 /* no mbufs */); + if (error != 0) + return (error); + + STAILQ_INIT(&sc->sc_data_txhead); + for (i = 0; i < UATH_TX_DATA_LIST_COUNT; i++) { + tx = &sc->sc_data_tx[i]; + STAILQ_INSERT_HEAD(&sc->sc_data_txhead, tx, next); + } + + return (0); } static void @@ -780,6 +792,39 @@ sc->sc_cmd_rx, UATH_RX_CMD_LIST_COUNT); } +static struct uath_data * +_uath_getbuf(struct uath_softc *sc) +{ + struct uath_data *bf; + + UATH_ASSERT_LOCKED(sc); + + bf = STAILQ_FIRST(&sc->sc_data_txhead); + if (bf != NULL) + STAILQ_REMOVE_HEAD(&sc->sc_data_txhead, next); + else + bf = NULL; + if (bf == NULL) + DPRINTF(sc, UATH_DEBUG_XMIT, "%s: %s\n", __func__, + "out of xmit buffers"); + return (bf); +} + +static struct uath_data * +uath_getbuf(struct uath_softc *sc) +{ + struct uath_data *bf; + + bf = _uath_getbuf(sc); + if (bf == NULL) { + struct ifnet *ifp = sc->sc_ifp; + + DPRINTF(sc, UATH_DEBUG_XMIT, "%s: stop queue\n", __func__); + ifp->if_drv_flags |= IFF_DRV_OACTIVE; + } + return (bf); +} + /* * This function is called periodically (every second) when associated to * query device statistics. @@ -1754,15 +1799,14 @@ struct uath_data *data; struct uath_chunk *chunk; struct uath_tx_desc *desc; - int data_idx, xferlen; + int error = 0, xferlen; usbd_status status; UATH_ASSERT_LOCKED(sc); - data_idx = sc->sc_data_idx; - sc->sc_data_idx = (data_idx + 1) % UATH_TX_DATA_LIST_COUNT; - - data = &sc->sc_data_tx[data_idx]; + data = uath_getbuf(sc); + if (data == NULL) + return (ENOBUFS); data->ni = NULL; chunk = (struct uath_chunk *)data->buf; desc = (struct uath_tx_desc *)(chunk + 1); @@ -1775,7 +1819,7 @@ bzero(desc, sizeof(struct uath_tx_desc)); desc->msglen = htobe32(sizeof(struct uath_tx_desc)); - desc->msgid = data_idx + 1; /* don't care about endianness */ + desc->msgid = (sc->sc_msgid++) + 1; /* don't care about endianness */ desc->type = htobe32(WDCMSG_FLUSH); desc->txqid = htobe32(0); desc->connid = htobe32(0); @@ -1783,7 +1827,7 @@ #ifdef UATH_DEBUG if (sc->sc_debug & UATH_DEBUG_CMDS) { - printf("send flush ix %u\n", data_idx); + printf("send flush ix %d\n", desc->msgid); if (sc->sc_debug & UATH_DEBUG_CMDS_DUMP) uath_dump_cmd(data->buf, xferlen, '+'); } @@ -1796,9 +1840,12 @@ if (status != USBD_IN_PROGRESS && status != USBD_NORMAL_COMPLETION) { device_printf(sc->sc_dev, "could not send flush: %s\n", usbd_errstr(status)); - return (EIO); + error = EIO; } - return (0); + /* NB: flushing the data pipe is synchronous so add the buffer again. */ + STAILQ_INSERT_HEAD(&sc->sc_data_txhead, data, next); + + return (error); } static void @@ -1842,7 +1889,7 @@ ifp->if_opackets++; UATH_LOCK(sc); - sc->sc_tx_queued--; + STAILQ_INSERT_HEAD(&sc->sc_data_txhead, data, next); ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; UATH_UNLOCK(sc); @@ -1850,24 +1897,20 @@ } static int -uath_tx_start(struct uath_softc *sc, struct mbuf *m0, struct ieee80211_node *ni) +uath_tx_start(struct uath_softc *sc, struct mbuf *m0, struct ieee80211_node *ni, + struct uath_data *data) { struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; - struct uath_data *data; struct uath_chunk *chunk; struct uath_tx_desc *desc; const struct ieee80211_frame *wh; struct ieee80211_key *k; - int data_idx, framelen, msglen, xferlen; + int framelen, msglen, xferlen; usbd_status status; UATH_ASSERT_LOCKED(sc); - data_idx = sc->sc_data_idx; - sc->sc_data_idx = (sc->sc_data_idx + 1) % UATH_TX_DATA_LIST_COUNT; - - data = &sc->sc_data_tx[data_idx]; data->ni = ni; data->m = m0; chunk = (struct uath_chunk *)data->buf; @@ -1908,7 +1951,7 @@ /* fill Tx descriptor */ desc->msglen = htobe32(msglen); /* NB: to get UATH_TX_NOTIFY reply, `msgid' must be larger than 0 */ - desc->msgid = data_idx + 1; /* don't care about endianness */ + desc->msgid = (sc->sc_msgid++) + 1; /* don't care about endianness */ desc->type = htobe32(WDCMSG_SEND); switch (wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) { case IEEE80211_FC0_TYPE_CTL: @@ -1941,7 +1984,7 @@ #ifdef UATH_DEBUG DPRINTF(sc, UATH_DEBUG_XMIT, "send frame ix %u framelen %d msglen %d connid 0x%x txqid 0x%x\n", - data_idx, framelen, msglen, be32toh(desc->connid), + desc->msgid, framelen, msglen, be32toh(desc->connid), be32toh(desc->txqid)); if (sc->sc_debug & UATH_DEBUG_XMIT_DUMP) uath_dump_cmd(data->buf, xferlen, '+'); @@ -1956,14 +1999,13 @@ m_freem(m0); return (EIO); } - - sc->sc_tx_queued++; return (0); } static void uath_start(struct ifnet *ifp) { + struct uath_data *bf; struct uath_softc *sc = ifp->if_softc; struct ieee80211_node *ni; struct mbuf *m; @@ -1973,12 +2015,13 @@ UATH_LOCK(sc); for (;;) { + bf = uath_getbuf(sc); + if (bf == NULL) + break; + IFQ_DRV_DEQUEUE(&ifp->if_snd, m); - if (m == NULL) - break; - if (sc->sc_tx_queued >= UATH_TX_DATA_LIST_COUNT) { - IFQ_DRV_PREPEND(&ifp->if_snd, m); - ifp->if_drv_flags |= IFF_DRV_OACTIVE; + if (m == NULL) { + STAILQ_INSERT_HEAD(&sc->sc_data_txhead, bf, next); break; } @@ -1986,15 +2029,17 @@ m->m_pkthdr.rcvif = NULL; m = ieee80211_encap(ni, m); if (m == NULL) { - ieee80211_free_node(ni); - ifp->if_oerrors++; - continue; + DPRINTF(sc, UATH_DEBUG_XMIT, + "%s: encapsulation failure\n", __func__); + goto bad; } - if (uath_tx_start(sc, m, ni) != 0) { + if (uath_tx_start(sc, m, ni, bf) != 0) { + bad: + ifp->if_oerrors++; + STAILQ_INSERT_HEAD(&sc->sc_data_txhead, bf, next); ieee80211_free_node(ni); - ifp->if_oerrors++; - break; + continue; } sc->sc_tx_timer = 5; @@ -2425,8 +2470,8 @@ if (ifp->if_drv_flags & IFF_DRV_RUNNING) uath_stop_locked(ifp); - /* reset data and command rings */ - sc->sc_tx_queued = sc->sc_data_idx = sc->sc_cmd_idx = 0; + /* reset command rings */ + sc->sc_msgid = sc->sc_cmd_idx = 0; val = htobe32(0); uath_cmd_write(sc, WDCMSG_BIND, &val, sizeof val, 0); @@ -2648,6 +2693,7 @@ { struct ieee80211com *ic = ni->ni_ic; struct ifnet *ifp = ic->ic_ifp; + struct uath_data *bf; struct uath_softc *sc = ifp->if_softc; /* prevent management frames from being sent if we're not ready */ @@ -2658,17 +2704,19 @@ } UATH_LOCK(sc); - if (sc->sc_tx_queued >= UATH_TX_DATA_LIST_COUNT) { - ifp->if_drv_flags |= IFF_DRV_OACTIVE; + /* grab a TX buffer */ + bf = uath_getbuf(sc); + if (bf == NULL) { + ieee80211_free_node(ni); m_freem(m); - ieee80211_free_node(ni); UATH_UNLOCK(sc); - return (ENOBUFS); /* XXX */ + return (ENOBUFS); } - if (uath_tx_start(sc, m, ni) != 0) { + if (uath_tx_start(sc, m, ni, bf) != 0) { ieee80211_free_node(ni); ifp->if_oerrors++; + STAILQ_INSERT_HEAD(&sc->sc_data_txhead, bf, next); UATH_UNLOCK(sc); return (EIO); } ==== //depot/projects/vap/sys/dev/usb/if_uathvar.h#5 (text+ko) ==== @@ -26,8 +26,6 @@ #define UATH_RX_DATA_LIST_COUNT 1 /* 128 */ #define UATH_RX_CMD_LIST_COUNT 1 /* 30 */ -#define UATH_RX_DATA_POOL_COUNT (UATH_RX_DATA_LIST_COUNT + 24) - #define UATH_DATA_TIMEOUT 10000 #define UATH_CMD_TIMEOUT 1000 @@ -66,7 +64,9 @@ uint8_t *buf; struct mbuf *m; struct ieee80211_node *ni; /* NB: tx only */ + STAILQ_ENTRY(uath_data) next; }; +typedef STAILQ_HEAD(, uath_data) uath_bufhead; struct uath_cmd { struct uath_softc *sc; @@ -176,10 +176,10 @@ int sc_cmd_idx; usbd_pipe_handle sc_data_rxpipe; usbd_pipe_handle sc_data_txpipe; - struct uath_data sc_data_rx[UATH_RX_DATA_POOL_COUNT]; + struct uath_data sc_data_rx[UATH_RX_DATA_LIST_COUNT]; struct uath_data sc_data_tx[UATH_TX_DATA_LIST_COUNT]; - int sc_data_idx; - int sc_tx_queued; + uath_bufhead sc_data_txhead; + uint32_t sc_msgid; int sc_tx_timer; struct callout watchdog_ch; struct callout stat_ch; From hselasky at FreeBSD.org Wed Feb 4 05:49:46 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Wed Feb 4 05:49:52 2009 Subject: PERFORCE change 157136 for review Message-ID: <200902041349.n14DniFb031192@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157136 Change 157136 by hselasky@hselasky_laptop001 on 2009/02/04 13:49:30 USB serial drivers cleanup by me. - factor out all clear stall handling - factor out all usb2_do_request() calls. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/serial/u3g2.c#10 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uark2.c#16 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/ubsa2.c#22 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/ubser2.c#16 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uchcom2.c#19 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/ucycom2.c#17 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/ufoma2.c#22 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uftdi2.c#19 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uftdi2_reg.h#5 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/ugensa2.c#23 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uipaq2.c#19 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/ulpt2.c#15 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/umct2.c#16 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/umodem2.c#19 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/umoscom2.c#17 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uplcom2.c#19 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.c#24 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.h#13 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uvisor2.c#17 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uvscom2.c#19 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/serial/u3g2.c#10 (text+ko) ==== @@ -88,7 +88,7 @@ enum { U3G_BULK_WR, U3G_BULK_RD, - U3G_N_TRANSFER = 2, + U3G_N_TRANSFER, }; struct u3g_softc { ==== //depot/projects/usb/src/sys/dev/usb2/serial/uark2.c#16 (text+ko) ==== @@ -64,9 +64,7 @@ enum { UARK_BULK_DT_WR, UARK_BULK_DT_RD, - UARK_BULK_CS_WR, - UARK_BULK_CS_RD, - UARK_N_TRANSFER = 4, + UARK_N_TRANSFER, }; struct uark_softc { @@ -76,9 +74,6 @@ struct usb2_xfer *sc_xfer[UARK_N_TRANSFER]; struct usb2_device *sc_udev; - uint8_t sc_flags; -#define UARK_FLAG_BULK_READ_STALL 0x01 -#define UARK_FLAG_BULK_WRITE_STALL 0x02 uint8_t sc_msr; uint8_t sc_lsr; }; @@ -90,9 +85,7 @@ static device_detach_t uark_detach; static usb2_callback_t uark_bulk_write_callback; -static usb2_callback_t uark_bulk_write_clear_stall_callback; static usb2_callback_t uark_bulk_read_callback; -static usb2_callback_t uark_bulk_read_clear_stall_callback; static void uark_start_read(struct usb2_com_softc *); static void uark_stop_read(struct usb2_com_softc *); @@ -125,28 +118,6 @@ .mh.flags = {.pipe_bof = 1,.short_xfer_ok = 1,}, .mh.callback = &uark_bulk_read_callback, }, - - [UARK_BULK_CS_WR] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.flags = {}, - .mh.callback = &uark_bulk_write_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, - - [UARK_BULK_CS_RD] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.flags = {}, - .mh.callback = &uark_bulk_read_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, }; static const struct usb2_com_callback uark_callback = { @@ -224,8 +195,8 @@ goto detach; } /* clear stall at first run */ - sc->sc_flags |= (UARK_FLAG_BULK_WRITE_STALL | - UARK_FLAG_BULK_READ_STALL); + usb2_transfer_set_stall(sc->sc_xfer[UARK_BULK_DT_WR]); + usb2_transfer_set_stall(sc->sc_xfer[UARK_BULK_DT_RD]); error = usb2_com_attach(&sc->sc_super_ucom, &sc->sc_ucom, 1, sc, &uark_callback, &Giant); @@ -261,10 +232,7 @@ switch (USB_GET_STATE(xfer)) { case USB_ST_SETUP: case USB_ST_TRANSFERRED: - if (sc->sc_flags & UARK_FLAG_BULK_WRITE_STALL) { - usb2_transfer_start(sc->sc_xfer[UARK_BULK_CS_WR]); - return; - } +tr_setup: if (usb2_com_get_data(&sc->sc_ucom, xfer->frbuffers, 0, UARK_BUF_SIZE, &actlen)) { xfer->frlengths[0] = actlen; @@ -274,8 +242,9 @@ default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { - sc->sc_flags |= UARK_FLAG_BULK_WRITE_STALL; - usb2_transfer_start(sc->sc_xfer[UARK_BULK_CS_WR]); + /* try to clear stall first */ + xfer->flags.stall_pipe = 1; + goto tr_setup; } return; @@ -283,19 +252,6 @@ } static void -uark_bulk_write_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct uark_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[UARK_BULK_DT_WR]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flags &= ~UARK_FLAG_BULK_WRITE_STALL; - usb2_transfer_start(xfer_other); - } -} - -static void uark_bulk_read_callback(struct usb2_xfer *xfer) { struct uark_softc *sc = xfer->priv_sc; @@ -306,34 +262,18 @@ xfer->actlen); case USB_ST_SETUP: - if (sc->sc_flags & UARK_FLAG_BULK_READ_STALL) { - usb2_transfer_start(sc->sc_xfer[UARK_BULK_CS_RD]); - } else { - xfer->frlengths[0] = xfer->max_data_length; - usb2_start_hardware(xfer); - } +tr_setup: + xfer->frlengths[0] = xfer->max_data_length; + usb2_start_hardware(xfer); return; default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { - sc->sc_flags |= UARK_FLAG_BULK_READ_STALL; - usb2_transfer_start(sc->sc_xfer[UARK_BULK_CS_RD]); + /* try to clear stall first */ + xfer->flags.stall_pipe = 1; + goto tr_setup; } return; - - } -} - -static void -uark_bulk_read_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct uark_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[UARK_BULK_DT_RD]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flags &= ~UARK_FLAG_BULK_READ_STALL; - usb2_transfer_start(xfer_other); } } @@ -350,7 +290,6 @@ { struct uark_softc *sc = ucom->sc_parent; - usb2_transfer_stop(sc->sc_xfer[UARK_BULK_CS_RD]); usb2_transfer_stop(sc->sc_xfer[UARK_BULK_DT_RD]); } @@ -367,7 +306,6 @@ { struct uark_softc *sc = ucom->sc_parent; - usb2_transfer_stop(sc->sc_xfer[UARK_BULK_CS_WR]); usb2_transfer_stop(sc->sc_xfer[UARK_BULK_DT_WR]); } @@ -454,18 +392,14 @@ struct usb2_device_request req; usb2_error_t err; - if (usb2_com_cfg_is_gone(&sc->sc_ucom)) { - return; - } req.bmRequestType = UARK_WRITE; req.bRequest = UARK_REQUEST; USETW(req.wValue, value); USETW(req.wIndex, index); USETW(req.wLength, 0); - err = usb2_do_request_flags - (sc->sc_udev, &Giant, &req, NULL, 0, NULL, 1000); - + err = usb2_com_cfg_do_request(sc->sc_udev, &sc->sc_ucom, + &req, NULL, 0, 1000); if (err) { DPRINTFN(0, "device request failed, err=%s " "(ignored)\n", usb2_errstr(err)); ==== //depot/projects/usb/src/sys/dev/usb2/serial/ubsa2.c#22 (text+ko) ==== @@ -143,11 +143,8 @@ enum { UBSA_BULK_DT_WR, UBSA_BULK_DT_RD, - UBSA_BULK_CS_WR, - UBSA_BULK_CS_RD, UBSA_INTR_DT_RD, - UBSA_INTR_CS_RD, - UBSA_N_TRANSFER = 6, + UBSA_N_TRANSFER, }; struct ubsa_softc { @@ -157,11 +154,6 @@ struct usb2_xfer *sc_xfer[UBSA_N_TRANSFER]; struct usb2_device *sc_udev; - uint16_t sc_flag; -#define UBSA_FLAG_WRITE_STALL 0x0001 -#define UBSA_FLAG_READ_STALL 0x0002 -#define UBSA_FLAG_INTR_STALL 0x0004 - uint8_t sc_iface_no; /* interface number */ uint8_t sc_iface_index; /* interface index */ uint8_t sc_lsr; /* local status register */ @@ -173,11 +165,8 @@ static device_detach_t ubsa_detach; static usb2_callback_t ubsa_write_callback; -static usb2_callback_t ubsa_write_clear_stall_callback; static usb2_callback_t ubsa_read_callback; -static usb2_callback_t ubsa_read_clear_stall_callback; static usb2_callback_t ubsa_intr_callback; -static usb2_callback_t ubsa_intr_clear_stall_callback; static void ubsa_cfg_request(struct ubsa_softc *, uint8_t, uint16_t); static void ubsa_cfg_set_dtr(struct usb2_com_softc *, uint8_t); @@ -212,26 +201,6 @@ .mh.callback = &ubsa_read_callback, }, - [UBSA_BULK_CS_WR] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.callback = &ubsa_write_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, - - [UBSA_BULK_CS_RD] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.callback = &ubsa_read_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, - [UBSA_INTR_DT_RD] = { .type = UE_INTERRUPT, .endpoint = UE_ADDR_ANY, @@ -240,16 +209,6 @@ .mh.bufsize = 0, /* use wMaxPacketSize */ .mh.callback = &ubsa_intr_callback, }, - - [UBSA_INTR_CS_RD] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.callback = &ubsa_intr_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, }; static const struct usb2_com_callback ubsa_callback = { @@ -343,8 +302,8 @@ goto detach; } /* clear stall at first run */ - sc->sc_flag |= (UBSA_FLAG_WRITE_STALL | - UBSA_FLAG_READ_STALL); + usb2_transfer_set_stall(sc->sc_xfer[UBSA_BULK_DT_WR]); + usb2_transfer_set_stall(sc->sc_xfer[UBSA_BULK_DT_RD]); error = usb2_com_attach(&sc->sc_super_ucom, &sc->sc_ucom, 1, sc, &ubsa_callback, &Giant); @@ -379,9 +338,6 @@ struct usb2_device_request req; usb2_error_t err; - if (usb2_com_cfg_is_gone(&sc->sc_ucom)) { - return; - } req.bmRequestType = UT_WRITE_VENDOR_DEVICE; req.bRequest = index; USETW(req.wValue, value); @@ -389,9 +345,8 @@ req.wIndex[1] = 0; USETW(req.wLength, 0); - err = usb2_do_request_flags - (sc->sc_udev, &Giant, &req, NULL, 0, NULL, 1000); - + err = usb2_com_cfg_do_request(sc->sc_udev, &sc->sc_ucom, + &req, NULL, 0, 1000); if (err) { DPRINTFN(0, "device request failed, err=%s " "(ignored)\n", usb2_errstr(err)); @@ -544,11 +499,9 @@ struct ubsa_softc *sc = ucom->sc_parent; /* stop interrupt endpoint */ - usb2_transfer_stop(sc->sc_xfer[UBSA_INTR_CS_RD]); usb2_transfer_stop(sc->sc_xfer[UBSA_INTR_DT_RD]); /* stop read endpoint */ - usb2_transfer_stop(sc->sc_xfer[UBSA_BULK_CS_RD]); usb2_transfer_stop(sc->sc_xfer[UBSA_BULK_DT_RD]); } @@ -565,7 +518,6 @@ { struct ubsa_softc *sc = ucom->sc_parent; - usb2_transfer_stop(sc->sc_xfer[UBSA_BULK_CS_WR]); usb2_transfer_stop(sc->sc_xfer[UBSA_BULK_DT_WR]); } @@ -589,10 +541,7 @@ switch (USB_GET_STATE(xfer)) { case USB_ST_SETUP: case USB_ST_TRANSFERRED: - if (sc->sc_flag & UBSA_FLAG_WRITE_STALL) { - usb2_transfer_start(sc->sc_xfer[UBSA_BULK_CS_WR]); - return; - } +tr_setup: if (usb2_com_get_data(&sc->sc_ucom, xfer->frbuffers, 0, UBSA_BSIZE, &actlen)) { @@ -603,8 +552,9 @@ default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { - sc->sc_flag |= UBSA_FLAG_WRITE_STALL; - usb2_transfer_start(sc->sc_xfer[UBSA_BULK_CS_WR]); + /* try to clear stall first */ + xfer->flags.stall_pipe = 1; + goto tr_setup; } return; @@ -612,19 +562,6 @@ } static void -ubsa_write_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct ubsa_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[UBSA_BULK_DT_WR]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flag &= ~UBSA_FLAG_WRITE_STALL; - usb2_transfer_start(xfer_other); - } -} - -static void ubsa_read_callback(struct usb2_xfer *xfer) { struct ubsa_softc *sc = xfer->priv_sc; @@ -634,18 +571,16 @@ usb2_com_put_data(&sc->sc_ucom, xfer->frbuffers, 0, xfer->actlen); case USB_ST_SETUP: - if (sc->sc_flag & UBSA_FLAG_READ_STALL) { - usb2_transfer_start(sc->sc_xfer[UBSA_BULK_CS_RD]); - } else { - xfer->frlengths[0] = xfer->max_data_length; - usb2_start_hardware(xfer); - } +tr_setup: + xfer->frlengths[0] = xfer->max_data_length; + usb2_start_hardware(xfer); return; default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { - sc->sc_flag |= UBSA_FLAG_READ_STALL; - usb2_transfer_start(sc->sc_xfer[UBSA_BULK_CS_RD]); + /* try to clear stall first */ + xfer->flags.stall_pipe = 1; + goto tr_setup; } return; @@ -653,19 +588,6 @@ } static void -ubsa_read_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct ubsa_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[UBSA_BULK_DT_RD]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flag &= ~UBSA_FLAG_READ_STALL; - usb2_transfer_start(xfer_other); - } -} - -static void ubsa_intr_callback(struct usb2_xfer *xfer) { struct ubsa_softc *sc = xfer->priv_sc; @@ -695,33 +617,18 @@ } case USB_ST_SETUP: - if (sc->sc_flag & UBSA_FLAG_INTR_STALL) { - usb2_transfer_start(sc->sc_xfer[UBSA_INTR_CS_RD]); - } else { - xfer->frlengths[0] = xfer->max_data_length; - usb2_start_hardware(xfer); - } +tr_setup: + xfer->frlengths[0] = xfer->max_data_length; + usb2_start_hardware(xfer); return; default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { - sc->sc_flag |= UBSA_FLAG_INTR_STALL; - usb2_transfer_start(sc->sc_xfer[UBSA_INTR_CS_RD]); + /* try to clear stall first */ + xfer->flags.stall_pipe = 1; + goto tr_setup; } return; } } - -static void -ubsa_intr_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct ubsa_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[UBSA_INTR_DT_RD]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flag &= ~UBSA_FLAG_INTR_STALL; - usb2_transfer_start(xfer_other); - } -} ==== //depot/projects/usb/src/sys/dev/usb2/serial/ubser2.c#16 (text+ko) ==== @@ -113,9 +113,7 @@ enum { UBSER_BULK_DT_WR, UBSER_BULK_DT_RD, - UBSER_BULK_CS_WR, - UBSER_BULK_CS_RD, - UBSER_N_TRANSFER = 4, + UBSER_N_TRANSFER, }; struct ubser_softc { @@ -128,10 +126,6 @@ uint16_t sc_tx_size; uint8_t sc_numser; - uint8_t sc_flags; -#define UBSER_FLAG_READ_STALL 0x01 -#define UBSER_FLAG_WRITE_STALL 0x02 - uint8_t sc_iface_no; uint8_t sc_iface_index; uint8_t sc_curr_tx_unit; @@ -144,9 +138,7 @@ static device_attach_t ubser_attach; static device_detach_t ubser_detach; -static usb2_callback_t ubser_write_clear_stall_callback; static usb2_callback_t ubser_write_callback; -static usb2_callback_t ubser_read_clear_stall_callback; static usb2_callback_t ubser_read_callback; static int ubser_pre_param(struct usb2_com_softc *, struct termios *); @@ -177,28 +169,6 @@ .mh.flags = {.pipe_bof = 1,.short_xfer_ok = 1,}, .mh.callback = &ubser_read_callback, }, - - [UBSER_BULK_CS_WR] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.flags = {}, - .mh.callback = &ubser_write_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, - - [UBSER_BULK_CS_RD] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.flags = {}, - .mh.callback = &ubser_read_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, }; static const struct usb2_com_callback ubser_callback = { @@ -311,8 +281,8 @@ } mtx_lock(&Giant); - sc->sc_flags |= (UBSER_FLAG_READ_STALL | - UBSER_FLAG_WRITE_STALL); + usb2_transfer_set_stall(sc->sc_xfer[UBSER_BULK_DT_WR]); + usb2_transfer_set_stall(sc->sc_xfer[UBSER_BULK_DT_RD]); usb2_transfer_start(sc->sc_xfer[UBSER_BULK_DT_RD]); @@ -329,22 +299,11 @@ ubser_detach(device_t dev) { struct ubser_softc *sc = device_get_softc(dev); - uint8_t n; DPRINTF("\n"); usb2_com_detach(&sc->sc_super_ucom, sc->sc_ucom, sc->sc_numser); - /* - * need to stop all transfers atomically, hence when clear stall - * completes, it might start other transfers ! - */ - mtx_lock(&Giant); - for (n = 0; n < UBSER_N_TRANSFER; n++) { - usb2_transfer_stop(sc->sc_xfer[n]); - } - mtx_unlock(&Giant); - usb2_transfer_unsetup(sc->sc_xfer, UBSER_N_TRANSFER); return (0); @@ -409,19 +368,6 @@ } static void -ubser_write_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct ubser_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[UBSER_BULK_DT_WR]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flags &= ~UBSER_FLAG_WRITE_STALL; - usb2_transfer_start(xfer_other); - } -} - -static void ubser_write_callback(struct usb2_xfer *xfer) { struct ubser_softc *sc = xfer->priv_sc; @@ -432,10 +378,7 @@ switch (USB_GET_STATE(xfer)) { case USB_ST_SETUP: case USB_ST_TRANSFERRED: - if (sc->sc_flags & UBSER_FLAG_WRITE_STALL) { - usb2_transfer_start(sc->sc_xfer[UBSER_BULK_CS_WR]); - return; - } +tr_setup: do { if (usb2_com_get_data(sc->sc_ucom + sc->sc_curr_tx_unit, xfer->frbuffers, 1, sc->sc_tx_size - 1, @@ -460,8 +403,9 @@ default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { - sc->sc_flags |= UBSER_FLAG_WRITE_STALL; - usb2_transfer_start(sc->sc_xfer[UBSER_BULK_CS_WR]); + /* try to clear stall first */ + xfer->flags.stall_pipe = 1; + goto tr_setup; } return; @@ -469,19 +413,6 @@ } static void -ubser_read_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct ubser_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[UBSER_BULK_DT_RD]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flags &= ~UBSER_FLAG_READ_STALL; - usb2_transfer_start(xfer_other); - } -} - -static void ubser_read_callback(struct usb2_xfer *xfer) { struct ubser_softc *sc = xfer->priv_sc; @@ -504,18 +435,15 @@ case USB_ST_SETUP: tr_setup: - if (sc->sc_flags & UBSER_FLAG_READ_STALL) { - usb2_transfer_start(sc->sc_xfer[UBSER_BULK_CS_RD]); - } else { - xfer->frlengths[0] = xfer->max_data_length; - usb2_start_hardware(xfer); - } + xfer->frlengths[0] = xfer->max_data_length; + usb2_start_hardware(xfer); return; default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { - sc->sc_flags |= UBSER_FLAG_READ_STALL; - usb2_transfer_start(sc->sc_xfer[UBSER_BULK_CS_RD]); + /* try to clear stall first */ + xfer->flags.stall_pipe = 1; + goto tr_setup; } return; @@ -540,9 +468,8 @@ req.wIndex[1] = 0; USETW(req.wLength, 0); - err = usb2_do_request_flags - (sc->sc_udev, &Giant, &req, NULL, 0, NULL, 1000); - + err = usb2_com_cfg_do_request(sc->sc_udev, ucom, + &req, NULL, 0, 1000); if (err) { DPRINTFN(0, "send break failed, error=%s\n", usb2_errstr(err)); @@ -571,7 +498,6 @@ { struct ubser_softc *sc = ucom->sc_parent; - usb2_transfer_stop(sc->sc_xfer[UBSER_BULK_CS_RD]); usb2_transfer_stop(sc->sc_xfer[UBSER_BULK_DT_RD]); } @@ -588,6 +514,5 @@ { struct ubser_softc *sc = ucom->sc_parent; - usb2_transfer_stop(sc->sc_xfer[UBSER_BULK_CS_WR]); usb2_transfer_stop(sc->sc_xfer[UBSER_BULK_DT_WR]); } ==== //depot/projects/usb/src/sys/dev/usb2/serial/uchcom2.c#19 (text+ko) ==== @@ -148,11 +148,8 @@ enum { UCHCOM_BULK_DT_WR, UCHCOM_BULK_DT_RD, - UCHCOM_BULK_CS_WR, - UCHCOM_BULK_CS_RD, UCHCOM_INTR_DT_RD, - UCHCOM_INTR_CS_RD, - UCHCOM_N_TRANSFER = 6, + UCHCOM_N_TRANSFER, }; struct uchcom_softc { @@ -167,10 +164,6 @@ uint8_t sc_version; uint8_t sc_msr; uint8_t sc_lsr; /* local status register */ - uint8_t sc_flag; -#define UCHCOM_FLAG_INTR_STALL 0x01 -#define UCHCOM_FLAG_READ_STALL 0x02 -#define UCHCOM_FLAG_WRITE_STALL 0x04 }; struct uchcom_divider { @@ -230,11 +223,8 @@ static device_detach_t uchcom_detach; static usb2_callback_t uchcom_intr_callback; -static usb2_callback_t uchcom_intr_clear_stall_callback; static usb2_callback_t uchcom_write_callback; -static usb2_callback_t uchcom_write_clear_stall_callback; static usb2_callback_t uchcom_read_callback; -static usb2_callback_t uchcom_read_clear_stall_callback; static const struct usb2_config uchcom_config_data[UCHCOM_N_TRANSFER] = { @@ -256,26 +246,6 @@ .mh.callback = &uchcom_read_callback, }, - [UCHCOM_BULK_CS_WR] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.callback = &uchcom_write_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, - - [UCHCOM_BULK_CS_RD] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.callback = &uchcom_read_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, - [UCHCOM_INTR_DT_RD] = { .type = UE_INTERRUPT, .endpoint = UE_ADDR_ANY, @@ -284,16 +254,6 @@ .mh.bufsize = 0, /* use wMaxPacketSize */ .mh.callback = &uchcom_intr_callback, }, - - [UCHCOM_INTR_CS_RD] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.callback = &uchcom_intr_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, }; struct usb2_com_callback uchcom_callback = { @@ -378,8 +338,8 @@ sc->sc_rts = 1; /* clear stall at first run */ - sc->sc_flag |= (UCHCOM_FLAG_READ_STALL | - UCHCOM_FLAG_WRITE_STALL); + usb2_transfer_set_stall(sc->sc_xfer[UCHCOM_BULK_DT_WR]); + usb2_transfer_set_stall(sc->sc_xfer[UCHCOM_BULK_DT_RD]); error = usb2_com_attach(&sc->sc_super_ucom, &sc->sc_ucom, 1, sc, &uchcom_callback, &Giant); @@ -412,35 +372,6 @@ */ static void -uchcom_do_request(struct uchcom_softc *sc, - struct usb2_device_request *req, void *data) -{ - uint16_t length; - uint16_t actlen; - usb2_error_t err; - - length = UGETW(req->wLength); - actlen = 0; - - if (usb2_com_cfg_is_gone(&sc->sc_ucom)) { - goto done; - } - err = usb2_do_request_flags(sc->sc_udev, &Giant, req, - data, USB_SHORT_XFER_OK, &actlen, 1000); - - if (err) { - DPRINTFN(0, "device request failed, err=%s " - "(ignored)\n", usb2_errstr(err)); - } -done: - if (length != actlen) { - if (req->bmRequestType & UT_READ) { - bzero(USB_ADD_BYTES(data, actlen), length - actlen); - } - } -} - -static void uchcom_ctrl_write(struct uchcom_softc *sc, uint8_t reqno, uint16_t value, uint16_t index) { @@ -452,7 +383,8 @@ USETW(req.wIndex, index); USETW(req.wLength, 0); - uchcom_do_request(sc, &req, NULL); + usb2_com_cfg_do_request(sc->sc_udev, + &sc->sc_ucom, &req, NULL, 0, 1000); } static void @@ -467,7 +399,8 @@ USETW(req.wIndex, index); USETW(req.wLength, buflen); - uchcom_do_request(sc, &req, buf); + usb2_com_cfg_do_request(sc->sc_udev, + &sc->sc_ucom, &req, buf, USB_SHORT_XFER_OK, 1000); } static void @@ -812,7 +745,6 @@ usb2_transfer_stop(sc->sc_xfer[UCHCOM_INTR_DT_RD]); /* stop read endpoint */ - usb2_transfer_stop(sc->sc_xfer[UCHCOM_BULK_CS_RD]); usb2_transfer_stop(sc->sc_xfer[UCHCOM_BULK_DT_RD]); } @@ -829,7 +761,6 @@ { struct uchcom_softc *sc = ucom->sc_parent; - usb2_transfer_stop(sc->sc_xfer[UCHCOM_BULK_CS_WR]); usb2_transfer_stop(sc->sc_xfer[UCHCOM_BULK_DT_WR]); } @@ -859,37 +790,22 @@ usb2_com_status_change(&sc->sc_ucom); } case USB_ST_SETUP: - if (sc->sc_flag & UCHCOM_FLAG_INTR_STALL) { - usb2_transfer_start(sc->sc_xfer[UCHCOM_INTR_CS_RD]); - } else { - xfer->frlengths[0] = xfer->max_data_length; - usb2_start_hardware(xfer); - } +tr_setup: + xfer->frlengths[0] = xfer->max_data_length; + usb2_start_hardware(xfer); break; default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { - sc->sc_flag |= UCHCOM_FLAG_INTR_STALL; - usb2_transfer_start(sc->sc_xfer[UCHCOM_INTR_CS_RD]); + /* try to clear stall first */ + xfer->flags.stall_pipe = 1; + goto tr_setup; } break; } } static void -uchcom_intr_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct uchcom_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[UCHCOM_INTR_DT_RD]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flag &= ~UCHCOM_FLAG_INTR_STALL; - usb2_transfer_start(xfer_other); - } -} - -static void uchcom_write_callback(struct usb2_xfer *xfer) { struct uchcom_softc *sc = xfer->priv_sc; @@ -898,10 +814,7 @@ switch (USB_GET_STATE(xfer)) { case USB_ST_SETUP: case USB_ST_TRANSFERRED: - if (sc->sc_flag & UCHCOM_FLAG_WRITE_STALL) { - usb2_transfer_start(sc->sc_xfer[UCHCOM_BULK_CS_WR]); - return; - } +tr_setup: if (usb2_com_get_data(&sc->sc_ucom, xfer->frbuffers, 0, UCHCOM_BULK_BUF_SIZE, &actlen)) { @@ -914,8 +827,9 @@ default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { - sc->sc_flag |= UCHCOM_FLAG_WRITE_STALL; - usb2_transfer_start(sc->sc_xfer[UCHCOM_BULK_CS_WR]); + /* try to clear stall first */ + xfer->flags.stall_pipe = 1; + goto tr_setup; } return; @@ -923,19 +837,6 @@ } static void -uchcom_write_clear_stall_callback(struct usb2_xfer *xfer) -{ - struct uchcom_softc *sc = xfer->priv_sc; - struct usb2_xfer *xfer_other = sc->sc_xfer[UCHCOM_BULK_DT_WR]; - - if (usb2_clear_stall_callback(xfer, xfer_other)) { - DPRINTF("stall cleared\n"); - sc->sc_flag &= ~UCHCOM_FLAG_WRITE_STALL; - usb2_transfer_start(xfer_other); - } -} - -static void uchcom_read_callback(struct usb2_xfer *xfer) { struct uchcom_softc *sc = xfer->priv_sc; @@ -945,34 +846,18 @@ usb2_com_put_data(&sc->sc_ucom, xfer->frbuffers, 0, xfer->actlen); case USB_ST_SETUP: - if (sc->sc_flag & UCHCOM_FLAG_READ_STALL) { - usb2_transfer_start(sc->sc_xfer[UCHCOM_BULK_CS_RD]); - } else { - xfer->frlengths[0] = xfer->max_data_length; - usb2_start_hardware(xfer); - } +tr_setup: + xfer->frlengths[0] = xfer->max_data_length; + usb2_start_hardware(xfer); return; default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { - sc->sc_flag |= UCHCOM_FLAG_READ_STALL; - usb2_transfer_start(sc->sc_xfer[UCHCOM_BULK_CS_RD]); + /* try to clear stall first */ + xfer->flags.stall_pipe = 1; + goto tr_setup; } return; - - } -} >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Wed Feb 4 05:51:48 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Wed Feb 4 05:51:54 2009 Subject: PERFORCE change 157137 for review Message-ID: <200902041351.n14Dpk3m031469@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157137 Change 157137 by hselasky@hselasky_laptop001 on 2009/02/04 13:50:49 USB ethernet patch: - Make function definition match prototype. - Clear control request destination buffer in all error cases. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.c#9 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.c#9 (text+ko) ==== @@ -315,21 +315,25 @@ usb2_error_t usb2_ether_do_request(struct usb2_ether *ue, struct usb2_device_request *req, void *data, - uint32_t timeout) + unsigned int timeout) { uint16_t len; usb2_error_t err; + /* get request data length */ + len = UGETW(req->wLength); + /* check if the device is being detached */ - if (usb2_proc_is_gone(&ue->ue_tq)) - return (USB_ERR_IOERROR); + if (usb2_proc_is_gone(&ue->ue_tq)) { + err = USB_ERR_IOERROR; + goto done; + } - len = UGETW(req->wLength); - /* do the USB request */ err = usb2_do_request_flags(ue->ue_udev, ue->ue_mtx, req, data, 0, NULL, timeout); +done: /* on failure we zero the data */ if (err && len && (req->bmRequestType & UE_DIR_IN)) memset(data, 0, len); From sson at FreeBSD.org Wed Feb 4 05:57:59 2009 From: sson at FreeBSD.org (Stacey Son) Date: Wed Feb 4 05:58:05 2009 Subject: PERFORCE change 157138 for review Message-ID: <200902041357.n14DvrW1032291@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157138 Change 157138 by sson@sson_amd64 on 2009/02/04 13:57:30 Correct Typos. Submitted by: Christian Brueffer Affected files ... .. //depot/projects/trustedbsd/openbsm/bin/audit/audit.8#15 edit Differences ... ==== //depot/projects/trustedbsd/openbsm/bin/audit/audit.8#15 (text+ko) ==== @@ -25,7 +25,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. .\" -.\" $P4: //depot/projects/trustedbsd/openbsm/bin/audit/audit.8#14 $ +.\" $P4: //depot/projects/trustedbsd/openbsm/bin/audit/audit.8#15 $ .\" .Dd January 29, 2009 .Dt AUDIT 8 @@ -44,7 +44,7 @@ .Nm : .Bl -tag -width indent .It Fl e -Forces the audit system to immmediately removed audit log files that +Forces the audit system to immediately remove audit log files that meet the expiration criteria specified in the audit control file without doing a log rotation. .It Fl i From hselasky at c2i.net Wed Feb 4 06:12:14 2009 From: hselasky at c2i.net (Hans Petter Selasky) Date: Wed Feb 4 06:12:20 2009 Subject: PERFORCE change 157132 for review In-Reply-To: <200902041242.n14CgXj2014958@repoman.freebsd.org> References: <200902041242.n14CgXj2014958@repoman.freebsd.org> Message-ID: <200902041459.35445.hselasky@c2i.net> On Wednesday 04 February 2009, Weongyo Jeong wrote: > ????????bzero(desc, sizeof(struct uath_tx_desc)); > ????????desc->msglen = htobe32(sizeof(struct uath_tx_desc)); > -???????desc->msgid ?= data_idx + 1;????/* don't care about endianness */ > +???????desc->msgid ?= (sc->sc_msgid++) + 1;????/* don't care about > endianness */ desc->type ? = htobe32(WDCMSG_FLUSH); > ????????desc->txqid ?= htobe32(0); > ????????desc->connid = htobe32(0); Why not allocate an mbuf to hold the "descriptor" data. Then you use the m_next field of the header mbuf to link with the "data" mbuf ? Then you only need one [mbuf] queue for TX ? You can look at if_ural2.c and if_rum2.c in /sys/dev/usb2/wlan . --HPS From hselasky at FreeBSD.org Wed Feb 4 07:02:07 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Wed Feb 4 07:02:13 2009 Subject: PERFORCE change 157141 for review Message-ID: <200902041502.n14F25P6042618@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157141 Change 157141 by hselasky@hselasky_laptop001 on 2009/02/04 15:01:32 Remove safety delay from detach path, hence this can break USB device side mode support for USB, when the detach takes too long. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.c#10 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.c#10 (text+ko) ==== @@ -281,13 +281,6 @@ free_unr(ueunit, ue->ue_unit); } - /* - * The FreeBSD network stack has some detach races with regard - * to IOCTLs so we need to wait a little bit before finally - * detaching! - */ - pause("safe", hz / 100); - /* free taskqueue, if any */ usb2_proc_free(&ue->ue_tq); } From hselasky at FreeBSD.org Wed Feb 4 08:22:29 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Wed Feb 4 08:22:35 2009 Subject: PERFORCE change 157143 for review Message-ID: <200902041622.n14GMQcj053492@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157143 Change 157143 by hselasky@hselasky_laptop001 on 2009/02/04 16:22:19 USB serial: Simplify line state programming, reduce memory requirement. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.c#25 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.h#14 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.c#25 (text+ko) ==== @@ -95,12 +95,7 @@ static usb2_proc_callback_t usb2_com_cfg_start_transfers; static usb2_proc_callback_t usb2_com_cfg_open; static usb2_proc_callback_t usb2_com_cfg_close; -static usb2_proc_callback_t usb2_com_cfg_break_on; -static usb2_proc_callback_t usb2_com_cfg_break_off; -static usb2_proc_callback_t usb2_com_cfg_dtr_on; -static usb2_proc_callback_t usb2_com_cfg_dtr_off; -static usb2_proc_callback_t usb2_com_cfg_rts_on; -static usb2_proc_callback_t usb2_com_cfg_rts_off; +static usb2_proc_callback_t usb2_com_cfg_line_state; static usb2_proc_callback_t usb2_com_cfg_status_change; static usb2_proc_callback_t usb2_com_cfg_param; @@ -543,6 +538,11 @@ sc->sc_msr = 0; sc->sc_mcr = 0; + /* reset programmed line state */ + sc->sc_pls_curr = 0; + sc->sc_pls_set = 0; + sc->sc_pls_clr = 0; + usb2_com_queue_command(sc, usb2_com_cfg_open, NULL, &sc->sc_open_task[0].hdr, &sc->sc_open_task[1].hdr); @@ -703,165 +703,119 @@ } static void -usb2_com_cfg_break_on(struct usb2_proc_msg *_task) +usb2_com_cfg_line_state(struct usb2_proc_msg *_task) { struct usb2_com_cfg_task *task = (struct usb2_com_cfg_task *)_task; struct usb2_com_softc *sc = task->sc; + uint8_t notch_bits; + uint8_t any_bits; + uint8_t prev_value; + uint8_t last_value; + uint8_t mask; if (!(sc->sc_flag & UCOM_FLAG_LL_READY)) { return; } - DPRINTF("\n"); + + mask = 0; + /* compute callback mask */ + if (sc->sc_callback->usb2_com_cfg_set_dtr) + mask |= UCOM_LS_DTR; + if (sc->sc_callback->usb2_com_cfg_set_rts) + mask |= UCOM_LS_RTS; + if (sc->sc_callback->usb2_com_cfg_set_break) + mask |= UCOM_LS_BREAK; - if (sc->sc_callback->usb2_com_cfg_set_break) { - (sc->sc_callback->usb2_com_cfg_set_break) (sc, 1); - } -} + /* compute the bits we are to program */ + notch_bits = (sc->sc_pls_set & sc->sc_pls_clr) & mask; + any_bits = (sc->sc_pls_set | sc->sc_pls_clr) & mask; + prev_value = sc->sc_pls_curr ^ notch_bits; + last_value = sc->sc_pls_curr; -static void -usb2_com_cfg_break_off(struct usb2_proc_msg *_task) -{ - struct usb2_com_cfg_task *task = - (struct usb2_com_cfg_task *)_task; - struct usb2_com_softc *sc = task->sc; + /* reset programmed line state */ + sc->sc_pls_curr = 0; + sc->sc_pls_set = 0; + sc->sc_pls_clr = 0; - if (!(sc->sc_flag & UCOM_FLAG_LL_READY)) { - return; - } - DPRINTF("\n"); + /* ensure that we don't loose any levels */ + if (notch_bits & UCOM_LS_DTR) + sc->sc_callback->usb2_com_cfg_set_dtr(sc, + (prev_value & UCOM_LS_DTR) ? 1 : 0); + if (notch_bits & UCOM_LS_RTS) + sc->sc_callback->usb2_com_cfg_set_rts(sc, + (prev_value & UCOM_LS_RTS) ? 1 : 0); + if (notch_bits & UCOM_LS_BREAK) + sc->sc_callback->usb2_com_cfg_set_break(sc, + (prev_value & UCOM_LS_BREAK) ? 1 : 0); - if (sc->sc_callback->usb2_com_cfg_set_break) { - (sc->sc_callback->usb2_com_cfg_set_break) (sc, 0); - } + /* set last value */ + if (any_bits & UCOM_LS_DTR) + sc->sc_callback->usb2_com_cfg_set_dtr(sc, + (last_value & UCOM_LS_DTR) ? 1 : 0); + if (any_bits & UCOM_LS_RTS) + sc->sc_callback->usb2_com_cfg_set_rts(sc, + (last_value & UCOM_LS_RTS) ? 1 : 0); + if (any_bits & UCOM_LS_BREAK) + sc->sc_callback->usb2_com_cfg_set_break(sc, + (last_value & UCOM_LS_BREAK) ? 1 : 0); } static void -usb2_com_break(struct usb2_com_softc *sc, uint8_t onoff) +usb2_com_line_state(struct usb2_com_softc *sc, + uint8_t set_bits, uint8_t clear_bits) { mtx_assert(sc->sc_mtx, MA_OWNED); if (!(sc->sc_flag & UCOM_FLAG_HL_READY)) { return; } - DPRINTF("onoff = %d\n", onoff); - if (onoff) - usb2_com_queue_command(sc, usb2_com_cfg_break_on, NULL, - &sc->sc_break_on_task[0].hdr, - &sc->sc_break_on_task[1].hdr); - else - usb2_com_queue_command(sc, usb2_com_cfg_break_off, NULL, - &sc->sc_break_off_task[0].hdr, - &sc->sc_break_off_task[1].hdr); -} + DPRINTF("on=0x%02x, off=0x%02x\n", set_bits, clear_bits); -static void -usb2_com_cfg_dtr_on(struct usb2_proc_msg *_task) -{ - struct usb2_com_cfg_task *task = - (struct usb2_com_cfg_task *)_task; - struct usb2_com_softc *sc = task->sc; + /* update current programmed line state */ + sc->sc_pls_curr |= set_bits; + sc->sc_pls_curr &= ~clear_bits; + sc->sc_pls_set |= set_bits; + sc->sc_pls_clr |= clear_bits; - if (!(sc->sc_flag & UCOM_FLAG_LL_READY)) { - return; - } - DPRINTF("\n"); - - if (sc->sc_callback->usb2_com_cfg_set_dtr) { - (sc->sc_callback->usb2_com_cfg_set_dtr) (sc, 1); - } + /* defer driver programming */ + usb2_com_queue_command(sc, usb2_com_cfg_line_state, NULL, + &sc->sc_line_state_task[0].hdr, + &sc->sc_line_state_task[1].hdr); } static void -usb2_com_cfg_dtr_off(struct usb2_proc_msg *_task) +usb2_com_break(struct usb2_com_softc *sc, uint8_t onoff) { - struct usb2_com_cfg_task *task = - (struct usb2_com_cfg_task *)_task; - struct usb2_com_softc *sc = task->sc; + DPRINTF("onoff = %d\n", onoff); - if (!(sc->sc_flag & UCOM_FLAG_LL_READY)) { - return; - } - DPRINTF("\n"); - - if (sc->sc_callback->usb2_com_cfg_set_dtr) { - (sc->sc_callback->usb2_com_cfg_set_dtr) (sc, 0); - } + if (onoff) + usb2_com_line_state(sc, UCOM_LS_BREAK, 0); + else + usb2_com_line_state(sc, 0, UCOM_LS_BREAK); } static void usb2_com_dtr(struct usb2_com_softc *sc, uint8_t onoff) { - mtx_assert(sc->sc_mtx, MA_OWNED); - - if (!(sc->sc_flag & UCOM_FLAG_HL_READY)) { - return; - } DPRINTF("onoff = %d\n", onoff); if (onoff) - usb2_com_queue_command(sc, usb2_com_cfg_dtr_on, NULL, - &sc->sc_dtr_on_task[0].hdr, - &sc->sc_dtr_on_task[1].hdr); + usb2_com_line_state(sc, UCOM_LS_DTR, 0); else - usb2_com_queue_command(sc, usb2_com_cfg_dtr_off, NULL, - &sc->sc_dtr_off_task[0].hdr, - &sc->sc_dtr_off_task[1].hdr); + usb2_com_line_state(sc, 0, UCOM_LS_DTR); } static void -usb2_com_cfg_rts_on(struct usb2_proc_msg *_task) -{ - struct usb2_com_cfg_task *task = - (struct usb2_com_cfg_task *)_task; - struct usb2_com_softc *sc = task->sc; - - DPRINTF("\n"); - - if (!(sc->sc_flag & UCOM_FLAG_LL_READY)) { - return; - } - if (sc->sc_callback->usb2_com_cfg_set_rts) { - (sc->sc_callback->usb2_com_cfg_set_rts) (sc, 1); - } -} - -static void -usb2_com_cfg_rts_off(struct usb2_proc_msg *_task) -{ - struct usb2_com_cfg_task *task = - (struct usb2_com_cfg_task *)_task; - struct usb2_com_softc *sc = task->sc; - - DPRINTF("\n"); - - if (!(sc->sc_flag & UCOM_FLAG_LL_READY)) { - return; - } - if (sc->sc_callback->usb2_com_cfg_set_rts) { - (sc->sc_callback->usb2_com_cfg_set_rts) (sc, 0); - } -} - -static void usb2_com_rts(struct usb2_com_softc *sc, uint8_t onoff) { - mtx_assert(sc->sc_mtx, MA_OWNED); - - if (!(sc->sc_flag & UCOM_FLAG_HL_READY)) { - return; - } DPRINTF("onoff = %d\n", onoff); if (onoff) - usb2_com_queue_command(sc, usb2_com_cfg_rts_on, NULL, - &sc->sc_rts_on_task[0].hdr, - &sc->sc_rts_on_task[1].hdr); + usb2_com_line_state(sc, UCOM_LS_RTS, 0); else - usb2_com_queue_command(sc, usb2_com_cfg_rts_off, NULL, - &sc->sc_rts_off_task[0].hdr, - &sc->sc_rts_off_task[1].hdr); + usb2_com_line_state(sc, 0, UCOM_LS_RTS); } static void ==== //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.h#14 (text+ko) ==== @@ -148,12 +148,7 @@ struct usb2_com_cfg_task sc_start_task[2]; struct usb2_com_cfg_task sc_open_task[2]; struct usb2_com_cfg_task sc_close_task[2]; - struct usb2_com_cfg_task sc_break_on_task[2]; - struct usb2_com_cfg_task sc_dtr_on_task[2]; - struct usb2_com_cfg_task sc_rts_on_task[2]; - struct usb2_com_cfg_task sc_break_off_task[2]; - struct usb2_com_cfg_task sc_dtr_off_task[2]; - struct usb2_com_cfg_task sc_rts_off_task[2]; + struct usb2_com_cfg_task sc_line_state_task[2]; struct usb2_com_cfg_task sc_status_task[2]; struct usb2_com_param_task sc_param_task[2]; struct cv sc_cv; @@ -177,6 +172,13 @@ uint8_t sc_msr; uint8_t sc_mcr; uint8_t sc_ttyfreed; /* set when TTY has been freed */ + /* programmed line state bits */ + uint8_t sc_pls_set; /* set bits */ + uint8_t sc_pls_clr; /* cleared bits */ + uint8_t sc_pls_curr; /* last state */ +#define UCOM_LS_DTR 0x01 +#define UCOM_LS_RTS 0x02 +#define UCOM_LS_BREAK 0x04 }; int usb2_com_attach(struct usb2_com_super_softc *, From thompsa at FreeBSD.org Wed Feb 4 08:33:11 2009 From: thompsa at FreeBSD.org (Andrew Thompson) Date: Wed Feb 4 08:33:17 2009 Subject: PERFORCE change 157132 for review In-Reply-To: <200902041459.35445.hselasky@c2i.net> References: <200902041242.n14CgXj2014958@repoman.freebsd.org> <200902041459.35445.hselasky@c2i.net> Message-ID: <20090204160005.GB77595@citylink.fud.org.nz> On Wed, Feb 04, 2009 at 02:59:35PM +0100, Hans Petter Selasky wrote: > On Wednesday 04 February 2009, Weongyo Jeong wrote: > > ????????bzero(desc, sizeof(struct uath_tx_desc)); > > ????????desc->msglen = htobe32(sizeof(struct uath_tx_desc)); > > -???????desc->msgid ?= data_idx + 1;????/* don't care about endianness */ > > +???????desc->msgid ?= (sc->sc_msgid++) + 1;????/* don't care about > > endianness */ desc->type ? = htobe32(WDCMSG_FLUSH); > > ????????desc->txqid ?= htobe32(0); > > ????????desc->connid = htobe32(0); > > Why not allocate an mbuf to hold the "descriptor" data. Then you use the > m_next field of the header mbuf to link with the "data" mbuf ? Then you only > need one [mbuf] queue for TX ? You can look at if_ural2.c and if_rum2.c > in /sys/dev/usb2/wlan . Because uath_data+uath_tx_desc is preallocated so you do not have to malloc in the TX path. Grabbing a mbuf could fail due to low memory. Andrew From hselasky at FreeBSD.org Wed Feb 4 09:29:40 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Wed Feb 4 09:29:47 2009 Subject: PERFORCE change 157145 for review Message-ID: <200902041729.n14HTYSE070745@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157145 Change 157145 by hselasky@hselasky_laptop001 on 2009/02/04 17:28:49 USB serial patches. Fix multiport modem naming scheme, so that modems are named /dev/cuaU%u.%u when there is more than one port. Update U3G driver to put all modems into the same interface, and make the other interfaces slave interfaces. This affects the naming scheme. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/serial/u3g2.c#11 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.c#26 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/serial/u3g2.c#11 (text+ko) ==== @@ -98,11 +98,8 @@ struct usb2_xfer *sc_xfer[U3G_MAXPORTS][U3G_N_TRANSFER]; struct usb2_device *sc_udev; - uint8_t sc_iface_no; /* interface number */ - uint8_t sc_iface_index; /* interface index */ uint8_t sc_lsr; /* local status register */ uint8_t sc_msr; /* U3G status register */ - struct u3g_speeds_s sc_speed; uint8_t sc_numports; }; @@ -148,6 +145,7 @@ .usb2_com_stop_write = &u3g_stop_write, }; +#if 0 static const struct u3g_speeds_s u3g_speeds[U3GSP_MAX] = { [U3GSP_GPRS] = {64000, 64000}, [U3GSP_EDGE] = {384000, 64000}, @@ -157,6 +155,7 @@ [U3GSP_HSUPA] = {1200000, 384000}, [U3GSP_HSPA] = {7200000, 384000}, }; +#endif static device_method_t u3g_methods[] = { DEVMETHOD(device_probe, u3g_probe), @@ -385,8 +384,12 @@ struct usb2_config u3g_config_tmp[U3G_N_TRANSFER]; struct usb2_attach_arg *uaa = device_get_ivars(dev); struct u3g_softc *sc = device_get_softc(dev); + struct usb2_interface *iface; + struct usb2_interface_descriptor *id; + uint8_t m; uint8_t n; - uint8_t m; + uint8_t i; + uint8_t x; int error; DPRINTF("sc=%p\n", sc); @@ -398,30 +401,56 @@ device_set_usb2_desc(dev); sc->sc_udev = uaa->device; - sc->sc_iface_no = uaa->info.bIfaceNum; - sc->sc_iface_index = uaa->info.bIfaceIndex; - sc->sc_speed = u3g_speeds[U3G_GET_SPEED(uaa)]; + + x = 0; /* interface index */ + i = 0; /* endpoint index */ + m = 0; /* number of ports */ - for (m = 0; m != U3G_MAXPORTS; m++) { + while (m != U3G_MAXPORTS) { /* update BULK endpoint index */ for (n = 0; n != U3G_N_TRANSFER; n++) - u3g_config_tmp[n].ep_index = m; + u3g_config_tmp[n].ep_index = i; + + iface = usb2_get_iface(uaa->device, x); + if (iface == NULL) { + if (m != 0) + break; /* end of interfaces */ + DPRINTF("did not find any modem endpoints\n"); + goto detach; + } + + id = usb2_get_interface_descriptor(iface); + if ((id == NULL) || + (id->bInterfaceClass != UICLASS_VENDOR)) { + /* next interface */ + x++; + i = 0; + continue; + } /* try to allocate a set of BULK endpoints */ - error = usb2_transfer_setup(uaa->device, &sc->sc_iface_index, + error = usb2_transfer_setup(uaa->device, &x, sc->sc_xfer[m], u3g_config_tmp, U3G_N_TRANSFER, &sc->sc_ucom[m], &Giant); - if (error) { - if (m != 0) - break; /* end of endpoints */ - DPRINTF("could not allocate all pipes\n"); - goto detach; + /* next interface */ + x++; + i = 0; + continue; } + + /* grab other interface, if any */ + if (x != uaa->info.bIfaceIndex) + usb2_set_parent_iface(uaa->device, x, + uaa->info.bIfaceIndex); + /* set stall by default */ usb2_transfer_set_stall(sc->sc_xfer[m][U3G_BULK_WR]); usb2_transfer_set_stall(sc->sc_xfer[m][U3G_BULK_RD]); + + m++; /* found one port */ + i++; /* next endpoint index */ } sc->sc_numports = m; ==== //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.c#26 (text+ko) ==== @@ -101,7 +101,7 @@ static uint8_t usb2_com_units_alloc(uint32_t, uint32_t *); static void usb2_com_units_free(uint32_t, uint32_t); -static int usb2_com_attach_tty(struct usb2_com_softc *); +static int usb2_com_attach_tty(struct usb2_com_softc *, uint32_t); static void usb2_com_detach_tty(struct usb2_com_softc *); static void usb2_com_queue_command(struct usb2_com_softc *, usb2_proc_callback_t *, struct termios *pt, @@ -249,7 +249,7 @@ sc->sc_parent = parent; sc->sc_callback = callback; - error = usb2_com_attach_tty(sc); + error = usb2_com_attach_tty(sc, sub_units); if (error) { usb2_com_detach(ssc, sc - n, n); usb2_com_units_free(root_unit + n, sub_units - n); @@ -287,7 +287,7 @@ } static int -usb2_com_attach_tty(struct usb2_com_softc *sc) +usb2_com_attach_tty(struct usb2_com_softc *sc, uint32_t sub_units) { struct tty *tp; int error = 0; @@ -309,8 +309,18 @@ } if (buf[0] == 0) { /* Use default TTY name */ - if (snprintf(buf, sizeof(buf), "U%u", sc->sc_unit)) { - /* ignore */ + if (sub_units > 1) { + /* multiple modems in one */ + if (snprintf(buf, sizeof(buf), "U%u.%u", + sc->sc_unit - sc->sc_local_unit, + sc->sc_local_unit)) { + /* ignore */ + } + } else { + /* single modem */ + if (snprintf(buf, sizeof(buf), "U%u", sc->sc_unit)) { + /* ignore */ + } } } tty_makedev(tp, NULL, "%s", buf); From zec at FreeBSD.org Wed Feb 4 10:47:52 2009 From: zec at FreeBSD.org (Marko Zec) Date: Wed Feb 4 10:48:01 2009 Subject: PERFORCE change 157151 for review Message-ID: <200902041847.n14IlfX6079777@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157151 Change 157151 by zec@zec_amdx2 on 2009/02/04 18:47:06 IFC @ 157147 Affected files ... .. //depot/projects/vimage/src/share/man/man4/iic.4#2 integrate .. //depot/projects/vimage/src/share/man/man4/man4.powerpc/Makefile#2 integrate .. //depot/projects/vimage/src/share/man/man4/man4.powerpc/snd_ai2s.4#1 branch .. //depot/projects/vimage/src/share/man/man4/man4.powerpc/snd_davbus.4#1 branch .. //depot/projects/vimage/src/share/man/man4/ng_bpf.4#2 integrate .. //depot/projects/vimage/src/share/man/man4/nge.4#2 integrate .. //depot/projects/vimage/src/share/man/man4/sk.4#2 integrate .. //depot/projects/vimage/src/share/man/man5/Makefile#2 integrate .. //depot/projects/vimage/src/share/man/man5/portindex.5#1 branch .. //depot/projects/vimage/src/share/man/man5/rc.conf.5#3 integrate .. //depot/projects/vimage/src/share/man/man7/Makefile#2 integrate .. //depot/projects/vimage/src/share/man/man7/adding_user.7#1 branch .. //depot/projects/vimage/src/share/man/man7/build.7#3 integrate .. //depot/projects/vimage/src/share/man/man7/tuning.7#2 integrate .. //depot/projects/vimage/src/share/man/man8/Makefile#2 integrate .. //depot/projects/vimage/src/share/man/man8/adding_user.8#2 delete .. //depot/projects/vimage/src/share/man/man9/kthread.9#2 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/cpu_switch.S#12 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/exception.S#9 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/fpu.c#2 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/io_apic.c#5 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/local_apic.c#15 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/machdep.c#13 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/mp_machdep.c#13 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/msi.c#8 integrate .. //depot/projects/vimage/src/sys/amd64/ia32/ia32_signal.c#5 integrate .. //depot/projects/vimage/src/sys/amd64/ia32/ia32_sigtramp.S#2 integrate .. //depot/projects/vimage/src/sys/amd64/include/apicvar.h#6 integrate .. //depot/projects/vimage/src/sys/amd64/include/cpufunc.h#4 integrate .. //depot/projects/vimage/src/sys/amd64/include/fpu.h#2 integrate .. //depot/projects/vimage/src/sys/amd64/include/intr_machdep.h#7 integrate .. //depot/projects/vimage/src/sys/amd64/linux32/linux32_locore.s#4 integrate .. //depot/projects/vimage/src/sys/amd64/linux32/linux32_sysvec.c#12 integrate .. //depot/projects/vimage/src/sys/arm/arm/busdma_machdep.c#12 integrate .. //depot/projects/vimage/src/sys/arm/arm/dump_machdep.c#11 integrate .. //depot/projects/vimage/src/sys/arm/arm/elf_trampoline.c#8 integrate .. //depot/projects/vimage/src/sys/arm/arm/pmap.c#17 integrate .. //depot/projects/vimage/src/sys/arm/arm/vm_machdep.c#9 integrate .. //depot/projects/vimage/src/sys/arm/conf/AVILA#11 integrate .. //depot/projects/vimage/src/sys/arm/conf/AVILA.hints#4 integrate .. //depot/projects/vimage/src/sys/arm/include/atomic.h#6 integrate .. //depot/projects/vimage/src/sys/arm/sa11x0/assabet_machdep.c#6 integrate .. //depot/projects/vimage/src/sys/arm/xscale/ixp425/avila_machdep.c#12 integrate .. //depot/projects/vimage/src/sys/arm/xscale/ixp425/files.ixp425#6 integrate .. //depot/projects/vimage/src/sys/arm/xscale/ixp425/ixp425.c#8 integrate .. //depot/projects/vimage/src/sys/arm/xscale/ixp425/ixp425reg.h#4 integrate .. //depot/projects/vimage/src/sys/boot/i386/pxeldr/pxeboot.8#2 integrate .. //depot/projects/vimage/src/sys/cam/cam_periph.c#7 integrate .. //depot/projects/vimage/src/sys/cam/cam_xpt.c#15 integrate .. //depot/projects/vimage/src/sys/cam/scsi/scsi_low.c#4 integrate .. //depot/projects/vimage/src/sys/cam/scsi/scsi_pass.c#7 integrate .. //depot/projects/vimage/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#6 integrate .. //depot/projects/vimage/src/sys/compat/linux/linux_stats.c#10 integrate .. //depot/projects/vimage/src/sys/compat/ndis/winx32_wrap.S#2 integrate .. //depot/projects/vimage/src/sys/compat/svr4/svr4_types.h#2 integrate .. //depot/projects/vimage/src/sys/conf/files.amd64#18 integrate .. //depot/projects/vimage/src/sys/conf/files.i386#25 integrate .. //depot/projects/vimage/src/sys/conf/files.pc98#16 integrate .. //depot/projects/vimage/src/sys/conf/files.powerpc#17 integrate .. //depot/projects/vimage/src/sys/conf/kmod.mk#9 integrate .. //depot/projects/vimage/src/sys/conf/options#42 integrate .. //depot/projects/vimage/src/sys/contrib/pf/net/pf_ioctl.c#21 integrate .. //depot/projects/vimage/src/sys/dev/adb/adb_mouse.c#4 integrate .. //depot/projects/vimage/src/sys/dev/agp/agp_via.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ah.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ah.h#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ah_internal.h#3 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ah_regdomain.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5210/ar5210.h#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5210/ar5210_xmit.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5211/ar5211.h#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5211/ar5211_xmit.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5212/ar2316.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5212/ar2317.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5212/ar2413.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5212/ar2425.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5212/ar5111.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5212/ar5112.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5212/ar5212.h#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5212/ar5212_ani.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c#4 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5212/ar5413.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5312/ar5312.h#3 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5312/ar5312_reset.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5416/ar2133.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5416/ar5416.h#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5416/ar5416_ani.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5416/ar5416_cal.h#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/if_ath.c#27 integrate .. //depot/projects/vimage/src/sys/dev/ath/if_athvar.h#16 integrate .. //depot/projects/vimage/src/sys/dev/cardbus/cardbus.c#7 integrate .. //depot/projects/vimage/src/sys/dev/cfi/cfi_bus_ixp4xx.c#1 branch .. //depot/projects/vimage/src/sys/dev/cfi/cfi_core.c#2 integrate .. //depot/projects/vimage/src/sys/dev/cfi/cfi_dev.c#2 integrate .. //depot/projects/vimage/src/sys/dev/firewire/firewire.c#18 integrate .. //depot/projects/vimage/src/sys/dev/firewire/fwohci.c#6 integrate .. //depot/projects/vimage/src/sys/dev/firewire/fwohci_pci.c#5 integrate .. //depot/projects/vimage/src/sys/dev/firewire/fwohcivar.h#4 integrate .. //depot/projects/vimage/src/sys/dev/firewire/sbp.c#6 integrate .. //depot/projects/vimage/src/sys/dev/hwpmc/hwpmc_core.c#4 integrate .. //depot/projects/vimage/src/sys/dev/hwpmc/hwpmc_intel.c#5 integrate .. //depot/projects/vimage/src/sys/dev/hwpmc/pmc_events.h#8 integrate .. //depot/projects/vimage/src/sys/dev/ichsmb/ichsmb.c#5 integrate .. //depot/projects/vimage/src/sys/dev/iicbus/iic.c#5 integrate .. //depot/projects/vimage/src/sys/dev/iicbus/iic.h#2 integrate .. //depot/projects/vimage/src/sys/dev/ipmi/ipmi_acpi.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ipmi/ipmi_smbios.c#3 integrate .. //depot/projects/vimage/src/sys/dev/kbdmux/kbdmux.c#6 integrate .. //depot/projects/vimage/src/sys/dev/mmc/mmc.c#12 integrate .. //depot/projects/vimage/src/sys/dev/mmc/mmcreg.h#8 integrate .. //depot/projects/vimage/src/sys/dev/pci/pci_user.c#6 integrate .. //depot/projects/vimage/src/sys/dev/pci/pcireg.h#11 integrate .. //depot/projects/vimage/src/sys/dev/ppbus/lpt.c#8 integrate .. //depot/projects/vimage/src/sys/dev/ppbus/ppbconf.c#9 integrate .. //depot/projects/vimage/src/sys/dev/ppbus/ppbconf.h#7 integrate .. //depot/projects/vimage/src/sys/dev/puc/pucdata.c#9 integrate .. //depot/projects/vimage/src/sys/dev/sdhci/sdhci.c#5 integrate .. //depot/projects/vimage/src/sys/dev/smbus/smb.c#3 integrate .. //depot/projects/vimage/src/sys/dev/snp/snp.c#11 integrate .. //depot/projects/vimage/src/sys/dev/sound/macio/aoa.c#1 branch .. //depot/projects/vimage/src/sys/dev/sound/macio/aoa.h#1 branch .. //depot/projects/vimage/src/sys/dev/sound/macio/davbus.c#1 branch .. //depot/projects/vimage/src/sys/dev/sound/macio/davbusreg.h#1 branch .. //depot/projects/vimage/src/sys/dev/sound/macio/i2s.c#1 branch .. //depot/projects/vimage/src/sys/dev/sound/macio/snapper.c#1 branch .. //depot/projects/vimage/src/sys/dev/sound/macio/tumbler.c#1 branch .. //depot/projects/vimage/src/sys/dev/sound/pci/hda/hdac.c#27 integrate .. //depot/projects/vimage/src/sys/dev/speaker/spkr.c#6 integrate .. //depot/projects/vimage/src/sys/dev/usb/u3g.c#7 integrate .. //depot/projects/vimage/src/sys/dev/usb/usbdevs#39 integrate .. //depot/projects/vimage/src/sys/dev/usb2/bluetooth/ng_ubt2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/bluetooth/ng_ubt2_var.h#3 integrate .. //depot/projects/vimage/src/sys/dev/usb2/bluetooth/ubtbcmfw2.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/controller/at91dci_atmelarm.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/controller/ehci2_pci.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/controller/musb2_otg_atmelarm.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/controller/ohci2_atmelarm.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/controller/ohci2_pci.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/controller/uhci2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/controller/uhci2_pci.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/controller/usb2_controller.h#3 integrate .. //depot/projects/vimage/src/sys/dev/usb2/controller/uss820dci_atmelarm.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/core/usb2_compat_linux.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/core/usb2_error.c#3 integrate .. //depot/projects/vimage/src/sys/dev/usb2/core/usb2_hub.c#6 integrate .. //depot/projects/vimage/src/sys/dev/usb2/core/usb2_process.c#3 integrate .. //depot/projects/vimage/src/sys/dev/usb2/ethernet/if_aue2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/ethernet/if_axe2.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/ethernet/if_cdce2.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/ethernet/if_cue2.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/ethernet/if_kue2.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/ethernet/if_rue2.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/ethernet/if_udav2.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/include/usb2_devid.h#6 integrate .. //depot/projects/vimage/src/sys/dev/usb2/include/usb2_devtable.h#6 integrate .. //depot/projects/vimage/src/sys/dev/usb2/include/usb2_error.h#2 integrate .. //depot/projects/vimage/src/sys/dev/usb2/include/usb2_hid.h#2 integrate .. //depot/projects/vimage/src/sys/dev/usb2/include/usb2_ioctl.h#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/include/usb2_mfunc.h#2 integrate .. //depot/projects/vimage/src/sys/dev/usb2/include/usb2_revision.h#2 integrate .. //depot/projects/vimage/src/sys/dev/usb2/input/uhid2.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/input/ukbd2.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/misc/udbp2.c#3 integrate .. //depot/projects/vimage/src/sys/dev/usb2/misc/ufm2.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/quirk/usb2_quirk.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/quirk/usb2_quirk.h#2 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/u3g2.c#3 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/uark2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/ubsa2.c#6 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/ubser2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/uchcom2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/ucycom2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/ufoma2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/uftdi2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/ugensa2.c#7 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/uipaq2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/umct2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/umodem2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/umoscom2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/uplcom2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/uvisor2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/serial/uvscom2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/sound/uaudio2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/storage/ata-usb2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/storage/umass2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/storage/urio2.c#5 integrate .. //depot/projects/vimage/src/sys/dev/usb2/storage/ustorage2_fs.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/wlan/if_rum2.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/wlan/if_ural2.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb2/wlan/if_zyd2.c#4 integrate .. //depot/projects/vimage/src/sys/dev/xen/blkback/blkback.c#3 integrate .. //depot/projects/vimage/src/sys/dev/xen/netback/netback.c#2 integrate .. //depot/projects/vimage/src/sys/dev/xen/netfront/netfront.c#8 integrate .. //depot/projects/vimage/src/sys/fs/cd9660/cd9660_lookup.c#3 integrate .. //depot/projects/vimage/src/sys/fs/cd9660/cd9660_node.c#6 integrate .. //depot/projects/vimage/src/sys/fs/cd9660/cd9660_node.h#3 integrate .. //depot/projects/vimage/src/sys/fs/cd9660/cd9660_rrip.c#11 integrate .. //depot/projects/vimage/src/sys/fs/cd9660/cd9660_vfsops.c#7 integrate .. //depot/projects/vimage/src/sys/fs/cd9660/cd9660_vnops.c#6 integrate .. //depot/projects/vimage/src/sys/fs/coda/coda_vfsops.c#6 integrate .. //depot/projects/vimage/src/sys/fs/devfs/devfs_devs.c#7 integrate .. //depot/projects/vimage/src/sys/fs/devfs/devfs_vnops.c#23 integrate .. //depot/projects/vimage/src/sys/fs/fifofs/fifo_vnops.c#10 integrate .. //depot/projects/vimage/src/sys/fs/hpfs/hpfs_vfsops.c#7 integrate .. //depot/projects/vimage/src/sys/fs/nullfs/null_vnops.c#10 integrate .. //depot/projects/vimage/src/sys/fs/nwfs/nwfs_subr.c#3 integrate .. //depot/projects/vimage/src/sys/fs/nwfs/nwfs_vnops.c#6 integrate .. //depot/projects/vimage/src/sys/fs/smbfs/smbfs_vnops.c#8 integrate .. //depot/projects/vimage/src/sys/fs/tmpfs/tmpfs_subr.c#11 integrate .. //depot/projects/vimage/src/sys/fs/udf/udf_vnops.c#10 integrate .. //depot/projects/vimage/src/sys/geom/geom.h#4 integrate .. //depot/projects/vimage/src/sys/geom/geom_dev.c#8 integrate .. //depot/projects/vimage/src/sys/geom/geom_subr.c#7 integrate .. //depot/projects/vimage/src/sys/i386/i386/io_apic.c#5 integrate .. //depot/projects/vimage/src/sys/i386/i386/local_apic.c#15 integrate .. //depot/projects/vimage/src/sys/i386/i386/locore.s#4 integrate .. //depot/projects/vimage/src/sys/i386/i386/mp_machdep.c#14 integrate .. //depot/projects/vimage/src/sys/i386/i386/msi.c#8 integrate .. //depot/projects/vimage/src/sys/i386/i386/swtch.s#7 integrate .. //depot/projects/vimage/src/sys/i386/include/apicvar.h#8 integrate .. //depot/projects/vimage/src/sys/i386/include/cpufunc.h#8 integrate .. //depot/projects/vimage/src/sys/i386/include/intr_machdep.h#7 integrate .. //depot/projects/vimage/src/sys/i386/linux/linux_locore.s#3 integrate .. //depot/projects/vimage/src/sys/i386/svr4/svr4_locore.s#2 integrate .. //depot/projects/vimage/src/sys/i386/xen/mp_machdep.c#8 integrate .. //depot/projects/vimage/src/sys/i386/xen/xen_machdep.c#13 integrate .. //depot/projects/vimage/src/sys/kern/imgact_elf.c#11 integrate .. //depot/projects/vimage/src/sys/kern/kern_jail.c#22 integrate .. //depot/projects/vimage/src/sys/kern/kern_malloc.c#9 integrate .. //depot/projects/vimage/src/sys/kern/kern_mib.c#17 integrate .. //depot/projects/vimage/src/sys/kern/kern_proc.c#22 integrate .. //depot/projects/vimage/src/sys/kern/kern_sysctl.c#18 integrate .. //depot/projects/vimage/src/sys/kern/kern_timeout.c#18 integrate .. //depot/projects/vimage/src/sys/kern/sched_4bsd.c#26 integrate .. //depot/projects/vimage/src/sys/kern/sched_ule.c#29 integrate .. //depot/projects/vimage/src/sys/kern/subr_autoconf.c#5 integrate .. //depot/projects/vimage/src/sys/kern/subr_bus.c#14 integrate .. //depot/projects/vimage/src/sys/kern/subr_clist.c#4 integrate .. //depot/projects/vimage/src/sys/kern/subr_devstat.c#2 integrate .. //depot/projects/vimage/src/sys/kern/subr_disk.c#2 integrate .. //depot/projects/vimage/src/sys/kern/subr_firmware.c#6 integrate .. //depot/projects/vimage/src/sys/kern/subr_kobj.c#3 integrate .. //depot/projects/vimage/src/sys/kern/subr_prf.c#7 integrate .. //depot/projects/vimage/src/sys/kern/subr_prof.c#5 integrate .. //depot/projects/vimage/src/sys/kern/subr_rman.c#9 integrate .. //depot/projects/vimage/src/sys/kern/subr_rtc.c#3 integrate .. //depot/projects/vimage/src/sys/kern/subr_smp.c#12 integrate .. //depot/projects/vimage/src/sys/kern/subr_taskqueue.c#7 integrate .. //depot/projects/vimage/src/sys/kern/subr_witness.c#22 integrate .. //depot/projects/vimage/src/sys/kern/sys_generic.c#12 integrate .. //depot/projects/vimage/src/sys/kern/tty.c#30 integrate .. //depot/projects/vimage/src/sys/kern/tty_info.c#3 integrate .. //depot/projects/vimage/src/sys/kern/tty_inq.c#3 integrate .. //depot/projects/vimage/src/sys/kern/tty_outq.c#3 integrate .. //depot/projects/vimage/src/sys/kern/tty_pty.c#8 integrate .. //depot/projects/vimage/src/sys/kern/vfs_aio.c#9 integrate .. //depot/projects/vimage/src/sys/kern/vfs_cache.c#18 integrate .. //depot/projects/vimage/src/sys/kern/vfs_subr.c#24 integrate .. //depot/projects/vimage/src/sys/kern/vfs_syscalls.c#21 integrate .. //depot/projects/vimage/src/sys/modules/agp/Makefile#3 integrate .. //depot/projects/vimage/src/sys/modules/sound/driver/Makefile#3 integrate .. //depot/projects/vimage/src/sys/modules/sound/driver/ai2s/Makefile#1 branch .. //depot/projects/vimage/src/sys/modules/sound/driver/davbus/Makefile#1 branch .. //depot/projects/vimage/src/sys/modules/usb2/Makefile#4 integrate .. //depot/projects/vimage/src/sys/net/if.c#63 integrate .. //depot/projects/vimage/src/sys/net/if_ethersubr.c#37 integrate .. //depot/projects/vimage/src/sys/net/if_llatbl.c#3 integrate .. //depot/projects/vimage/src/sys/net/rtsock.c#27 integrate .. //depot/projects/vimage/src/sys/net80211/_ieee80211.h#12 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211.c#27 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211.h#12 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_crypto.h#8 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_ddb.c#17 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_ht.h#10 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_ioctl.c#18 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_ioctl.h#10 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_node.c#17 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_node.h#12 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_regdomain.c#7 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_regdomain.h#3 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_scan_sta.c#11 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_tdma.c#2 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_var.h#20 integrate .. //depot/projects/vimage/src/sys/netinet/in_pcb.c#49 integrate .. //depot/projects/vimage/src/sys/netinet/ip_divert.c#25 integrate .. //depot/projects/vimage/src/sys/netinet/ip_fw2.c#65 integrate .. //depot/projects/vimage/src/sys/netinet/ip_ipsec.c#19 integrate .. //depot/projects/vimage/src/sys/netinet/ip_output.c#29 integrate .. //depot/projects/vimage/src/sys/netinet/raw_ip.c#38 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_auth.c#15 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_constants.h#26 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_crc32.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_crc32.h#5 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_input.c#30 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_os_bsd.h#26 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_output.c#36 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_pcb.c#35 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_pcb.h#23 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_sysctl.c#14 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_uio.h#19 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_usrreq.c#33 integrate .. //depot/projects/vimage/src/sys/netinet/sctputil.c#34 integrate .. //depot/projects/vimage/src/sys/netinet/sctputil.h#19 integrate .. //depot/projects/vimage/src/sys/netinet6/frag6.c#25 integrate .. //depot/projects/vimage/src/sys/netinet6/in6.c#28 integrate .. //depot/projects/vimage/src/sys/netinet6/in6_gif.c#18 integrate .. //depot/projects/vimage/src/sys/netinet6/in6_ifattach.c#34 integrate .. //depot/projects/vimage/src/sys/netinet6/ip6_forward.c#19 integrate .. //depot/projects/vimage/src/sys/netinet6/ip6_input.c#47 integrate .. //depot/projects/vimage/src/sys/netinet6/ip6_var.h#19 integrate .. //depot/projects/vimage/src/sys/netinet6/nd6.c#44 integrate .. //depot/projects/vimage/src/sys/netinet6/nd6_nbr.c#32 integrate .. //depot/projects/vimage/src/sys/netinet6/nd6_rtr.c#30 integrate .. //depot/projects/vimage/src/sys/netinet6/raw_ip6.c#35 integrate .. //depot/projects/vimage/src/sys/netinet6/sctp6_usrreq.c#29 integrate .. //depot/projects/vimage/src/sys/netinet6/vinet6.h#33 integrate .. //depot/projects/vimage/src/sys/netipsec/ipsec_mbuf.c#9 integrate .. //depot/projects/vimage/src/sys/netipsec/ipsec_output.c#21 integrate .. //depot/projects/vimage/src/sys/nfs4client/nfs4_subs.c#2 integrate .. //depot/projects/vimage/src/sys/nfsclient/nfs_vfsops.c#25 integrate .. //depot/projects/vimage/src/sys/nfsclient/nfs_vnops.c#26 integrate .. //depot/projects/vimage/src/sys/nfsserver/nfs_srvsubs.c#14 integrate .. //depot/projects/vimage/src/sys/opencrypto/cryptosoft.c#6 integrate .. //depot/projects/vimage/src/sys/powerpc/conf/GENERIC#17 integrate .. //depot/projects/vimage/src/sys/powerpc/conf/NOTES#11 integrate .. //depot/projects/vimage/src/sys/powerpc/powerpc/intr_machdep.c#11 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_audit.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_framework.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_priv.c#3 integrate .. //depot/projects/vimage/src/sys/sys/_null.h#2 integrate .. //depot/projects/vimage/src/sys/sys/cdefs.h#5 integrate .. //depot/projects/vimage/src/sys/sys/clist.h#4 integrate .. //depot/projects/vimage/src/sys/sys/conf.h#15 integrate .. //depot/projects/vimage/src/sys/sys/elf_common.h#6 integrate .. //depot/projects/vimage/src/sys/sys/jail.h#7 integrate .. //depot/projects/vimage/src/sys/sys/kobj.h#3 integrate .. //depot/projects/vimage/src/sys/sys/malloc.h#5 integrate .. //depot/projects/vimage/src/sys/sys/param.h#40 integrate .. //depot/projects/vimage/src/sys/sys/pciio.h#4 integrate .. //depot/projects/vimage/src/sys/sys/pcpu.h#10 integrate .. //depot/projects/vimage/src/sys/sys/pmc.h#9 integrate .. //depot/projects/vimage/src/sys/sys/sysctl.h#31 integrate .. //depot/projects/vimage/src/sys/sys/ttyqueue.h#4 integrate .. //depot/projects/vimage/src/sys/sys/types.h#7 integrate .. //depot/projects/vimage/src/sys/sys/unistd.h#3 integrate .. //depot/projects/vimage/src/sys/sys/vnode.h#17 integrate .. //depot/projects/vimage/src/sys/ufs/ffs/ffs_alloc.c#8 integrate .. //depot/projects/vimage/src/sys/ufs/ffs/ffs_balloc.c#5 integrate .. //depot/projects/vimage/src/sys/ufs/ffs/ffs_extern.h#5 integrate .. //depot/projects/vimage/src/sys/ufs/ffs/ffs_inode.c#9 integrate .. //depot/projects/vimage/src/sys/ufs/ffs/ffs_vfsops.c#17 integrate .. //depot/projects/vimage/src/sys/ufs/ffs/ffs_vnops.c#14 integrate .. //depot/projects/vimage/src/sys/vm/uma.h#6 integrate .. //depot/projects/vimage/src/sys/vm/uma_core.c#10 integrate .. //depot/projects/vimage/src/sys/vm/uma_dbg.c#2 integrate .. //depot/projects/vimage/src/sys/vm/uma_int.h#3 integrate .. //depot/projects/vimage/src/sys/vm/vm_meter.c#11 integrate Differences ... ==== //depot/projects/vimage/src/share/man/man4/iic.4#2 (text+ko) ==== @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man4/iic.4,v 1.15 2006/12/14 16:40:57 mpp Exp $ +.\" $FreeBSD: src/share/man/man4/iic.4,v 1.16 2009/01/26 13:53:39 raj Exp $ .\" .Dd September 6, 2006 .Dt IIC 4 @@ -45,13 +45,19 @@ .Pa /dev/iic? with the following ioctls: -.Bl -tag -width ".Dv I2CRSTCARD" +.Bl -tag -width ".Dv I2CRPTSTART" .It Dv I2CSTART .Pq Vt "struct iiccmd" Sends the start condition to the slave specified by the .Va slave element to the bus. All other elements are ignored. +.It Dv I2CRPTSTART +.Pq Vt "struct iiccmd" +Sends the repeated start condition to the slave specified by the +.Va slave +element to the bus. +All other elements are ignored. .It Dv I2CSTOP No argument is passed. Sends the stop condition to the bus. ==== //depot/projects/vimage/src/share/man/man4/man4.powerpc/Makefile#2 (text+ko) ==== @@ -1,8 +1,10 @@ -# $FreeBSD: src/share/man/man4/man4.powerpc/Makefile,v 1.3 2008/12/07 06:18:47 nwhitehorn Exp $ +# $FreeBSD: src/share/man/man4/man4.powerpc/Makefile,v 1.5 2009/01/26 01:08:24 nwhitehorn Exp $ MAN= bm.4 \ pmu.4 \ - powermac_nvram.4 + powermac_nvram.4 \ + snd_ai2s.4 \ + snd_davbus.4 MANSUBDIR=/powerpc ==== //depot/projects/vimage/src/share/man/man4/ng_bpf.4#2 (text+ko) ==== @@ -32,7 +32,7 @@ .\" .\" Author: Archie Cobbs .\" -.\" $FreeBSD: src/share/man/man4/ng_bpf.4,v 1.22 2007/05/30 09:05:49 glebius Exp $ +.\" $FreeBSD: src/share/man/man4/ng_bpf.4,v 1.23 2009/01/30 19:33:04 keramida Exp $ .\" $Whistle: ng_bpf.8,v 1.2 1999/12/03 01:57:12 archie Exp $ .\" .Dd May 30, 2007 @@ -156,21 +156,14 @@ MATCHHOOK="hook2" NOTMATCHHOOK="hook3" -cat > /tmp/bpf.awk << xxENDxx -{ - if (!init) { - printf "bpf_prog_len=%d bpf_prog=[", \\$1; - init=1; - } else { - printf " { code=%d jt=%d jf=%d k=%d }", \\$1, \\$2, \\$3, \\$4; - } -} -END { - print " ]" -} -xxENDxx - -BPFPROG=`tcpdump -s 8192 -ddd ${PATTERN} | awk -f /tmp/bpf.awk` +BPFPROG=$( tcpdump -s 8192 -ddd ${PATTERN} | \\ + ( read len ; \\ + echo -n "bpf_prog_len=$len" ; \\ + echo -n "bpf_prog=[" ; \\ + while read code jt jf k ; do \\ + echo -n " { code=$code jt=$jt jf=$jf k=$k }" ; \\ + done ; \\ + echo " ]" ) ) ngctl msg ${NODEPATH} setprogram { thisHook=\\"${INHOOK}\\" \\ ifMatch=\\"${MATCHHOOK}\\" \\ ==== //depot/projects/vimage/src/share/man/man4/nge.4#2 (text+ko) ==== @@ -29,9 +29,9 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF .\" THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man4/nge.4,v 1.20 2006/01/14 15:35:21 bz Exp $ +.\" $FreeBSD: src/share/man/man4/nge.4,v 1.21 2009/01/24 04:08:00 trhodes Exp $ .\" -.Dd January 14, 2006 +.Dd January 23, 2009 .Dt NGE 4 .Os .Sh NAME @@ -170,6 +170,8 @@ .It D-Link DGE-500T .It +Linksys EG1032, revision 1 +.It Netgear GA621 .It Netgear GA622T ==== //depot/projects/vimage/src/share/man/man4/sk.4#2 (text+ko) ==== @@ -28,9 +28,9 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF .\" THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man4/sk.4,v 1.31 2008/02/14 10:01:48 brueffer Exp $ +.\" $FreeBSD: src/share/man/man4/sk.4,v 1.32 2009/01/24 04:08:00 trhodes Exp $ .\" -.Dd February 14, 2008 +.Dd January 23, 2009 .Dt SK 4 .Os .Sh NAME @@ -82,7 +82,7 @@ on the primary port fails, the SysKonnect driver will automatically switch traffic onto the second port. .Pp -Also supported is the Marvell Semiconductor 88E1000* gigabit PHY. +Also supported is the Marvell Semiconductor 88E100* gigabit PHY. .Pp The XaQti XMAC II supports full and half duplex operation with autonegotiation. @@ -173,7 +173,7 @@ .It D-Link DGE-530T single port, 1000baseT adapter .It -Linksys EG1032 single port, 1000baseT adapter +Linksys (revision 2) single port, 1000baseT adapter .It SK-9521 SK-NET GE-T single port, 1000baseT adapter .It ==== //depot/projects/vimage/src/share/man/man5/Makefile#2 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 8.1 (Berkeley) 6/5/93 -# $FreeBSD: src/share/man/man5/Makefile,v 1.81 2008/10/05 18:57:27 danger Exp $ +# $FreeBSD: src/share/man/man5/Makefile,v 1.82 2009/01/28 15:22:44 tabthorpe Exp $ .include @@ -51,6 +51,7 @@ pbm.5 \ periodic.conf.5 \ phones.5 \ + portindex.5 \ portsnap.conf.5 \ procfs.5 \ protocols.5 \ ==== //depot/projects/vimage/src/share/man/man5/rc.conf.5#3 (text+ko) ==== @@ -22,9 +22,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.350 2009/01/08 23:50:32 keramida Exp $ +.\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.355 2009/01/29 06:43:29 keramida Exp $ .\" -.Dd January 9, 2009 +.Dd January 27, 2009 .Dt RC.CONF 5 .Os .Sh NAME @@ -1089,9 +1089,9 @@ variable. One or more IP addresses must be provided in Classless Inter-Domain Routing (CIDR) address notation, whose last byte can be a range like -192.168.0.5-23/24. -In this case the address 192.168.0.5 will be configured with the -netmask /24 and the addresses 192.168.0.6 to 192.168.0.23 with +192.0.2.5-23/24. +In this case the address 192.0.2.5 will be configured with the +netmask /24 and the addresses 192.0.2.6 to 192.0.2.23 with the non-conflicting netmask /32 as explained in the .Xr ifconfig 8 alias section. @@ -1099,7 +1099,7 @@ .Li ed0 , an example could look like: .Bd -literal -ipv4_addrs_ed0="192.168.0.1/24 192.168.1.1-5/28" +ipv4_addrs_ed0="192.0.2.129/27 192.0.2.1-5/28" .Ed .Pp It is also possible to add IP alias entries using @@ -1233,7 +1233,7 @@ It is also possible to rename interface by doing: .Bd -literal ifconfig_ed0_name="net0" -ifconfig_net0="inet 10.0.0.1 netmask 0xffff0000" +ifconfig_net0="inet 192.0.2.1 netmask 0xffffff00" .Ed .It Va ipv6_network_interfaces .Pq Vt str @@ -3309,7 +3309,7 @@ you would have the following dependent variables: .Bd -literal jail_vjail_hostname="jail.example.com" -jail_vjail_ip="192.168.1.100" +jail_vjail_ip="192.0.2.100" jail_vjail_rootdir="/var/jails/vjail/root" .Ed .Pp @@ -3426,8 +3426,38 @@ .It Va jail_ Ns Ao Ar jname Ac Ns Va _ip .Pq Vt str Unset by default. -Set to the IP address assigned to jail -.Va jname . +Set to the (primary) IPv4 and/or IPv6 address(es) assigned to the jail. +The argument can be a sole address or a comma separated list of addresses. +Additionally each address can be prefixed by the name of an interface +followed by a pipe to overwrite +.Va jail_ Ns Ao Ar jname Ac Ns Va _interface +or +.Va jail_interface +and/or suffixed by a netmask, prefixlen or prefix. +In case no netmask, prefixlen or prefix is given, +.Sq /32 +will be used for IPv4 and +.Sq /128 +will be used for an IPv6 address. +If no address is given for the jail then the jail will be started with +no networking support. +.It Va jail_ Ns Ao Ar jname Ac Ns Va _ip_multi Ns Aq Ar n +.Pq Vt str +Unset by default. +Set additional IPv4 and/or IPv6 address(es) assigned to the jail. +The sequence starts with +.Dq Li _multi0 +and the numbers have to be strictly ascending. +These entries follow the same syntax as their primary +.Va jail_ Ns Ao Ar jname Ac Ns Va _ip +entry. +The order of the entries can be important as the first address for +each address family found will be the primary address of the jail. +See +.Va ip-addresses +option in +.Xr jail 8 +for more details. .It Va jail_ Ns Ao Ar jname Ac Ns Va _flags .Pq Vt str Set to @@ -3440,12 +3470,6 @@ Unset by default. When set, sets the interface to use when setting IP address alias. Note that the alias is created at jail startup and removed at jail shutdown. -.It Va jail_ Ns Ao Ar jname Ac Ns Va _netmask -.Pq Vt str -Set to -.Li 255.255.255.255 -by default. -This is the IP netmask to use when setting IP address alias. .It Va jail_ Ns Ao Ar jname Ac Ns Va _fib .Pq Vt str Unset by default. ==== //depot/projects/vimage/src/share/man/man7/Makefile#2 (text+ko) ==== @@ -1,8 +1,9 @@ # @(#)Makefile 8.1 (Berkeley) 6/5/93 -# $FreeBSD: src/share/man/man7/Makefile,v 1.33 2007/10/12 10:35:24 ru Exp $ +# $FreeBSD: src/share/man/man7/Makefile,v 1.34 2009/01/30 15:14:58 gabor Exp $ #MISSING: eqnchar.7 ms.7 term.7 -MAN= ascii.7 \ +MAN= adding_user.7 \ + ascii.7 \ bsd.snmpmod.mk.7 \ build.7 \ clocks.7 \ ==== //depot/projects/vimage/src/share/man/man7/build.7#3 (text+ko) ==== @@ -22,9 +22,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man7/build.7,v 1.49 2009/01/05 16:25:36 keramida Exp $ +.\" $FreeBSD: src/share/man/man7/build.7,v 1.51 2009/01/23 18:35:09 imp Exp $ .\" -.Dd January 5, 2009 +.Dd January 23, 2009 .Dt BUILD 7 .Os .Sh NAME @@ -335,6 +335,25 @@ .Xr make 1 variables: .Bl -tag -width ".Va SUBDIR_OVERRIDE" +.It Va KERNCONF +Overrides which kernel to build and install for the various kernel +make targets. +It defaults to +.Cm GENERIC . +.It Va KERNFAST +If set, the build target +.Cm buildkernel +defaults to setting +.Va NO_KERNELCLEAN , +.Va NO_KERNELCONFIG +and +.Va NO_KERNELDEPEND . +When set to a value other than +.Cm 1 +then +.Va KERNCONF +is set to the value of +.Va KERNFAST . .It Va LOCAL_DIRS If set, this variable supplies a list of additional directories to build, relative to the root of the source tree. @@ -370,6 +389,8 @@ .Va TARGET is also set, in which case it defaults to the appropriate value for that platform. +Typically, one only needs to set +.Va TARGET . .El .Pp Builds under directory ==== //depot/projects/vimage/src/share/man/man7/tuning.7#2 (text+ko) ==== @@ -21,9 +21,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man7/tuning.7,v 1.76 2007/11/09 09:25:36 ru Exp $ +.\" $FreeBSD: src/share/man/man7/tuning.7,v 1.79 2009/01/27 00:23:43 trhodes Exp $ .\" -.Dd November 19, 2007 +.Dd January 23, 2009 .Dt TUNING 7 .Os .Sh NAME @@ -402,6 +402,19 @@ on the system. .Pp The +.Va kern.ipc.maxpipekva +loader tunable is used to set a hard limit on the +amount of kernel address space allocated to mapping of pipe buffers. +Use of the mapping allows the kernel to eliminate a copy of the +data from writer address space into the kernel, directly copying +the content of mapped buffer to the reader. +Increasing this value to a higher setting, such as `25165824' might +improve performance on systems where space for mapping pipe buffers +is quickly exhausted. +This exhaustion is not fatal; however, and it will only cause pipes to +to fall back to using double-copy. +.Pp +The .Va kern.ipc.shm_use_phys sysctl defaults to 0 (off) and may be set to 0 (off) or 1 (on). Setting ==== //depot/projects/vimage/src/share/man/man8/Makefile#2 (text+ko) ==== @@ -1,8 +1,7 @@ # @(#)Makefile 8.1 (Berkeley) 6/5/93 -# $FreeBSD: src/share/man/man8/Makefile,v 1.36 2006/08/29 09:12:48 danger Exp $ +# $FreeBSD: src/share/man/man8/Makefile,v 1.37 2009/01/30 15:14:58 gabor Exp $ -MAN= adding_user.8 \ - crash.8 \ +MAN= crash.8 \ diskless.8 \ intro.8 \ MAKEDEV.8 \ ==== //depot/projects/vimage/src/share/man/man9/kthread.9#2 (text+ko) ==== @@ -23,9 +23,9 @@ .\" (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/share/man/man9/kthread.9,v 1.18 2008/04/29 22:43:15 julian Exp $ +.\" $FreeBSD: src/share/man/man9/kthread.9,v 1.19 2009/01/27 00:22:16 trhodes Exp $ .\" -.Dd October 26, 2007 +.Dd January 26, 2009 .Dt KTHREAD 9 .Os .Sh NAME @@ -43,12 +43,6 @@ .Fn kthread_start "const void *udata" .Ft void .Fn kthread_shutdown "void *arg" "int howto" -.Ft int -.Fo kthread_add -.Fa "void (*func)(void *)" "void *arg" "struct proc *procp" -.Fa "struct thread **newtdpp" "int flags" "int pages" -.Fa "const char *fmt" ... -.Fc .Ft void .Fn kthread_exit "void" .Ft int @@ -57,7 +51,14 @@ .Fn kthread_suspend "struct thread *td" "int timo" .Ft void .Fn kthread_suspend_check "struct thread *td" +.In sys/unistd.h .Ft int +.Fo kthread_add +.Fa "void (*func)(void *)" "void *arg" "struct proc *procp" +.Fa "struct thread **newtdpp" "int flags" "int pages" +.Fa "const char *fmt" ... +.Fc +.Ft int .Fo kproc_kthread_add .Fa "void (*func)(void *)" "void *arg" .Fa "struct proc **procptr" "struct thread **tdptr" @@ -142,8 +143,12 @@ then it is ignored. The .Fa flags -argument specifies a set of flags as described in -.Xr rfork 2 . +argument may be set to +.Dv RFSTOPPED +to leave the thread in a stopped state. +The caller must call +.Fn sched_add +to start the thread. The .Fa pages argument specifies the size of the new kernel thread's stack in pages. @@ -274,23 +279,10 @@ .Fn kthread_add function will fail if: .Bl -tag -width Er -.It Bq Er EAGAIN -The system-imposed limit on the total -number of processes under execution would be exceeded. -The limit is given by the -.Xr sysctl 3 -MIB variable -.Dv KERN_MAXPROC . -.It Bq Er EINVAL -The -.Dv RFCFDG -flag was specified in the -.Fa flags -parameter. +.It Bq Er ENOMEM +Memory for a thread's stack could not be allocated. .El .Sh SEE ALSO -.Xr rfork 2 , -.Xr exit1 9 , .Xr kproc 9 , .Xr SYSINIT 9 , .Xr wakeup 9 ==== //depot/projects/vimage/src/sys/amd64/amd64/cpu_switch.S#12 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.165 2009/01/20 12:07:49 kib Exp $ + * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.166 2009/01/31 11:37:21 obrien Exp $ */ #include @@ -260,12 +260,12 @@ jmp do_tss store_seg: - movl %gs,PCB_GS(%r8) + mov %gs,PCB_GS(%r8) testl $PCB_GS32BIT,PCB_FLAGS(%r8) jnz 2f -1: movl %ds,PCB_DS(%r8) - movl %es,PCB_ES(%r8) - movl %fs,PCB_FS(%r8) +1: mov %ds,PCB_DS(%r8) + mov %es,PCB_ES(%r8) + mov %fs,PCB_FS(%r8) jmp done_store_seg 2: movq PCPU(GS32P),%rax movq (%rax),%rax @@ -277,11 +277,11 @@ jnz 2f 1: movl $MSR_GSBASE,%ecx rdmsr - movl PCB_GS(%r8),%gs + mov PCB_GS(%r8),%gs wrmsr - movl PCB_DS(%r8),%ds - movl PCB_ES(%r8),%es - movl PCB_FS(%r8),%fs + mov PCB_DS(%r8),%ds + mov PCB_ES(%r8),%es + mov PCB_FS(%r8),%fs jmp restore_fsbase /* Restore userland %gs while preserving kernel gsbase */ 2: movq PCPU(GS32P),%rax ==== //depot/projects/vimage/src/sys/amd64/amd64/exception.S#9 (text+ko) ==== @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.136 2009/01/14 14:20:08 kib Exp $ + * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.137 2009/02/03 09:01:45 jkoshy Exp $ */ #include "opt_atpic.h" @@ -383,22 +383,24 @@ * NMI handling is special. * * First, NMIs do not respect the state of the processor's RFLAGS.IF - * bit and the NMI handler may be invoked at any time, including when - * the processor is in a critical section with RFLAGS.IF == 0. In - * particular, this means that the processor's GS.base values could be - * inconsistent on entry to the handler, and so we need to read - * MSR_GSBASE to determine if a 'swapgs' is needed. We use '%ebx', a - * C-preserved register, to remember whether to swap GS back on the - * exit path. + * bit. The NMI handler may be entered at any time, including when + * the processor is in a critical section with RFLAGS.IF == 0. + * The processor's GS.base value could be invalid on entry to the + * handler. * * Second, the processor treats NMIs specially, blocking further NMIs - * until an 'iretq' instruction is executed. We therefore need to - * execute the NMI handler with interrupts disabled to prevent a - * nested interrupt from executing an 'iretq' instruction and - * inadvertently taking the processor out of NMI mode. + * until an 'iretq' instruction is executed. We thus need to execute + * the NMI handler with interrupts disabled, to prevent a nested interrupt + * from executing an 'iretq' instruction and inadvertently taking the + * processor out of NMI mode. * - * Third, the NMI handler runs on its own stack (tss_ist1), shared - * with the double fault handler. + * Third, the NMI handler runs on its own stack (tss_ist2). The canonical + * GS.base value for the processor is stored just above the bottom of its + * NMI stack. For NMIs taken from kernel mode, the current value in + * the processor's GS.base is saved at entry to C-preserved register %r12, + * the canonical value for GS.base is then loaded into the processor, and + * the saved value is restored at exit time. For NMIs taken from user mode, + * the cheaper 'SWAPGS' instructions are used for swapping GS.base. */ IDTVEC(nmi) @@ -423,12 +425,22 @@ movq %r15,TF_R15(%rsp) xorl %ebx,%ebx testb $SEL_RPL_MASK,TF_CS(%rsp) - jnz nmi_needswapgs /* we came from userland */ + jnz nmi_fromuserspace + /* + * We've interrupted the kernel. Preserve GS.base in %r12. + */ movl $MSR_GSBASE,%ecx rdmsr - cmpl $VM_MAXUSER_ADDRESS >> 32,%edx - jae nmi_calltrap /* GS.base holds a kernel VA */ -nmi_needswapgs: + movq %rax,%r12 + shlq $32,%rdx + orq %rdx,%r12 + /* Retrieve and load the canonical value for GS.base. */ + movq TF_SIZE(%rsp),%rdx + movl %edx,%eax + shrq $32,%rdx + wrmsr + jmp nmi_calltrap +nmi_fromuserspace: incl %ebx swapgs /* Note: this label is also used by ddb and gdb: */ @@ -439,14 +451,19 @@ MEXITCOUNT #ifdef HWPMC_HOOKS /* - * Check if the current trap was from user mode and if so - * whether the current thread needs a user call chain to be - * captured. We are still in NMI mode at this point. + * Capture a userspace callchain if needed. + * + * - Check if the current trap was from user mode. + * - Check if the current thread is valid. + * - Check if the thread requires a user call chain to be + * captured. + * + * We are still in NMI mode at this point. */ - testb $SEL_RPL_MASK,TF_CS(%rsp) - jz nocallchain - movq PCPU(CURTHREAD),%rax /* curthread present? */ - orq %rax,%rax + testl %ebx,%ebx + jz nocallchain /* not from userspace */ + movq PCPU(CURTHREAD),%rax + orq %rax,%rax /* curthread present? */ jz nocallchain testl $TDP_CALLCHAIN,TD_PFLAGS(%rax) /* flagged for capture? */ jz nocallchain @@ -498,8 +515,18 @@ >>> TRUNCATED FOR MAIL (1000 lines) <<< From nwhitehorn at FreeBSD.org Wed Feb 4 10:49:54 2009 From: nwhitehorn at FreeBSD.org (Nathan Whitehorn) Date: Wed Feb 4 10:49:59 2009 Subject: PERFORCE change 157152 for review Message-ID: <200902041849.n14Injic079900@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157152 Change 157152 by nwhitehorn@nwhitehorn_nokia on 2009/02/04 18:49:35 Fix locking while entering Open Firmware mappings, and change the memory regions code to exclude memory above the 4 GB boundary. This is sufficient to get an Xserve G5 booting almost the way to single user. Probing the hard drives still seems to be stuck in an infinite loop of failure, however. Affected files ... .. //depot/projects/ppc-g5/sys/powerpc/aim/mmu_oea64.c#14 edit .. //depot/projects/ppc-g5/sys/powerpc/aim/ofw_machdep.c#10 edit Differences ... ==== //depot/projects/ppc-g5/sys/powerpc/aim/mmu_oea64.c#14 (text+ko) ==== @@ -917,10 +917,13 @@ if (translations[i].om_pa_hi) panic("OFW translations above 32-bit boundary!"); - /* Enter the pages */ - PMAP_LOCK(&ofw_pmap); - PMAP_LOCK(kernel_pmap); + /* Now enter the pages for this mapping */ + /* + * Lock the ofw pmap. pmap_kenter(), which we use for the + * pages the kernel also needs, does its own locking. + */ + PMAP_LOCK(&ofw_pmap); DISABLE_TRANS(msr); for (off = 0; off < translations[i].om_len; off += PAGE_SIZE) { struct vm_page m; @@ -940,8 +943,6 @@ ofw_mappings++; } ENABLE_TRANS(msr); - - PMAP_UNLOCK(kernel_pmap); PMAP_UNLOCK(&ofw_pmap); } } ==== //depot/projects/ppc-g5/sys/powerpc/aim/ofw_machdep.c#10 (text+ko) ==== @@ -199,15 +199,25 @@ } } - for (i = 0; i < msz/sizeof(OFmem64[0]); i++) { + for (i = 0, j = 0; i < msz/sizeof(OFmem64[0]); i++) { if (OFmem64[i].mr_start_hi == 0) { OFmem[i].mr_start = OFmem64[i].mr_start_lo; OFmem[i].mr_size = OFmem64[i].mr_size; - } else { - OFmem[i].mr_size = 0; + + /* + * Check for memory regions extending above 32-bit + * memory space, and restrict them to stay there. + */ + if (((uint64_t)OFmem[i].mr_start + + (uint64_t)OFmem[i].mr_size) > + BUS_SPACE_MAXADDR_32BIT) { + OFmem[i].mr_size = BUS_SPACE_MAXADDR_32BIT - + OFmem[i].mr_start; + } + j++; } } - msz = i*sizeof(OFmem[0]); + msz = j*sizeof(OFmem[0]); } else { if ((msz = OF_getprop(phandle, "reg", OFmem, sizeof OFmem[0] * OFMEM_REGIONS)) <= 0) From hselasky at FreeBSD.org Wed Feb 4 11:51:49 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Wed Feb 4 11:51:56 2009 Subject: PERFORCE change 157154 for review Message-ID: <200902041951.n14Jpms4086175@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157154 Change 157154 by hselasky@hselasky_laptop001 on 2009/02/04 19:51:13 Integrate uslcom from old USB stack. Affected files ... .. //depot/projects/usb/src/sys/conf/files#49 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uslcom2.c#1 add .. //depot/projects/usb/src/sys/modules/usb2/Makefile#11 edit .. //depot/projects/usb/src/sys/modules/usb2/serial_slcom/Makefile#1 add Differences ... ==== //depot/projects/usb/src/sys/conf/files#49 (text+ko) ==== @@ -1633,6 +1633,7 @@ dev/usb2/serial/umodem2.c optional usb2_core usb2_serial_modem dev/usb2/serial/umoscom2.c optional usb2_core usb2_serial_moscom dev/usb2/serial/uplcom2.c optional usb2_core usb2_serial_plcom +dev/usb2/serial/uslcom2.c optional usb2_core usb2_serial_slcom dev/usb2/serial/uvisor2.c optional usb2_core usb2_serial_visor dev/usb2/serial/uvscom2.c optional usb2_core usb2_serial_vscom dev/usb2/serial/usb2_serial.c optional usb2_core \ @@ -1641,6 +1642,7 @@ usb2_serial_foma | usb2_serial_ftdi | usb2_serial_gensa | \ usb2_serial_ipaq | usb2_serial_lpt | usb2_serial_mct | \ usb2_serial_modem | usb2_serial_moscom | usb2_serial_plcom | \ + usb2_serial_slcom | \ usb2_serial_visor | usb2_serial_vscom) # # USB2 bluetooth drivers ==== //depot/projects/usb/src/sys/modules/usb2/Makefile#11 (text+ko) ==== @@ -74,6 +74,7 @@ SUBDIR += serial_modem SUBDIR += serial_moscom SUBDIR += serial_plcom +SUBDIR += serial_slcom SUBDIR += serial_visor SUBDIR += serial_vscom SUBDIR += sound From jhb at FreeBSD.org Wed Feb 4 13:28:37 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Wed Feb 4 13:28:44 2009 Subject: PERFORCE change 157172 for review Message-ID: <200902042128.n14LSZAv005710@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157172 Change 157172 by jhb@jhb_jhbbsd on 2009/02/04 21:27:39 IFC @157170 Affected files ... .. //depot/projects/smpng/sys/amd64/amd64/cpu_switch.S#23 integrate .. //depot/projects/smpng/sys/amd64/amd64/exception.S#22 integrate .. //depot/projects/smpng/sys/amd64/amd64/io_apic.c#23 integrate .. //depot/projects/smpng/sys/amd64/amd64/local_apic.c#38 integrate .. //depot/projects/smpng/sys/amd64/amd64/machdep.c#73 integrate .. //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#50 integrate .. //depot/projects/smpng/sys/amd64/amd64/msi.c#10 integrate .. //depot/projects/smpng/sys/amd64/ia32/ia32_signal.c#20 integrate .. //depot/projects/smpng/sys/amd64/ia32/ia32_sigtramp.S#5 integrate .. //depot/projects/smpng/sys/amd64/include/apicvar.h#20 integrate .. //depot/projects/smpng/sys/amd64/include/cpufunc.h#15 integrate .. //depot/projects/smpng/sys/amd64/include/intr_machdep.h#18 integrate .. //depot/projects/smpng/sys/amd64/linux32/linux32_locore.s#4 integrate .. //depot/projects/smpng/sys/amd64/linux32/linux32_sysvec.c#35 integrate .. //depot/projects/smpng/sys/arm/arm/busdma_machdep.c#26 integrate .. //depot/projects/smpng/sys/arm/arm/dump_machdep.c#7 integrate .. //depot/projects/smpng/sys/arm/arm/elf_trampoline.c#20 integrate .. //depot/projects/smpng/sys/arm/arm/pmap.c#47 integrate .. //depot/projects/smpng/sys/arm/arm/vm_machdep.c#29 integrate .. //depot/projects/smpng/sys/arm/conf/AVILA#12 integrate .. //depot/projects/smpng/sys/arm/conf/AVILA.hints#4 integrate .. //depot/projects/smpng/sys/arm/include/atomic.h#31 integrate .. //depot/projects/smpng/sys/arm/sa11x0/assabet_machdep.c#19 integrate .. //depot/projects/smpng/sys/arm/xscale/ixp425/avila_machdep.c#10 integrate .. //depot/projects/smpng/sys/arm/xscale/ixp425/files.ixp425#5 integrate .. //depot/projects/smpng/sys/arm/xscale/ixp425/ixp425.c#9 integrate .. //depot/projects/smpng/sys/arm/xscale/ixp425/ixp425reg.h#4 integrate .. //depot/projects/smpng/sys/boot/i386/pxeldr/pxeboot.8#5 integrate .. //depot/projects/smpng/sys/cam/scsi/scsi_pass.c#21 integrate .. //depot/projects/smpng/sys/compat/ndis/winx32_wrap.S#6 integrate .. //depot/projects/smpng/sys/dev/adb/adb_mouse.c#3 integrate .. //depot/projects/smpng/sys/dev/ae/if_ae.c#3 integrate .. //depot/projects/smpng/sys/dev/an/if_an.c#57 integrate .. //depot/projects/smpng/sys/dev/an/if_anreg.h#16 integrate .. //depot/projects/smpng/sys/dev/ata/ata-disk.c#69 integrate .. //depot/projects/smpng/sys/dev/ata/atapi-cam.c#38 integrate .. //depot/projects/smpng/sys/dev/ata/atapi-cd.c#69 integrate .. //depot/projects/smpng/sys/dev/ata/atapi-fd.c#38 integrate .. //depot/projects/smpng/sys/dev/ata/atapi-tape.c#39 integrate .. //depot/projects/smpng/sys/dev/ath/ath_hal/ah_regdomain.c#4 integrate .. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5212.h#3 integrate .. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c#4 integrate .. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c#3 integrate .. //depot/projects/smpng/sys/dev/cardbus/cardbus.c#36 integrate .. //depot/projects/smpng/sys/dev/cfi/cfi_bus_ixp4xx.c#1 branch .. //depot/projects/smpng/sys/dev/cfi/cfi_core.c#2 integrate .. //depot/projects/smpng/sys/dev/cfi/cfi_dev.c#2 integrate .. //depot/projects/smpng/sys/dev/firewire/firewire.c#46 integrate .. //depot/projects/smpng/sys/dev/firewire/fwohci.c#41 integrate .. //depot/projects/smpng/sys/dev/firewire/fwohci_pci.c#42 integrate .. //depot/projects/smpng/sys/dev/firewire/fwohcivar.h#14 integrate .. //depot/projects/smpng/sys/dev/firewire/sbp.c#45 integrate .. //depot/projects/smpng/sys/dev/ichsmb/ichsmb.c#16 integrate .. //depot/projects/smpng/sys/dev/ipmi/ipmi_acpi.c#2 integrate .. //depot/projects/smpng/sys/dev/ipmi/ipmi_smbios.c#4 integrate .. //depot/projects/smpng/sys/dev/kbdmux/kbdmux.c#11 integrate .. //depot/projects/smpng/sys/dev/mmc/mmc.c#10 integrate .. //depot/projects/smpng/sys/dev/mmc/mmcreg.h#5 integrate .. //depot/projects/smpng/sys/dev/pccbb/pccbb.c#69 integrate .. //depot/projects/smpng/sys/dev/pccbb/pccbb_pci.c#19 integrate .. //depot/projects/smpng/sys/dev/pccbb/pccbbvar.h#22 integrate .. //depot/projects/smpng/sys/dev/pci/pci_user.c#20 integrate .. //depot/projects/smpng/sys/dev/pci/pcireg.h#29 integrate .. //depot/projects/smpng/sys/dev/ppbus/ppbconf.h#8 integrate .. //depot/projects/smpng/sys/dev/sdhci/sdhci.c#5 integrate .. //depot/projects/smpng/sys/dev/smbus/smb.c#12 integrate .. //depot/projects/smpng/sys/dev/snp/snp.c#34 integrate .. //depot/projects/smpng/sys/dev/sound/pci/hda/hdac.c#25 integrate .. //depot/projects/smpng/sys/dev/usb2/bluetooth/ubtbcmfw2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/at91dci_atmelarm.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/ehci2_pci.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/musb2_otg_atmelarm.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/ohci2_atmelarm.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/ohci2_pci.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/uhci2_pci.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/uss820dci_atmelarm.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_compat_linux.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_error.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_hub.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_process.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_aue2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_axe2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_cdce2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_cue2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_kue2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_rue2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_udav2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/include/usb2_error.h#2 integrate .. //depot/projects/smpng/sys/dev/usb2/include/usb2_hid.h#2 integrate .. //depot/projects/smpng/sys/dev/usb2/include/usb2_mfunc.h#2 integrate .. //depot/projects/smpng/sys/dev/usb2/include/usb2_revision.h#2 integrate .. //depot/projects/smpng/sys/dev/usb2/input/uhid2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/input/ukbd2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/misc/udbp2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/misc/ufm2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/quirk/usb2_quirk.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/quirk/usb2_quirk.h#2 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/u3g2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/uark2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/ubsa2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/ubser2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/uchcom2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/ucycom2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/ufoma2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/uftdi2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/ugensa2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/uipaq2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/umct2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/umodem2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/umoscom2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/uplcom2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/uvisor2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/uvscom2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/sound/uaudio2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/storage/ata-usb2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/storage/umass2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/storage/urio2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/storage/ustorage2_fs.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/wlan/if_rum2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/wlan/if_ural2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/wlan/if_zyd2.c#4 integrate .. //depot/projects/smpng/sys/dev/xen/netback/netback.c#2 integrate .. //depot/projects/smpng/sys/dev/xen/netfront/netfront.c#5 integrate .. //depot/projects/smpng/sys/fs/coda/coda_vfsops.c#5 integrate .. //depot/projects/smpng/sys/fs/devfs/devfs_vnops.c#75 integrate .. //depot/projects/smpng/sys/fs/hpfs/hpfs_vfsops.c#39 integrate .. //depot/projects/smpng/sys/fs/nullfs/null_vnops.c#38 integrate .. //depot/projects/smpng/sys/fs/nwfs/nwfs_subr.c#12 integrate .. //depot/projects/smpng/sys/fs/nwfs/nwfs_vnops.c#21 integrate .. //depot/projects/smpng/sys/fs/smbfs/smbfs_vnops.c#43 integrate .. //depot/projects/smpng/sys/fs/tmpfs/tmpfs_subr.c#7 integrate .. //depot/projects/smpng/sys/fs/udf/udf_vnops.c#44 integrate .. //depot/projects/smpng/sys/geom/geom.h#52 integrate .. //depot/projects/smpng/sys/geom/geom_subr.c#56 integrate .. //depot/projects/smpng/sys/i386/i386/io_apic.c#25 integrate .. //depot/projects/smpng/sys/i386/i386/local_apic.c#60 integrate .. //depot/projects/smpng/sys/i386/i386/locore.s#30 integrate .. //depot/projects/smpng/sys/i386/i386/mp_machdep.c#116 integrate .. //depot/projects/smpng/sys/i386/i386/msi.c#10 integrate .. //depot/projects/smpng/sys/i386/i386/swtch.s#32 integrate .. //depot/projects/smpng/sys/i386/include/apicvar.h#31 integrate .. //depot/projects/smpng/sys/i386/include/cpufunc.h#38 integrate .. //depot/projects/smpng/sys/i386/include/intr_machdep.h#20 integrate .. //depot/projects/smpng/sys/i386/linux/linux_locore.s#3 integrate .. //depot/projects/smpng/sys/i386/svr4/svr4_locore.s#3 integrate .. //depot/projects/smpng/sys/i386/xen/mp_machdep.c#7 integrate .. //depot/projects/smpng/sys/i386/xen/xen_machdep.c#8 integrate .. //depot/projects/smpng/sys/ia64/ia64/mca.c#11 integrate .. //depot/projects/smpng/sys/ia64/include/mca.h#5 integrate .. //depot/projects/smpng/sys/kern/subr_autoconf.c#14 integrate .. //depot/projects/smpng/sys/kern/subr_bus.c#72 integrate .. //depot/projects/smpng/sys/kern/subr_clist.c#4 integrate .. //depot/projects/smpng/sys/kern/subr_devstat.c#17 integrate .. //depot/projects/smpng/sys/kern/subr_disk.c#30 integrate .. //depot/projects/smpng/sys/kern/subr_firmware.c#21 integrate .. //depot/projects/smpng/sys/kern/subr_kobj.c#9 integrate .. //depot/projects/smpng/sys/kern/subr_prf.c#56 integrate .. //depot/projects/smpng/sys/kern/subr_prof.c#32 integrate .. //depot/projects/smpng/sys/kern/subr_rman.c#39 integrate .. //depot/projects/smpng/sys/kern/subr_rtc.c#3 integrate .. //depot/projects/smpng/sys/kern/subr_taskqueue.c#37 integrate .. //depot/projects/smpng/sys/kern/subr_witness.c#177 integrate .. //depot/projects/smpng/sys/kern/sys_generic.c#56 integrate .. //depot/projects/smpng/sys/kern/tty.c#84 integrate .. //depot/projects/smpng/sys/kern/tty_info.c#3 integrate .. //depot/projects/smpng/sys/kern/tty_inq.c#3 integrate .. //depot/projects/smpng/sys/kern/tty_outq.c#3 integrate .. //depot/projects/smpng/sys/kern/uipc_socket.c#119 integrate .. //depot/projects/smpng/sys/net/if_ethersubr.c#95 integrate .. //depot/projects/smpng/sys/net/if_llatbl.c#2 integrate .. //depot/projects/smpng/sys/net80211/ieee80211.c#34 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_node.c#39 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_scan_sta.c#7 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_tdma.c#2 integrate .. //depot/projects/smpng/sys/netatalk/ddp_usrreq.c#32 integrate .. //depot/projects/smpng/sys/netinet/ip_divert.c#62 integrate .. //depot/projects/smpng/sys/netinet/ip_ipsec.c#11 integrate .. //depot/projects/smpng/sys/netinet/ip_output.c#101 integrate .. //depot/projects/smpng/sys/netinet/sctp_auth.c#15 integrate .. //depot/projects/smpng/sys/netinet/sctp_constants.h#18 integrate .. //depot/projects/smpng/sys/netinet/sctp_crc32.c#7 integrate .. //depot/projects/smpng/sys/netinet/sctp_crc32.h#5 integrate .. //depot/projects/smpng/sys/netinet/sctp_input.c#21 integrate .. //depot/projects/smpng/sys/netinet/sctp_os_bsd.h#19 integrate .. //depot/projects/smpng/sys/netinet/sctp_output.c#24 integrate .. //depot/projects/smpng/sys/netinet/sctp_pcb.c#25 integrate .. //depot/projects/smpng/sys/netinet/sctp_pcb.h#17 integrate .. //depot/projects/smpng/sys/netinet/sctp_sysctl.c#10 integrate .. //depot/projects/smpng/sys/netinet/sctp_uio.h#16 integrate .. //depot/projects/smpng/sys/netinet/sctp_usrreq.c#22 integrate .. //depot/projects/smpng/sys/netinet/sctputil.c#25 integrate .. //depot/projects/smpng/sys/netinet/sctputil.h#14 integrate .. //depot/projects/smpng/sys/netinet6/frag6.c#21 integrate .. //depot/projects/smpng/sys/netinet6/in6.c#49 integrate .. //depot/projects/smpng/sys/netinet6/in6_gif.c#21 integrate .. //depot/projects/smpng/sys/netinet6/in6_ifattach.c#29 integrate .. //depot/projects/smpng/sys/netinet6/ip6_forward.c#26 integrate .. //depot/projects/smpng/sys/netinet6/ip6_input.c#57 integrate .. //depot/projects/smpng/sys/netinet6/ip6_var.h#27 integrate .. //depot/projects/smpng/sys/netinet6/nd6.c#49 integrate .. //depot/projects/smpng/sys/netinet6/nd6_nbr.c#33 integrate .. //depot/projects/smpng/sys/netinet6/nd6_rtr.c#27 integrate .. //depot/projects/smpng/sys/netinet6/sctp6_usrreq.c#17 integrate .. //depot/projects/smpng/sys/netinet6/vinet6.h#5 integrate .. //depot/projects/smpng/sys/netipsec/ipsec_output.c#18 integrate .. //depot/projects/smpng/sys/security/audit/audit_pipe.c#14 integrate .. //depot/projects/smpng/sys/sys/_null.h#6 integrate .. //depot/projects/smpng/sys/sys/cdefs.h#38 integrate .. //depot/projects/smpng/sys/sys/clist.h#5 integrate .. //depot/projects/smpng/sys/sys/conf.h#57 integrate .. //depot/projects/smpng/sys/sys/elf_common.h#14 integrate .. //depot/projects/smpng/sys/sys/kobj.h#7 integrate .. //depot/projects/smpng/sys/sys/malloc.h#28 integrate .. //depot/projects/smpng/sys/sys/pciio.h#4 integrate .. //depot/projects/smpng/sys/sys/sysctl.h#54 integrate .. //depot/projects/smpng/sys/sys/ttyqueue.h#4 integrate .. //depot/projects/smpng/sys/sys/unistd.h#17 integrate .. //depot/projects/smpng/sys/ufs/ffs/ffs_vfsops.c#108 integrate Differences ... ==== //depot/projects/smpng/sys/amd64/amd64/cpu_switch.S#23 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.165 2009/01/20 12:07:49 kib Exp $ + * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.166 2009/01/31 11:37:21 obrien Exp $ */ #include @@ -260,12 +260,12 @@ jmp do_tss store_seg: - movl %gs,PCB_GS(%r8) + mov %gs,PCB_GS(%r8) testl $PCB_GS32BIT,PCB_FLAGS(%r8) jnz 2f -1: movl %ds,PCB_DS(%r8) - movl %es,PCB_ES(%r8) - movl %fs,PCB_FS(%r8) +1: mov %ds,PCB_DS(%r8) + mov %es,PCB_ES(%r8) + mov %fs,PCB_FS(%r8) jmp done_store_seg 2: movq PCPU(GS32P),%rax movq (%rax),%rax @@ -277,11 +277,11 @@ jnz 2f 1: movl $MSR_GSBASE,%ecx rdmsr - movl PCB_GS(%r8),%gs + mov PCB_GS(%r8),%gs wrmsr - movl PCB_DS(%r8),%ds - movl PCB_ES(%r8),%es - movl PCB_FS(%r8),%fs + mov PCB_DS(%r8),%ds + mov PCB_ES(%r8),%es + mov PCB_FS(%r8),%fs jmp restore_fsbase /* Restore userland %gs while preserving kernel gsbase */ 2: movq PCPU(GS32P),%rax ==== //depot/projects/smpng/sys/amd64/amd64/exception.S#22 (text+ko) ==== @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.136 2009/01/14 14:20:08 kib Exp $ + * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.137 2009/02/03 09:01:45 jkoshy Exp $ */ #include "opt_atpic.h" @@ -383,22 +383,24 @@ * NMI handling is special. * * First, NMIs do not respect the state of the processor's RFLAGS.IF - * bit and the NMI handler may be invoked at any time, including when - * the processor is in a critical section with RFLAGS.IF == 0. In - * particular, this means that the processor's GS.base values could be - * inconsistent on entry to the handler, and so we need to read - * MSR_GSBASE to determine if a 'swapgs' is needed. We use '%ebx', a - * C-preserved register, to remember whether to swap GS back on the - * exit path. + * bit. The NMI handler may be entered at any time, including when + * the processor is in a critical section with RFLAGS.IF == 0. + * The processor's GS.base value could be invalid on entry to the + * handler. * * Second, the processor treats NMIs specially, blocking further NMIs - * until an 'iretq' instruction is executed. We therefore need to - * execute the NMI handler with interrupts disabled to prevent a - * nested interrupt from executing an 'iretq' instruction and - * inadvertently taking the processor out of NMI mode. + * until an 'iretq' instruction is executed. We thus need to execute + * the NMI handler with interrupts disabled, to prevent a nested interrupt + * from executing an 'iretq' instruction and inadvertently taking the + * processor out of NMI mode. * - * Third, the NMI handler runs on its own stack (tss_ist1), shared - * with the double fault handler. + * Third, the NMI handler runs on its own stack (tss_ist2). The canonical + * GS.base value for the processor is stored just above the bottom of its + * NMI stack. For NMIs taken from kernel mode, the current value in + * the processor's GS.base is saved at entry to C-preserved register %r12, + * the canonical value for GS.base is then loaded into the processor, and + * the saved value is restored at exit time. For NMIs taken from user mode, + * the cheaper 'SWAPGS' instructions are used for swapping GS.base. */ IDTVEC(nmi) @@ -423,12 +425,22 @@ movq %r15,TF_R15(%rsp) xorl %ebx,%ebx testb $SEL_RPL_MASK,TF_CS(%rsp) - jnz nmi_needswapgs /* we came from userland */ + jnz nmi_fromuserspace + /* + * We've interrupted the kernel. Preserve GS.base in %r12. + */ movl $MSR_GSBASE,%ecx rdmsr - cmpl $VM_MAXUSER_ADDRESS >> 32,%edx - jae nmi_calltrap /* GS.base holds a kernel VA */ -nmi_needswapgs: + movq %rax,%r12 + shlq $32,%rdx + orq %rdx,%r12 + /* Retrieve and load the canonical value for GS.base. */ + movq TF_SIZE(%rsp),%rdx + movl %edx,%eax + shrq $32,%rdx + wrmsr + jmp nmi_calltrap +nmi_fromuserspace: incl %ebx swapgs /* Note: this label is also used by ddb and gdb: */ @@ -439,14 +451,19 @@ MEXITCOUNT #ifdef HWPMC_HOOKS /* - * Check if the current trap was from user mode and if so - * whether the current thread needs a user call chain to be - * captured. We are still in NMI mode at this point. + * Capture a userspace callchain if needed. + * + * - Check if the current trap was from user mode. + * - Check if the current thread is valid. + * - Check if the thread requires a user call chain to be + * captured. + * + * We are still in NMI mode at this point. */ - testb $SEL_RPL_MASK,TF_CS(%rsp) - jz nocallchain - movq PCPU(CURTHREAD),%rax /* curthread present? */ - orq %rax,%rax + testl %ebx,%ebx + jz nocallchain /* not from userspace */ + movq PCPU(CURTHREAD),%rax + orq %rax,%rax /* curthread present? */ jz nocallchain testl $TDP_CALLCHAIN,TD_PFLAGS(%rax) /* flagged for capture? */ jz nocallchain @@ -498,8 +515,18 @@ nocallchain: #endif testl %ebx,%ebx - jz nmi_restoreregs + jz nmi_kernelexit swapgs + jmp nmi_restoreregs +nmi_kernelexit: + /* + * Put back the preserved MSR_GSBASE value. + */ + movl $MSR_GSBASE,%ecx + movq %r12,%rdx + movl %edx,%eax + shrq $32,%rdx + wrmsr nmi_restoreregs: movq TF_RDI(%rsp),%rdi movq TF_RSI(%rsp),%rsi ==== //depot/projects/smpng/sys/amd64/amd64/io_apic.c#23 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.31 2007/06/05 18:57:48 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.32 2009/01/29 09:22:56 jeff Exp $"); #include "opt_isa.h" @@ -327,39 +327,56 @@ { struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; struct ioapic *io = (struct ioapic *)isrc->is_pic; + u_int old_vector; + u_int old_id; + + /* + * keep 1st core as the destination for NMI + */ + if (intpin->io_irq == IRQ_NMI) + apic_id = 0; + + /* + * Set us up to free the old irq. + */ + old_vector = intpin->io_vector; + old_id = intpin->io_cpu; + if (old_vector && apic_id == old_id) + return; + /* + * Allocate an APIC vector for this interrupt pin. Once + * we have a vector we program the interrupt pin. + */ intpin->io_cpu = apic_id; + intpin->io_vector = apic_alloc_vector(apic_id, intpin->io_irq); if (bootverbose) { - printf("ioapic%u: Assigning ", io->io_id); + printf("ioapic%u: routing intpin %u (", io->io_id, + intpin->io_intpin); ioapic_print_irq(intpin); - printf(" to local APIC %u\n", intpin->io_cpu); + printf(") to lapic %u vector %u\n", intpin->io_cpu, + intpin->io_vector); } ioapic_program_intpin(intpin); + /* + * Free the old vector after the new one is established. This is done + * to prevent races where we could miss an interrupt. + */ + if (old_vector) + apic_free_vector(old_id, old_vector, intpin->io_irq); } static void ioapic_enable_intr(struct intsrc *isrc) { struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; - struct ioapic *io = (struct ioapic *)isrc->is_pic; - if (intpin->io_vector == 0) { - /* - * Allocate an APIC vector for this interrupt pin. Once - * we have a vector we program the interrupt pin. - */ - intpin->io_vector = apic_alloc_vector(intpin->io_irq); - if (bootverbose) { - printf("ioapic%u: routing intpin %u (", io->io_id, - intpin->io_intpin); - ioapic_print_irq(intpin); - printf(") to vector %u\n", intpin->io_vector); - } - ioapic_program_intpin(intpin); - apic_enable_vector(intpin->io_vector); - } + if (intpin->io_vector == 0) + ioapic_assign_cpu(isrc, pcpu_find(0)->pc_apic_id); + apic_enable_vector(intpin->io_cpu, intpin->io_vector); } + static void ioapic_disable_intr(struct intsrc *isrc) { @@ -369,11 +386,11 @@ if (intpin->io_vector != 0) { /* Mask this interrupt pin and free its APIC vector. */ vector = intpin->io_vector; - apic_disable_vector(vector); + apic_disable_vector(intpin->io_cpu, vector); intpin->io_masked = 1; intpin->io_vector = 0; ioapic_program_intpin(intpin); - apic_free_vector(vector, intpin->io_irq); + apic_free_vector(intpin->io_cpu, vector, intpin->io_irq); } } ==== //depot/projects/smpng/sys/amd64/amd64/local_apic.c#38 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.50 2008/12/11 15:56:30 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.51 2009/01/29 09:22:56 jeff Exp $"); #include "opt_hwpmc_hooks.h" #include "opt_kdtrace.h" @@ -46,6 +46,8 @@ #include #include #include +#include +#include #include #include @@ -109,6 +111,8 @@ u_long la_hard_ticks; u_long la_stat_ticks; u_long la_prof_ticks; + /* Include IDT_SYSCALL to make indexing easier. */ + u_int la_ioint_irqs[APIC_NUM_IOINTS + 1]; } static lapics[MAX_APIC_ID + 1]; /* XXX: should thermal be an NMI? */ @@ -134,8 +138,6 @@ IDTVEC(apic_isr7), /* 224 - 255 */ }; -/* Include IDT_SYSCALL to make indexing easier. */ -static u_int ioint_irqs[APIC_NUM_IOINTS + 1]; static u_int32_t lapic_timer_divisors[] = { APIC_TDCR_1, APIC_TDCR_2, APIC_TDCR_4, APIC_TDCR_8, APIC_TDCR_16, @@ -215,14 +217,12 @@ /* Perform basic initialization of the BSP's local APIC. */ lapic_enable(); - ioint_irqs[IDT_SYSCALL - APIC_IO_INTS] = IRQ_SYSCALL; /* Set BSP's per-CPU local APIC ID. */ PCPU_SET(apic_id, lapic_id()); /* Local APIC timer interrupt. */ setidt(APIC_TIMER_INT, IDTVEC(timerint), SDT_SYSIGT, SEL_KPL, 0); - ioint_irqs[APIC_TIMER_INT - APIC_IO_INTS] = IRQ_TIMER; /* XXX: error/thermal interrupts */ } @@ -254,6 +254,9 @@ lapics[apic_id].la_lvts[i] = lvts[i]; lapics[apic_id].la_lvts[i].lvt_active = 0; } + lapics[apic_id].la_ioint_irqs[IDT_SYSCALL - APIC_IO_INTS] = IRQ_SYSCALL; + lapics[apic_id].la_ioint_irqs[APIC_TIMER_INT - APIC_IO_INTS] = + IRQ_TIMER; #ifdef SMP cpu_add(apic_id, boot_cpu); @@ -664,7 +667,8 @@ if (vector == -1) panic("Couldn't get vector from ISR!"); - isrc = intr_lookup_source(apic_idt_to_irq(vector)); + isrc = intr_lookup_source(apic_idt_to_irq(PCPU_GET(apic_id), + vector)); intr_execute_handlers(isrc, frame); } @@ -779,9 +783,19 @@ lapic->lvt_timer = value; } +u_int +apic_cpuid(u_int apic_id) +{ +#ifdef SMP + return apic_cpuids[apic_id]; +#else + return 0; +#endif +} + /* Request a free IDT vector to be used by the specified IRQ. */ u_int -apic_alloc_vector(u_int irq) +apic_alloc_vector(u_int apic_id, u_int irq) { u_int vector; @@ -793,9 +807,9 @@ */ mtx_lock_spin(&icu_lock); for (vector = 0; vector < APIC_NUM_IOINTS; vector++) { - if (ioint_irqs[vector] != 0) + if (lapics[apic_id].la_ioint_irqs[vector] != 0) continue; - ioint_irqs[vector] = irq; + lapics[apic_id].la_ioint_irqs[vector] = irq; mtx_unlock_spin(&icu_lock); return (vector + APIC_IO_INTS); } @@ -810,7 +824,7 @@ * satisfied, 0 is returned. */ u_int -apic_alloc_vectors(u_int *irqs, u_int count, u_int align) +apic_alloc_vectors(u_int apic_id, u_int *irqs, u_int count, u_int align) { u_int first, run, vector; @@ -833,7 +847,7 @@ for (vector = 0; vector < APIC_NUM_IOINTS; vector++) { /* Vector is in use, end run. */ - if (ioint_irqs[vector] != 0) { + if (lapics[apic_id].la_ioint_irqs[vector] != 0) { run = 0; first = 0; continue; @@ -853,7 +867,8 @@ /* Found a run, assign IRQs and return the first vector. */ for (vector = 0; vector < count; vector++) - ioint_irqs[first + vector] = irqs[vector]; + lapics[apic_id].la_ioint_irqs[first + vector] = + irqs[vector]; mtx_unlock_spin(&icu_lock); return (first + APIC_IO_INTS); } @@ -862,8 +877,14 @@ return (0); } +/* + * Enable a vector for a particular apic_id. Since all lapics share idt + * entries and ioint_handlers this enables the vector on all lapics. lapics + * which do not have the vector configured would report spurious interrupts + * should it fire. + */ void -apic_enable_vector(u_int vector) +apic_enable_vector(u_int apic_id, u_int vector) { KASSERT(vector != IDT_SYSCALL, ("Attempt to overwrite syscall entry")); @@ -873,7 +894,7 @@ } void -apic_disable_vector(u_int vector) +apic_disable_vector(u_int apic_id, u_int vector) { KASSERT(vector != IDT_SYSCALL, ("Attempt to overwrite syscall entry")); @@ -884,27 +905,42 @@ /* Release an APIC vector when it's no longer in use. */ void -apic_free_vector(u_int vector, u_int irq) +apic_free_vector(u_int apic_id, u_int vector, u_int irq) { + struct thread *td; KASSERT(vector >= APIC_IO_INTS && vector != IDT_SYSCALL && vector <= APIC_IO_INTS + APIC_NUM_IOINTS, ("Vector %u does not map to an IRQ line", vector)); KASSERT(irq < NUM_IO_INTS, ("Invalid IRQ %u", irq)); - KASSERT(ioint_irqs[vector - APIC_IO_INTS] == irq, ("IRQ mismatch")); + KASSERT(lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS] == + irq, ("IRQ mismatch")); + + /* + * Bind us to the cpu that owned the vector before freeing it so + * we don't lose an interrupt delivery race. + */ + td = curthread; + thread_lock(td); + if (sched_is_bound(td)) + panic("apic_free_vector: Thread already bound.\n"); + sched_bind(td, apic_cpuid(apic_id)); mtx_lock_spin(&icu_lock); - ioint_irqs[vector - APIC_IO_INTS] = 0; + lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS] = 0; mtx_unlock_spin(&icu_lock); + sched_unbind(td); + thread_unlock(td); + } /* Map an IDT vector (APIC) to an IRQ (interrupt source). */ u_int -apic_idt_to_irq(u_int vector) +apic_idt_to_irq(u_int apic_id, u_int vector) { KASSERT(vector >= APIC_IO_INTS && vector != IDT_SYSCALL && vector <= APIC_IO_INTS + APIC_NUM_IOINTS, ("Vector %u does not map to an IRQ line", vector)); - return (ioint_irqs[vector - APIC_IO_INTS]); + return (lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS]); } #ifdef DDB @@ -915,6 +951,7 @@ { struct intsrc *isrc; int i, verbose; + u_int apic_id; u_int irq; if (strcmp(modif, "vv") == 0) @@ -923,9 +960,14 @@ verbose = 1; else verbose = 0; - for (i = 0; i < APIC_NUM_IOINTS + 1 && !db_pager_quit; i++) { - irq = ioint_irqs[i]; - if (irq != 0 && irq != IRQ_SYSCALL) { + for (apic_id = 0; apic_id <= MAX_APIC_ID; apic_id++) { + if (lapics[apic_id].la_present == 0) + continue; + db_printf("Interrupts bound to lapic %u\n", apic_id); + for (i = 0; i < APIC_NUM_IOINTS + 1 && !db_pager_quit; i++) { + irq = lapics[apic_id].la_ioint_irqs[i]; + if (irq == 0 || irq == IRQ_SYSCALL) + continue; db_printf("vec 0x%2x -> ", i + APIC_IO_INTS); if (irq == IRQ_TIMER) db_printf("lapic timer\n"); ==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#73 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.690 2008/09/08 09:59:05 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.691 2009/02/03 09:01:45 jkoshy Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -809,6 +809,9 @@ static char dblfault_stack[PAGE_SIZE] __aligned(16); +static char nmi0_stack[PAGE_SIZE] __aligned(16); +CTASSERT(sizeof(struct nmi_pcpu) == 16); + struct amd64tss common_tss[MAXCPU]; /* software prototypes -- in more palatable form */ @@ -1291,6 +1294,7 @@ caddr_t kmdp; int gsel_tss, x; struct pcpu *pc; + struct nmi_pcpu *np; u_int64_t msr; char *env; @@ -1365,7 +1369,7 @@ setidt(x, &IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0); setidt(IDT_DE, &IDTVEC(div), SDT_SYSIGT, SEL_KPL, 0); setidt(IDT_DB, &IDTVEC(dbg), SDT_SYSIGT, SEL_KPL, 0); - setidt(IDT_NMI, &IDTVEC(nmi), SDT_SYSIGT, SEL_KPL, 1); + setidt(IDT_NMI, &IDTVEC(nmi), SDT_SYSIGT, SEL_KPL, 2); setidt(IDT_BP, &IDTVEC(bpt), SDT_SYSIGT, SEL_UPL, 0); setidt(IDT_OF, &IDTVEC(ofl), SDT_SYSIGT, SEL_KPL, 0); setidt(IDT_BR, &IDTVEC(bnd), SDT_SYSIGT, SEL_KPL, 0); @@ -1438,6 +1442,14 @@ /* doublefault stack space, runs on ist1 */ common_tss[0].tss_ist1 = (long)&dblfault_stack[sizeof(dblfault_stack)]; + /* + * NMI stack, runs on ist2. The pcpu pointer is stored just + * above the start of the ist2 stack. + */ + np = ((struct nmi_pcpu *) &nmi0_stack[sizeof(nmi0_stack)]) - 1; + np->np_pcpu = (register_t) pc; + common_tss[0].tss_ist2 = (long) np; + /* Set the IO permission bitmap (empty due to tss seg limit) */ common_tss[0].tss_iobase = sizeof(struct amd64tss); ==== //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#50 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.295 2008/11/26 19:25:13 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.297 2009/02/03 09:01:45 jkoshy Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -92,6 +92,7 @@ /* Temporary holder for double fault stack */ char *doublefault_stack; +char *nmi_stack; /* Hotwire a 0->4MB V==P mapping */ extern pt_entry_t *KPTphys; @@ -152,6 +153,7 @@ int cpu_disabled:1; } static cpu_info[MAX_APIC_ID + 1]; int cpu_apic_ids[MAXCPU]; +int apic_cpuids[MAX_APIC_ID + 1]; /* Holds pending bitmap based IPIs per CPU */ static volatile u_int cpu_ipi_pending[MAXCPU]; @@ -349,6 +351,7 @@ KASSERT(boot_cpu_id == PCPU_GET(apic_id), ("BSP's APIC ID doesn't match boot_cpu_id")); cpu_apic_ids[0] = boot_cpu_id; + apic_cpuids[boot_cpu_id] = 0; assign_cpu_ids(); @@ -435,6 +438,7 @@ init_secondary(void) { struct pcpu *pc; + struct nmi_pcpu *np; u_int64_t msr, cr0; int cpu, gsel_tss, x; struct region_descriptor ap_gdt; @@ -448,6 +452,10 @@ common_tss[cpu].tss_iobase = sizeof(struct amd64tss); common_tss[cpu].tss_ist1 = (long)&doublefault_stack[PAGE_SIZE]; + /* The NMI stack runs on IST2. */ + np = ((struct nmi_pcpu *) &nmi_stack[PAGE_SIZE]) - 1; + common_tss[cpu].tss_ist2 = (long) np; + /* Prepare private GDT */ gdt_segs[GPROC0_SEL].ssd_base = (long) &common_tss[cpu]; ssdtosyssd(&gdt_segs[GPROC0_SEL], @@ -472,6 +480,9 @@ pc->pc_rsp0 = 0; pc->pc_gs32p = &gdt[NGDT * cpu + GUGS32_SEL]; + /* Save the per-cpu pointer for use by the NMI handler. */ + np->np_pcpu = (register_t) pc; + wrmsr(MSR_FSBASE, 0); /* User value */ wrmsr(MSR_GSBASE, (u_int64_t)pc); wrmsr(MSR_KGSBASE, (u_int64_t)pc); /* XXX User value while we're in the kernel */ @@ -656,6 +667,7 @@ if (mp_ncpus < MAXCPU) { cpu_apic_ids[mp_ncpus] = i; + apic_cpuids[i] = mp_ncpus; mp_ncpus++; } else cpu_info[i].cpu_disabled = 1; @@ -722,6 +734,7 @@ /* allocate and set up an idle stack data page */ bootstacks[cpu] = (void *)kmem_alloc(kernel_map, KSTACK_PAGES * PAGE_SIZE); doublefault_stack = (char *)kmem_alloc(kernel_map, PAGE_SIZE); + nmi_stack = (char *)kmem_alloc(kernel_map, PAGE_SIZE); bootSTK = (char *)bootstacks[cpu] + KSTACK_PAGES * PAGE_SIZE - 8; bootAP = cpu; ==== //depot/projects/smpng/sys/amd64/amd64/msi.c#10 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.9 2009/01/12 19:17:35 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.10 2009/01/29 09:22:56 jeff Exp $"); #include #include @@ -161,7 +161,9 @@ { struct msi_intsrc *msi = (struct msi_intsrc *)isrc; - apic_enable_vector(msi->msi_vector); + if (msi->msi_vector == 0) + msi_assign_cpu(isrc, 0); + apic_enable_vector(msi->msi_cpu, msi->msi_vector); } static void @@ -169,7 +171,7 @@ { struct msi_intsrc *msi = (struct msi_intsrc *)isrc; - apic_disable_vector(msi->msi_vector); + apic_disable_vector(msi->msi_cpu, msi->msi_vector); } static int @@ -199,15 +201,35 @@ msi_assign_cpu(struct intsrc *isrc, u_int apic_id) { struct msi_intsrc *msi = (struct msi_intsrc *)isrc; + int old_vector; + u_int old_id; + int vector; + /* Store information to free existing irq. */ + old_vector = msi->msi_vector; + old_id = msi->msi_cpu; + if (old_vector && old_id == apic_id) + return; + /* Allocate IDT vector on this cpu. */ + vector = apic_alloc_vector(apic_id, msi->msi_irq); + if (vector == 0) + return; /* XXX alloc_vector panics on failure. */ msi->msi_cpu = apic_id; + msi->msi_vector = vector; if (bootverbose) - printf("msi: Assigning %s IRQ %d to local APIC %u\n", + printf("msi: Assigning %s IRQ %d to local APIC %u vector %u\n", msi->msi_msix ? "MSI-X" : "MSI", msi->msi_irq, - msi->msi_cpu); + msi->msi_cpu, msi->msi_vector); pci_remap_msi_irq(msi->msi_dev, msi->msi_irq); + /* + * Free the old vector after the new one is established. This is done + * to prevent races where we could miss an interrupt. + */ + if (old_vector) + apic_free_vector(old_id, old_vector, msi->msi_irq); } + void msi_init(void) { @@ -263,7 +285,7 @@ msi_alloc(device_t dev, int count, int maxcount, int *irqs) { struct msi_intsrc *msi, *fsrc; - int cnt, i, vector; + int cnt, i; if (!msi_enabled) return (ENXIO); @@ -309,22 +331,12 @@ /* Ok, we now have the IRQs allocated. */ KASSERT(cnt == count, ("count mismatch")); - /* Allocate 'count' IDT vectors. */ - vector = apic_alloc_vectors(irqs, count, maxcount); - if (vector == 0) { - mtx_unlock(&msi_lock); - return (ENOSPC); - } - /* Assign IDT vectors and make these messages owned by 'dev'. */ fsrc = (struct msi_intsrc *)intr_lookup_source(irqs[0]); for (i = 0; i < count; i++) { msi = (struct msi_intsrc *)intr_lookup_source(irqs[i]); msi->msi_dev = dev; - msi->msi_vector = vector + i; - if (bootverbose) - printf("msi: routing MSI IRQ %d to vector %u\n", - msi->msi_irq, msi->msi_vector); + msi->msi_vector = 0; msi->msi_first = fsrc; KASSERT(msi->msi_intsrc.is_handlers == 0, ("dead MSI has handlers")); @@ -377,14 +389,18 @@ KASSERT(msi->msi_dev == first->msi_dev, ("owner mismatch")); msi->msi_first = NULL; msi->msi_dev = NULL; - apic_free_vector(msi->msi_vector, msi->msi_irq); + if (msi->msi_vector) + apic_free_vector(msi->msi_cpu, msi->msi_vector, + msi->msi_irq); msi->msi_vector = 0; } /* Clear out the first message. */ first->msi_first = NULL; first->msi_dev = NULL; - apic_free_vector(first->msi_vector, first->msi_irq); + if (first->msi_vector) + apic_free_vector(first->msi_cpu, first->msi_vector, + first->msi_irq); first->msi_vector = 0; first->msi_count = 0; @@ -433,7 +449,7 @@ msix_alloc(device_t dev, int *irq) { struct msi_intsrc *msi; - int i, vector; + int i; if (!msi_enabled) return (ENXIO); @@ -468,15 +484,9 @@ goto again; >>> TRUNCATED FOR MAIL (1000 lines) <<< From rwatson at FreeBSD.org Wed Feb 4 14:50:07 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Wed Feb 4 14:50:12 2009 Subject: PERFORCE change 157179 for review Message-ID: <200902042250.n14Mo3qu018379@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157179 Change 157179 by rwatson@rwatson_freebsd_capabilities on 2009/02/04 22:49:39 Fix spelling of .rtld_start. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#11 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#11 (text+ko) ==== @@ -1,5 +1,5 @@ # $FreeBSD$ -# $P4: //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#10 $ +# $P4: //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#11 $ WITHOUT_SSP= @@ -14,7 +14,7 @@ CSTD?= gnu99 CFLAGS+= -Wall -DFREEBSD_ELF -DIN_RTLD -DIN_RTLD_CAP -g CFLAGS+= -I${.CURDIR}/../rtld-elf/${MACHINE_ARCH} -I${.CURDIR}/../rtld-elf -LDFLAGS+= -nostdlib -Wl,-e,_rtld_start -Wl,-T,${.CURDIR}/rtld-elf-cap.xs +LDFLAGS+= -nostdlib -Wl,-e,.rtld_start -Wl,-T,${.CURDIR}/rtld-elf-cap.xs INSTALLFLAGS= -C -b PRECIOUSPROG= BINDIR= /libexec From rwatson at FreeBSD.org Wed Feb 4 15:28:44 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Wed Feb 4 15:28:50 2009 Subject: PERFORCE change 157180 for review Message-ID: <200902042328.n14NShgt022338@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157180 Change 157180 by rwatson@rwatson_freebsd_capabilities on 2009/02/04 23:28:33 As we will include CSU in each sandbox binary, there's no need to expose rtld's copies of __progname and environ symbols to run-time linked objects. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#12 edit .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Symbol.map#2 delete .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf/rtld.c#8 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#12 (text+ko) ==== @@ -1,5 +1,5 @@ # $FreeBSD$ -# $P4: //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#11 $ +# $P4: //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#12 $ WITHOUT_SSP= @@ -21,7 +21,6 @@ CFLAGS+= -fpic -DPIC LDFLAGS+= -shared -Wl,-Bsymbolic - DPADD= ${LIBC_PIC} LDADD= -lc_pic @@ -29,7 +28,7 @@ .if ${MK_SYMVER} == "yes" LIBCDIR= ${.CURDIR}/../../lib/libc VERSION_DEF= ${LIBCDIR}/Versions.def -SYMBOL_MAPS= ${.CURDIR}/../rtld-elf/Symbol.map ${.CURDIR}/Symbol.map +SYMBOL_MAPS= ${.CURDIR}/../rtld-elf/Symbol.map VERSION_MAP= Version.map LDFLAGS+= -Wl,--version-script=${VERSION_MAP} ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf/rtld.c#8 (text+ko) ==== @@ -184,13 +184,6 @@ #endif /* - * Global declarations normally provided by crt1. The dynamic linker is - * not built with crt1, so we have to provide them ourselves. - */ -char *__progname; -char **environ; - -/* * These are the functions the dynamic linker exports to application * programs. They are the only symbols the dynamic linker is willing * to export from itself. @@ -215,14 +208,17 @@ (func_ptr_type) &dl_iterate_phdr, (func_ptr_type) &_rtld_atfork_pre, (func_ptr_type) &_rtld_atfork_post, -#ifdef IN_RTLD_CAP - (func_ptr_type) &environ, - (func_ptr_type) &__progname, -#endif NULL }; /* + * Global declarations normally provided by crt1. The dynamic linker is + * not built with crt1, so we have to provide them ourselves. + */ +char *__progname; +char **environ; + +/* * Globals to control TLS allocation. */ size_t tls_last_offset; /* Static TLS offset of last module */ From rwatson at FreeBSD.org Wed Feb 4 15:29:45 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Wed Feb 4 15:29:52 2009 Subject: PERFORCE change 157181 for review Message-ID: <200902042329.n14NTiJ5022401@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157181 Change 157181 by rwatson@rwatson_freebsd_capabilities on 2009/02/04 23:29:05 Now that the ABI for sandbox binaries is settling down, put some initial chicken-scratchings in the man page. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/rtld-elf-cap.1#2 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/rtld-elf-cap.1#2 (text+ko) ==== @@ -36,8 +36,49 @@ .Os .Dt RTLD-ELF-CAP 1 .Sh NAME +.Nm ld-elf-cap.so , .Nm rtld-elf-cap .Nd capability-mode run-time link editor +.Sh DESCRIPTION +The +.Nm +is a version of +.Xr ld-elf.so 1 +specific to the sandbox environment created using +.Xr cap_enter 2 . +.Nm +is intended to be directly executed using the +.Xr fexeve 2 +system call, and expects the binary to be passed as file descriptor +.Dv 3 . +.Pp +Binaries for the sandbox environment are relocatable shared objects with the +addition of C start-up code (CSU) normally linked only into binaries +intended for direct execution. +As with traditional +.Fx +binaries, the C run-time expects to begin execution with a +.Dv main +function which will be passed execution-time arguments explicitly, as well +as having access to inherited environmental variables. +.Pp +A typical +.Xr gcc 1 +command line to build a sandbox-mode binary might be: +.Bd -literal -offset indent +gcc -o main.so main.c -shared /usr/lib/crt1.o +.Ed +.Sh IMPLEMENTATION NOTES +Linking sandbox binaries as relocatable shared objects rather than linking +them with a fixed virtual address allows them to be directly linked into +consumers, if desired, for debugging or performance analysis purposes. +.Pp +The C run-time start-up code (CSU) is included to provide an ELF brand as +well as +.Dv _start +function sufficient to properly align the stack, start C run-time services +such as profiling and thread-local storage, and to provide and pass command +line arguments and environmental variables to the executing binary. .Sh HISTORY Support for capabilities and capabilities mode was developed as part of the .Tn TrustedBSD From rwatson at FreeBSD.org Wed Feb 4 15:30:46 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Wed Feb 4 15:30:52 2009 Subject: PERFORCE change 157182 for review Message-ID: <200902042330.n14NUj0X022521@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157182 Change 157182 by rwatson@rwatson_freebsd_capabilities on 2009/02/04 23:30:43 Symlink for the man page to ld-elf-cap-so.1. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#13 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#13 (text+ko) ==== @@ -1,5 +1,5 @@ # $FreeBSD$ -# $P4: //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#12 $ +# $P4: //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#13 $ WITHOUT_SSP= @@ -18,6 +18,7 @@ INSTALLFLAGS= -C -b PRECIOUSPROG= BINDIR= /libexec +MLINKS= rtld-elf-cap.1 ld-elf-cap.so.1.1 CFLAGS+= -fpic -DPIC LDFLAGS+= -shared -Wl,-Bsymbolic From rwatson at FreeBSD.org Wed Feb 4 15:35:53 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Wed Feb 4 15:35:59 2009 Subject: PERFORCE change 157183 for review Message-ID: <200902042335.n14NZoTB022949@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157183 Change 157183 by rwatson@rwatson_freebsd_capabilities on 2009/02/04 23:35:26 Fix man page .Nm, add cross-references. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/rtld-elf-cap.1#3 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/rtld-elf-cap.1#3 (text+ko) ==== @@ -36,14 +36,14 @@ .Os .Dt RTLD-ELF-CAP 1 .Sh NAME -.Nm ld-elf-cap.so , +.Nm ld-elf-cap.so.1 , .Nm rtld-elf-cap .Nd capability-mode run-time link editor .Sh DESCRIPTION The .Nm is a version of -.Xr ld-elf.so 1 +.Xr ld-elf.so.1 1 specific to the sandbox environment created using .Xr cap_enter 2 . .Nm @@ -79,6 +79,11 @@ function sufficient to properly align the stack, start C run-time services such as profiling and thread-local storage, and to provide and pass command line arguments and environmental variables to the executing binary. +.Sh SEE ALSO +.Xr gcc 1 , +.Xr ld-elf.so.1 1 , +.Xr cap_enter 2 , +.Xr fexecve 2 .Sh HISTORY Support for capabilities and capabilities mode was developed as part of the .Tn TrustedBSD From nwhitehorn at FreeBSD.org Wed Feb 4 16:49:07 2009 From: nwhitehorn at FreeBSD.org (Nathan Whitehorn) Date: Wed Feb 4 16:49:13 2009 Subject: PERFORCE change 157185 for review Message-ID: <200902050049.n150n5nY039082@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157185 Change 157185 by nwhitehorn@nwhitehorn_trantor on 2009/02/05 00:48:49 Use the 4-byte status word read on all Serverworks SATA controllers, instead of just K2. The Linux driver seems to get away with doing this, and it is necessary for a variety of SATA controllers on PowerPC. This should be tested on x86. Affected files ... .. //depot/projects/ppc-g5/sys/dev/ata/chipsets/ata-serverworks.c#4 edit Differences ... ==== //depot/projects/ppc-g5/sys/dev/ata/chipsets/ata-serverworks.c#4 (text+ko) ==== @@ -57,7 +57,7 @@ static void ata_serverworks_tf_read(struct ata_request *request); static void ata_serverworks_tf_write(struct ata_request *request); static void ata_serverworks_setmode(device_t dev, int mode); -static int ata_serverworks_k2status(device_t dev); +static int ata_serverworks_status(device_t dev); /* misc defines */ #define SWKS_33 0 @@ -99,10 +99,15 @@ } static int -ata_serverworks_k2status(device_t dev) +ata_serverworks_status(device_t dev) { struct ata_channel *ch = device_get_softc(dev); + /* + * We need to do a 4-byte read on the status reg before the values + * will report correctly + */ + ATA_IDX_INL(ch,ATA_STATUS); return ata_pci_status(dev); @@ -193,14 +198,11 @@ ata_pci_hw(dev); ch->hw.tf_read = ata_serverworks_tf_read; ch->hw.tf_write = ata_serverworks_tf_write; + ch->hw.status = ata_serverworks_status; /* chip does not reliably do 64K DMA transfers */ ch->dma.max_iosize = 64 * DEV_BSIZE; - /* For K2, we need to do a 4-byte read on the status reg */ - if (ctlr->chip->chipid == ATA_K2) - ch->hw.status = ata_serverworks_k2status; - return 0; } From trasz at FreeBSD.org Thu Feb 5 00:59:32 2009 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Thu Feb 5 00:59:40 2009 Subject: PERFORCE change 157200 for review Message-ID: <200902050859.n158xTgf008250@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157200 Change 157200 by trasz@trasz_victim7 on 2009/02/05 08:58:45 IFC. Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/ObsoleteFiles.inc#17 integrate .. //depot/projects/soc2008/trasz_nfs4acl/UPDATING#18 integrate .. //depot/projects/soc2008/trasz_nfs4acl/bin/dd/dd.1#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/bin/pax/file_subs.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/contrib/opie/opiekey.1#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/etc/defaults/rc.conf#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/etc/network.subr#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/etc/rc.d/defaultroute#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/gnu/usr.bin/grep/savedir.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/include/paths.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/include/stdlib.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/include/string.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/include/wchar.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libarchive/archive_read_support_format_ar.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/db/man/dbm.3#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/sparc64/sys/__sparc_utrap.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/memccpy.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/memchr.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/memcmp.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/memmem.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strcasecmp.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strcasestr.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strcmp.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strcoll.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strdup.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strmode.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strncmp.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strncpy.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strnstr.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strpbrk.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strsep.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strstr.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wcscat.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wcscmp.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wcscpy.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wcscspn.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wcslcat.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wcslcpy.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wcslen.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wcsncat.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wcsncmp.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wcspbrk.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wcsspn.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wcsstr.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wmemchr.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wmemcmp.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wmemcpy.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wmemmove.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/wmemset.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libusbhid/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libusbhid/descr.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libusbhid/descr_compat.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/lib/libusbhid/usbhid.3#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libusbhid/usbhid.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libusbhid/usbvar.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/libexec/ftpd/ftpd.8#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/fsck/fsck.8#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/fsck/fsck.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/fsck/fsutil.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/fsck_ffs/fsck.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/fsck_ffs/fsck_ffs.8#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/fsck_ffs/fsutil.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/fsck_ffs/inode.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/fsck_ffs/main.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/fsck_ffs/pass1.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/fsck_ffs/setup.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/geom/core/geom.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/ifconfig/ifieee80211.c#10 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/ipfw/Makefile#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/ipfw/altq.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/sbin/ipfw/dummynet.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/ipfw/ipfw2.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/ipfw/ipfw2.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/ipfw/nat.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/reboot/reboot.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/share/man/man4/ng_bpf.4#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/share/man/man7/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/share/man/man7/adding_user.7#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/share/man/man8/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/share/man/man8/adding_user.8#2 delete .. //depot/projects/soc2008/trasz_nfs4acl/share/misc/committers-src.dot#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/amd64/cpu_switch.S#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/amd64/exception.S#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/amd64/machdep.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/amd64/mp_machdep.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/ia32/ia32_signal.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/ia32/ia32_sigtramp.S#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/include/cpufunc.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/include/intr_machdep.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/linux32/linux32_locore.s#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/linux32/linux32_sysvec.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/arm/busdma_machdep.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/arm/dump_machdep.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/arm/elf_trampoline.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/arm/pmap.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/arm/vm_machdep.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/conf/AVILA#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/conf/AVILA.hints#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/include/atomic.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/sa11x0/assabet_machdep.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/xscale/ixp425/avila_machdep.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/xscale/ixp425/files.ixp425#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/xscale/ixp425/ixp425.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/xscale/ixp425/ixp425reg.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/boot/i386/pxeldr/pxeboot.8#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/cam/scsi/scsi_pass.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/compat/ndis/winx32_wrap.S#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/adb/adb_mouse.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ae/if_ae.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/an/if_an.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/an/if_anreg.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ata/ata-disk.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ata/atapi-cam.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ata/atapi-cd.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ata/atapi-fd.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ata/atapi-tape.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ath/ath_hal/ah_regdomain.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ath/ath_hal/ar5212/ar5212.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/bm/if_bm.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cardbus/cardbus.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cfi/cfi_bus_ixp4xx.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cfi/cfi_core.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cfi/cfi_dev.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/firewire/firewire.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/firewire/fwohci.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/firewire/fwohci_pci.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/firewire/fwohcivar.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/firewire/sbp.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ichsmb/ichsmb.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ipmi/ipmi_acpi.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ipmi/ipmi_smbios.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/kbdmux/kbdmux.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/mmc/mmc.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/mmc/mmcreg.h#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/pccbb/pccbb.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/pccbb/pccbb_pci.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/pccbb/pccbbvar.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/pci/pci_user.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/pci/pcireg.h#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ppbus/ppbconf.h#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/smbus/smb.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/snp/snp.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/sound/pci/hda/hdac.c#18 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/bluetooth/ubtbcmfw2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/at91dci_atmelarm.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/ehci2_pci.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/musb2_otg_atmelarm.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/ohci2_atmelarm.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/ohci2_pci.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/uhci2_pci.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/uss820dci_atmelarm.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_compat_linux.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_error.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_hub.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_process.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_aue2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_axe2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_cdce2.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_cue2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_kue2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_rue2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_udav2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/include/usb2_error.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/include/usb2_hid.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/include/usb2_mfunc.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/include/usb2_revision.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/input/uhid2.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/input/ukbd2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/misc/udbp2.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/misc/ufm2.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/quirk/usb2_quirk.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/quirk/usb2_quirk.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/u3g2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uark2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/ubsa2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/ubser2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uchcom2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/ucycom2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/ufoma2.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uftdi2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/ugensa2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uipaq2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/umct2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/umodem2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/umoscom2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uplcom2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uvisor2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uvscom2.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/sound/uaudio2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/storage/ata-usb2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/storage/umass2.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/storage/urio2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/storage/ustorage2_fs.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/wlan/if_rum2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/wlan/if_ural2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/wlan/if_zyd2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/xen/netback/netback.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/xen/netfront/netfront.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/coda/coda_vfsops.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/devfs/devfs_vnops.c#10 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/hpfs/hpfs_vfsops.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/nullfs/null_vnops.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/nwfs/nwfs_subr.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/nwfs/nwfs_vnops.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/smbfs/smbfs_vnops.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/tmpfs/tmpfs_subr.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/udf/udf_vnops.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/geom/geom.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/geom/geom_subr.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/i386/locore.s#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/i386/swtch.s#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/include/cpufunc.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/linux/linux_locore.s#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/svr4/svr4_locore.s#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/xen/clock.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/xen/mp_machdep.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/xen/xen_machdep.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/ia64/ia64/mca.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/ia64/include/mca.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_autoconf.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_bus.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_clist.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_devstat.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_disk.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_firmware.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_kobj.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_prf.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_prof.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_rman.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_rtc.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_taskqueue.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_witness.c#12 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/sys_generic.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/tty.c#15 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/tty_inq.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/tty_outq.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/uipc_socket.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/if_ethersubr.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/if_llatbl.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_node.c#12 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_scan_sta.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_tdma.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netatalk/ddp_usrreq.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/ip_divert.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/ip_ipsec.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/ip_output.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_auth.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_constants.h#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_crc32.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_crc32.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_input.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_os_bsd.h#10 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_output.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_pcb.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_pcb.h#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_sysctl.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_uio.h#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_usrreq.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctputil.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctputil.h#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/frag6.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/in6.c#13 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/in6_gif.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/in6_ifattach.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/ip6_forward.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/ip6_input.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/ip6_var.h#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/nd6.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/nd6_nbr.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/nd6_rtr.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/sctp6_usrreq.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/vinet6.h#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netipsec/ipsec_output.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/security/audit/audit_pipe.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/_null.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/cdefs.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/clist.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/conf.h#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/elf_common.h#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/kobj.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/malloc.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/pciio.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/sysctl.h#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/ttyqueue.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/unistd.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/ufs/ffs/ffs_vfsops.c#17 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/regression/lib/libc/stdio/test-printfloat.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/regression/lib/msun/Makefile#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/regression/lib/msun/test-conj.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/tools/regression/lib/msun/test-conj.t#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/tools/tools/ath/athrd/athrd.1#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/tools/ath/athrd/athrd.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/tools/ath/athstats/Makefile#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/tools/sysbuild/sysbuild.sh#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/basename/basename.1#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/bluetooth/rfcomm_sppd/rfcomm_sppd.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/dirname/dirname.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/make/job.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/make/main.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/netstat/inet6.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/sockstat/sockstat.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/usbhidaction/usbhidaction.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/usbhidctl/usbhid.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/Makefile#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/bnep.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/bnep.h#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/btpand.8#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/btpand.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/btpand.h#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/channel.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/client.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/event.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/event.h#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/packet.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/sdp.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/sdp.h#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/server.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/btpand/tap.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/hcsecd/hcsecd.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/hcseriald/hcseriald.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bluetooth/rfcomm_pppd/rfcomm_pppd.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/crunch/crunchgen/crunchgen.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/fifolog/lib/fifolog_reader.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/fifolog/lib/fifolog_write_poll.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/fwcontrol/fwdv.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/fwcontrol/fwmpegts.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/gssd/gssd.8#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/mtree/create.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/mtree/mtree.5#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/mtree/mtree.8#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/mtree/spec.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/pciconf/pciconf.8#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/pciconf/pciconf.c#5 integrate Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/ObsoleteFiles.inc#17 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/ObsoleteFiles.inc,v 1.167 2009/01/25 19:03:30 antoine Exp $ +# $FreeBSD: src/ObsoleteFiles.inc,v 1.168 2009/02/03 20:46:05 gabor Exp $ # # This file lists old files (OLD_FILES), libraries (OLD_LIBS) and # directories (OLD_DIRS) which should get removed at an update. Recently @@ -14,6 +14,8 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20090203: adding_user.8 moved to adding_user.7 +OLD_FILES+=usr/share/man/man8/adding_user.8.gz # 20090122: tzdata2009a import OLD_FILES+=usr/share/zoneinfo/Asia/Katmandu # 20090102: file 4.26 import ==== //depot/projects/soc2008/trasz_nfs4acl/UPDATING#18 (text+ko) ==== @@ -22,6 +22,10 @@ to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090201: + INET6 statistics (struct ip6stat) was updated. + netstat(1) needs to be recompiled. + 20090119: NTFS has been removed from GENERIC kernel on amd64 to match GENERIC on i386. Should not cause any issues since mount_ntfs(8) @@ -1215,4 +1219,4 @@ Contact Warner Losh if you have any questions about your use of this document. -$FreeBSD: src/UPDATING,v 1.559 2009/01/19 17:00:42 sobomax Exp $ +$FreeBSD: src/UPDATING,v 1.560 2009/02/01 21:11:08 bz Exp $ ==== //depot/projects/soc2008/trasz_nfs4acl/bin/dd/dd.1#3 (text+ko) ==== @@ -30,9 +30,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)dd.1 8.2 (Berkeley) 1/13/94 -.\" $FreeBSD: src/bin/dd/dd.1,v 1.32 2009/01/23 03:46:44 keramida Exp $ +.\" $FreeBSD: src/bin/dd/dd.1,v 1.33 2009/01/30 16:23:57 keramida Exp $ .\" -.Dd August 15, 2004 +.Dd January 23, 2009 .Dt DD 1 .Os .Sh NAME ==== //depot/projects/soc2008/trasz_nfs4acl/bin/pax/file_subs.c#2 (text+ko) ==== @@ -37,7 +37,7 @@ #endif #endif /* not lint */ #include -__FBSDID("$FreeBSD: src/bin/pax/file_subs.c,v 1.22 2007/05/24 06:44:37 rse Exp $"); +__FBSDID("$FreeBSD: src/bin/pax/file_subs.c,v 1.23 2009/02/01 06:15:46 kientzle Exp $"); #include #include @@ -425,19 +425,11 @@ * we were able to create the node. set uid/gid, modes and times */ if (pids) - res = ((arcn->type == PAX_SLK) ? - set_lids(arcn->name, arcn->sb.st_uid, arcn->sb.st_gid) : - set_ids(arcn->name, arcn->sb.st_uid, arcn->sb.st_gid)); + res = set_ids(arcn->name, arcn->sb.st_uid, arcn->sb.st_gid); else res = 0; /* - * symlinks are done now. - */ - if (arcn->type == PAX_SLK) - return(0); - - /* * IMPORTANT SECURITY NOTE: * if not preserving mode or we cannot set uid/gid, then PROHIBIT any * set uid/gid bits @@ -632,7 +624,7 @@ * used by -t to reset access times). * When ign is zero, only those times the user has asked for are set, the * other ones are left alone. We do not assume the un-documented feature - * of many utimes() implementations that consider a 0 time value as a do + * of many lutimes() implementations that consider a 0 time value as a do * not set request. */ @@ -661,7 +653,7 @@ /* * set the times */ - if (utimes(fnm, tv) < 0) + if (lutimes(fnm, tv) < 0) syswarn(1, errno, "Access/modification time set failed on: %s", fnm); return; @@ -677,30 +669,6 @@ int set_ids(char *fnm, uid_t uid, gid_t gid) { - if (chown(fnm, uid, gid) < 0) { - /* - * ignore EPERM unless in verbose mode or being run by root. - * if running as pax, POSIX requires a warning. - */ - if (strcmp(NM_PAX, argv0) == 0 || errno != EPERM || vflag || - geteuid() == 0) - syswarn(1, errno, "Unable to set file uid/gid of %s", - fnm); - return(-1); - } - return(0); -} - -/* - * set_lids() - * set the uid and gid of a file system node - * Return: - * 0 when set, -1 on failure - */ - -int -set_lids(char *fnm, uid_t uid, gid_t gid) -{ if (lchown(fnm, uid, gid) < 0) { /* * ignore EPERM unless in verbose mode or being run by root. @@ -724,7 +692,7 @@ set_pmode(char *fnm, mode_t mode) { mode &= ABITS; - if (chmod(fnm, mode) < 0) + if (lchmod(fnm, mode) < 0) syswarn(1, errno, "Could not set permissions on %s", fnm); return; } ==== //depot/projects/soc2008/trasz_nfs4acl/contrib/opie/opiekey.1#2 (text+ko) ==== @@ -25,7 +25,7 @@ .\" Written at Bellcore for the S/Key Version 1 software distribution .\" (key.1). .\" -.\" $FreeBSD: src/contrib/opie/opiekey.1,v 1.6 2002/03/21 23:42:52 markm Exp $ +.\" $FreeBSD: src/contrib/opie/opiekey.1,v 1.7 2009/01/30 15:43:55 gabor Exp $ .ll 6i .pl 10.5i .lt 6.0i @@ -157,8 +157,7 @@ .BR opieinfo (1), .BR opiekeys (5), .BR opieaccess (5), -.BR opiegen (1) -.BR su (1), +.BR su (1) .SH AUTHOR Bellcore's S/Key was written by Phil Karn, Neil M. Haller, and John S. Walden ==== //depot/projects/soc2008/trasz_nfs4acl/etc/defaults/rc.conf#11 (text+ko) ==== @@ -15,7 +15,7 @@ # For a more detailed explanation of all the rc.conf variables, please # refer to the rc.conf(5) manual page. # -# $FreeBSD: src/etc/defaults/rc.conf,v 1.349 2009/01/26 12:59:11 bz Exp $ +# $FreeBSD: src/etc/defaults/rc.conf,v 1.350 2009/02/02 15:38:24 mtm Exp $ ############################################################## ### Important initial Boot-time options #################### @@ -101,7 +101,7 @@ dhclient_program="/sbin/dhclient" # Path to dhcp client program. dhclient_flags="" # Extra flags to pass to dhcp client. #dhclient_flags_fxp0="" # Extra dhclient flags for fxp0 only -background_dhclient="NO" # Start dhcp client in the background. +background_dhclient="YES" # Start dhcp client in the background. #background_dhclient_fxp0="YES" # Start dhcp client on fxp0 in the background. synchronous_dhclient="NO" # Start dhclient directly on configured # interfaces during startup. ==== //depot/projects/soc2008/trasz_nfs4acl/etc/network.subr#4 (text+ko) ==== @@ -22,7 +22,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/etc/network.subr,v 1.191 2008/10/01 18:46:46 brooks Exp $ +# $FreeBSD: src/etc/network.subr,v 1.192 2009/02/04 18:20:27 thompsa Exp $ # # @@ -515,7 +515,9 @@ i=`ifconfig wlan create ${create_args}` ifconfig $i name $child && cfg=0 fi - ifn_start $child + if autoif $child; then + ifn_start $child + fi done return ${cfg} ==== //depot/projects/soc2008/trasz_nfs4acl/etc/rc.d/defaultroute#3 (text+ko) ==== @@ -2,7 +2,7 @@ # # Wait for the default route to be up # -# $FreeBSD: src/etc/rc.d/defaultroute,v 1.2 2008/12/17 17:35:26 svn Exp $ +# $FreeBSD: src/etc/rc.d/defaultroute,v 1.4 2009/02/02 15:33:22 mtm Exp $ # # PROVIDE: defaultroute @@ -18,11 +18,21 @@ defaultroute_start() { - # Return without waiting if we don't have dhcp interfaces. - # Once we can test that the link is actually up, we should - # remove this test and always wait. + local output carrier nocarrier + + # Return without waiting if we don't have dhcp interfaces or + # if none of the dhcp interfaces is plugged in. dhcp_interfaces=`list_net_interfaces dhcp` - [ -z "`list_net_interfaces dhcp`" ] && return + [ -z "${dhcp_interfaces}" ] && return + carrier=false + for _if in ${dhcp_interfaces}; do + output=`/sbin/ifconfig ${_if}` + nocarrier=`expr "${output}" : '.*[[:blank:]]status: \(no carrier\)'` + [ -z "${nocarrier}" ] && carrier=true + done + if ! ${carrier}; then + return + fi # Wait for a default route delay=${if_up_delay} ==== //depot/projects/soc2008/trasz_nfs4acl/gnu/usr.bin/grep/savedir.c#2 (text+ko) ==== @@ -17,6 +17,9 @@ /* Written by David MacKenzie . */ +#include +__FBSDID("$FreeBSD: src/gnu/usr.bin/grep/savedir.c,v 1.2 2009/01/30 00:22:08 obrien Exp $"); + #if HAVE_CONFIG_H # include #endif @@ -137,10 +140,10 @@ && !isdir1 (dir, dp->d_name)) { if (included_patterns - && !excluded_filename (included_patterns, dp->d_name, 0)) + && !excluded_filename (included_patterns, path, 0)) continue; if (excluded_patterns - && excluded_filename (excluded_patterns, dp->d_name, 0)) + && excluded_filename (excluded_patterns, path, 0)) continue; } ==== //depot/projects/soc2008/trasz_nfs4acl/include/paths.h#3 (text+ko) ==== @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)paths.h 8.1 (Berkeley) 6/2/93 - * $FreeBSD: src/include/paths.h,v 1.27 2009/01/26 17:09:26 obrien Exp $ + * $FreeBSD: src/include/paths.h,v 1.28 2009/02/01 00:50:46 obrien Exp $ */ #ifndef _PATHS_H_ @@ -42,10 +42,9 @@ /* Default search path. */ #define _PATH_DEFPATH "/usr/bin:/bin" /* All standard utilities path. */ -#define _PATH_STDPATH \ - "/usr/bin:/bin:/usr/sbin:/sbin:" -/* Locate system binaries */ -#define _PATH_SYSPATH "/sbin:/usr/sbin" +#define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin:" +/* Locate system binaries. */ +#define _PATH_SYSPATH "/sbin:/usr/sbin" #define _PATH_AUTHCONF "/etc/auth.conf" #define _PATH_BSHELL "/bin/sh" ==== //depot/projects/soc2008/trasz_nfs4acl/include/stdlib.h#3 (text+ko) ==== @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)stdlib.h 8.5 (Berkeley) 5/19/95 - * $FreeBSD: src/include/stdlib.h,v 1.67 2008/07/22 11:40:42 ache Exp $ + * $FreeBSD: src/include/stdlib.h,v 1.68 2009/01/31 18:27:02 das Exp $ */ #ifndef _STDLIB_H_ @@ -88,14 +88,14 @@ long atol(const char *); void *bsearch(const void *, const void *, size_t, size_t, int (*)(const void *, const void *)); -void *calloc(size_t, size_t); +void *calloc(size_t, size_t) __malloc_like; div_t div(int, int) __pure2; void exit(int) __dead2; void free(void *); char *getenv(const char *); long labs(long) __pure2; ldiv_t ldiv(long, long) __pure2; -void *malloc(size_t); +void *malloc(size_t) __malloc_like; int mblen(const char *, size_t); size_t mbstowcs(wchar_t * __restrict , const char * __restrict, size_t); int mbtowc(wchar_t * __restrict, const char * __restrict, size_t); ==== //depot/projects/soc2008/trasz_nfs4acl/include/string.h#3 (text+ko) ==== @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)string.h 8.1 (Berkeley) 6/2/93 - * $FreeBSD: src/include/string.h,v 1.27 2008/12/08 21:04:24 kib Exp $ + * $FreeBSD: src/include/string.h,v 1.28 2009/01/31 18:27:02 das Exp $ */ #ifndef _STRING_H_ @@ -78,7 +78,7 @@ char *strcpy(char * __restrict, const char * __restrict); size_t strcspn(const char *, const char *) __pure; #if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE -char *strdup(const char *); +char *strdup(const char *) __malloc_like; #endif char *strerror(int); #if __POSIX_VISIBLE >= 200112 @@ -96,7 +96,7 @@ int strncmp(const char *, const char *, size_t) __pure; char *strncpy(char * __restrict, const char * __restrict, size_t); #if __BSD_VISIBLE -char *strndup(const char *, size_t); +char *strndup(const char *, size_t) __malloc_like; char *strnstr(const char *, const char *, size_t) __pure; #endif char *strpbrk(const char *, const char *) __pure; ==== //depot/projects/soc2008/trasz_nfs4acl/include/wchar.h#2 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/include/wchar.h,v 1.46 2005/08/13 05:54:33 tjr Exp $ + * $FreeBSD: src/include/wchar.h,v 1.47 2009/01/31 18:27:02 das Exp $ */ /*- @@ -214,7 +214,7 @@ wchar_t *fgetwln(struct __sFILE * __restrict, size_t * __restrict); size_t mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t, size_t, mbstate_t * __restrict); -wchar_t *wcsdup(const wchar_t *); +wchar_t *wcsdup(const wchar_t *) __malloc_like; size_t wcsnrtombs(char * __restrict, const wchar_t ** __restrict, size_t, size_t, mbstate_t * __restrict); size_t wcslcat(wchar_t *, const wchar_t *, size_t); ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libarchive/archive_read_support_format_ar.c#5 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_ar.c,v 1.12 2008/12/17 19:02:42 kientzle Exp $"); +__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_ar.c,v 1.13 2009/02/01 02:33:02 kientzle Exp $"); #ifdef HAVE_SYS_STAT_H #include @@ -511,11 +511,10 @@ } } /* - * Sanity check, last two chars must be `/\n' or '\n\n', - * depending on whether the string table is padded by a '\n' - * (string table produced by GNU ar always has a even size). + * GNU ar always pads the table to an even size. + * The pad character is either '\n' or '`'. */ - if (p != ar->strtab + size && *p != '\n') + if (p != ar->strtab + size && *p != '\n' && *p != '`') goto bad_string_table; /* Enforce zero termination. */ ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/db/man/dbm.3#2 (text+ko) ==== @@ -13,10 +13,8 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/db/man/dbm.3,v 1.9 2006/04/16 16:33:26 maxim Exp $ +.\" $FreeBSD: src/lib/libc/db/man/dbm.3,v 1.10 2009/01/30 15:28:35 gabor Exp $ .\" -.\" Note: The date here should be updated whenever a non-trivial -.\" change is made to the manual page. .Dd April 16, 2006 .Dt DBM 3 .Os ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/sparc64/sys/__sparc_utrap.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libc/sparc64/sys/__sparc_utrap.c,v 1.6 2004/01/19 16:14:58 nectar Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/sparc64/sys/__sparc_utrap.c,v 1.7 2009/02/02 21:51:52 rdivacky Exp $"); #include @@ -122,7 +122,7 @@ } void -__utrap_kill_self(sig) +__utrap_kill_self(int sig) { int berrno; ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/memccpy.c#2 (text+ko) ==== @@ -31,16 +31,12 @@ static char sccsid[] = "@(#)memccpy.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/string/memccpy.c,v 1.6 2007/01/09 00:28:12 imp Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/string/memccpy.c,v 1.7 2009/02/03 17:58:20 danger Exp $"); #include void * -memccpy(t, f, c, n) - void *t; - const void *f; - int c; - size_t n; +memccpy(void *t, const void *f, int c, size_t n) { if (n) { ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/memchr.c#2 (text+ko) ==== @@ -34,15 +34,12 @@ static char sccsid[] = "@(#)memchr.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/string/memchr.c,v 1.5 2007/01/09 00:28:12 imp Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/string/memchr.c,v 1.7 2009/02/03 20:25:36 imp Exp $"); #include void * -memchr(s, c, n) - const void *s; - unsigned char c; - size_t n; +memchr(const void *s, int c, size_t n) { if (n != 0) { const unsigned char *p = s; ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/memcmp.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ static char sccsid[] = "@(#)memcmp.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/string/memcmp.c,v 1.5 2007/01/09 00:28:12 imp Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/string/memcmp.c,v 1.6 2009/02/03 17:58:20 danger Exp $"); #include @@ -42,9 +42,7 @@ * Compare memory regions. */ int -memcmp(s1, s2, n) - const void *s1, *s2; - size_t n; +memcmp(const void *s1, const void *s2, size_t n) { if (n != 0) { const unsigned char *p1 = s1, *p2 = s2; ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/memmem.c#2 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libc/string/memmem.c,v 1.1 2005/08/25 18:26:58 andre Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/string/memmem.c,v 1.2 2009/02/03 17:58:20 danger Exp $"); #include @@ -36,9 +36,7 @@ */ void * -memmem(l, l_len, s, s_len) - const void *l; size_t l_len; - const void *s; size_t s_len; +memmem(const void *l, size_t l_len, const void *s, size_t s_len) { register char *cur, *last; const char *cl = (const char *)l; ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strcasecmp.c#2 (text+ko) ==== @@ -31,7 +31,7 @@ static char sccsid[] = "@(#)strcasecmp.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/string/strcasecmp.c,v 1.7 2007/01/09 00:28:12 imp Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/string/strcasecmp.c,v 1.8 2009/02/03 17:58:20 danger Exp $"); #include #include @@ -39,8 +39,7 @@ typedef unsigned char u_char; int -strcasecmp(s1, s2) - const char *s1, *s2; +strcasecmp(const char *s1, const char *s2) { const u_char *us1 = (const u_char *)s1, @@ -53,9 +52,7 @@ } int -strncasecmp(s1, s2, n) - const char *s1, *s2; - size_t n; +strncasecmp(const char *s1, const char *s2, size_t n) { if (n != 0) { const u_char ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strcasestr.c#2 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libc/string/strcasestr.c,v 1.4 2007/01/09 00:28:12 imp Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/string/strcasestr.c,v 1.5 2009/02/03 17:58:20 danger Exp $"); #include #include @@ -40,8 +40,7 @@ * Find the first occurrence of find in s, ignore case. */ char * -strcasestr(s, find) - const char *s, *find; +strcasestr(const char *s, const char *find) { char c, sc; size_t len; ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strcmp.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ static char sccsid[] = "@(#)strcmp.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/string/strcmp.c,v 1.6 2007/01/09 00:28:12 imp Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/string/strcmp.c,v 1.7 2009/02/03 17:58:20 danger Exp $"); #include @@ -42,11 +42,10 @@ * Compare strings. */ int -strcmp(s1, s2) - const char *s1, *s2; +strcmp(const char *s1, const char *s2) { while (*s1 == *s2++) - if (*s1++ == 0) + if (*s1++ == '\0') return (0); return (*(const unsigned char *)s1 - *(const unsigned char *)(s2 - 1)); } ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strcoll.c#2 (text+ko) ==== @@ -26,15 +26,14 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libc/string/strcoll.c,v 1.13 2001/11/07 19:55:16 obrien Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/string/strcoll.c,v 1.14 2009/02/03 17:58:20 danger Exp $"); #include #include #include "collate.h" int -strcoll(s, s2) - const char *s, *s2; +strcoll(const char *s, const char *s2) { int len, len2, prim, prim2, sec, sec2, ret, ret2; const char *t, *t2; ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/strdup.c#2 (text+ko) ==== @@ -31,15 +31,14 @@ static char sccsid[] = "@(#)strdup.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/string/strdup.c,v 1.5 2007/01/09 00:28:12 imp Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/string/strdup.c,v 1.6 2009/02/03 17:58:20 danger Exp $"); #include #include #include char * -strdup(str) - const char *str; +strdup(const char *str) { >>> TRUNCATED FOR MAIL (1000 lines) <<< From trasz at FreeBSD.org Thu Feb 5 01:02:34 2009 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Thu Feb 5 01:02:41 2009 Subject: PERFORCE change 157201 for review Message-ID: <200902050902.n1592XMX008499@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157201 Change 157201 by trasz@trasz_victim7 on 2009/02/05 09:01:44 IFC. Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/vfs_syscalls.c#16 integrate Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/sys/kern/vfs_syscalls.c#16 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/vfs_syscalls.c,v 1.469 2009/01/23 22:13:30 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/vfs_syscalls.c,v 1.470 2009/02/05 08:46:18 trasz Exp $"); #include "opt_compat.h" #include "opt_kdtrace.h" @@ -395,14 +395,16 @@ vfs_ref(mp); VOP_UNLOCK(vp, 0); fdrop(fp, td); - if (vp->v_iflag & VI_DOOMED) { + if (mp == NULL) { error = EBADF; goto out; } error = vfs_busy(mp, 0); vfs_rel(mp); - if (error) - goto out; + if (error) { + VFS_UNLOCK_GIANT(vfslocked); + return (error); + } #ifdef MAC error = mac_mount_check_stat(td->td_ucred, mp); if (error) From hselasky at FreeBSD.org Thu Feb 5 01:27:01 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Feb 5 01:27:07 2009 Subject: PERFORCE change 157203 for review Message-ID: <200902050926.n159QxeX012662@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157203 Change 157203 by hselasky@hselasky_laptop001 on 2009/02/05 09:26:14 USB2 mass storage: Remove CAM layer quirks. According to Edward Tomasz, trasz, the issues being worked around have been resolved. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/storage/umass2.c#27 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/storage/umass2.c#27 (text+ko) ==== @@ -168,7 +168,6 @@ #endif #define UMASS_GONE ((struct umass_softc *)1) -#define UMASS_MAXUNIT 64 /* XXX temporary */ #define UMASS_BULK_SIZE (1 << 17) #define UMASS_CBI_DIAGNOSTIC_CMDLEN 12 /* bytes */ @@ -1044,7 +1043,6 @@ static uint8_t umass_no_transform(struct umass_softc *, uint8_t *, uint8_t); static uint8_t umass_std_transform(struct umass_softc *, union ccb *, uint8_t *, uint8_t); -static int umass_driver_loaded(struct module *, int what, void *); #if USB_DEBUG static void umass_bbb_dump_cbw(struct umass_softc *, umass_bbb_cbw_t *); @@ -1267,9 +1265,6 @@ #define UFI_COMMAND_LENGTH 12 /* UFI commands are always 12 bytes */ #define ATAPI_COMMAND_LENGTH 12 /* ATAPI commands are always 12 bytes */ -static struct cam_sim *umass_sim[UMASS_MAXUNIT]; -static struct mtx umass_mtx; - static devclass_t umass_devclass; static device_method_t umass_methods[] = { @@ -1286,7 +1281,7 @@ .size = sizeof(struct umass_softc), }; -DRIVER_MODULE(umass, ushub, umass_driver, umass_devclass, umass_driver_loaded, 0); +DRIVER_MODULE(umass, ushub, umass_driver, umass_devclass, NULL, 0); MODULE_DEPEND(umass, usb2_storage, 1, 1, 1); MODULE_DEPEND(umass, usb2_core, 1, 1, 1); MODULE_DEPEND(umass, cam, 1, 1, 1); @@ -1444,11 +1439,6 @@ struct usb2_interface_descriptor *id; int32_t err; - if (device_get_unit(dev) >= UMASS_MAXUNIT) { - device_printf(dev, "Maxunit(%u) limit reached!\n", - UMASS_MAXUNIT); - return (ENOMEM); - } /* * NOTE: the softc struct is bzero-ed in device_set_driver. * We can safely call umass_detach without specifically @@ -1466,6 +1456,9 @@ device_set_usb2_desc(dev); + mtx_init(&sc->sc_mtx, device_get_nameunit(dev), + NULL, MTX_DEF | MTX_RECURSE); + /* get interface index */ id = usb2_get_interface_descriptor(uaa->iface); @@ -1534,7 +1527,7 @@ err = usb2_transfer_setup(uaa->device, &uaa->info.bIfaceIndex, sc->sc_xfer, umass_bbb_config, - UMASS_T_BBB_MAX, sc, &umass_mtx); + UMASS_T_BBB_MAX, sc, &sc->sc_mtx); /* skip reset first time */ sc->sc_last_xfer_index = UMASS_T_BBB_COMMAND; @@ -1545,7 +1538,7 @@ &uaa->info.bIfaceIndex, sc->sc_xfer, umass_cbi_config, (sc->sc_proto & UMASS_PROTO_CBI_I) ? UMASS_T_CBI_MAX : (UMASS_T_CBI_MAX - 2), sc, - &umass_mtx); + &sc->sc_mtx); /* skip reset first time */ sc->sc_last_xfer_index = UMASS_T_CBI_COMMAND; @@ -1618,12 +1611,12 @@ usb2_transfer_unsetup(sc->sc_xfer, UMASS_T_MAX); #if (__FreeBSD_version >= 700037) - mtx_lock(&umass_mtx); + mtx_lock(&sc->sc_mtx); #endif umass_cam_detach_sim(sc); #if (__FreeBSD_version >= 700037) - mtx_unlock(&umass_mtx); + mtx_unlock(&sc->sc_mtx); #endif return (0); /* success */ @@ -1687,7 +1680,7 @@ { union ccb *ccb; - mtx_assert(&umass_mtx, MA_OWNED); + mtx_assert(&sc->sc_mtx, MA_OWNED); ccb = sc->sc_transfer.ccb; sc->sc_transfer.ccb = NULL; @@ -2599,10 +2592,6 @@ { struct cam_devq *devq; /* Per device Queue */ - if (umass_sim[sc->sc_unit] != NULL) { - sc->sc_sim = umass_sim[sc->sc_unit]; - goto register_only; - } /* * A HBA is attached to the CAM layer. * @@ -2620,7 +2609,7 @@ sc /* priv */ , sc->sc_unit /* unit number */ , #if (__FreeBSD_version >= 700037) - &umass_mtx /* mutex */ , + &sc->sc_mtx /* mutex */ , #endif 1 /* maximum device openings */ , 0 /* maximum tagged device openings */ , @@ -2630,33 +2619,27 @@ cam_simq_free(devq); return (ENOMEM); } - umass_sim[sc->sc_unit] = sc->sc_sim; - -register_only: - - /* update the softc pointer */ - sc->sc_sim->softc = sc; #if (__FreeBSD_version >= 700037) - mtx_lock(&umass_mtx); + mtx_lock(&sc->sc_mtx); #endif #if (__FreeBSD_version >= 700048) if (xpt_bus_register(sc->sc_sim, sc->sc_dev, sc->sc_unit) != CAM_SUCCESS) { - mtx_unlock(&umass_mtx); + mtx_unlock(&sc->sc_mtx); return (ENOMEM); } #else if (xpt_bus_register(sc->sc_sim, sc->sc_unit) != CAM_SUCCESS) { #if (__FreeBSD_version >= 700037) - mtx_unlock(&umass_mtx); + mtx_unlock(&sc->sc_mtx); #endif return (ENOMEM); } #endif #if (__FreeBSD_version >= 700037) - mtx_unlock(&umass_mtx); + mtx_unlock(&sc->sc_mtx); #endif return (0); } @@ -2698,14 +2681,14 @@ return; } #if (__FreeBSD_version >= 700037) - mtx_lock(&umass_mtx); + mtx_lock(&sc->sc_mtx); #endif if (xpt_create_path(&path, xpt_periph, cam_sim_path(sc->sc_sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { #if (__FreeBSD_version >= 700037) - mtx_unlock(&umass_mtx); + mtx_unlock(&sc->sc_mtx); #endif free(ccb, M_USBDEV); return; @@ -2717,7 +2700,7 @@ xpt_action(ccb); #if (__FreeBSD_version >= 700037) - mtx_unlock(&umass_mtx); + mtx_unlock(&sc->sc_mtx); #endif /* The scan is in progress now. */ @@ -2755,14 +2738,11 @@ static void umass_cam_detach_sim(struct umass_softc *sc) { - if (sc->sc_sim) { + if (sc->sc_sim != NULL) { if (xpt_bus_deregister(cam_sim_path(sc->sc_sim))) { -#if 0 /* NOTYET */ - cam_sim_free(sc->sc_sim, /* free_devq */ TRUE); -#else /* accessing the softc is not possible after this */ sc->sc_sim->softc = UMASS_GONE; -#endif + cam_sim_free(sc->sc_sim, /* free_devq */ TRUE); } else { panic("%s: CAM layer is busy!\n", sc->sc_name); @@ -2787,7 +2767,7 @@ } if (sc) { #if (__FreeBSD_version < 700037) - mtx_lock(&umass_mtx); + mtx_lock(&sc->sc_mtx); #endif } /* @@ -3071,7 +3051,7 @@ done: #if (__FreeBSD_version < 700037) if (sc) { - mtx_unlock(&umass_mtx); + mtx_unlock(&sc->sc_mtx); } #endif return; @@ -3638,28 +3618,3 @@ } #endif - -static int -umass_driver_loaded(struct module *mod, int what, void *arg) -{ - uint16_t x; - - switch (what) { - case MOD_LOAD: - mtx_init(&umass_mtx, "UMASS lock", NULL, (MTX_DEF | MTX_RECURSE)); - break; - - case MOD_UNLOAD: - for (x = 0; x != UMASS_MAXUNIT; x++) { - /* cleanup */ - if (umass_sim[x]) - cam_sim_free(umass_sim[x], /* free_devq */ TRUE); - } - mtx_destroy(&umass_mtx); - break; - default: - return (EOPNOTSUPP); - } - - return (0); -} From bz at FreeBSD.org Thu Feb 5 12:13:09 2009 From: bz at FreeBSD.org (Bjoern A. Zeeb) Date: Thu Feb 5 12:13:18 2009 Subject: PERFORCE change 157227 for review Message-ID: <200902052013.n15KD2ku096727@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157227 Change 157227 by bz@bz_dumpster on 2009/02/05 20:12:50 IFC @157226 Affected files ... .. //depot/projects/s390/COPYRIGHT#6 integrate .. //depot/projects/s390/Makefile#17 integrate .. //depot/projects/s390/Makefile.inc1#27 integrate .. //depot/projects/s390/ObsoleteFiles.inc#7 integrate .. //depot/projects/s390/UPDATING#20 integrate .. //depot/projects/s390/bin/chmod/chmod.1#6 integrate .. //depot/projects/s390/bin/dd/dd.1#4 integrate .. //depot/projects/s390/bin/kenv/kenv.1#5 integrate .. //depot/projects/s390/bin/ln/ln.1#6 integrate .. //depot/projects/s390/bin/pax/file_subs.c#5 integrate .. //depot/projects/s390/bin/test/test.1#4 integrate .. //depot/projects/s390/cddl/contrib/opensolaris/cmd/zinject/zinject.c#2 integrate .. //depot/projects/s390/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c#4 integrate .. //depot/projects/s390/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c#2 integrate .. //depot/projects/s390/contrib/bind9/CHANGES#4 integrate .. //depot/projects/s390/contrib/bind9/COPYRIGHT#3 integrate .. //depot/projects/s390/contrib/bind9/FAQ#4 integrate .. //depot/projects/s390/contrib/bind9/FAQ.xml#3 integrate .. //depot/projects/s390/contrib/bind9/README#4 integrate .. //depot/projects/s390/contrib/bind9/aclocal.m4#1 branch .. //depot/projects/s390/contrib/bind9/bin/check/check-tool.c#3 integrate .. //depot/projects/s390/contrib/bind9/bin/check/named-checkconf.c#3 integrate .. //depot/projects/s390/contrib/bind9/bin/check/named-checkzone.c#3 integrate .. //depot/projects/s390/contrib/bind9/bin/dig/dig.1#4 integrate .. //depot/projects/s390/contrib/bind9/bin/dig/dig.c#4 integrate .. //depot/projects/s390/contrib/bind9/bin/dig/dig.docbook#4 integrate .. //depot/projects/s390/contrib/bind9/bin/dig/dig.html#4 integrate .. //depot/projects/s390/contrib/bind9/bin/dig/dighost.c#4 integrate .. //depot/projects/s390/contrib/bind9/bin/dig/host.1#4 integrate .. //depot/projects/s390/contrib/bind9/bin/dig/host.docbook#4 integrate .. //depot/projects/s390/contrib/bind9/bin/dig/host.html#4 integrate .. //depot/projects/s390/contrib/bind9/bin/dnssec/dnssec-keygen.8#4 integrate .. //depot/projects/s390/contrib/bind9/bin/dnssec/dnssec-keygen.docbook#4 integrate .. //depot/projects/s390/contrib/bind9/bin/dnssec/dnssec-keygen.html#4 integrate .. //depot/projects/s390/contrib/bind9/bin/dnssec/dnssec-signzone.8#4 integrate .. //depot/projects/s390/contrib/bind9/bin/dnssec/dnssec-signzone.c#4 integrate .. //depot/projects/s390/contrib/bind9/bin/dnssec/dnssec-signzone.docbook#4 integrate .. //depot/projects/s390/contrib/bind9/bin/dnssec/dnssec-signzone.html#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/client.c#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/config.c#3 integrate .. //depot/projects/s390/contrib/bind9/bin/named/controlconf.c#3 integrate .. //depot/projects/s390/contrib/bind9/bin/named/include/named/globals.h#3 integrate .. //depot/projects/s390/contrib/bind9/bin/named/interfacemgr.c#3 integrate .. //depot/projects/s390/contrib/bind9/bin/named/lwaddr.c#3 integrate .. //depot/projects/s390/contrib/bind9/bin/named/lwdgnba.c#3 integrate .. //depot/projects/s390/contrib/bind9/bin/named/lwdnoop.c#3 integrate .. //depot/projects/s390/contrib/bind9/bin/named/lwresd.8#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/lwresd.c#3 integrate .. //depot/projects/s390/contrib/bind9/bin/named/lwresd.docbook#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/lwresd.html#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/main.c#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/named.8#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/named.conf.5#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/named.conf.docbook#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/named.conf.html#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/named.docbook#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/named.html#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/query.c#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/server.c#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/unix/include/named/os.h#3 integrate .. //depot/projects/s390/contrib/bind9/bin/named/unix/os.c#4 integrate .. //depot/projects/s390/contrib/bind9/bin/named/update.c#4 integrate .. //depot/projects/s390/contrib/bind9/bin/nsupdate/Makefile.in#3 integrate .. //depot/projects/s390/contrib/bind9/bin/nsupdate/nsupdate.1#1 branch .. //depot/projects/s390/contrib/bind9/bin/nsupdate/nsupdate.8#4 delete .. //depot/projects/s390/contrib/bind9/bin/nsupdate/nsupdate.c#4 integrate .. //depot/projects/s390/contrib/bind9/bin/nsupdate/nsupdate.docbook#4 integrate .. //depot/projects/s390/contrib/bind9/bin/nsupdate/nsupdate.html#4 integrate .. //depot/projects/s390/contrib/bind9/bin/rndc/rndc-confgen.c#3 integrate .. //depot/projects/s390/contrib/bind9/bin/rndc/rndc.8#4 integrate .. //depot/projects/s390/contrib/bind9/bin/rndc/rndc.c#4 integrate .. //depot/projects/s390/contrib/bind9/bin/rndc/rndc.docbook#4 integrate .. //depot/projects/s390/contrib/bind9/bin/rndc/rndc.html#4 integrate .. //depot/projects/s390/contrib/bind9/config.h.in#1 branch .. //depot/projects/s390/contrib/bind9/configure.in#4 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/Bv9ARM-book.xml#4 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/Bv9ARM.ch01.html#4 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/Bv9ARM.ch02.html#4 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/Bv9ARM.ch03.html#4 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/Bv9ARM.ch04.html#4 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/Bv9ARM.ch05.html#4 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/Bv9ARM.ch06.html#4 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/Bv9ARM.ch07.html#4 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/Bv9ARM.ch08.html#4 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/Bv9ARM.ch09.html#4 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/Bv9ARM.ch10.html#2 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/Bv9ARM.html#4 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/Bv9ARM.pdf#3 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/man.dig.html#2 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/man.dnssec-keygen.html#2 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/man.dnssec-signzone.html#2 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/man.host.html#2 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/man.named-checkconf.html#2 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/man.named-checkzone.html#2 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/man.named.html#2 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/man.rndc-confgen.html#2 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/man.rndc.conf.html#2 integrate .. //depot/projects/s390/contrib/bind9/doc/arm/man.rndc.html#2 integrate .. //depot/projects/s390/contrib/bind9/doc/misc/Makefile.in#3 integrate .. //depot/projects/s390/contrib/bind9/doc/misc/format-options.pl#3 integrate .. //depot/projects/s390/contrib/bind9/doc/misc/migration#3 integrate .. //depot/projects/s390/contrib/bind9/doc/misc/options#4 integrate .. //depot/projects/s390/contrib/bind9/doc/misc/sort-options.pl#1 branch .. //depot/projects/s390/contrib/bind9/doc/rfc/index#4 integrate .. //depot/projects/s390/contrib/bind9/doc/rfc/rfc4648.txt#1 branch .. //depot/projects/s390/contrib/bind9/doc/rfc/rfc4701.txt#1 branch .. //depot/projects/s390/contrib/bind9/doc/rfc/rfc5155.txt#1 branch .. //depot/projects/s390/contrib/bind9/lib/bind/api#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/bsd/Makefile.in#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/bsd/strerror.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/bsd/strtoul.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/configure.in#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/dst/Makefile.in#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/dst/dst_api.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/dst/hmac_link.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/dst/support.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/include/Makefile.in#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/include/arpa/nameser.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/include/isc/assertions.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/include/isc/eventlib.h#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/include/isc/misc.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/include/isc/platform.h.in#1 branch .. //depot/projects/s390/contrib/bind9/lib/bind/include/netdb.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/include/resolv.h#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/inet/Makefile.in#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/inet/inet_net_pton.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/inet/inet_network.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/irs/Makefile.in#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/irs/dns_ho.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/irs/getnetgrent.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/irs/getnetgrent_r.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/irs/irp.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/isc/Makefile.in#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/isc/assertions.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/isc/bitncmp.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/isc/ctl_clnt.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/isc/ctl_srvr.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/isc/logging.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/nameser/Makefile.in#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/port_after.h.in#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/port_before.h.in#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/resolv/Makefile.in#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/resolv/res_debug.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/resolv/res_mkquery.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/resolv/res_query.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/bind/resolv/res_send.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind9/api#4 integrate .. //depot/projects/s390/contrib/bind9/lib/bind9/check.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/acache.c#2 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/adb.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/api#4 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/cache.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/dispatch.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/dst_parse.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/dst_parse.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/include/dns/dispatch.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/journal.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/master.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/masterdump.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/message.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/openssldsa_link.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/opensslrsa_link.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/rbt.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/rbtdb.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/rdata/generic/nsec_47.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/rdata/generic/nsec_47.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/rdata/generic/txt_16.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/rdata/in_1/apl_42.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/rdata/in_1/naptr_35.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/request.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/resolver.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/rootns.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/sdb.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/tkey.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/tsig.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/validator.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/view.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/xfrin.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/dns/zone.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/Makefile.in#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/api#4 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/assertions.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/include/isc/assertions.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/include/isc/lex.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/include/isc/mem.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/include/isc/msgs.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/include/isc/platform.h.in#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/include/isc/portset.h#1 branch .. //depot/projects/s390/contrib/bind9/lib/isc/include/isc/resource.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/include/isc/socket.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/include/isc/timer.h#4 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/include/isc/types.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/mem.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/portset.c#1 branch .. //depot/projects/s390/contrib/bind9/lib/isc/print.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/pthreads/mutex.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/timer.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/unix/app.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/unix/include/isc/net.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/unix/net.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/unix/resource.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/unix/socket.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/unix/socket_p.h#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isc/unix/time.c#3 integrate .. //depot/projects/s390/contrib/bind9/lib/isccfg/api#4 integrate .. //depot/projects/s390/contrib/bind9/lib/isccfg/namedconf.c#4 integrate .. //depot/projects/s390/contrib/bind9/lib/lwres/api#4 integrate .. //depot/projects/s390/contrib/bind9/make/rules.in#4 integrate .. //depot/projects/s390/contrib/bind9/version#4 integrate .. //depot/projects/s390/contrib/csup/GNUmakefile#2 integrate .. //depot/projects/s390/contrib/csup/Makefile#2 integrate .. //depot/projects/s390/contrib/csup/TODO#2 integrate .. //depot/projects/s390/contrib/csup/config.c#2 integrate .. //depot/projects/s390/contrib/csup/csup.1#2 integrate .. //depot/projects/s390/contrib/csup/detailer.c#2 integrate .. //depot/projects/s390/contrib/csup/diff.c#2 integrate .. //depot/projects/s390/contrib/csup/diff.h#2 integrate .. //depot/projects/s390/contrib/csup/fattr.c#2 integrate .. //depot/projects/s390/contrib/csup/fattr.h#2 integrate .. //depot/projects/s390/contrib/csup/keyword.c#2 integrate .. //depot/projects/s390/contrib/csup/keyword.h#2 integrate .. //depot/projects/s390/contrib/csup/lex.rcs.c#1 branch .. //depot/projects/s390/contrib/csup/lister.c#2 integrate .. //depot/projects/s390/contrib/csup/misc.c#2 integrate .. //depot/projects/s390/contrib/csup/misc.h#2 integrate .. //depot/projects/s390/contrib/csup/mux.c#3 integrate .. //depot/projects/s390/contrib/csup/proto.c#2 integrate .. //depot/projects/s390/contrib/csup/proto.h#2 integrate .. //depot/projects/s390/contrib/csup/rcsfile.c#1 branch .. //depot/projects/s390/contrib/csup/rcsfile.h#1 branch .. //depot/projects/s390/contrib/csup/rcsparse.c#1 branch .. //depot/projects/s390/contrib/csup/rcsparse.h#1 branch .. //depot/projects/s390/contrib/csup/rcstokenizer.h#1 branch .. //depot/projects/s390/contrib/csup/rcstokenizer.l#1 branch .. //depot/projects/s390/contrib/csup/rsyncfile.c#1 branch .. //depot/projects/s390/contrib/csup/rsyncfile.h#1 branch .. //depot/projects/s390/contrib/csup/status.c#2 integrate .. //depot/projects/s390/contrib/csup/stream.c#2 integrate .. //depot/projects/s390/contrib/csup/stream.h#2 integrate .. //depot/projects/s390/contrib/csup/updater.c#2 integrate .. //depot/projects/s390/contrib/file/AUTHORS#1 branch .. //depot/projects/s390/contrib/file/COPYING#1 branch .. //depot/projects/s390/contrib/file/ChangeLog#3 integrate .. //depot/projects/s390/contrib/file/FREEBSD-upgrade#4 delete .. //depot/projects/s390/contrib/file/INSTALL#1 branch .. //depot/projects/s390/contrib/file/LEGAL.NOTICE#4 delete .. //depot/projects/s390/contrib/file/MAINT#4 integrate .. //depot/projects/s390/contrib/file/Magdir/adventure#5 integrate .. //depot/projects/s390/contrib/file/Magdir/animation#5 integrate .. //depot/projects/s390/contrib/file/Magdir/apple#4 integrate .. //depot/projects/s390/contrib/file/Magdir/archive#6 integrate .. //depot/projects/s390/contrib/file/Magdir/audio#6 integrate .. //depot/projects/s390/contrib/file/Magdir/c-lang#4 integrate .. //depot/projects/s390/contrib/file/Magdir/c64#3 integrate .. //depot/projects/s390/contrib/file/Magdir/cafebabe#2 integrate .. //depot/projects/s390/contrib/file/Magdir/cddb#2 integrate .. //depot/projects/s390/contrib/file/Magdir/clarion#1 branch .. //depot/projects/s390/contrib/file/Magdir/commands#5 integrate .. //depot/projects/s390/contrib/file/Magdir/compress#6 integrate .. //depot/projects/s390/contrib/file/Magdir/console#4 integrate .. //depot/projects/s390/contrib/file/Magdir/cracklib#2 integrate .. //depot/projects/s390/contrib/file/Magdir/ctags#4 integrate .. //depot/projects/s390/contrib/file/Magdir/database#5 integrate .. //depot/projects/s390/contrib/file/Magdir/diff#4 integrate .. //depot/projects/s390/contrib/file/Magdir/dump#3 integrate .. //depot/projects/s390/contrib/file/Magdir/elf#6 integrate .. //depot/projects/s390/contrib/file/Magdir/erlang#1 branch .. //depot/projects/s390/contrib/file/Magdir/filesystems#7 integrate .. //depot/projects/s390/contrib/file/Magdir/flash#5 integrate .. //depot/projects/s390/contrib/file/Magdir/fonts#4 integrate .. //depot/projects/s390/contrib/file/Magdir/fortran#2 integrate .. //depot/projects/s390/contrib/file/Magdir/frame#2 integrate .. //depot/projects/s390/contrib/file/Magdir/freebsd#2 integrate .. //depot/projects/s390/contrib/file/Magdir/fsav#3 integrate .. //depot/projects/s390/contrib/file/Magdir/games#2 integrate .. //depot/projects/s390/contrib/file/Magdir/gimp#2 integrate .. //depot/projects/s390/contrib/file/Magdir/gnome-keyring#1 branch .. //depot/projects/s390/contrib/file/Magdir/gnu#4 integrate .. //depot/projects/s390/contrib/file/Magdir/gnumeric#1 branch .. //depot/projects/s390/contrib/file/Magdir/graphviz#1 branch .. //depot/projects/s390/contrib/file/Magdir/hp#3 integrate .. //depot/projects/s390/contrib/file/Magdir/iff#4 integrate .. //depot/projects/s390/contrib/file/Magdir/images#6 integrate .. //depot/projects/s390/contrib/file/Magdir/inform#1 branch .. //depot/projects/s390/contrib/file/Magdir/java#3 integrate .. //depot/projects/s390/contrib/file/Magdir/jpeg#4 integrate .. //depot/projects/s390/contrib/file/Magdir/kde#1 branch .. //depot/projects/s390/contrib/file/Magdir/lex#2 integrate .. //depot/projects/s390/contrib/file/Magdir/linux#5 integrate .. //depot/projects/s390/contrib/file/Magdir/lisp#5 integrate .. //depot/projects/s390/contrib/file/Magdir/llvm#1 branch .. //depot/projects/s390/contrib/file/Magdir/lua#1 branch .. //depot/projects/s390/contrib/file/Magdir/luks#1 branch .. //depot/projects/s390/contrib/file/Magdir/macintosh#5 integrate .. //depot/projects/s390/contrib/file/Magdir/mail.news#4 integrate .. //depot/projects/s390/contrib/file/Magdir/mathcad#1 branch .. //depot/projects/s390/contrib/file/Magdir/mathematica#4 integrate .. //depot/projects/s390/contrib/file/Magdir/mercurial#1 branch .. //depot/projects/s390/contrib/file/Magdir/misctools#3 integrate .. //depot/projects/s390/contrib/file/Magdir/mozilla#1 branch .. //depot/projects/s390/contrib/file/Magdir/msdos#5 integrate .. //depot/projects/s390/contrib/file/Magdir/mup#2 integrate .. //depot/projects/s390/contrib/file/Magdir/netware#1 branch .. //depot/projects/s390/contrib/file/Magdir/ole2compounddocs#1 branch .. //depot/projects/s390/contrib/file/Magdir/os2#4 integrate .. //depot/projects/s390/contrib/file/Magdir/palm#3 integrate .. //depot/projects/s390/contrib/file/Magdir/pdf#3 integrate .. //depot/projects/s390/contrib/file/Magdir/perl#4 integrate .. //depot/projects/s390/contrib/file/Magdir/pgp#2 integrate .. //depot/projects/s390/contrib/file/Magdir/pkgadd#2 integrate .. //depot/projects/s390/contrib/file/Magdir/printer#5 integrate .. //depot/projects/s390/contrib/file/Magdir/psion#3 integrate .. //depot/projects/s390/contrib/file/Magdir/revision#3 integrate .. //depot/projects/s390/contrib/file/Magdir/riff#4 integrate .. //depot/projects/s390/contrib/file/Magdir/rpm#3 integrate .. //depot/projects/s390/contrib/file/Magdir/rtf#2 integrate .. //depot/projects/s390/contrib/file/Magdir/ruby#1 branch .. //depot/projects/s390/contrib/file/Magdir/sc#2 integrate .. //depot/projects/s390/contrib/file/Magdir/scientific#2 integrate .. //depot/projects/s390/contrib/file/Magdir/securitycerts#1 branch .. //depot/projects/s390/contrib/file/Magdir/sgi#4 integrate .. //depot/projects/s390/contrib/file/Magdir/sgml#5 integrate .. //depot/projects/s390/contrib/file/Magdir/sharc#3 integrate .. //depot/projects/s390/contrib/file/Magdir/sketch#2 integrate .. //depot/projects/s390/contrib/file/Magdir/softquad#2 integrate .. //depot/projects/s390/contrib/file/Magdir/spectrum#3 integrate .. //depot/projects/s390/contrib/file/Magdir/tex#5 integrate .. //depot/projects/s390/contrib/file/Magdir/troff#2 integrate .. //depot/projects/s390/contrib/file/Magdir/unicode#2 integrate .. //depot/projects/s390/contrib/file/Magdir/uuencode#2 integrate .. //depot/projects/s390/contrib/file/Magdir/varied.script#3 integrate .. //depot/projects/s390/contrib/file/Magdir/vorbis#5 integrate .. //depot/projects/s390/contrib/file/Magdir/warc#1 branch .. //depot/projects/s390/contrib/file/Magdir/weak#1 branch .. //depot/projects/s390/contrib/file/Magdir/windows#1 branch .. //depot/projects/s390/contrib/file/Magdir/wordprocessors#3 integrate .. //depot/projects/s390/contrib/file/Magdir/xilinx#1 branch .. //depot/projects/s390/contrib/file/Makefile.am#7 integrate .. //depot/projects/s390/contrib/file/Makefile.in#7 integrate .. //depot/projects/s390/contrib/file/Makefile.std#5 delete .. //depot/projects/s390/contrib/file/NEWS#1 branch .. //depot/projects/s390/contrib/file/PORTING#2 delete .. //depot/projects/s390/contrib/file/README#7 integrate .. //depot/projects/s390/contrib/file/TODO#1 branch .. //depot/projects/s390/contrib/file/acinclude.m4#5 integrate .. //depot/projects/s390/contrib/file/aclocal.m4#6 integrate .. //depot/projects/s390/contrib/file/apprentice.c#6 integrate .. //depot/projects/s390/contrib/file/ascmagic.c#6 integrate .. //depot/projects/s390/contrib/file/asprintf.c#1 branch .. //depot/projects/s390/contrib/file/compile#1 branch .. //depot/projects/s390/contrib/file/compress.c#5 integrate .. //depot/projects/s390/contrib/file/config.guess#1 branch .. //depot/projects/s390/contrib/file/config.h.in#7 integrate .. //depot/projects/s390/contrib/file/config.sub#1 branch .. //depot/projects/s390/contrib/file/configure#7 integrate .. //depot/projects/s390/contrib/file/configure.ac#1 branch .. //depot/projects/s390/contrib/file/configure.in#7 delete .. //depot/projects/s390/contrib/file/elfclass.h#1 branch .. //depot/projects/s390/contrib/file/file.c#7 integrate .. //depot/projects/s390/contrib/file/file.h#6 integrate .. //depot/projects/s390/contrib/file/file.man#7 integrate .. //depot/projects/s390/contrib/file/fsmagic.c#5 integrate .. //depot/projects/s390/contrib/file/funcs.c#3 integrate .. //depot/projects/s390/contrib/file/getopt_long.c#1 branch .. //depot/projects/s390/contrib/file/is_tar.c#5 integrate .. //depot/projects/s390/contrib/file/libmagic.man#3 integrate .. //depot/projects/s390/contrib/file/magic.c#3 integrate .. //depot/projects/s390/contrib/file/magic.h#3 integrate .. //depot/projects/s390/contrib/file/magic.man#7 integrate .. //depot/projects/s390/contrib/file/magic.mime#6 delete .. //depot/projects/s390/contrib/file/magic2mime#4 delete .. //depot/projects/s390/contrib/file/mkinstalldirs#4 delete .. //depot/projects/s390/contrib/file/mygetopt.h#1 branch .. //depot/projects/s390/contrib/file/names.h#5 integrate .. //depot/projects/s390/contrib/file/patchlevel.h#7 integrate .. //depot/projects/s390/contrib/file/print.c#6 integrate .. //depot/projects/s390/contrib/file/readelf.c#7 integrate .. //depot/projects/s390/contrib/file/readelf.h#5 integrate .. //depot/projects/s390/contrib/file/softmagic.c#7 integrate .. //depot/projects/s390/contrib/file/tar.h#4 integrate .. //depot/projects/s390/contrib/file/test.c#3 delete .. //depot/projects/s390/contrib/file/tests/Makefile.am#1 branch .. //depot/projects/s390/contrib/file/tests/Makefile.in#1 branch .. //depot/projects/s390/contrib/file/tests/README#1 branch .. //depot/projects/s390/contrib/file/tests/gedcom.magic#1 branch .. //depot/projects/s390/contrib/file/tests/gedcom.result#1 branch .. //depot/projects/s390/contrib/file/tests/gedcom.testfile#1 branch .. //depot/projects/s390/contrib/file/tests/test.c#1 branch .. //depot/projects/s390/contrib/file/vasprintf.c#1 branch .. //depot/projects/s390/contrib/gdtoa/README#4 integrate .. //depot/projects/s390/contrib/gdtoa/g_Qfmt.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/g__fmt.c#4 integrate .. //depot/projects/s390/contrib/gdtoa/g_ddfmt.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/g_dfmt.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/g_ffmt.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/g_xLfmt.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/g_xfmt.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/gdtoa.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/gdtoa.h#3 integrate .. //depot/projects/s390/contrib/gdtoa/gdtoa_fltrnds.h#1 branch .. //depot/projects/s390/contrib/gdtoa/gdtoaimp.h#6 integrate .. //depot/projects/s390/contrib/gdtoa/gethex.c#5 integrate .. //depot/projects/s390/contrib/gdtoa/makefile#3 integrate .. //depot/projects/s390/contrib/gdtoa/smisc.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/strtod.c#5 integrate .. //depot/projects/s390/contrib/gdtoa/strtodg.c#4 integrate .. //depot/projects/s390/contrib/gdtoa/strtof.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/strtopQ.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/strtopd.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/strtopdd.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/strtopf.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/strtopx.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/strtopxL.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/test/README#3 integrate .. //depot/projects/s390/contrib/gdtoa/test/getround.c#3 integrate .. //depot/projects/s390/contrib/gdtoa/test/makefile#3 integrate .. //depot/projects/s390/contrib/gdtoa/test/obad/strtodt.out#1 branch .. //depot/projects/s390/contrib/gdtoa/test/obad/xL.out#1 branch .. //depot/projects/s390/contrib/gdtoa/test/xsum0.out#3 integrate .. //depot/projects/s390/contrib/gdtoa/xsum0.out#5 integrate .. //depot/projects/s390/contrib/lukemftpd/src/extern.h#5 integrate .. //depot/projects/s390/contrib/lukemftpd/src/ftpcmd.y#6 integrate .. //depot/projects/s390/contrib/lukemftpd/src/ftpd.c#6 integrate .. //depot/projects/s390/contrib/ntp/ntpd/ntp_crypto.c#5 integrate .. //depot/projects/s390/contrib/openbsm/INSTALL#2 integrate .. //depot/projects/s390/contrib/openbsm/Makefile.am#4 integrate .. //depot/projects/s390/contrib/openbsm/Makefile.in#4 integrate .. //depot/projects/s390/contrib/openbsm/NEWS#2 integrate .. //depot/projects/s390/contrib/openbsm/README#4 integrate .. //depot/projects/s390/contrib/openbsm/TODO#4 integrate .. //depot/projects/s390/contrib/openbsm/VERSION#4 integrate .. //depot/projects/s390/contrib/openbsm/bin/Makefile.in#4 integrate .. //depot/projects/s390/contrib/openbsm/bin/audit/Makefile.am#3 integrate .. //depot/projects/s390/contrib/openbsm/bin/audit/Makefile.in#4 integrate .. //depot/projects/s390/contrib/openbsm/bin/audit/audit.8#4 integrate .. //depot/projects/s390/contrib/openbsm/bin/audit/audit.c#4 integrate .. //depot/projects/s390/contrib/openbsm/bin/auditd/Makefile.am#3 integrate .. //depot/projects/s390/contrib/openbsm/bin/auditd/Makefile.in#4 integrate .. //depot/projects/s390/contrib/openbsm/bin/auditd/audit_warn.c#4 integrate .. //depot/projects/s390/contrib/openbsm/bin/auditd/auditd.8#4 integrate .. //depot/projects/s390/contrib/openbsm/bin/auditd/auditd.c#4 integrate .. //depot/projects/s390/contrib/openbsm/bin/auditd/auditd.h#4 integrate .. //depot/projects/s390/contrib/openbsm/bin/auditd/auditd_darwin.c#1 branch .. //depot/projects/s390/contrib/openbsm/bin/auditd/auditd_fbsd.c#1 branch .. //depot/projects/s390/contrib/openbsm/bin/auditfilterd/Makefile.in#3 integrate .. //depot/projects/s390/contrib/openbsm/bin/auditreduce/Makefile.in#4 integrate .. //depot/projects/s390/contrib/openbsm/bin/auditreduce/auditreduce.c#4 integrate .. //depot/projects/s390/contrib/openbsm/bin/praudit/Makefile.in#4 integrate .. //depot/projects/s390/contrib/openbsm/bsm/Makefile.am#4 integrate .. //depot/projects/s390/contrib/openbsm/bsm/Makefile.in#4 integrate .. //depot/projects/s390/contrib/openbsm/bsm/audit_uevents.h#3 integrate .. //depot/projects/s390/contrib/openbsm/bsm/auditd_lib.h#1 branch .. //depot/projects/s390/contrib/openbsm/bsm/libbsm.h#4 integrate .. //depot/projects/s390/contrib/openbsm/compat/endian.h#2 integrate .. //depot/projects/s390/contrib/openbsm/config/config.h#4 integrate .. //depot/projects/s390/contrib/openbsm/config/config.h.in#4 integrate .. //depot/projects/s390/contrib/openbsm/configure#4 integrate .. //depot/projects/s390/contrib/openbsm/configure.ac#4 integrate .. //depot/projects/s390/contrib/openbsm/etc/audit_event#4 integrate .. //depot/projects/s390/contrib/openbsm/libauditd/Makefile.am#1 branch .. //depot/projects/s390/contrib/openbsm/libauditd/Makefile.in#1 branch .. //depot/projects/s390/contrib/openbsm/libauditd/auditd_lib.c#1 branch .. //depot/projects/s390/contrib/openbsm/libauditd/libauditd.3#1 branch .. //depot/projects/s390/contrib/openbsm/libbsm/Makefile.am#4 integrate .. //depot/projects/s390/contrib/openbsm/libbsm/Makefile.in#4 integrate .. //depot/projects/s390/contrib/openbsm/libbsm/au_domain.3#1 branch .. //depot/projects/s390/contrib/openbsm/libbsm/au_errno.3#1 branch .. //depot/projects/s390/contrib/openbsm/libbsm/au_socket_type.3#1 branch .. //depot/projects/s390/contrib/openbsm/libbsm/au_token.3#4 integrate .. //depot/projects/s390/contrib/openbsm/libbsm/audit_submit.3#3 integrate .. //depot/projects/s390/contrib/openbsm/libbsm/bsm_audit.c#4 integrate .. //depot/projects/s390/contrib/openbsm/libbsm/bsm_class.c#3 integrate .. //depot/projects/s390/contrib/openbsm/libbsm/bsm_control.c#4 integrate .. //depot/projects/s390/contrib/openbsm/libbsm/bsm_domain.c#1 branch .. //depot/projects/s390/contrib/openbsm/libbsm/bsm_errno.c#1 branch .. //depot/projects/s390/contrib/openbsm/libbsm/bsm_event.c#4 integrate .. //depot/projects/s390/contrib/openbsm/libbsm/bsm_io.c#4 integrate .. //depot/projects/s390/contrib/openbsm/libbsm/bsm_mask.c#3 integrate .. //depot/projects/s390/contrib/openbsm/libbsm/bsm_socket_type.c#1 branch .. //depot/projects/s390/contrib/openbsm/libbsm/bsm_token.c#4 integrate .. //depot/projects/s390/contrib/openbsm/libbsm/bsm_user.c#3 integrate .. //depot/projects/s390/contrib/openbsm/libbsm/bsm_wrappers.c#4 integrate .. //depot/projects/s390/contrib/openbsm/libbsm/libbsm.3#3 integrate .. //depot/projects/s390/contrib/openbsm/man/Makefile.in#4 integrate .. //depot/projects/s390/contrib/openbsm/man/audit.log.5#4 integrate .. //depot/projects/s390/contrib/openbsm/man/audit_user.5#4 integrate .. //depot/projects/s390/contrib/openbsm/modules/Makefile.in#3 integrate .. //depot/projects/s390/contrib/openbsm/modules/auditfilter_noop/Makefile.in#3 integrate .. //depot/projects/s390/contrib/openbsm/sys/Makefile.in#2 integrate .. //depot/projects/s390/contrib/openbsm/sys/bsm/Makefile.am#2 integrate .. //depot/projects/s390/contrib/openbsm/sys/bsm/Makefile.in#2 integrate .. //depot/projects/s390/contrib/openbsm/sys/bsm/audit.h#2 integrate .. //depot/projects/s390/contrib/openbsm/sys/bsm/audit_domain.h#1 branch .. //depot/projects/s390/contrib/openbsm/sys/bsm/audit_errno.h#1 branch .. //depot/projects/s390/contrib/openbsm/sys/bsm/audit_internal.h#2 integrate .. //depot/projects/s390/contrib/openbsm/sys/bsm/audit_kevents.h#2 integrate .. //depot/projects/s390/contrib/openbsm/sys/bsm/audit_record.h#2 integrate .. //depot/projects/s390/contrib/openbsm/sys/bsm/audit_socket_type.h#1 branch .. //depot/projects/s390/contrib/openbsm/test/Makefile.in#3 integrate .. //depot/projects/s390/contrib/openbsm/test/bsm/Makefile.in#3 integrate .. //depot/projects/s390/contrib/openbsm/test/bsm/generate.c#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/E2BIG_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EACCES_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EBADF_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EBUSY_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/ECHILD_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EDEADLK_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EEXIST_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EFAULT_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EFBIG_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EINTR_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EINVAL_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EIO_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EISDIR_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EMFILE_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EMLINK_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/ENFILE_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/ENODEV_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/ENOENT_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/ENOEXEC_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/ENOMEM_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/ENOSPC_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/ENOTBLK_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/ENOTDIR_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/ENOTTY_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/ENXIO_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EPERM_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EPIPE_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EROFS_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/ESPIPE_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/ESRCH_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/ETXTBSY_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/EXDEV_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/arg32_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/data_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/data_token#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/file_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/header32_token#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/in_addr_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/ip_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/ipc_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/iport_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/opaque_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/path_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/process32_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/process32ex_record-IPv4#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/process32ex_record-IPv6#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/process64_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/process64ex_record-IPv4#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/process64ex_record-IPv6#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/return32_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/return32_token#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/seq_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/socketex_record#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/socketex_token#1 branch .. //depot/projects/s390/contrib/openbsm/test/reference/subject32_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/subject32ex_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/text_record#2 integrate .. //depot/projects/s390/contrib/openbsm/test/reference/zonename_record#2 integrate .. //depot/projects/s390/contrib/openbsm/tools/Makefile.in#4 integrate .. //depot/projects/s390/contrib/opie/opiekey.1#2 integrate .. //depot/projects/s390/contrib/smbfs/mount_smbfs/mount_smbfs.8#5 integrate .. //depot/projects/s390/contrib/smbfs/mount_smbfs/mount_smbfs.c#5 integrate .. //depot/projects/s390/contrib/wpa_supplicant/ChangeLog#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/Makefile#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/base64.c#3 integrate .. //depot/projects/s390/contrib/wpa_supplicant/ctrl_iface.c#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/ctrl_iface_dbus.c#2 integrate .. //depot/projects/s390/contrib/wpa_supplicant/ctrl_iface_unix.c#2 integrate .. //depot/projects/s390/contrib/wpa_supplicant/dbus_dict_helpers.c#2 integrate .. //depot/projects/s390/contrib/wpa_supplicant/doc/docbook/wpa_background.8#3 integrate .. //depot/projects/s390/contrib/wpa_supplicant/doc/docbook/wpa_cli.8#3 integrate .. //depot/projects/s390/contrib/wpa_supplicant/doc/docbook/wpa_cli.sgml#3 integrate .. //depot/projects/s390/contrib/wpa_supplicant/doc/docbook/wpa_passphrase.8#3 integrate .. //depot/projects/s390/contrib/wpa_supplicant/doc/docbook/wpa_supplicant.8#3 integrate .. //depot/projects/s390/contrib/wpa_supplicant/doc/docbook/wpa_supplicant.conf.5#3 integrate .. //depot/projects/s390/contrib/wpa_supplicant/doc/docbook/wpa_supplicant.conf.sgml#3 integrate .. //depot/projects/s390/contrib/wpa_supplicant/doc/docbook/wpa_supplicant.sgml#3 integrate .. //depot/projects/s390/contrib/wpa_supplicant/driver_ndis.c#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/eap.c#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/eap_aka.c#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/eap_gpsk.c#2 integrate .. //depot/projects/s390/contrib/wpa_supplicant/eap_gpsk_common.c#2 integrate .. //depot/projects/s390/contrib/wpa_supplicant/eap_ttls.c#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/eloop.c#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/eloop.h#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/eloop_none.c#2 integrate .. //depot/projects/s390/contrib/wpa_supplicant/mlme.c#2 integrate .. //depot/projects/s390/contrib/wpa_supplicant/os_unix.c#2 integrate .. //depot/projects/s390/contrib/wpa_supplicant/preauth_test.c#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/radius.c#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/sha1.c#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/tls_openssl.c#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/version.h#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/wpa.c#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/wpa.h#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/wpa_cli.c#4 integrate .. //depot/projects/s390/contrib/wpa_supplicant/wpa_gui-qt4/networkconfig.cpp#2 integrate .. //depot/projects/s390/contrib/wpa_supplicant/wpa_gui-qt4/scanresults.cpp#2 integrate .. //depot/projects/s390/contrib/wpa_supplicant/wpa_gui-qt4/wpagui.cpp#2 integrate .. //depot/projects/s390/contrib/wpa_supplicant/wpa_gui/networkconfig.ui.h#3 integrate .. //depot/projects/s390/contrib/wpa_supplicant/wpa_gui/userdatarequest.ui.h#2 integrate .. //depot/projects/s390/contrib/wpa_supplicant/wpa_gui/wpagui.ui.h#3 integrate .. //depot/projects/s390/contrib/wpa_supplicant/wpa_i.h#3 integrate .. //depot/projects/s390/contrib/wpa_supplicant/wpa_supplicant.c#4 integrate .. //depot/projects/s390/crypto/openssl/apps/speed.c#7 integrate .. //depot/projects/s390/crypto/openssl/apps/spkac.c#5 integrate .. //depot/projects/s390/crypto/openssl/apps/verify.c#5 integrate .. //depot/projects/s390/crypto/openssl/apps/x509.c#7 integrate .. //depot/projects/s390/crypto/openssl/ssl/s2_clnt.c#7 integrate .. //depot/projects/s390/crypto/openssl/ssl/s2_srvr.c#6 integrate .. //depot/projects/s390/crypto/openssl/ssl/s3_clnt.c#6 integrate .. //depot/projects/s390/crypto/openssl/ssl/s3_srvr.c#7 integrate .. //depot/projects/s390/crypto/openssl/ssl/ssltest.c#7 integrate .. //depot/projects/s390/etc/defaults/rc.conf#18 integrate .. //depot/projects/s390/etc/devd.conf#12 integrate .. //depot/projects/s390/etc/devd/Makefile#2 integrate .. //depot/projects/s390/etc/devd/asus.conf#2 integrate .. //depot/projects/s390/etc/network.subr#8 integrate .. //depot/projects/s390/etc/periodic/weekly/Makefile#4 integrate .. //depot/projects/s390/etc/rc.d/defaultroute#3 integrate .. //depot/projects/s390/etc/rc.d/jail#7 integrate .. //depot/projects/s390/etc/rc.d/ntpd#8 integrate .. //depot/projects/s390/etc/rc.shutdown#6 integrate .. //depot/projects/s390/etc/regdomain.xml#3 integrate .. //depot/projects/s390/games/fortune/datfiles/freebsd-tips#8 integrate .. //depot/projects/s390/gnu/lib/libstdc++/Makefile#9 integrate .. //depot/projects/s390/gnu/usr.bin/grep/savedir.c#3 integrate .. //depot/projects/s390/gnu/usr.bin/man/manpath/manpath.config#6 integrate .. //depot/projects/s390/include/paths.h#8 integrate .. //depot/projects/s390/include/stdlib.h#12 integrate .. //depot/projects/s390/include/string.h#8 integrate .. //depot/projects/s390/include/wchar.h#7 integrate .. //depot/projects/s390/lib/Makefile#16 integrate .. //depot/projects/s390/lib/bind/bind/config.h#4 integrate .. //depot/projects/s390/lib/bind/bind/port_after.h#5 integrate .. //depot/projects/s390/lib/bind/bind/port_before.h#4 integrate .. //depot/projects/s390/lib/bind/config.h#4 integrate .. //depot/projects/s390/lib/bind/dns/code.h#3 integrate .. //depot/projects/s390/lib/bind/dns/dns/enumclass.h#3 integrate .. //depot/projects/s390/lib/bind/dns/dns/enumtype.h#3 integrate .. //depot/projects/s390/lib/bind/dns/dns/rdatastruct.h#3 integrate .. //depot/projects/s390/lib/bind/isc/Makefile#5 integrate .. //depot/projects/s390/lib/bind/isc/isc/platform.h#4 integrate .. //depot/projects/s390/lib/libarchive/archive_entry.c#5 integrate .. //depot/projects/s390/lib/libarchive/archive_read_support_compression_gzip.c#4 integrate .. //depot/projects/s390/lib/libarchive/archive_read_support_format_ar.c#3 integrate .. //depot/projects/s390/lib/libarchive/archive_read_support_format_iso9660.c#6 integrate .. //depot/projects/s390/lib/libarchive/archive_write_disk.c#4 integrate .. //depot/projects/s390/lib/libarchive/test/Makefile#4 integrate .. //depot/projects/s390/lib/libarchive/test/main.c#3 integrate .. //depot/projects/s390/lib/libarchive/test/test_write_disk_failures.c#1 branch .. //depot/projects/s390/lib/libarchive/test/test_write_disk_secure.c#2 integrate .. //depot/projects/s390/lib/libarchive/test/test_write_disk_sparse.c#1 branch .. //depot/projects/s390/lib/libauditd/Makefile#1 branch .. //depot/projects/s390/lib/libbsm/Makefile#3 integrate .. //depot/projects/s390/lib/libc/arm/_fpmath.h#2 integrate .. //depot/projects/s390/lib/libc/arm/arith.h#3 integrate .. //depot/projects/s390/lib/libc/db/man/dbm.3#5 integrate .. //depot/projects/s390/lib/libc/gen/sysctl.3#7 integrate .. //depot/projects/s390/lib/libc/include/fpmath.h#3 integrate .. //depot/projects/s390/lib/libc/locale/mbstowcs.c#5 integrate .. //depot/projects/s390/lib/libc/locale/wcsftime.c#3 integrate .. //depot/projects/s390/lib/libc/locale/wcstombs.c#5 integrate .. //depot/projects/s390/lib/libc/net/getaddrinfo.3#7 integrate .. //depot/projects/s390/lib/libc/sparc64/sys/__sparc_utrap.c#3 integrate .. //depot/projects/s390/lib/libc/stdio/ferror.3#5 integrate .. //depot/projects/s390/lib/libc/stdio/fputws.c#4 integrate .. //depot/projects/s390/lib/libc/stdio/printf.3#9 integrate .. //depot/projects/s390/lib/libc/stdio/printfcommon.h#1 branch .. //depot/projects/s390/lib/libc/stdio/vfprintf.c#11 integrate .. //depot/projects/s390/lib/libc/stdio/vfscanf.c#10 integrate .. //depot/projects/s390/lib/libc/stdio/vfwprintf.c#9 integrate .. //depot/projects/s390/lib/libc/stdio/vfwscanf.c#8 integrate .. //depot/projects/s390/lib/libc/stdio/vswscanf.c#4 integrate .. //depot/projects/s390/lib/libc/stdio/wsetup.c#4 integrate .. //depot/projects/s390/lib/libc/string/Makefile.inc#10 integrate .. //depot/projects/s390/lib/libc/string/ffs.3#7 integrate .. //depot/projects/s390/lib/libc/string/memccpy.c#3 integrate .. //depot/projects/s390/lib/libc/string/memchr.c#3 integrate .. //depot/projects/s390/lib/libc/string/memcmp.c#3 integrate .. //depot/projects/s390/lib/libc/string/memmem.c#2 integrate .. //depot/projects/s390/lib/libc/string/strcasecmp.c#4 integrate .. //depot/projects/s390/lib/libc/string/strcasestr.c#3 integrate .. //depot/projects/s390/lib/libc/string/strcmp.c#3 integrate .. //depot/projects/s390/lib/libc/string/strcoll.c#2 integrate .. //depot/projects/s390/lib/libc/string/strdup.c#3 integrate .. //depot/projects/s390/lib/libc/string/strlcat.c#4 integrate .. //depot/projects/s390/lib/libc/string/strlcpy.3#4 integrate .. //depot/projects/s390/lib/libc/string/strlen.c#3 integrate .. //depot/projects/s390/lib/libc/string/strmode.c#3 integrate .. //depot/projects/s390/lib/libc/string/strncmp.c#3 integrate .. //depot/projects/s390/lib/libc/string/strncpy.c#4 integrate .. //depot/projects/s390/lib/libc/string/strnstr.c#4 integrate .. //depot/projects/s390/lib/libc/string/strpbrk.c#3 integrate .. //depot/projects/s390/lib/libc/string/strsep.c#3 integrate .. //depot/projects/s390/lib/libc/string/strstr.c#3 integrate .. //depot/projects/s390/lib/libc/string/wcscat.c#3 integrate .. //depot/projects/s390/lib/libc/string/wcscmp.c#5 integrate .. //depot/projects/s390/lib/libc/string/wcscpy.c#3 integrate .. //depot/projects/s390/lib/libc/string/wcscspn.c#3 integrate .. //depot/projects/s390/lib/libc/string/wcslcat.c#3 integrate .. //depot/projects/s390/lib/libc/string/wcslcpy.c#3 integrate .. //depot/projects/s390/lib/libc/string/wcslen.c#3 integrate .. //depot/projects/s390/lib/libc/string/wcsncat.c#3 integrate .. //depot/projects/s390/lib/libc/string/wcsncmp.c#5 integrate .. //depot/projects/s390/lib/libc/string/wcspbrk.c#3 integrate .. //depot/projects/s390/lib/libc/string/wcsspn.c#3 integrate .. //depot/projects/s390/lib/libc/string/wcsstr.c#5 integrate .. //depot/projects/s390/lib/libc/string/wmemchr.c#3 integrate .. //depot/projects/s390/lib/libc/string/wmemcmp.c#3 integrate .. //depot/projects/s390/lib/libc/string/wmemcpy.c#3 integrate .. //depot/projects/s390/lib/libc/string/wmemmove.c#3 integrate .. //depot/projects/s390/lib/libc/string/wmemset.c#3 integrate .. //depot/projects/s390/lib/libc/sys/jail.2#8 integrate .. //depot/projects/s390/lib/libc/sys/kldunload.2#6 integrate .. //depot/projects/s390/lib/libc/sys/send.2#6 integrate .. //depot/projects/s390/lib/libc/sys/socket.2#9 integrate .. //depot/projects/s390/lib/libc/sys/timer_create.2#3 integrate .. //depot/projects/s390/lib/libelf/README#1 branch .. //depot/projects/s390/lib/libmagic/Makefile#4 integrate .. //depot/projects/s390/lib/libmd/mdX.3#5 integrate .. //depot/projects/s390/lib/libpmc/libpmc.c#5 integrate .. //depot/projects/s390/lib/libstand/bootp.c#4 integrate .. //depot/projects/s390/lib/libusb20/libusb20.c#3 integrate .. //depot/projects/s390/lib/libusb20/libusb20_desc.c#3 integrate .. //depot/projects/s390/lib/libusbhid/Makefile#6 integrate .. //depot/projects/s390/lib/libusbhid/descr.c#3 integrate .. //depot/projects/s390/lib/libusbhid/descr_compat.c#1 branch .. //depot/projects/s390/lib/libusbhid/usbhid.3#7 integrate .. //depot/projects/s390/lib/libusbhid/usbhid.h#3 integrate .. //depot/projects/s390/lib/libusbhid/usbvar.h#2 integrate .. //depot/projects/s390/lib/libutil/kinfo_getfile.c#2 integrate .. //depot/projects/s390/lib/libutil/kinfo_getvmmap.c#2 integrate .. //depot/projects/s390/lib/msun/src/e_rem_pio2.c#4 integrate .. //depot/projects/s390/lib/msun/src/e_rem_pio2f.c#4 integrate .. //depot/projects/s390/lib/msun/src/k_cosf.c#4 integrate .. //depot/projects/s390/lib/msun/src/k_sinf.c#4 integrate .. //depot/projects/s390/lib/msun/src/k_tanf.c#5 integrate .. //depot/projects/s390/lib/msun/src/math.h#10 integrate .. //depot/projects/s390/lib/msun/src/math_private.h#8 integrate .. //depot/projects/s390/libexec/comsat/comsat.c#3 integrate .. //depot/projects/s390/libexec/ftpd/extern.h#2 integrate .. //depot/projects/s390/libexec/ftpd/ftpcmd.y#8 integrate .. //depot/projects/s390/libexec/ftpd/ftpd.8#14 integrate .. //depot/projects/s390/libexec/ftpd/ftpd.c#13 integrate .. //depot/projects/s390/release/doc/en_US.ISO8859-1/relnotes/article.sgml#4 integrate .. //depot/projects/s390/sbin/ddb/ddb.8#2 integrate .. //depot/projects/s390/sbin/dumpfs/dumpfs.8#7 integrate .. //depot/projects/s390/sbin/dumpfs/dumpfs.c#9 integrate .. //depot/projects/s390/sbin/fdisk/fdisk.c#10 integrate .. //depot/projects/s390/sbin/fsck/fsck.8#7 integrate .. //depot/projects/s390/sbin/fsck/fsck.c#8 integrate .. //depot/projects/s390/sbin/fsck/fsutil.h#3 integrate .. //depot/projects/s390/sbin/fsck_ffs/fsck.h#6 integrate .. //depot/projects/s390/sbin/fsck_ffs/fsck_ffs.8#7 integrate .. //depot/projects/s390/sbin/fsck_ffs/fsutil.c#9 integrate .. //depot/projects/s390/sbin/fsck_ffs/inode.c#6 integrate .. //depot/projects/s390/sbin/fsck_ffs/main.c#7 integrate .. //depot/projects/s390/sbin/fsck_ffs/pass1.c#6 integrate .. //depot/projects/s390/sbin/fsck_ffs/setup.c#8 integrate .. //depot/projects/s390/sbin/geom/class/virstor/gvirstor.8#2 integrate .. //depot/projects/s390/sbin/geom/core/geom.c#5 integrate .. //depot/projects/s390/sbin/geom/misc/subr.c#6 integrate .. //depot/projects/s390/sbin/ifconfig/ifconfig.8#12 integrate .. //depot/projects/s390/sbin/ifconfig/ifconfig.c#12 integrate .. //depot/projects/s390/sbin/ifconfig/ifieee80211.c#10 integrate .. //depot/projects/s390/sbin/ifconfig/regdomain.c#3 integrate .. //depot/projects/s390/sbin/ifconfig/regdomain.h#3 integrate .. //depot/projects/s390/sbin/ipfw/Makefile#4 integrate .. //depot/projects/s390/sbin/ipfw/altq.c#1 branch .. //depot/projects/s390/sbin/ipfw/dummynet.c#1 branch .. //depot/projects/s390/sbin/ipfw/ipfw2.c#15 integrate .. //depot/projects/s390/sbin/ipfw/ipfw2.h#1 branch .. //depot/projects/s390/sbin/ipfw/ipv6.c#1 branch .. //depot/projects/s390/sbin/ipfw/main.c#1 branch .. //depot/projects/s390/sbin/ipfw/nat.c#1 branch .. //depot/projects/s390/sbin/kldstat/kldstat.c#7 integrate .. //depot/projects/s390/sbin/md5/md5.1#4 integrate .. //depot/projects/s390/sbin/mdconfig/mdconfig.8#9 integrate .. //depot/projects/s390/sbin/mdconfig/mdconfig.c#11 integrate .. //depot/projects/s390/sbin/mount/getmntopts.c#5 integrate .. //depot/projects/s390/sbin/mount/mount.c#12 integrate .. //depot/projects/s390/sbin/mount_msdosfs/mount_msdosfs.8#6 integrate .. //depot/projects/s390/sbin/mount_nfs/mount_nfs.c#9 integrate .. //depot/projects/s390/sbin/mount_ntfs/mount_ntfs.8#5 integrate .. //depot/projects/s390/sbin/ping/ping.8#13 integrate .. //depot/projects/s390/sbin/reboot/reboot.c#7 integrate .. //depot/projects/s390/sbin/recoverdisk/recoverdisk.c#2 integrate .. //depot/projects/s390/sbin/restore/interactive.c#6 integrate .. //depot/projects/s390/sbin/route/route.c#9 integrate .. //depot/projects/s390/sbin/savecore/savecore.8#6 integrate .. //depot/projects/s390/sbin/shutdown/shutdown.8#5 integrate .. //depot/projects/s390/share/doc/bind9/Makefile#3 integrate .. //depot/projects/s390/share/examples/cvsup/refuse.README#8 integrate .. //depot/projects/s390/share/man/man4/Makefile#21 integrate .. //depot/projects/s390/share/man/man4/ae.4#2 integrate .. //depot/projects/s390/share/man/man4/ath.4#7 integrate .. //depot/projects/s390/share/man/man4/bce.4#4 integrate .. //depot/projects/s390/share/man/man4/bge.4#12 integrate .. //depot/projects/s390/share/man/man4/cd.4#5 integrate .. //depot/projects/s390/share/man/man4/cpuctl.4#2 integrate .. //depot/projects/s390/share/man/man4/gem.4#4 integrate .. //depot/projects/s390/share/man/man4/hme.4#5 integrate .. //depot/projects/s390/share/man/man4/iic.4#4 integrate .. //depot/projects/s390/share/man/man4/man4.powerpc/Makefile#3 integrate .. //depot/projects/s390/share/man/man4/man4.powerpc/snd_ai2s.4#1 branch .. //depot/projects/s390/share/man/man4/man4.powerpc/snd_davbus.4#1 branch .. //depot/projects/s390/share/man/man4/ndis.4#2 integrate .. //depot/projects/s390/share/man/man4/ng_bpf.4#4 integrate .. //depot/projects/s390/share/man/man4/ng_ether_echo.4#1 branch .. //depot/projects/s390/share/man/man4/ng_tty.4#4 integrate .. //depot/projects/s390/share/man/man4/nge.4#6 integrate .. //depot/projects/s390/share/man/man4/sdhci.4#2 integrate .. //depot/projects/s390/share/man/man4/sk.4#6 integrate .. //depot/projects/s390/share/man/man4/snd_hda.4#5 integrate .. //depot/projects/s390/share/man/man4/snd_ich.4#4 integrate .. //depot/projects/s390/share/man/man4/sysmouse.4#6 integrate .. //depot/projects/s390/share/man/man4/textdump.4#2 integrate .. //depot/projects/s390/share/man/man4/urtw.4#1 branch .. //depot/projects/s390/share/man/man4/uscanner.4#10 integrate .. //depot/projects/s390/share/man/man5/Makefile#11 integrate .. //depot/projects/s390/share/man/man5/nsswitch.conf.5#6 integrate .. //depot/projects/s390/share/man/man5/portindex.5#1 branch .. //depot/projects/s390/share/man/man5/rc.conf.5#20 integrate .. //depot/projects/s390/share/man/man7/Makefile#8 integrate .. //depot/projects/s390/share/man/man7/adding_user.7#1 branch .. //depot/projects/s390/share/man/man7/build.7#7 integrate .. //depot/projects/s390/share/man/man7/ports.7#11 integrate .. //depot/projects/s390/share/man/man7/tuning.7#11 integrate .. //depot/projects/s390/share/man/man8/Makefile#8 integrate .. //depot/projects/s390/share/man/man8/adding_user.8#5 delete .. //depot/projects/s390/share/man/man9/dev_clone.9#2 integrate .. //depot/projects/s390/share/man/man9/domain.9#4 integrate .. //depot/projects/s390/share/man/man9/insmntque.9#2 integrate .. //depot/projects/s390/share/man/man9/kthread.9#6 integrate .. //depot/projects/s390/share/man/man9/lock.9#5 integrate .. //depot/projects/s390/share/man/man9/redzone.9#2 integrate .. //depot/projects/s390/share/misc/bsd-family-tree#15 integrate .. //depot/projects/s390/share/misc/committers-src.dot#3 integrate .. //depot/projects/s390/share/misc/pci_vendors#9 integrate .. //depot/projects/s390/share/mk/bsd.libnames.mk#13 integrate .. //depot/projects/s390/share/mk/bsd.own.mk#8 integrate .. //depot/projects/s390/share/zoneinfo/asia#9 integrate .. //depot/projects/s390/share/zoneinfo/backward#6 integrate .. //depot/projects/s390/share/zoneinfo/europe#7 integrate .. //depot/projects/s390/share/zoneinfo/leapseconds#5 integrate .. //depot/projects/s390/share/zoneinfo/northamerica#7 integrate .. //depot/projects/s390/share/zoneinfo/zone.tab#10 integrate .. //depot/projects/s390/sys/amd64/amd64/amd64_mem.c#5 integrate .. //depot/projects/s390/sys/amd64/amd64/cpu_switch.S#5 integrate .. //depot/projects/s390/sys/amd64/amd64/exception.S#6 integrate .. //depot/projects/s390/sys/amd64/amd64/fpu.c#4 integrate .. //depot/projects/s390/sys/amd64/amd64/identcpu.c#9 integrate .. //depot/projects/s390/sys/amd64/amd64/initcpu.c#8 integrate .. //depot/projects/s390/sys/amd64/amd64/io_apic.c#5 integrate .. //depot/projects/s390/sys/amd64/amd64/local_apic.c#8 integrate .. //depot/projects/s390/sys/amd64/amd64/machdep.c#8 integrate .. //depot/projects/s390/sys/amd64/amd64/mp_machdep.c#6 integrate .. //depot/projects/s390/sys/amd64/amd64/msi.c#3 integrate .. //depot/projects/s390/sys/amd64/conf/GENERIC#11 integrate .. //depot/projects/s390/sys/amd64/conf/USB2#1 branch .. //depot/projects/s390/sys/amd64/ia32/ia32_signal.c#6 integrate .. //depot/projects/s390/sys/amd64/ia32/ia32_sigtramp.S#4 integrate .. //depot/projects/s390/sys/amd64/include/apicvar.h#6 integrate .. //depot/projects/s390/sys/amd64/include/cpufunc.h#4 integrate .. //depot/projects/s390/sys/amd64/include/cputypes.h#4 integrate .. //depot/projects/s390/sys/amd64/include/fpu.h#2 integrate .. //depot/projects/s390/sys/amd64/include/intr_machdep.h#5 integrate .. //depot/projects/s390/sys/amd64/include/md_var.h#9 integrate .. //depot/projects/s390/sys/amd64/include/specialreg.h#8 integrate .. //depot/projects/s390/sys/amd64/linux32/linux32_locore.s#3 integrate .. //depot/projects/s390/sys/amd64/linux32/linux32_sysvec.c#7 integrate .. //depot/projects/s390/sys/arm/arm/busdma_machdep.c#7 integrate .. //depot/projects/s390/sys/arm/arm/cpufunc.c#6 integrate .. //depot/projects/s390/sys/arm/arm/cpufunc_asm_feroceon.S#2 delete .. //depot/projects/s390/sys/arm/arm/cpufunc_asm_sheeva.S#1 branch .. //depot/projects/s390/sys/arm/arm/dump_machdep.c#5 integrate .. //depot/projects/s390/sys/arm/arm/elf_trampoline.c#5 integrate .. //depot/projects/s390/sys/arm/arm/pmap.c#7 integrate .. //depot/projects/s390/sys/arm/arm/vm_machdep.c#6 integrate .. //depot/projects/s390/sys/arm/at91/at91.c#5 integrate .. //depot/projects/s390/sys/arm/at91/at91_mci.c#4 integrate .. //depot/projects/s390/sys/arm/at91/at91_twi.c#4 integrate .. //depot/projects/s390/sys/arm/at91/at91_twireg.h#4 integrate .. //depot/projects/s390/sys/arm/at91/at91var.h#3 integrate .. //depot/projects/s390/sys/arm/at91/uart_bus_at91usart.c#3 integrate .. //depot/projects/s390/sys/arm/at91/uart_cpu_at91rm9200usart.c#4 integrate .. //depot/projects/s390/sys/arm/at91/uart_dev_at91usart.c#4 integrate .. //depot/projects/s390/sys/arm/conf/AVILA#4 integrate .. //depot/projects/s390/sys/arm/conf/AVILA.hints#3 integrate .. //depot/projects/s390/sys/arm/conf/CAMBRIA#2 integrate .. //depot/projects/s390/sys/arm/conf/EP80219#4 integrate .. //depot/projects/s390/sys/arm/conf/HL200#4 integrate .. //depot/projects/s390/sys/arm/conf/IQ31244#5 integrate .. //depot/projects/s390/sys/arm/conf/NSLU#4 integrate .. //depot/projects/s390/sys/arm/include/armreg.h#6 integrate .. //depot/projects/s390/sys/arm/include/atomic.h#6 integrate .. //depot/projects/s390/sys/arm/include/cpufunc.h#4 integrate .. //depot/projects/s390/sys/arm/include/ieee.h#2 integrate .. //depot/projects/s390/sys/arm/include/vmparam.h#3 integrate .. //depot/projects/s390/sys/arm/mv/common.c#3 integrate .. //depot/projects/s390/sys/arm/mv/discovery/db78xxx.c#3 integrate .. //depot/projects/s390/sys/arm/mv/discovery/discovery.c#3 integrate .. //depot/projects/s390/sys/arm/mv/files.mv#3 integrate .. //depot/projects/s390/sys/arm/mv/gpio.c#2 integrate .. //depot/projects/s390/sys/arm/mv/kirkwood/db88f6xxx.c#3 integrate .. //depot/projects/s390/sys/arm/mv/kirkwood/kirkwood.c#3 integrate .. //depot/projects/s390/sys/arm/mv/mv_machdep.c#4 integrate .. //depot/projects/s390/sys/arm/mv/mv_pci.c#2 integrate .. //depot/projects/s390/sys/arm/mv/mvreg.h#3 integrate .. //depot/projects/s390/sys/arm/mv/mvvar.h#3 integrate .. //depot/projects/s390/sys/arm/mv/obio.c#3 integrate .. //depot/projects/s390/sys/arm/mv/orion/db88f5xxx.c#3 integrate .. //depot/projects/s390/sys/arm/mv/orion/orion.c#3 integrate .. //depot/projects/s390/sys/arm/sa11x0/assabet_machdep.c#6 integrate .. //depot/projects/s390/sys/arm/xscale/i8134x/i81342_mcu.c#2 integrate .. //depot/projects/s390/sys/arm/xscale/ixp425/avila_machdep.c#3 integrate .. //depot/projects/s390/sys/arm/xscale/ixp425/files.ixp425#3 integrate .. //depot/projects/s390/sys/arm/xscale/ixp425/if_npe.c#4 integrate .. //depot/projects/s390/sys/arm/xscale/ixp425/if_npereg.h#3 integrate .. //depot/projects/s390/sys/arm/xscale/ixp425/ixp425.c#3 integrate .. //depot/projects/s390/sys/arm/xscale/ixp425/ixp425_npe.c#3 integrate .. //depot/projects/s390/sys/arm/xscale/ixp425/ixp425_npevar.h#3 integrate .. //depot/projects/s390/sys/arm/xscale/ixp425/ixp425reg.h#3 integrate .. //depot/projects/s390/sys/arm/xscale/ixp425/ixp425var.h#3 integrate .. //depot/projects/s390/sys/arm/xscale/ixp425/ixp435_ehci.c#2 delete .. //depot/projects/s390/sys/boot/common/load.c#4 delete .. //depot/projects/s390/sys/boot/forth/loader.4th#3 integrate .. //depot/projects/s390/sys/boot/forth/loader.conf#12 integrate .. //depot/projects/s390/sys/boot/forth/pnp.4th#2 integrate .. //depot/projects/s390/sys/boot/forth/support.4th#4 integrate .. //depot/projects/s390/sys/boot/i386/boot0/Makefile#5 integrate .. //depot/projects/s390/sys/boot/i386/boot0/boot0.S#5 integrate .. //depot/projects/s390/sys/boot/i386/libi386/bootinfo64.c#4 integrate .. //depot/projects/s390/sys/boot/i386/pxeldr/pxeboot.8#5 integrate .. //depot/projects/s390/sys/bsm/audit.h#5 integrate .. //depot/projects/s390/sys/bsm/audit_domain.h#1 branch .. //depot/projects/s390/sys/bsm/audit_errno.h#1 branch .. //depot/projects/s390/sys/bsm/audit_internal.h#4 integrate .. //depot/projects/s390/sys/bsm/audit_kevents.h#5 integrate .. //depot/projects/s390/sys/bsm/audit_record.h#4 integrate .. //depot/projects/s390/sys/bsm/audit_socket_type.h#1 branch .. //depot/projects/s390/sys/cam/cam_periph.c#15 integrate .. //depot/projects/s390/sys/cam/cam_sim.h#5 integrate .. //depot/projects/s390/sys/cam/cam_xpt.c#12 integrate .. //depot/projects/s390/sys/cam/cam_xpt_sim.h#4 integrate .. //depot/projects/s390/sys/cam/scsi/scsi_all.c#9 integrate .. //depot/projects/s390/sys/cam/scsi/scsi_cd.c#18 integrate .. //depot/projects/s390/sys/cam/scsi/scsi_ch.c#9 integrate .. //depot/projects/s390/sys/cam/scsi/scsi_da.c#23 integrate .. //depot/projects/s390/sys/cam/scsi/scsi_low.c#10 integrate .. //depot/projects/s390/sys/cam/scsi/scsi_pass.c#8 integrate .. //depot/projects/s390/sys/cam/scsi/scsi_pt.c#8 integrate .. //depot/projects/s390/sys/cam/scsi/scsi_sa.c#16 integrate .. //depot/projects/s390/sys/cam/scsi/scsi_ses.c#8 integrate .. //depot/projects/s390/sys/cam/scsi/scsi_sg.c#2 integrate .. //depot/projects/s390/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#4 integrate .. //depot/projects/s390/sys/compat/freebsd32/freebsd32_misc.c#9 integrate .. //depot/projects/s390/sys/compat/linprocfs/linprocfs.c#17 integrate .. //depot/projects/s390/sys/compat/linux/linux_misc.c#16 integrate .. //depot/projects/s390/sys/compat/linux/linux_stats.c#12 integrate .. //depot/projects/s390/sys/compat/ndis/kern_ndis.c#4 integrate .. //depot/projects/s390/sys/compat/ndis/kern_windrv.c#4 integrate .. //depot/projects/s390/sys/compat/ndis/ndis_var.h#4 integrate .. //depot/projects/s390/sys/compat/ndis/ntoskrnl_var.h#4 integrate .. //depot/projects/s390/sys/compat/ndis/subr_ndis.c#4 integrate .. //depot/projects/s390/sys/compat/ndis/subr_ntoskrnl.c#5 integrate .. //depot/projects/s390/sys/compat/ndis/subr_usbd.c#2 integrate .. //depot/projects/s390/sys/compat/ndis/usbd_var.h#2 integrate .. //depot/projects/s390/sys/compat/ndis/winx32_wrap.S#4 integrate .. //depot/projects/s390/sys/compat/svr4/svr4_types.h#3 integrate .. //depot/projects/s390/sys/conf/Makefile.arm#8 integrate .. //depot/projects/s390/sys/conf/NOTES#25 integrate .. //depot/projects/s390/sys/conf/files#27 integrate .. //depot/projects/s390/sys/conf/files.amd64#10 integrate .. //depot/projects/s390/sys/conf/files.i386#16 integrate .. //depot/projects/s390/sys/conf/files.ia64#16 integrate .. //depot/projects/s390/sys/conf/files.pc98#17 integrate .. //depot/projects/s390/sys/conf/files.powerpc#14 integrate .. //depot/projects/s390/sys/conf/files.sparc64#16 integrate .. //depot/projects/s390/sys/conf/kern.post.mk#16 integrate .. //depot/projects/s390/sys/conf/kern.pre.mk#11 integrate .. //depot/projects/s390/sys/conf/kmod.mk#17 integrate .. //depot/projects/s390/sys/conf/newvers.sh#8 integrate .. //depot/projects/s390/sys/conf/options#22 integrate .. //depot/projects/s390/sys/contrib/altq/altq/altq_subr.c#6 integrate .. //depot/projects/s390/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c#5 integrate .. //depot/projects/s390/sys/contrib/pf/net/pf_ioctl.c#6 integrate .. //depot/projects/s390/sys/crypto/via/padlock.c#5 integrate .. //depot/projects/s390/sys/crypto/via/padlock_hash.c#2 integrate .. //depot/projects/s390/sys/dev/acpi_support/acpi_asus.c#6 integrate .. //depot/projects/s390/sys/dev/acpi_support/acpi_panasonic.c#4 integrate .. //depot/projects/s390/sys/dev/acpica/acpi_battery.c#8 integrate >>> TRUNCATED FOR MAIL (1000 lines) <<< From sson at FreeBSD.org Thu Feb 5 13:05:03 2009 From: sson at FreeBSD.org (Stacey Son) Date: Thu Feb 5 13:05:09 2009 Subject: PERFORCE change 157234 for review Message-ID: <200902052105.n15L5151011758@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157234 Change 157234 by sson@sson_amd64 on 2009/02/05 21:04:50 NEWS and tools/audump.c updated. - Added news about audit trail expiration and filesz parameter using size suffixes. - Added checks for getacfilez(), getachost(), and getacexpire() to tools/audump.c. Affected files ... .. //depot/projects/trustedbsd/openbsm/NEWS#30 edit .. //depot/projects/trustedbsd/openbsm/tools/audump.c#8 edit Differences ... ==== //depot/projects/trustedbsd/openbsm/NEWS#30 (text+ko) ==== @@ -2,6 +2,14 @@ OpenBSM 1.1 beta 1 +- The filesz parameter in audit_control(5) now accepts suffixes: 'B' for + Bytes, 'K' for Kilobytes, 'M' for Megabytes, and 'G' for Gigabytes. + For legacy support no suffix defaults to bytes. +- Audit trail log expiration support added. It is configured in + audit_control(5) with the expire-after parameter. If there is no + expire-after parameter in audit_control(5), the default, then the audit + trail files are not expired and removed. See audit_control(5) for + more information. - Change defaults in audit_control: warn at 5% rather than 20% free for audit partitions, rotate automatically at 2mb, and set the default policy to cnt,argv rather than cnt so that execve(2) arguments are captured if @@ -420,4 +428,4 @@ to support reloading of kernel event table. - Allow comments in /etc/security configuration files. -$P4: //depot/projects/trustedbsd/openbsm/NEWS#29 $ +$P4: //depot/projects/trustedbsd/openbsm/NEWS#30 $ ==== //depot/projects/trustedbsd/openbsm/tools/audump.c#8 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/openbsm/tools/audump.c#7 $ + * $P4: //depot/projects/trustedbsd/openbsm/tools/audump.c#8 $ */ #include @@ -80,6 +80,8 @@ char string[PATH_MAX], string2[PATH_MAX]; int ret, val; long policy; + time_t age; + size_t size; ret = getacflg(string, PATH_MAX); if (ret == -2) @@ -126,6 +128,32 @@ if (au_poltostr(policy, PATH_MAX, string2) < 0) err(-1, "au_poltostr"); printf("policy:%s\n", string2); + + ret = getacfilesz(&size); + if (ret == -2) + err(-1, "getacfilesz"); + if (ret != 0) + err(-1, "getacfilesz: %d", ret); + + printf("filesz:%ldB\n", size); + + + ret = getachost(string, PATH_MAX); + if (ret == -2) + err(-1, "getachost"); + if (ret == -3) + err(-1, "getachost: %d", ret); + if (ret == 0 && ret != 1) + printf("host:%s\n", string); + + ret = getacexpire(&val, &age, &size); + if (ret == -2) + err(-1, "getacexpire"); + if (ret == -1) + err(-1, "getacexpire: %d", ret); + if (ret == 0 && ret != 1) + printf("expire-after:%ldB %s %lds\n", size, + val ? "AND" : "OR", age); } static void From rwatson at FreeBSD.org Thu Feb 5 15:33:34 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Thu Feb 5 15:33:40 2009 Subject: PERFORCE change 157244 for review Message-ID: <200902052333.n15NXWY9026462@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157244 Change 157244 by rwatson@rwatson_freebsd_capabilities on 2009/02/05 23:32:56 When running in a sandbox, don't allow the use of shared objects named with absolute paths, as the proxed library service won't allow that. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf/rtld.c#9 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf/rtld.c#9 (text+ko) ==== @@ -1024,12 +1024,16 @@ char *name; if (strchr(xname, '/') != NULL) { /* Hard coded pathname */ +#ifndef IN_RTLD_CAP if (xname[0] != '/' && !trust) { +#endif _rtld_error("Absolute pathname required for shared object \"%s\"", xname); return NULL; +#ifndef IN_RTLD_CAP } return xstrdup(xname); +#endif } if (libmap_disable || (refobj == NULL) || From rwatson at FreeBSD.org Thu Feb 5 15:36:37 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Thu Feb 5 15:36:44 2009 Subject: PERFORCE change 157245 for review Message-ID: <200902052336.n15Naaw4026710@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157245 Change 157245 by rwatson@rwatson_freebsd_capabilities on 2009/02/05 23:36:22 In a sandbox, access to the hints file is neither possible nor useful, that will be done by the proxy service. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf/rtld.c#10 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf/rtld.c#10 (text+ko) ==== @@ -93,7 +93,9 @@ static char *errmsg_save(void); static void *fill_search_info(const char *, size_t, void *); static char *find_library(const char *, const Obj_Entry *); +#ifndef IN_RTLD_CAP static const char *gethints(void); +#endif static void init_dag(Obj_Entry *); static void init_dag1(Obj_Entry *, Obj_Entry *, DoneList *); static void init_rtld(caddr_t); @@ -1045,7 +1047,9 @@ if ((pathname = search_library_path(name, ld_library_path)) != NULL || (refobj != NULL && (pathname = search_library_path(name, refobj->rpath)) != NULL) || +#ifndef IN_RTLD_CAP (pathname = search_library_path(name, gethints())) != NULL || +#endif (pathname = search_library_path(name, STANDARD_LIBRARY_PATH)) != NULL) return pathname; @@ -1134,6 +1138,7 @@ return def; } +#ifndef IN_RTLD_CAP /* * Return the search path from the ldconfig hints file, reading it if * necessary. Returns NULL if there are problems with the hints file, @@ -1172,6 +1177,7 @@ } return hints[0] != '\0' ? hints : NULL; } +#endif static void init_dag(Obj_Entry *root) @@ -2258,7 +2264,9 @@ path_enumerate(ld_library_path, fill_search_info, &args); path_enumerate(obj->rpath, fill_search_info, &args); +#ifndef IN_RTLD_CAP path_enumerate(gethints(), fill_search_info, &args); +#endif path_enumerate(STANDARD_LIBRARY_PATH, fill_search_info, &args); @@ -2286,9 +2294,11 @@ if (path_enumerate(obj->rpath, fill_search_info, &args) != NULL) return (-1); +#ifndef IN_RTLD_CAP args.flags = LA_SER_CONFIG; if (path_enumerate(gethints(), fill_search_info, &args) != NULL) return (-1); +#endif args.flags = LA_SER_DEFAULT; if (path_enumerate(STANDARD_LIBRARY_PATH, fill_search_info, &args) != NULL) From hselasky at FreeBSD.org Fri Feb 6 03:00:13 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Fri Feb 6 03:00:20 2009 Subject: PERFORCE change 157255 for review Message-ID: <200902061100.n16B0Ctl032265@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157255 Change 157255 by hselasky@hselasky_laptop001 on 2009/02/06 11:00:00 USB Audio: Make sure that attach waits for the generic probe to leave room for firware loader drivers and device specific USB Audio drivers like USB phone adapters. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#28 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#28 (text+ko) ==== @@ -539,9 +539,12 @@ { struct usb2_attach_arg *uaa = device_get_ivars(dev); - if (uaa->usb2_mode != USB_MODE_HOST) { + if (uaa->usb2_mode != USB_MODE_HOST) + return (ENXIO); + + if (uaa->use_generic == 0) return (ENXIO); - } + /* trigger on the control interface */ if ((uaa->info.bInterfaceClass == UICLASS_AUDIO) && From hselasky at FreeBSD.org Fri Feb 6 11:45:16 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Fri Feb 6 11:45:22 2009 Subject: PERFORCE change 157296 for review Message-ID: <200902061945.n16JjABv012002@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157296 Change 157296 by hselasky@hselasky_laptop001 on 2009/02/06 19:44:23 Fix OHCI and EHCI counting bug when multiple TD's are involved in a short USB transfer and a short packet happens on the non-last TD in the USB transfer frame. Fix by: HPS Reported by: Andrew Thompson Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#30 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#27 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#30 (text+ko) ==== @@ -1145,6 +1145,9 @@ td = xfer->td_transfer_cache; td_alt_next = td->alt_next; + if (xfer->aframes != xfer->nframes) { + xfer->frlengths[xfer->aframes] = 0; + } while (1) { usb2_pc_cpu_invalidate(td->page_cache); @@ -1153,8 +1156,8 @@ len = EHCI_QTD_GET_BYTES(status); /* - * Verify the status length and subtract - * the remainder from "frlengths[]": + * Verify the status length and + * add the length to "frlengths[]": */ if (len > td->len) { /* should not happen */ @@ -1162,7 +1165,7 @@ "0x%04x/0x%04x bytes\n", len, td->len); status |= EHCI_QTD_HALTED; } else if (xfer->aframes != xfer->nframes) { - xfer->frlengths[xfer->aframes] -= len; + xfer->frlengths[xfer->aframes] += td->len - len; } /* Check for last transfer */ if (((void *)td) == xfer->td_transfer_last) { ==== //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#27 (text+ko) ==== @@ -838,6 +838,9 @@ td_alt_next = td->alt_next; td_flags = 0; + if (xfer->aframes != xfer->nframes) { + xfer->frlengths[xfer->aframes] = 0; + } while (1) { usb2_pc_cpu_invalidate(td->page_cache); @@ -861,10 +864,15 @@ cc = OHCI_CC_STALL; } else if (xfer->aframes != xfer->nframes) { /* - * subtract remaining length from - * "frlengths[]" + * Sum up total transfer length + * in "frlengths[]": */ - xfer->frlengths[xfer->aframes] -= temp; + xfer->frlengths[xfer->aframes] += td->len - temp; + } + } else{ + if (xfer->aframes != xfer->nframes) { + /* transfer was complete */ + xfer->frlengths[xfer->aframes] += td->len; } } /* Check for last transfer */ From andrew at FreeBSD.org Fri Feb 6 13:49:22 2009 From: andrew at FreeBSD.org (Andrew Turner) Date: Fri Feb 6 13:49:28 2009 Subject: PERFORCE change 157306 for review Message-ID: <200902062149.n16LnKjj032827@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157306 Change 157306 by andrew@andrew_bender on 2009/02/06 21:49:07 Detect which s3c24x0 CPU we are running on. This is useful as most registers are the same so we can share drivers between the s3c2410 and s3c2440 however there are slight differences that we need to account for. Only the S3C2410A and S3C2442B are currently detected as that is all I have hardware/emulators for. Affected files ... .. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c2410.c#19 edit .. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0_mci.c#3 edit .. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c2xx0var.h#9 edit Differences ... ==== //depot/projects/arm/src/sys/arm/s3c2xx0/s3c2410.c#19 (text+ko) ==== @@ -54,6 +54,17 @@ #define IPL_LEVELS 13 u_int irqmasks[IPL_LEVELS]; +static struct { + uint32_t idcode; + const char *name; + s3c2xx0_cpu cpu; +} s3c2x0_cpu_id[] = { + { 0x32410002, "S3C2410A", CPU_S3C2410 }, + { 0x32440AAB, "S3C2442B", CPU_S3C2440 }, + + { 0, NULL } +}; + /* prototypes */ static device_t s3c2410_add_child(device_t, int, const char *, int); @@ -72,6 +83,8 @@ struct resource *); static struct resource_list *s3c2410_get_resource_list(device_t, device_t); +static void s3c24x0_identify_cpu(device_t); + static device_method_t s3c2410_methods[] = { DEVMETHOD(device_probe, s3c2410_probe), DEVMETHOD(device_attach, s3c2410_attach), @@ -331,14 +344,17 @@ S3C24X0_TIMER_SIZE, 0, &sc->sc_timer_ioh)) panic("cannot map TIMER"); -#if 0 /* calculate current clock frequency */ s3c24x0_clock_freq(&sc->sc_sx); printf(": fclk %d MHz hclk %d MHz pclk %d MHz", sc->sc_sx.sc_fclk / 1000000, sc->sc_sx.sc_hclk / 1000000, sc->sc_sx.sc_pclk / 1000000); printf("\n"); -#endif + + /* + * Identify the CPU + */ + s3c24x0_identify_cpu(dev); /* * Attach children devices @@ -378,6 +394,29 @@ return (0); } +static void +s3c24x0_identify_cpu(device_t dev) +{ + struct s3c24x0_softc *sc = device_get_softc(dev); + uint32_t idcode; + int i; + + idcode = bus_space_read_4(sc->sc_sx.sc_iot, sc->sc_sx.sc_gpio_ioh, + GPIO_GSTATUS1); + + for (i = 0; s3c2x0_cpu_id[i].name != NULL; i++) { + if (s3c2x0_cpu_id[i].idcode == idcode) + break; + } + device_printf(dev, "Found %s CPU (Chip ID: 0x%X)\n", + (s3c2x0_cpu_id[i].name != NULL) ? s3c2x0_cpu_id[i].name : "unknown", + idcode); + if (s3c2x0_cpu_id[i].name == NULL) { + panic("Unknown CPU detected"); + } + sc->sc_sx.sc_cpu = s3c2x0_cpu_id[i].cpu; +} + /* * fill sc_pclk, sc_hclk, sc_fclk from values of clock controller register. * @@ -528,6 +567,7 @@ case S3C2410_INT_ERR0: irq = S3C2410_INT_UART0; break; + case S3C2410_INT_RXD1: case S3C2410_INT_TXD1: case S3C2410_INT_ERR1: ==== //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0_mci.c#3 (text+ko) ==== @@ -483,6 +483,9 @@ case MMCBR_IVAR_VDD: *(int *)result = sc->host.ios.vdd; break; + case MMCBR_IVAR_MAX_DATA: + *(int *)result = 1; + break; } return (0); } @@ -522,6 +525,7 @@ case MMCBR_IVAR_HOST_OCR: case MMCBR_IVAR_F_MIN: case MMCBR_IVAR_F_MAX: + case MMCBR_IVAR_MAX_DATA: return (EINVAL); } return (0); ==== //depot/projects/arm/src/sys/arm/s3c2xx0/s3c2xx0var.h#9 (text+ko) ==== @@ -38,9 +38,16 @@ #include #include +typedef enum { + CPU_S3C2410, + CPU_S3C2440, +} s3c2xx0_cpu; + struct s3c2xx0_softc { device_t sc_dev; + s3c2xx0_cpu sc_cpu; + bus_space_tag_t sc_iot; bus_space_handle_t sc_intctl_ioh; From andrew at FreeBSD.org Fri Feb 6 13:57:30 2009 From: andrew at FreeBSD.org (Andrew Turner) Date: Fri Feb 6 13:57:36 2009 Subject: PERFORCE change 157307 for review Message-ID: <200902062157.n16LvTpr033447@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157307 Change 157307 by andrew@andrew_bender on 2009/02/06 21:57:12 Rename s3c2410.c to s3c24x0.c as the s3c2410 and s3c2440 are close enough for this to be used on both Affected files ... .. //depot/projects/arm/src/sys/arm/s3c2xx0/files.s3c2xx0#5 edit .. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c2410.c#20 delete .. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0.c#1 branch Differences ... ==== //depot/projects/arm/src/sys/arm/s3c2xx0/files.s3c2xx0#5 (text+ko) ==== @@ -1,7 +1,7 @@ # $FreeBSD$ arm/arm/cpufunc_asm_arm9.S standard arm/arm/irq_dispatch.S standard -arm/s3c2xx0/s3c2410.c standard +arm/s3c2xx0/s3c24x0.c standard arm/s3c2xx0/s3c2xx0_space.c standard arm/s3c2xx0/s3c24x0_clk.c standard arm/s3c2xx0/s3c24x0_mci.c standard From andrew at FreeBSD.org Fri Feb 6 14:43:18 2009 From: andrew at FreeBSD.org (Andrew Turner) Date: Fri Feb 6 14:43:25 2009 Subject: PERFORCE change 157311 for review Message-ID: <200902062243.n16MhFrZ037757@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157311 Change 157311 by andrew@andrew_bender on 2009/02/06 22:42:36 Rename the s3c2410 driver to s3c24x0 to reflect the new file name Affected files ... .. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0.c#2 edit .. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0_clk.c#4 edit .. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0_mci.c#4 edit .. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0_nand.c#3 edit .. //depot/projects/arm/src/sys/arm/s3c2xx0/uart_bus_s3c2410.c#4 edit Differences ... ==== //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0.c#2 (text+ko) ==== @@ -66,53 +66,53 @@ }; /* prototypes */ -static device_t s3c2410_add_child(device_t, int, const char *, int); +static device_t s3c24x0_add_child(device_t, int, const char *, int); -static int s3c2410_probe(device_t); -static int s3c2410_attach(device_t); -static void s3c2410_identify(driver_t *, device_t); -static int s3c2410_setup_intr(device_t, device_t, struct resource *, int, +static int s3c24x0_probe(device_t); +static int s3c24x0_attach(device_t); +static void s3c24x0_identify(driver_t *, device_t); +static int s3c24x0_setup_intr(device_t, device_t, struct resource *, int, driver_filter_t *, driver_intr_t *, void *, void **); -static int s3c2410_teardown_intr(device_t, device_t, struct resource *, +static int s3c24x0_teardown_intr(device_t, device_t, struct resource *, void *); -static struct resource *s3c2410_alloc_resource(device_t, device_t, int, int *, +static struct resource *s3c24x0_alloc_resource(device_t, device_t, int, int *, u_long, u_long, u_long, u_int); -static int s3c2410_activate_resource(device_t, device_t, int, int, +static int s3c24x0_activate_resource(device_t, device_t, int, int, struct resource *); -static int s3c2410_release_resource(device_t, device_t, int, int, +static int s3c24x0_release_resource(device_t, device_t, int, int, struct resource *); -static struct resource_list *s3c2410_get_resource_list(device_t, device_t); +static struct resource_list *s3c24x0_get_resource_list(device_t, device_t); static void s3c24x0_identify_cpu(device_t); -static device_method_t s3c2410_methods[] = { - DEVMETHOD(device_probe, s3c2410_probe), - DEVMETHOD(device_attach, s3c2410_attach), - DEVMETHOD(device_identify, s3c2410_identify), - DEVMETHOD(bus_setup_intr, s3c2410_setup_intr), - DEVMETHOD(bus_teardown_intr, s3c2410_teardown_intr), - DEVMETHOD(bus_alloc_resource, s3c2410_alloc_resource), - DEVMETHOD(bus_activate_resource, s3c2410_activate_resource), - DEVMETHOD(bus_release_resource, s3c2410_release_resource), - DEVMETHOD(bus_get_resource_list,s3c2410_get_resource_list), +static device_method_t s3c24x0_methods[] = { + DEVMETHOD(device_probe, s3c24x0_probe), + DEVMETHOD(device_attach, s3c24x0_attach), + DEVMETHOD(device_identify, s3c24x0_identify), + DEVMETHOD(bus_setup_intr, s3c24x0_setup_intr), + DEVMETHOD(bus_teardown_intr, s3c24x0_teardown_intr), + DEVMETHOD(bus_alloc_resource, s3c24x0_alloc_resource), + DEVMETHOD(bus_activate_resource, s3c24x0_activate_resource), + DEVMETHOD(bus_release_resource, s3c24x0_release_resource), + DEVMETHOD(bus_get_resource_list,s3c24x0_get_resource_list), DEVMETHOD(bus_set_resource, bus_generic_rl_set_resource), DEVMETHOD(bus_get_resource, bus_generic_rl_get_resource), {0, 0}, }; -static driver_t s3c2410_driver = { - "s3c2410", - s3c2410_methods, +static driver_t s3c24x0_driver = { + "s3c24x0", + s3c24x0_methods, sizeof(struct s3c24x0_softc), }; -static devclass_t s3c2410_devclass; +static devclass_t s3c24x0_devclass; -DRIVER_MODULE(s3c2410, nexus, s3c2410_driver, s3c2410_devclass, 0, 0); +DRIVER_MODULE(s3c24x0, nexus, s3c24x0_driver, s3c24x0_devclass, 0, 0); struct s3c2xx0_softc *s3c2xx0_softc = NULL; static device_t -s3c2410_add_child(device_t bus, int prio, const char *name, int unit) +s3c24x0_add_child(device_t bus, int prio, const char *name, int unit) { device_t child; struct s3c2xx0_ivar *ivar; @@ -134,7 +134,7 @@ } static int -s3c2410_setup_intr(device_t dev, device_t child, +s3c24x0_setup_intr(device_t dev, device_t child, struct resource *ires, int flags, driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep) { @@ -152,14 +152,14 @@ } static int -s3c2410_teardown_intr(device_t dev, device_t child, struct resource *res, +s3c24x0_teardown_intr(device_t dev, device_t child, struct resource *res, void *cookie) { return (BUS_TEARDOWN_INTR(device_get_parent(dev), child, res, cookie)); } static struct resource * -s3c2410_alloc_resource(device_t bus, device_t child, int type, int *rid, +s3c24x0_alloc_resource(device_t bus, device_t child, int type, int *rid, u_long start, u_long end, u_long count, u_int flags) { struct resource_list_entry *rle; @@ -244,14 +244,14 @@ } static int -s3c2410_activate_resource(device_t bus, device_t child, int type, int rid, +s3c24x0_activate_resource(device_t bus, device_t child, int type, int rid, struct resource *r) { return (0); } static int -s3c2410_release_resource(device_t bus, device_t child, int type, int rid, +s3c24x0_release_resource(device_t bus, device_t child, int type, int rid, struct resource *r) { struct s3c2xx0_ivar *ivar = device_get_ivars(child); @@ -272,7 +272,7 @@ } static struct resource_list * -s3c2410_get_resource_list(device_t dev, device_t child) +s3c24x0_get_resource_list(device_t dev, device_t child) { struct s3c2xx0_ivar *ivar; @@ -281,20 +281,20 @@ } void -s3c2410_identify(driver_t *driver, device_t parent) +s3c24x0_identify(driver_t *driver, device_t parent) { - BUS_ADD_CHILD(parent, 0, "s3c2410", 0); + BUS_ADD_CHILD(parent, 0, "s3c24x0", 0); } int -s3c2410_probe(device_t dev) +s3c24x0_probe(device_t dev) { return 0; } int -s3c2410_attach(device_t dev) +s3c24x0_attach(device_t dev) { struct s3c24x0_softc *sc = device_get_softc(dev); bus_space_tag_t iot; @@ -373,17 +373,17 @@ S3C2410_REG_BASE + S3C2410_REG_SIZE) != 0) panic("s3c2410_attach: failed to set up register rman"); - s3c2410_add_child(dev, 0, "nand", 0); - s3c2410_add_child(dev, 0, "timer", 0); + s3c24x0_add_child(dev, 0, "nand", 0); + s3c24x0_add_child(dev, 0, "timer", 0); /* Add the MMC/SD and set it's irq/registers */ - child = s3c2410_add_child(dev, 0, "s3c24x0_mci", 0); + child = s3c24x0_add_child(dev, 0, "s3c24x0_mci", 0); bus_set_resource(child, SYS_RES_IRQ, 0, S3C2410_INT_SDI, 1); bus_set_resource(child, SYS_RES_IOPORT, 0, S3C2410_SDI_BASE, S3C2410_SDI_SIZE); /* Add the uart and set it's irq and registers */ - child = s3c2410_add_child(dev, 0, "uart", 0); + child = s3c24x0_add_child(dev, 0, "uart", 0); bus_set_resource(child, SYS_RES_IRQ, 0, S3C2410_INT_UART0, 1); bus_set_resource(child, SYS_RES_IOPORT, 0, S3C2410_UART0_BASE, S3C2410_UART_BASE(1) - S3C2410_UART0_BASE); ==== //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0_clk.c#4 (text+ko) ==== @@ -94,7 +94,7 @@ }; static devclass_t s3c24x0_timer_devclass; -DRIVER_MODULE(s3c24x0timer, s3c2410, s3c24x0_timer_driver, s3c24x0_timer_devclass, 0, 0); +DRIVER_MODULE(s3c24x0timer, s3c24x0, s3c24x0_timer_driver, s3c24x0_timer_devclass, 0, 0); #ifndef STATHZ #define STATHZ 64 ==== //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0_mci.c#4 (text+ko) ==== @@ -559,5 +559,5 @@ static devclass_t s3c24x0_mci_devclass; -DRIVER_MODULE(s3c24x0_mci, s3c2410, s3c24x0_mci_driver, s3c24x0_mci_devclass, 0, 0); +DRIVER_MODULE(s3c24x0_mci, s3c24x0, s3c24x0_mci_driver, s3c24x0_mci_devclass, 0, 0); ==== //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0_nand.c#3 (text+ko) ==== @@ -497,4 +497,4 @@ return(0); } -DRIVER_MODULE(nand, s3c2410, nand_s3c2410_driver, nand_devclass, 0, 0); +DRIVER_MODULE(nand, s3c24x0, nand_s3c2410_driver, nand_devclass, 0, 0); ==== //depot/projects/arm/src/sys/arm/s3c2xx0/uart_bus_s3c2410.c#4 (text+ko) ==== @@ -48,4 +48,4 @@ return (0); } -DRIVER_MODULE(uart, s3c2410, uart_s3c2410_driver, uart_devclass, 0, 0); +DRIVER_MODULE(uart, s3c24x0, uart_s3c2410_driver, uart_devclass, 0, 0); From hselasky at FreeBSD.org Sat Feb 7 06:16:14 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Sat Feb 7 06:16:20 2009 Subject: PERFORCE change 157335 for review Message-ID: <200902071416.n17EGCBL068552@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157335 Change 157335 by hselasky@hselasky_laptop001 on 2009/02/07 14:16:01 libusb20 compat layer: Fix regression issue. Affected files ... .. //depot/projects/usb/src/lib/libusb20/libusb20_compat01.c#10 edit Differences ... ==== //depot/projects/usb/src/lib/libusb20/libusb20_compat01.c#10 (text+ko) ==== @@ -808,7 +808,11 @@ if (err) return (-1); - return (0); + /* + * Be compatible with LibUSB from sourceforge and close the + * handle after reset! + */ + return (usb_close(dev)); } const char * From hselasky at c2i.net Sat Feb 7 06:17:07 2009 From: hselasky at c2i.net (Hans Petter Selasky) Date: Sat Feb 7 06:17:14 2009 Subject: PERFORCE change 157335 for review In-Reply-To: <200902071416.n17EGCBL068552@repoman.freebsd.org> References: <200902071416.n17EGCBL068552@repoman.freebsd.org> Message-ID: <200902071519.25152.hselasky@c2i.net> On Saturday 07 February 2009, Hans Petter Selasky wrote: > http://perforce.freebsd.org/chv.cgi?CH=157335 > > Change 157335 by hselasky@hselasky_laptop001 on 2009/02/07 14:16:01 > > > libusb20 compat layer: Fix regression issue. Reported by "Bruce Cran". --HPS From gonzo at FreeBSD.org Sat Feb 7 15:54:03 2009 From: gonzo at FreeBSD.org (Oleksandr Tymoshenko) Date: Sat Feb 7 15:54:09 2009 Subject: PERFORCE change 157347 for review Message-ID: <200902072354.n17Ns2B2044214@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157347 Change 157347 by gonzo@gonzo_figaro on 2009/02/07 23:53:30 - Add avr32 entries Affected files ... .. //depot/projects/avr32/src/share/mk/bsd.cpu.mk#2 edit .. //depot/projects/avr32/src/share/mk/bsd.endian.mk#2 edit Differences ... ==== //depot/projects/avr32/src/share/mk/bsd.cpu.mk#2 (text+ko) ==== @@ -19,6 +19,8 @@ MACHINE_CPU = arm . elif ${MACHINE_ARCH} == "mips" MACHINE_CPU = mips +. elif ${MACHINE_ARCH} == "avr32" +MACHINE_CPU = avr32 . endif .else ==== //depot/projects/avr32/src/share/mk/bsd.endian.mk#2 (text+ko) ==== @@ -4,6 +4,7 @@ ${MACHINE_ARCH} == "i386" || \ ${MACHINE_ARCH} == "ia64" || \ (${MACHINE_ARCH} == "arm" && !defined(TARGET_BIG_ENDIAN)) || \ + ${MACHINE_ARCH} == "avr32" || \ (${MACHINE_ARCH} == "mips" && !defined(TARGET_BIG_ENDIAN)) TARGET_ENDIANNESS= 1234 .elif ${MACHINE_ARCH} == "powerpc" || \ From gonzo at FreeBSD.org Sat Feb 7 15:56:16 2009 From: gonzo at FreeBSD.org (Oleksandr Tymoshenko) Date: Sat Feb 7 15:56:22 2009 Subject: PERFORCE change 157348 for review Message-ID: <200902072356.n17Nu4kp044403@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157348 Change 157348 by gonzo@gonzo_figaro on 2009/02/07 23:55:20 - No GDB for avr32 yet Affected files ... .. //depot/projects/avr32/src/gnu/usr.bin/Makefile#2 edit Differences ... ==== //depot/projects/avr32/src/gnu/usr.bin/Makefile#2 (text+ko) ==== @@ -23,7 +23,7 @@ sort \ ${_texinfo} -.if ${MACHINE_ARCH} == "mips" +.if ${MACHINE_ARCH} == "mips" || ${MACHINE_ARCH} == "avr32" MK_GDB=no # not yet .endif From imp at bsdimp.com Sat Feb 7 16:15:06 2009 From: imp at bsdimp.com (M. Warner Losh) Date: Sat Feb 7 16:15:12 2009 Subject: PERFORCE change 157347 for review In-Reply-To: <200902072354.n17Ns2B2044214@repoman.freebsd.org> References: <200902072354.n17Ns2B2044214@repoman.freebsd.org> Message-ID: <20090207.171459.835090967.imp@bsdimp.com> In message: <200902072354.n17Ns2B2044214@repoman.freebsd.org> Oleksandr Tymoshenko writes: : ==== //depot/projects/avr32/src/share/mk/bsd.endian.mk#2 (text+ko) ==== : : @@ -4,6 +4,7 @@ : ${MACHINE_ARCH} == "i386" || \ : ${MACHINE_ARCH} == "ia64" || \ : (${MACHINE_ARCH} == "arm" && !defined(TARGET_BIG_ENDIAN)) || \ : + ${MACHINE_ARCH} == "avr32" || \ : (${MACHINE_ARCH} == "mips" && !defined(TARGET_BIG_ENDIAN)) : TARGET_ENDIANNESS= 1234 : .elif ${MACHINE_ARCH} == "powerpc" || \ We've *GOT* to find a better way of doing this. Warner From gonzo at FreeBSD.org Sat Feb 7 21:39:54 2009 From: gonzo at FreeBSD.org (Oleksandr Tymoshenko) Date: Sat Feb 7 21:40:00 2009 Subject: PERFORCE change 157352 for review Message-ID: <200902080539.n185drmi097680@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157352 Change 157352 by gonzo@gonzo_figaro on 2009/02/08 05:39:17 - AVR32 is big-endian. Put the condition to wrong place. Shame on me Affected files ... .. //depot/projects/avr32/src/share/mk/bsd.endian.mk#3 edit Differences ... ==== //depot/projects/avr32/src/share/mk/bsd.endian.mk#3 (text+ko) ==== @@ -4,12 +4,12 @@ ${MACHINE_ARCH} == "i386" || \ ${MACHINE_ARCH} == "ia64" || \ (${MACHINE_ARCH} == "arm" && !defined(TARGET_BIG_ENDIAN)) || \ - ${MACHINE_ARCH} == "avr32" || \ (${MACHINE_ARCH} == "mips" && !defined(TARGET_BIG_ENDIAN)) TARGET_ENDIANNESS= 1234 .elif ${MACHINE_ARCH} == "powerpc" || \ ${MACHINE_ARCH} == "sparc64" || \ ${MACHINE_ARCH} == "arm" || \ + ${MACHINE_ARCH} == "avr32" || \ ${MACHINE_ARCH} == "mips" TARGET_ENDIANNESS= 4321 .endif From andrew at FreeBSD.org Sat Feb 7 23:19:38 2009 From: andrew at FreeBSD.org (Andrew Turner) Date: Sat Feb 7 23:19:46 2009 Subject: PERFORCE change 157355 for review Message-ID: <200902080719.n187Ja2P007436@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157355 Change 157355 by andrew@andrew_bender on 2009/02/08 07:19:02 Move the definitions common to s3c2410 and s3c2440 to the common header and rename ass appropriate. Affected files ... .. //depot/projects/arm/src/sys/arm/s3c2xx0/neo1973_machdep.c#11 edit .. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c2410reg.h#6 edit .. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0.c#3 edit .. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0_mci.c#5 edit .. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0_nand.c#4 edit .. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0reg.h#2 edit Differences ... ==== //depot/projects/arm/src/sys/arm/s3c2xx0/neo1973_machdep.c#11 (text+ko) ==== @@ -147,9 +147,9 @@ /* * Map the IRQ Controller */ - _A(S3C2410_INTCTL_BASE), - _A(S3C2410_INTCTL_BASE), - _S(S3C2410_INTCTL_SIZE), + _A(S3C24X0_INTCTL_BASE), + _A(S3C24X0_INTCTL_BASE), + _S(S3C24X0_INTCTL_SIZE), VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, }, @@ -157,9 +157,9 @@ /* * Map the UART to VA == PA */ - _A(S3C2410_UART0_BASE), - _A(S3C2410_UART0_BASE), - _S(S3C2410_UART_BASE(3) - S3C2410_UART0_BASE), + _A(S3C24X0_UART0_BASE), + _A(S3C24X0_UART0_BASE), + _S(S3C24X0_UART_BASE(3) - S3C24X0_UART0_BASE), VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, }, @@ -167,9 +167,9 @@ /* * Map the LCD to VA == PA */ - _A(S3C2410_LCDC_BASE), - _A(S3C2410_LCDC_BASE), - _S(S3C2410_LCDC_SIZE), + _A(S3C24X0_LCDC_BASE), + _A(S3C24X0_LCDC_BASE), + _S(S3C24X0_LCDC_SIZE), VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, }, @@ -177,8 +177,8 @@ /* * Map the MMC/SD to VA == PA */ - _A(S3C2410_SDI_BASE), - _A(S3C2410_SDI_BASE), + _A(S3C24X0_SDI_BASE), + _A(S3C24X0_SDI_BASE), _S(S3C2410_SDI_SIZE), VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, @@ -187,8 +187,8 @@ /* * Map the IIC to VA == PA */ - _A(S3C2410_IIC_BASE), - _A(S3C2410_IIC_BASE), + _A(S3C24X0_IIC_BASE), + _A(S3C24X0_IIC_BASE), _S(S3C24X0_IIC_SIZE), VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, @@ -374,8 +374,8 @@ cpu_idcache_wbinv_all(); /* Disable all peripheral interrupts */ - ioreg_write32(S3C2410_INTCTL_BASE + INTCTL_INTMSK, ~0); - s3c2410_uart_vaddr = S3C2410_UART0_BASE; + ioreg_write32(S3C24X0_INTCTL_BASE + INTCTL_INTMSK, ~0); + s3c2410_uart_vaddr = S3C24X0_UART_BASE(0); cninit(); /* Set stack for exception handlers */ ==== //depot/projects/arm/src/sys/arm/s3c2xx0/s3c2410reg.h#6 (text+ko) ==== @@ -39,9 +39,7 @@ #ifndef _ARM_S3C2XX0_S3C2410REG_H_ #define _ARM_S3C2XX0_S3C2410REG_H_ -/* common definitions for S3C2800, S3C2400 and S3C2410 */ -#include -/* common definitions for S3C2400 and S3C2410 */ +/* common definitions for S3C2410 and S3C2440 */ #include /* @@ -51,100 +49,19 @@ #define S3C2410_BANK_START(n) (S3C2410_BANK_SIZE*(n)) #define S3C2410_SDRAM_START S3C2410_BANK_START(6) -/* - * Physical address of integrated peripherals - */ -#define S3C2410_MEMCTL_BASE 0x48000000 /* memory controller */ -#define S3C2410_USBHC_BASE 0x49000000 /* USB Host controller */ -#define S3C2410_INTCTL_BASE 0x4a000000 /* Interrupt controller */ -#define S3C2410_DMAC_BASE 0x4b000000 -#define S3C2410_DMAC_SIZE 0xe4 -#define S3C2410_CLKMAN_BASE 0x4c000000 /* clock & power management */ -#define S3C2410_LCDC_BASE 0x4d000000 /* LCD controller */ -#define S3C2410_LCDC_SIZE 0x60 -#define S3C2410_NANDFC_BASE 0x4e000000 /* NAND Flash controller */ -#define S3C2410_NANDFC_SIZE 0x18 -#define S3C2410_UART0_BASE 0x50000000 -#define S3C2410_UART_BASE(n) (S3C2410_UART0_BASE+0x4000*(n)) -#define S3C2410_TIMER_BASE 0x51000000 -#define S3C2410_USBDC_BASE 0x5200140 -#define S3C2410_USBDC_SIZE 0x130 -#define S3C2410_WDT_BASE 0x53000000 -#define S3C2410_IIC_BASE 0x54000000 -#define S3C2410_IIS_BASE 0x55000000 -#define S3C2410_GPIO_BASE 0x56000000 -#define S3C2410_GPIO_SIZE 0xb4 -#define S3C2410_ADC_BASE 0x58000000 -#define S3C2410_ADC_SIZE 0x14 -#define S3C2410_SPI0_BASE 0x59000000 -#define S3C2410_SPI1_BASE 0x59000020 -#define S3C2410_SDI_BASE 0x5a000000 /* SD Interface */ -#define S3C2410_SDI_SIZE 0x44 - -#define S3C2410_REG_BASE 0x48000000 -#define S3C2410_REG_SIZE 0x13000000 -/* interrupt control (additional defs for 2410) */ -#define ICU_LEN (32+11) - -#define INTCTL_SUBSRCPND 0x18 /* sub source pending (2410 only) */ -#define INTCTL_INTSUBMSK 0x1c /* sub mask (2410 only) */ - -/* 2410 has more than 32 interrupt sources. These are sub-sources - * that are OR-ed into main interrupt sources, and controlled via - * SUBSRCPND and SUBSRCMSK registers */ - -#define S3C2410_SUBIRQ_MIN 32 -#define S3C2410_SUBIRQ_MAX (32+10) - -/* cascaded to INT_ADCTC */ -#define S3C2410_INT_ADC (S3C2410_SUBIRQ_MIN+10) /* AD converter */ -#define S3C2410_INT_TC (S3C2410_SUBIRQ_MIN+9) /* Touch screen */ -/* cascaded to INT_UART2 */ -#define S3C2410_INT_ERR2 (S3C2410_SUBIRQ_MIN+8) /* UART2 Error interrupt */ -#define S3C2410_INT_TXD2 (S3C2410_SUBIRQ_MIN+7) /* UART2 Tx interrupt */ -#define S3C2410_INT_RXD2 (S3C2410_SUBIRQ_MIN+6) /* UART2 Rx interrupt */ -/* cascaded to INT_UART1 */ -#define S3C2410_INT_ERR1 (S3C2410_SUBIRQ_MIN+5) /* UART1 Error interrupt */ -#define S3C2410_INT_TXD1 (S3C2410_SUBIRQ_MIN+4) /* UART1 Tx interrupt */ -#define S3C2410_INT_RXD1 (S3C2410_SUBIRQ_MIN+3) /* UART1 Rx interrupt */ -/* cascaded to INT_UART0 */ -#define S3C2410_INT_ERR0 (S3C2410_SUBIRQ_MIN+2) /* UART0 Error interrupt */ -#define S3C2410_INT_TXD0 (S3C2410_SUBIRQ_MIN+1) /* UART0 Tx interrupt */ -#define S3C2410_INT_RXD0 (S3C2410_SUBIRQ_MIN+0) /* UART0 Rx interrupt */ - -#define S3C2410_INTCTL_SIZE 0x20 +/* interrupt control */ +#define S3C2410_SUBIRQ_MAX (S3C24X0_SUBIRQ_MIN+10) - /* Clock control */ -#define CLKMAN_LOCKTIME 0x00 -#define CLKMAN_MPLLCON 0x04 -#define CLKMAN_UPLLCON 0x08 -#define CLKMAN_CLKCON 0x0c -#define CLKCON_SPI (1<<18) -#define CLKCON_IIS (1<<17) -#define CLKCON_IIC (1<<16) -#define CLKCON_ADC (1<<15) -#define CLKCON_RTC (1<<14) -#define CLKCON_GPIO (1<<13) -#define CLKCON_UART2 (1<<12) -#define CLKCON_UART1 (1<<11) -#define CLKCON_UART0 (1<<10) /* PCLK to UART0 */ -#define CLKCON_SDI (1<<9) -#define CLKCON_TIMER (1<<8) /* PCLK to TIMER */ -#define CLKCON_USBD (1<<7) /* PCLK to USB device controller */ -#define CLKCON_USBH (1<<6) /* PCLK to USB host controller */ -#define CLKCON_LCDC (1<<5) /* PCLK to LCD controller */ -#define CLKCON_NANDFC (1<<4) /* PCLK to NAND Flash controller */ -#define CLKCON_IDLE (1<<2) /* 1=transition to IDLE mode */ +/* CLKMAN_CLKCON */ #define CLKCON_STOP (1<<0) /* 1=transition to STOP mode */ -#define CLKMAN_CLKSLOW 0x10 -#define CLKMAN_CLKDIVN 0x14 +/* CLKMAN_CLKDIVN */ #define CLKDIVN_HDIVN (1<<1) /* hclk=fclk/2 */ -#define CLKDIVN_PDIVN (1<<0) /* pclk=hclk/2 */ /* NAND Flash controller */ -#define NANDFC_NFCONF 0x00 /* Configuration */ +#define S3C2410_NANDFC_SIZE 0x18 +/* NANDFC_NFCONF */ #define NFCONF_ENABLE (1<<15) /* NAND controller enabled */ #define NFCONF_ECC (1<<12) /* Initialize ECC decoder/encoder */ #define NFCONF_FCE (1<<11) /* Flash chip enabled */ @@ -155,127 +72,18 @@ #define NANDFC_NFADDR 0x08 /* address */ #define NANDFC_NFDATA 0x0c /* data */ #define NANDFC_NFSTAT 0x10 /* operation status */ -#define NFSTAT_READY (1<<0) /* NAND flash memory ready/busy status */ #define NANDFC_NFECC 0x14 /* ecc */ /* GPIO */ -#define GPIO_PACON 0x00 /* port A configuration */ -#define PCON_INPUT 0 /* Input port */ -#define PCON_OUTPUT 1 /* Output port */ -#define PCON_ALTFUN 2 /* Alternate function */ -#define PCON_ALTFUN2 3 /* Alternate function */ -#define GPIO_PADAT 0x04 /* port A data */ -#define GPIO_PBCON 0x10 -#define GPIO_PBDAT 0x14 -#define GPIO_PBUP 0x18 -#define GPIO_PCCON 0x20 -#define GPIO_PCDAT 0x24 -#define GPIO_PCUP 0x28 -#define GPIO_PDCON 0x30 -#define GPIO_PDDAT 0x34 -#define GPIO_PDUP 0x38 -#define GPIO_PECON 0x40 -#define GPIO_PEDAT 0x44 -#define GPIO_PEUP 0x48 -#define GPIO_PFCON 0x50 -#define GPIO_PFDAT 0x54 -#define GPIO_PFUP 0x58 -#define GPIO_PGCON 0x60 -#define GPIO_PGDAT 0x64 -#define GPIO_PGUP 0x68 -#define GPIO_PHCON 0x70 -#define GPIO_PHDAT 0x74 -#define GPIO_PHUP 0x78 -#define GPIO_MISCCR 0x80 /* miscellaneous control */ -#define GPIO_DCLKCON 0x84 /* DCLK 0/1 */ -#define GPIO_EXTINT(n) (0x88+4*(n)) /* external int control 0/1/2 */ -#define GPIO_EINTFLT(n) (0x94+4*(n)) /* external int filter control 0..3 */ -#define GPIO_EINTMASK 0xa4 -#define GPIO_EINTPEND 0xa8 -#define GPIO_GSTATUS0 0xac /* external pin status */ -#define GPIO_GSTATUS1 0xb0 /* external pin status */ - -#define GPIO_SET_FUNC(v,port,func) \ - (((v) & ~(3<<(2*(port))))|((func)<<(2*(port)))) - -#define EXTINTR_LOW 0x00 -#define EXTINTR_HIGH 0x01 -#define EXTINTR_FALLING 0x02 -#define EXTINTR_RISING 0x04 -#define EXTINTR_BOTH 0x06 +#define S3C2410_GPIO_SIZE 0xb4 /* SD interface */ -#define SDI_CON 0x00 -#define SDI_PRE 0x04 -#define SDI_CARG 0x08 -#define SDI_CCON 0x0c -#define CCON_ABORDCMD (1<<12) /* Abort SDIO CMD12/52 */ -#define CCON_WITHDATA (1<<11) /* CMD with data */ -#define CCON_LONGRSP (1<<10) /* 136 bit response */ -#define CCON_WAITRSP (1<<9) /* Host waits for response */ -#define CCON_CMD_START (1<<8) -#define CCON_CMDINDEX_MASK (0x7F) /* Command number index */ -#define SDI_CSTA 0x10 -#define CSTA_RSPFAIL (1<<12) -#define CSTA_CMDSENT (1<<11) -#define CSTA_CMDTOUT (1<<10) -#define CSTA_RSPFIN (1<<9) -#define CSTA_CMDON (1<<8) -#define SDI_RSP0 0x14 -#define SDI_RSP1 0x18 -#define SDI_RSP2 0x1c -#define SDI_RSP3 0x20 -#define SDI_DTIMER 0x24 -#define SDI_BSIZE 0x28 -#define SDI_DCON 0x2c -#define DCON_PRDTYPE (1<<21) -#define DCON_TARSP (1<<20) /* Transmit after response */ -#define DCON_RACMD (1<<19) /* Receive after command */ -#define DCON_BACMD (1<<18) /* Busy after command */ -#define DCON_BLKMODE (1<<17) /* Stream/Block mode */ -#define DCON_WIDEBUS (1<<16) /* Standard/Wide bus */ -#define DCON_ENDMA (1<<15) /* DMA Enable */ +#define S3C2410_SDI_SIZE 0x44 #define DCON_STOP (1<<14) /* Force the transfer to stop */ -/* Determine the direction of the data transfer */ -#define DCON_DATA_READY (0<<12) /* No transfer */ -#define DCON_ONLYBUST (1<<12) /* Check if busy */ -#define DCON_DATA_RECEIVE (2<<12) /* Receive data from SD */ -#define DCON_DATA_TRANSMIT (3<<12) /* Send data to SD */ -#define DCON_BLKNUM_MASK (0x7FF) /* Block number */ -#define SDI_DCNT 0x30 -#define SDI_DSTA 0x34 -#define SDI_FSTA 0x38 -#define SDI_DAT 0x3c -#define SDI_IMSK 0x40 /* Interrupt mask */ +#define S3C2410_SDI_DAT 0x3c +#define S3C2410_SDI_IMSK 0x40 /* Interrupt mask */ /* ADC */ -/* XXX: ADCCON register is common to both S3C2410 and S3C2400, - * but other registers are different. - */ -#define ADC_ADCCON 0x00 -#define ADCCON_ENABLE_START (1<<0) -#define ADCCON_READ_START (1<<1) -#define ADCCON_STDBM (1<<2) -#define ADCCON_SEL_MUX_SHIFT 3 -#define ADCCON_SEL_MUX_MASK (0x7< #include #include -#include +#include #include #define S3C2XX0_XTAL_CLK 12000000 @@ -190,20 +190,20 @@ if (type == SYS_RES_IRQ && start == end) { switch (start) { case S3C24X0_INT_ADCTC: - start = S3C2410_INT_TC; - end = S3C2410_INT_ADC; + start = S3C24X0_INT_TC; + end = S3C24X0_INT_ADC; break; - case S3C2410_INT_UART0: - start = S3C2410_INT_RXD0; - end = S3C2410_INT_ERR0; + case S3C24X0_INT_UART0: + start = S3C24X0_INT_RXD0; + end = S3C24X0_INT_ERR0; break; - case S3C2410_INT_UART1: - start = S3C2410_INT_RXD1; - end = S3C2410_INT_ERR1; + case S3C24X0_INT_UART1: + start = S3C24X0_INT_RXD1; + end = S3C24X0_INT_ERR1; break; - case S3C2410_INT_UART2: - start = S3C2410_INT_RXD2; - end = S3C2410_INT_ERR2; + case S3C24X0_INT_UART2: + start = S3C24X0_INT_RXD2; + end = S3C24X0_INT_ERR2; break; default: break; @@ -304,43 +304,43 @@ sc->sc_sx.sc_iot = iot = &s3c2xx0_bs_tag; if (bus_space_map(iot, - S3C2410_INTCTL_BASE, S3C2410_INTCTL_SIZE, + S3C24X0_INTCTL_BASE, S3C24X0_INTCTL_SIZE, BUS_SPACE_MAP_LINEAR, &sc->sc_sx.sc_intctl_ioh)) panic("Cannot map registers"); /* Map the GPIO registers */ - if (bus_space_map(iot, S3C2410_GPIO_BASE, S3C2410_GPIO_SIZE, + if (bus_space_map(iot, S3C24X0_GPIO_BASE, S3C2410_GPIO_SIZE, 0, &sc->sc_sx.sc_gpio_ioh)) panic("Cannot map GPIO registers"); /* Memory controller */ - if (bus_space_map(iot, S3C2410_MEMCTL_BASE, + if (bus_space_map(iot, S3C24X0_MEMCTL_BASE, S3C24X0_MEMCTL_SIZE, 0, &sc->sc_sx.sc_memctl_ioh)) panic("cannot map MEMC"); /* Clock manager */ - if (bus_space_map(iot, S3C2410_CLKMAN_BASE, + if (bus_space_map(iot, S3C24X0_CLKMAN_BASE, S3C24X0_CLKMAN_SIZE, 0, &sc->sc_sx.sc_clkman_ioh)) panic("cannot map clock"); /* LCD controller */ - if (bus_space_map(iot, S3C2410_LCDC_BASE, - S3C2410_LCDC_SIZE, 0, &sc->sc_sx.sc_lcd_ioh)) + if (bus_space_map(iot, S3C24X0_LCDC_BASE, + S3C24X0_LCDC_SIZE, 0, &sc->sc_sx.sc_lcd_ioh)) panic("cannot map LCD"); /* MMC/SD */ - if (bus_space_map(iot, S3C2410_SDI_BASE, + if (bus_space_map(iot, S3C24X0_SDI_BASE, S3C2410_SDI_SIZE, 0, &sc->sc_sx.sc_mci_ioh)) panic("cannot map MMC/SD"); /* I2C */ - if (bus_space_map(iot, S3C2410_IIC_BASE, + if (bus_space_map(iot, S3C24X0_IIC_BASE, S3C24X0_IIC_SIZE, 0, &sc->sc_sx.sc_iic_ioh)) panic("cannot map IIC"); #if 0 /* Real time clock */ - if (bus_space_map(iot, S3C2410_RTC_BASE, + if (bus_space_map(iot, S3C24X0_RTC_BASE, S3C24X0_RTC_SIZE, 0, &sc->sc_sx.sc_rtc_ioh)) FAIL("RTC"); #endif - if (bus_space_map(iot, S3C2410_TIMER_BASE, + if (bus_space_map(iot, S3C24X0_TIMER_BASE, S3C24X0_TIMER_SIZE, 0, &sc->sc_timer_ioh)) panic("cannot map TIMER"); @@ -360,33 +360,33 @@ * Attach children devices */ s3c2xx0_softc->s3c2xx0_irq_rman.rm_type = RMAN_ARRAY; - s3c2xx0_softc->s3c2xx0_irq_rman.rm_descr = "S3C2410 IRQs"; + s3c2xx0_softc->s3c2xx0_irq_rman.rm_descr = "S3C24X0 IRQs"; s3c2xx0_softc->s3c2xx0_mem_rman.rm_type = RMAN_ARRAY; - s3c2xx0_softc->s3c2xx0_mem_rman.rm_descr = "S3C2410 Memory"; + s3c2xx0_softc->s3c2xx0_mem_rman.rm_descr = "S3C24X0 Memory"; if (rman_init(&s3c2xx0_softc->s3c2xx0_irq_rman) != 0 || rman_manage_region(&s3c2xx0_softc->s3c2xx0_irq_rman, 0, - S3C2410_SUBIRQ_MAX - 1) != 0) - panic("s3c2410_attach: failed to set up IRQ rman"); + S3C2410_SUBIRQ_MAX) != 0) + panic("s3c24x0_attach: failed to set up IRQ rman"); /* Manage the registor memory space */ if (rman_init(&s3c2xx0_softc->s3c2xx0_mem_rman) != 0 || - rman_manage_region(&s3c2xx0_softc->s3c2xx0_mem_rman, S3C2410_REG_BASE, - S3C2410_REG_BASE + S3C2410_REG_SIZE) != 0) - panic("s3c2410_attach: failed to set up register rman"); + rman_manage_region(&s3c2xx0_softc->s3c2xx0_mem_rman, S3C24X0_REG_BASE, + S3C24X0_REG_BASE + S3C24X0_REG_SIZE) != 0) + panic("s3c24x0_attach: failed to set up register rman"); s3c24x0_add_child(dev, 0, "nand", 0); s3c24x0_add_child(dev, 0, "timer", 0); /* Add the MMC/SD and set it's irq/registers */ child = s3c24x0_add_child(dev, 0, "s3c24x0_mci", 0); - bus_set_resource(child, SYS_RES_IRQ, 0, S3C2410_INT_SDI, 1); - bus_set_resource(child, SYS_RES_IOPORT, 0, S3C2410_SDI_BASE, + bus_set_resource(child, SYS_RES_IRQ, 0, S3C24X0_INT_SDI, 1); + bus_set_resource(child, SYS_RES_IOPORT, 0, S3C24X0_SDI_BASE, S3C2410_SDI_SIZE); /* Add the uart and set it's irq and registers */ child = s3c24x0_add_child(dev, 0, "uart", 0); - bus_set_resource(child, SYS_RES_IRQ, 0, S3C2410_INT_UART0, 1); - bus_set_resource(child, SYS_RES_IOPORT, 0, S3C2410_UART0_BASE, - S3C2410_UART_BASE(1) - S3C2410_UART0_BASE); + bus_set_resource(child, SYS_RES_IRQ, 0, S3C24X0_INT_UART0, 1); + bus_set_resource(child, SYS_RES_IOPORT, 0, S3C24X0_UART0_BASE, + S3C24X0_UART_BASE(1) - S3C24X0_UART0_BASE); bus_generic_probe(dev); bus_generic_attach(dev); @@ -465,7 +465,7 @@ { (void) disable_interrupts(I32_bit|F32_bit); - *(volatile unsigned int *)(S3C2410_WDT_BASE + WDT_WTCON) + *(volatile unsigned int *)(S3C24X0_WDT_BASE + WDT_WTCON) = (0 << WTCON_PRESCALE_SHIFT) | WTCON_ENABLE | WTCON_CLKSEL_16 | WTCON_ENRST; for(;;); @@ -497,9 +497,9 @@ switch (irq) { case S3C24X0_INT_ADCTC: - case S3C2410_INT_UART0: - case S3C2410_INT_UART1: - case S3C2410_INT_UART2: + case S3C24X0_INT_UART0: + case S3C24X0_INT_UART1: + case S3C24X0_INT_UART2: /* Find the sub IRQ */ irq = 0x7ff; irq &= bus_space_read_4(&s3c2xx0_bs_tag, @@ -516,7 +516,7 @@ s3c2xx0_softc->sc_intctl_ioh, INTCTL_SUBSRCPND, (1 << irq)); - return (S3C2410_SUBIRQ_MIN + irq); + return (S3C24X0_SUBIRQ_MIN + irq); } return (irq); @@ -529,7 +529,7 @@ { u_int32_t mask; - if (irq < S3C2410_SUBIRQ_MIN) { + if (irq < S3C24X0_SUBIRQ_MIN) { mask = bus_space_read_4(&s3c2xx0_bs_tag, s3c2xx0_softc->sc_intctl_ioh, INTCTL_INTMSK); mask |= (1 << irq); @@ -538,7 +538,7 @@ } else { mask = bus_space_read_4(&s3c2xx0_bs_tag, s3c2xx0_softc->sc_intctl_ioh, INTCTL_INTSUBMSK); - mask |= (1 << (irq - S3C2410_SUBIRQ_MIN)); + mask |= (1 << (irq - S3C24X0_SUBIRQ_MIN)); bus_space_write_4(&s3c2xx0_bs_tag, s3c2xx0_softc->sc_intctl_ioh, INTCTL_INTSUBMSK, mask); } @@ -549,35 +549,35 @@ { u_int32_t mask; - if (irq >= S3C2410_SUBIRQ_MIN) { + if (irq >= S3C24X0_SUBIRQ_MIN) { mask = bus_space_read_4(&s3c2xx0_bs_tag, s3c2xx0_softc->sc_intctl_ioh, INTCTL_INTSUBMSK); - mask &= ~(1 << (irq - S3C2410_SUBIRQ_MIN)); + mask &= ~(1 << (irq - S3C24X0_SUBIRQ_MIN)); bus_space_write_4(&s3c2xx0_bs_tag, s3c2xx0_softc->sc_intctl_ioh, INTCTL_INTSUBMSK, mask); /* Find the other irq to unmask */ switch (irq) { - case S3C2410_INT_ADC: - case S3C2410_INT_TC: + case S3C24X0_INT_ADC: + case S3C24X0_INT_TC: irq = S3C24X0_INT_ADCTC; break; - case S3C2410_INT_RXD0: - case S3C2410_INT_TXD0: - case S3C2410_INT_ERR0: - irq = S3C2410_INT_UART0; + case S3C24X0_INT_RXD0: + case S3C24X0_INT_TXD0: + case S3C24X0_INT_ERR0: + irq = S3C24X0_INT_UART0; break; - case S3C2410_INT_RXD1: - case S3C2410_INT_TXD1: - case S3C2410_INT_ERR1: - irq = S3C2410_INT_UART1; + case S3C24X0_INT_RXD1: + case S3C24X0_INT_TXD1: + case S3C24X0_INT_ERR1: + irq = S3C24X0_INT_UART1; break; - case S3C2410_INT_RXD2: - case S3C2410_INT_TXD2: - case S3C2410_INT_ERR2: - irq = S3C2410_INT_UART2; + case S3C24X0_INT_RXD2: + case S3C24X0_INT_TXD2: + case S3C24X0_INT_ERR2: + irq = S3C24X0_INT_UART2; break; default: /* We don't know which other IRQ to unmask */ ==== //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0_mci.c#5 (text+ko) ==== @@ -286,7 +286,7 @@ vaddr = cmd->data->data; write_cnt = cmd->data->len; while (write_cnt > 0) { - WR4(sc, SDI_DAT, *(vaddr++)); + WR4(sc, S3C2410_SDI_DAT, *(vaddr++)); write_cnt -= 4; } } @@ -294,7 +294,7 @@ vaddr = cmd->data->data; read_cnt = cmd->data->len; while (read_cnt > 0) { - *(vaddr++) = RD4(sc, SDI_DAT); + *(vaddr++) = RD4(sc, S3C2410_SDI_DAT); read_cnt -= 4; } } ==== //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0_nand.c#4 (text+ko) ==== @@ -131,7 +131,7 @@ sc->sc_sx.sc_iot = iot = &s3c2xx0_bs_tag; - if (bus_space_map(sc->sc_sx.sc_iot, S3C2410_NANDFC_BASE, + if (bus_space_map(sc->sc_sx.sc_iot, S3C24X0_NANDFC_BASE, S3C2410_NANDFC_SIZE, 0, &sc->sc_nand_ioh)) panic("Cannot map NAND registers"); ==== //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0reg.h#2 (text+ko) ==== @@ -40,6 +40,39 @@ #ifndef _ARM_S3C2XX0_S3C24X0REG_H_ #define _ARM_S3C2XX0_S3C24X0REG_H_ +/* common definitions for S3C2800, S3C2410 and S3C2440 */ +#include + +/* + * Physical address of integrated peripherals + */ +#define S3C24X0_MEMCTL_BASE 0x48000000 /* memory controller */ +#define S3C24X0_USBHC_BASE 0x49000000 /* USB Host controller */ +#define S3C24X0_INTCTL_BASE 0x4a000000 /* Interrupt controller */ +#define S3C24X0_INTCTL_SIZE 0x20 +#define S3C24X0_DMAC_BASE 0x4b000000 +#define S3C24X0_DMAC_SIZE 0xe4 +#define S3C24X0_CLKMAN_BASE 0x4c000000 /* clock & power management */ +#define S3C24X0_LCDC_BASE 0x4d000000 /* LCD controller */ +#define S3C24X0_LCDC_SIZE 0x64 +#define S3C24X0_NANDFC_BASE 0x4e000000 /* NAND Flash controller */ +#define S3C24X0_UART0_BASE 0x50000000 +#define S3C24X0_UART_BASE(n) (S3C24X0_UART0_BASE+0x4000*(n)) +#define S3C24X0_TIMER_BASE 0x51000000 +#define S3C24X0_USBDC_BASE 0x5200140 +#define S3C24X0_USBDC_SIZE 0x130 +#define S3C24X0_WDT_BASE 0x53000000 +#define S3C24X0_IIC_BASE 0x54000000 +#define S3C24X0_IIS_BASE 0x55000000 +#define S3C24X0_GPIO_BASE 0x56000000 +#define S3C24X0_ADC_BASE 0x58000000 +#define S3C24X0_SPI0_BASE 0x59000000 +#define S3C24X0_SPI1_BASE 0x59000020 +#define S3C24X0_SDI_BASE 0x5a000000 /* SD Interface */ + +#define S3C24X0_REG_BASE 0x48000000 +#define S3C24X0_REG_SIZE 0x13000000 + /* Memory controller */ #define MEMCTL_BWSCON 0x00 /* Bus width and wait status */ #define BWSCON_DW0_SHIFT 1 /* bank0 is odd */ @@ -101,31 +134,27 @@ #define INTCTL_PRIORITY 0x0c /* IRQ Priority control */ #define INTCTL_INTPND 0x10 /* Interrupt request status */ #define INTCTL_INTOFFSET 0x14 /* Interrupt request source */ +#define INTCTL_SUBSRCPND 0x18 /* sub source pending */ +#define INTCTL_INTSUBMSK 0x1c /* sub mask */ /* Interrupt source */ -#define S3C24X0_INT_ADCTC 31 /* ADC (and TC for 2410 */ +#define S3C24X0_INT_ADCTC 31 /* ADC (and TC for 2410) */ #define S3C24X0_INT_RTC 30 /* RTC alarm */ -#define S3C2400_INT_UTXD1 29 /* UART1 Tx INT (2400 only) */ -#define S3C2410_INT_SPI1 29 /* SPI 1 (2410 only) */ -#define S3C2400_INT_UTXD0 28 /* UART0 Tx INT (2400 only) */ -#define S3C2410_INT_UART0 28 /* UART0 (2410 only) */ +#define S3C24X0_INT_SPI1 29 /* SPI 1 */ +#define S3C24X0_INT_UART0 28 /* UART0 */ #define S3C24X0_INT_IIC 27 #define S3C24X0_INT_USBH 26 /* USB Host */ #define S3C24X0_INT_USBD 25 /* USB Device */ -#define S3C2400_INT_URXD1 24 /* UART1 Rx INT (2400 only) */ -#define S3C2400_INT_URXD0 23 /* UART0 Rx INT (2400 only) */ -#define S3C2410_INT_UART1 23 /* UART0 (2410 only) */ +#define S3C24X0_INT_UART1 23 /* UART0 (2410 only) */ #define S3C24X0_INT_SPI0 22 /* SPI 0 */ -#define S3C2400_INT_MMC 21 -#define S3C2410_INT_SDI 21 +#define S3C24X0_INT_SDI 21 #define S3C24X0_INT_DMA3 20 #define S3C24X0_INT_DMA2 19 #define S3C24X0_INT_DMA1 18 #define S3C24X0_INT_DMA0 17 -#define S3C2410_INT_LCD 16 +#define S3C24X0_INT_LCD 16 -#define S3C2400_INT_UERR 15 /* UART 0/1 Error int (2400) */ -#define S3C2410_INT_UART2 15 /* UART2 int (2410) */ +#define S3C24X0_INT_UART2 15 /* UART2 int (2410) */ #define S3C24X0_INT_TIMER4 14 #define S3C24X0_INT_TIMER3 13 #define S3C24X0_INT_TIMER2 12 @@ -134,11 +163,32 @@ #define S3C24X0_INT_TIMER(n) (10+(n)) /* timer interrupt [4:0] */ #define S3C24X0_INT_WDT 9 /* Watch dog timer */ #define S3C24X0_INT_TICK 8 -#define S3C2410_INT_BFLT 7 /* Battery fault */ -#define S3C2410_INT_8_23 5 /* Ext int 8..23 */ -#define S3C2410_INT_4_7 4 /* Ext int 4..7 */ -#define S3C24X0_INT_EXT(n) (n) /* External interrupt [7:0] for 2400, - * [3:0] for 2410 */ +#define S3C24X0_INT_BFLT 7 /* Battery fault */ +#define S3C24X0_INT_8_23 5 /* Ext int 8..23 */ +#define S3C24X0_INT_4_7 4 /* Ext int 4..7 */ +#define S3C24X0_INT_EXT(n) (n) /* External interrupt [3:0] for 24{1,4}0 */ + +/* 24{1,4}0 has more than 32 interrupt sources. These are sub-sources + * that are OR-ed into main interrupt sources, and controlled via + * SUBSRCPND and SUBSRCMSK registers */ +#define S3C24X0_SUBIRQ_MIN 32 + +/* cascaded to INT_ADCTC */ +#define S3C24X0_INT_ADC (S3C24X0_SUBIRQ_MIN+10) /* AD converter */ +#define S3C24X0_INT_TC (S3C24X0_SUBIRQ_MIN+9) /* Touch screen */ +/* cascaded to INT_UART2 */ +#define S3C24X0_INT_ERR2 (S3C24X0_SUBIRQ_MIN+8) /* UART2 Error interrupt */ +#define S3C24X0_INT_TXD2 (S3C24X0_SUBIRQ_MIN+7) /* UART2 Tx interrupt */ +#define S3C24X0_INT_RXD2 (S3C24X0_SUBIRQ_MIN+6) /* UART2 Rx interrupt */ +/* cascaded to INT_UART1 */ +#define S3C24X0_INT_ERR1 (S3C24X0_SUBIRQ_MIN+5) /* UART1 Error interrupt */ +#define S3C24X0_INT_TXD1 (S3C24X0_SUBIRQ_MIN+4) /* UART1 Tx interrupt */ +#define S3C24X0_INT_RXD1 (S3C24X0_SUBIRQ_MIN+3) /* UART1 Rx interrupt */ +/* cascaded to INT_UART0 */ +#define S3C24X0_INT_ERR0 (S3C24X0_SUBIRQ_MIN+2) /* UART0 Error interrupt */ +#define S3C24X0_INT_TXD0 (S3C24X0_SUBIRQ_MIN+1) /* UART0 Tx interrupt */ +#define S3C24X0_INT_RXD0 (S3C24X0_SUBIRQ_MIN+0) /* UART0 Rx interrupt */ + /* DMA controller */ /* XXX */ @@ -153,6 +203,25 @@ #define PLLCON_SDIV_SHIFT 0 #define PLLCON_SDIV_MASK (0x03< http://perforce.freebsd.org/chv.cgi?CH=157361 Change 157361 by hselasky@hselasky_laptop001 on 2009/02/08 11:42:15 IFC @ 157360 Affected files ... .. //depot/projects/usb/src/sys/amd64/amd64/exception.S#9 integrate .. //depot/projects/usb/src/sys/amd64/amd64/machdep.c#12 integrate .. //depot/projects/usb/src/sys/amd64/amd64/mp_machdep.c#16 integrate .. //depot/projects/usb/src/sys/amd64/conf/NOTES#14 integrate .. //depot/projects/usb/src/sys/amd64/include/intr_machdep.h#7 integrate .. //depot/projects/usb/src/sys/amd64/include/legacyvar.h#3 integrate .. //depot/projects/usb/src/sys/amd64/pci/pci_bus.c#6 integrate .. //depot/projects/usb/src/sys/arm/arm/busdma_machdep.c#15 integrate .. //depot/projects/usb/src/sys/arm/arm/dump_machdep.c#6 integrate .. //depot/projects/usb/src/sys/arm/arm/elf_trampoline.c#10 integrate .. //depot/projects/usb/src/sys/arm/arm/pmap.c#13 integrate .. //depot/projects/usb/src/sys/arm/arm/vm_machdep.c#8 integrate .. //depot/projects/usb/src/sys/arm/conf/AVILA#11 integrate .. //depot/projects/usb/src/sys/arm/conf/AVILA.hints#4 integrate .. //depot/projects/usb/src/sys/arm/include/atomic.h#6 integrate .. //depot/projects/usb/src/sys/arm/sa11x0/assabet_machdep.c#7 integrate .. //depot/projects/usb/src/sys/arm/xscale/ixp425/avila_machdep.c#10 integrate .. //depot/projects/usb/src/sys/arm/xscale/ixp425/files.ixp425#6 integrate .. //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425.c#7 integrate .. //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425reg.h#4 integrate .. //depot/projects/usb/src/sys/conf/NOTES#27 integrate .. //depot/projects/usb/src/sys/conf/files#50 integrate .. //depot/projects/usb/src/sys/conf/options#20 integrate .. //depot/projects/usb/src/sys/conf/options.amd64#7 integrate .. //depot/projects/usb/src/sys/conf/options.i386#9 integrate .. //depot/projects/usb/src/sys/conf/options.ia64#3 integrate .. //depot/projects/usb/src/sys/conf/options.mips#3 integrate .. //depot/projects/usb/src/sys/conf/options.pc98#7 integrate .. //depot/projects/usb/src/sys/crypto/via/padlock.c#8 integrate .. //depot/projects/usb/src/sys/dev/acpi_support/acpi_panasonic.c#4 integrate .. //depot/projects/usb/src/sys/dev/acpica/acpi_pcib_acpi.c#5 integrate .. //depot/projects/usb/src/sys/dev/ae/if_ae.c#3 integrate .. //depot/projects/usb/src/sys/dev/agp/agp.c#5 integrate .. //depot/projects/usb/src/sys/dev/an/if_an.c#7 integrate .. //depot/projects/usb/src/sys/dev/an/if_anreg.h#4 integrate .. //depot/projects/usb/src/sys/dev/ata/ata-disk.c#11 integrate .. //depot/projects/usb/src/sys/dev/ata/atapi-cam.c#9 integrate .. //depot/projects/usb/src/sys/dev/ata/atapi-cd.c#8 integrate .. //depot/projects/usb/src/sys/dev/ata/atapi-fd.c#6 integrate .. //depot/projects/usb/src/sys/dev/ata/atapi-tape.c#7 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ah_regdomain.c#4 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212.h#3 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c#4 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_rfgain.c#3 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c#3 integrate .. //depot/projects/usb/src/sys/dev/ath/if_ath.c#16 integrate .. //depot/projects/usb/src/sys/dev/ath/if_athioctl.h#6 integrate .. //depot/projects/usb/src/sys/dev/atkbdc/atkbdc_isa.c#3 integrate .. //depot/projects/usb/src/sys/dev/bge/if_bge.c#14 integrate .. //depot/projects/usb/src/sys/dev/bm/if_bm.c#6 integrate .. //depot/projects/usb/src/sys/dev/cardbus/cardbus.c#9 integrate .. //depot/projects/usb/src/sys/dev/cardbus/cardbus_device.c#6 integrate .. //depot/projects/usb/src/sys/dev/cfi/cfi_bus_ixp4xx.c#1 branch .. //depot/projects/usb/src/sys/dev/cfi/cfi_core.c#2 integrate .. //depot/projects/usb/src/sys/dev/cfi/cfi_dev.c#2 integrate .. //depot/projects/usb/src/sys/dev/cfi/cfi_reg.h#2 integrate .. //depot/projects/usb/src/sys/dev/cfi/cfi_var.h#2 integrate .. //depot/projects/usb/src/sys/dev/exca/exca.c#5 integrate .. //depot/projects/usb/src/sys/dev/firewire/firewire.c#9 integrate .. //depot/projects/usb/src/sys/dev/firewire/fwohci.c#6 integrate .. //depot/projects/usb/src/sys/dev/firewire/fwohci_pci.c#6 integrate .. //depot/projects/usb/src/sys/dev/firewire/fwohcivar.h#4 integrate .. //depot/projects/usb/src/sys/dev/firewire/sbp.c#6 integrate .. //depot/projects/usb/src/sys/dev/fxp/if_fxp.c#8 integrate .. //depot/projects/usb/src/sys/dev/hifn/hifn7751.c#4 integrate .. //depot/projects/usb/src/sys/dev/ichsmb/ichsmb.c#6 integrate .. //depot/projects/usb/src/sys/dev/ipmi/ipmi_acpi.c#2 integrate .. //depot/projects/usb/src/sys/dev/ipmi/ipmi_smbios.c#4 integrate .. //depot/projects/usb/src/sys/dev/kbdmux/kbdmux.c#8 integrate .. //depot/projects/usb/src/sys/dev/lmc/if_lmc.c#9 integrate .. //depot/projects/usb/src/sys/dev/lmc/if_lmc.h#5 integrate .. //depot/projects/usb/src/sys/dev/mmc/mmc.c#8 integrate .. //depot/projects/usb/src/sys/dev/mmc/mmcreg.h#4 integrate .. //depot/projects/usb/src/sys/dev/my/if_my.c#6 integrate .. //depot/projects/usb/src/sys/dev/nve/if_nve.c#7 integrate .. //depot/projects/usb/src/sys/dev/pccard/card_if.m#2 integrate .. //depot/projects/usb/src/sys/dev/pccard/pccard.c#5 integrate .. //depot/projects/usb/src/sys/dev/pccard/pccard_cis.c#6 integrate .. //depot/projects/usb/src/sys/dev/pccard/pccardvarp.h#4 integrate .. //depot/projects/usb/src/sys/dev/pccbb/pccbb.c#10 integrate .. //depot/projects/usb/src/sys/dev/pccbb/pccbb_pci.c#8 integrate .. //depot/projects/usb/src/sys/dev/pccbb/pccbbvar.h#7 integrate .. //depot/projects/usb/src/sys/dev/pci/pci_user.c#5 integrate .. //depot/projects/usb/src/sys/dev/pci/pcireg.h#9 integrate .. //depot/projects/usb/src/sys/dev/pcn/if_pcn.c#3 integrate .. //depot/projects/usb/src/sys/dev/ppbus/ppbconf.h#7 integrate .. //depot/projects/usb/src/sys/dev/ppc/ppc.c#9 integrate .. //depot/projects/usb/src/sys/dev/ppc/ppcvar.h#5 integrate .. //depot/projects/usb/src/sys/dev/safe/safe.c#5 integrate .. //depot/projects/usb/src/sys/dev/scc/scc_if.m#3 integrate .. //depot/projects/usb/src/sys/dev/si/si.c#6 integrate .. //depot/projects/usb/src/sys/dev/smbus/smb.c#5 integrate .. //depot/projects/usb/src/sys/dev/snp/snp.c#10 integrate .. //depot/projects/usb/src/sys/dev/sound/macio/aoa.c#2 integrate .. //depot/projects/usb/src/sys/dev/sound/macio/aoa.h#2 integrate .. //depot/projects/usb/src/sys/dev/sound/macio/davbus.c#2 integrate .. //depot/projects/usb/src/sys/dev/sound/macio/i2s.c#2 integrate .. //depot/projects/usb/src/sys/dev/sound/macio/snapper.c#2 integrate .. //depot/projects/usb/src/sys/dev/sound/macio/tumbler.c#2 integrate .. //depot/projects/usb/src/sys/dev/usb/if_rum.c#37 integrate .. //depot/projects/usb/src/sys/dev/usb/if_urtw.c#2 integrate .. //depot/projects/usb/src/sys/dev/usb/usbdevs#42 integrate .. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ubtbcmfw2.c#14 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#31 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#28 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.c#28 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_error.c#6 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.c#16 integrate .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_devid.h#28 integrate .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_devtable.h#28 integrate .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_error.h#5 integrate .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_hid.h#7 integrate .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_mfunc.h#5 integrate .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_revision.h#7 integrate .. //depot/projects/usb/src/sys/dev/usb2/input/uhid2.c#16 integrate .. //depot/projects/usb/src/sys/dev/usb2/quirk/usb2_quirk.c#14 integrate .. //depot/projects/usb/src/sys/dev/usb2/quirk/usb2_quirk.h#7 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uftdi2.c#20 integrate .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#25 integrate .. //depot/projects/usb/src/sys/dev/xen/netback/netback.c#2 integrate .. //depot/projects/usb/src/sys/dev/xen/netfront/netfront.c#6 integrate .. //depot/projects/usb/src/sys/fs/fifofs/fifo_vnops.c#9 integrate .. //depot/projects/usb/src/sys/fs/udf/ecma167-udf.h#3 integrate .. //depot/projects/usb/src/sys/fs/udf/udf.h#3 integrate .. //depot/projects/usb/src/sys/fs/udf/udf_vfsops.c#8 integrate .. //depot/projects/usb/src/sys/fs/udf/udf_vnops.c#10 integrate .. //depot/projects/usb/src/sys/geom/geom_subr.c#9 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_bsd.c#8 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_mbr.c#6 integrate .. //depot/projects/usb/src/sys/i386/conf/NOTES#16 integrate .. //depot/projects/usb/src/sys/i386/i386/vm_machdep.c#11 integrate .. //depot/projects/usb/src/sys/i386/xen/clock.c#4 integrate .. //depot/projects/usb/src/sys/i386/xen/xen_machdep.c#7 integrate .. //depot/projects/usb/src/sys/ia64/conf/NOTES#4 integrate .. //depot/projects/usb/src/sys/ia64/ia64/mca.c#3 integrate .. //depot/projects/usb/src/sys/ia64/include/mca.h#2 integrate .. //depot/projects/usb/src/sys/kern/kern_jail.c#16 integrate .. //depot/projects/usb/src/sys/kern/kern_linker.c#12 integrate .. //depot/projects/usb/src/sys/kern/kern_lock.c#11 integrate .. //depot/projects/usb/src/sys/kern/kern_sysctl.c#11 integrate .. //depot/projects/usb/src/sys/kern/subr_autoconf.c#5 integrate .. //depot/projects/usb/src/sys/kern/subr_bus.c#16 integrate .. //depot/projects/usb/src/sys/kern/subr_clist.c#4 integrate .. //depot/projects/usb/src/sys/kern/subr_devstat.c#2 integrate .. //depot/projects/usb/src/sys/kern/subr_disk.c#4 integrate .. //depot/projects/usb/src/sys/kern/subr_firmware.c#8 integrate .. //depot/projects/usb/src/sys/kern/subr_kobj.c#3 integrate .. //depot/projects/usb/src/sys/kern/subr_prf.c#8 integrate .. //depot/projects/usb/src/sys/kern/subr_prof.c#5 integrate .. //depot/projects/usb/src/sys/kern/subr_rman.c#9 integrate .. //depot/projects/usb/src/sys/kern/subr_rtc.c#3 integrate .. //depot/projects/usb/src/sys/kern/subr_taskqueue.c#7 integrate .. //depot/projects/usb/src/sys/kern/subr_witness.c#16 integrate .. //depot/projects/usb/src/sys/kern/sys_generic.c#11 integrate .. //depot/projects/usb/src/sys/kern/tty.c#16 integrate .. //depot/projects/usb/src/sys/kern/tty_inq.c#2 integrate .. //depot/projects/usb/src/sys/kern/tty_outq.c#2 integrate .. //depot/projects/usb/src/sys/kern/uipc_socket.c#16 integrate .. //depot/projects/usb/src/sys/kern/vfs_bio.c#13 integrate .. //depot/projects/usb/src/sys/kern/vfs_init.c#4 integrate .. //depot/projects/usb/src/sys/kern/vfs_mount.c#17 integrate .. //depot/projects/usb/src/sys/kern/vfs_subr.c#17 integrate .. //depot/projects/usb/src/sys/kern/vfs_syscalls.c#16 integrate .. //depot/projects/usb/src/sys/mips/mips/busdma_machdep.c#3 integrate .. //depot/projects/usb/src/sys/modules/libalias/libalias/Makefile#3 integrate .. //depot/projects/usb/src/sys/net/if.c#17 integrate .. //depot/projects/usb/src/sys/net/if_ethersubr.c#14 integrate .. //depot/projects/usb/src/sys/net/rtsock.c#18 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211.c#14 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_crypto.h#8 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_ddb.c#9 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_scan_sta.c#8 integrate .. //depot/projects/usb/src/sys/netatalk/ddp_usrreq.c#6 integrate .. //depot/projects/usb/src/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c#6 integrate .. //depot/projects/usb/src/sys/netinet/in.c#17 integrate .. //depot/projects/usb/src/sys/netinet/in_pcb.c#18 integrate .. //depot/projects/usb/src/sys/netinet/ip_divert.c#13 integrate .. //depot/projects/usb/src/sys/netinet/ip_fw_nat.c#6 integrate .. //depot/projects/usb/src/sys/netinet/ip_ipsec.c#10 integrate .. //depot/projects/usb/src/sys/netinet/ip_output.c#13 integrate .. //depot/projects/usb/src/sys/netinet/libalias/alias.c#6 integrate .. //depot/projects/usb/src/sys/netinet/libalias/alias_db.c#9 integrate .. //depot/projects/usb/src/sys/netinet/libalias/alias_local.h#5 integrate .. //depot/projects/usb/src/sys/netinet/libalias/alias_sctp.c#1 branch .. //depot/projects/usb/src/sys/netinet/libalias/alias_sctp.h#1 branch .. //depot/projects/usb/src/sys/netinet/raw_ip.c#17 integrate .. //depot/projects/usb/src/sys/netinet/sctp_auth.c#9 integrate .. //depot/projects/usb/src/sys/netinet/sctp_constants.h#12 integrate .. //depot/projects/usb/src/sys/netinet/sctp_crc32.c#5 integrate .. //depot/projects/usb/src/sys/netinet/sctp_crc32.h#4 integrate .. //depot/projects/usb/src/sys/netinet/sctp_input.c#13 integrate .. //depot/projects/usb/src/sys/netinet/sctp_os_bsd.h#12 integrate .. //depot/projects/usb/src/sys/netinet/sctp_output.c#14 integrate .. //depot/projects/usb/src/sys/netinet/sctp_pcb.c#14 integrate .. //depot/projects/usb/src/sys/netinet/sctp_pcb.h#13 integrate .. //depot/projects/usb/src/sys/netinet/sctp_sysctl.c#10 integrate .. //depot/projects/usb/src/sys/netinet/sctp_uio.h#11 integrate .. //depot/projects/usb/src/sys/netinet/sctp_usrreq.c#13 integrate .. //depot/projects/usb/src/sys/netinet/sctputil.c#15 integrate .. //depot/projects/usb/src/sys/netinet/sctputil.h#10 integrate .. //depot/projects/usb/src/sys/netinet/tcp_subr.c#17 integrate .. //depot/projects/usb/src/sys/netinet/tcp_usrreq.c#14 integrate .. //depot/projects/usb/src/sys/netinet/udp_usrreq.c#17 integrate .. //depot/projects/usb/src/sys/netinet6/frag6.c#12 integrate .. //depot/projects/usb/src/sys/netinet6/in6.c#16 integrate .. //depot/projects/usb/src/sys/netinet6/in6_pcb.c#14 integrate .. //depot/projects/usb/src/sys/netinet6/in6_src.c#15 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_forward.c#12 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_input.c#16 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_ipsec.c#8 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_output.c#10 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_var.h#11 integrate .. //depot/projects/usb/src/sys/netinet6/nd6_rtr.c#12 integrate .. //depot/projects/usb/src/sys/netinet6/raw_ip6.c#16 integrate .. //depot/projects/usb/src/sys/netinet6/sctp6_usrreq.c#11 integrate .. //depot/projects/usb/src/sys/netinet6/udp6_usrreq.c#16 integrate .. //depot/projects/usb/src/sys/netinet6/vinet6.h#5 integrate .. //depot/projects/usb/src/sys/netipsec/ipsec.c#15 integrate .. //depot/projects/usb/src/sys/netipsec/ipsec.h#12 integrate .. //depot/projects/usb/src/sys/netipsec/ipsec6.h#6 integrate .. //depot/projects/usb/src/sys/opencrypto/cryptosoft.c#7 integrate .. //depot/projects/usb/src/sys/pc98/conf/NOTES#14 integrate .. //depot/projects/usb/src/sys/rpc/clnt_rc.c#5 integrate .. //depot/projects/usb/src/sys/security/audit/audit_pipe.c#12 integrate .. //depot/projects/usb/src/sys/sys/cfictl.h#3 integrate .. //depot/projects/usb/src/sys/sys/clist.h#4 integrate .. //depot/projects/usb/src/sys/sys/conf.h#14 integrate .. //depot/projects/usb/src/sys/sys/elf_common.h#10 integrate .. //depot/projects/usb/src/sys/sys/jail.h#9 integrate .. //depot/projects/usb/src/sys/sys/kobj.h#4 integrate .. //depot/projects/usb/src/sys/sys/lockmgr.h#8 integrate .. //depot/projects/usb/src/sys/sys/mount.h#14 integrate .. //depot/projects/usb/src/sys/sys/pciio.h#3 integrate .. //depot/projects/usb/src/sys/sys/sysctl.h#14 integrate .. //depot/projects/usb/src/sys/sys/tty.h#8 integrate .. //depot/projects/usb/src/sys/sys/ttyqueue.h#3 integrate .. //depot/projects/usb/src/sys/ufs/ffs/ffs_alloc.c#9 integrate Differences ... ==== //depot/projects/usb/src/sys/amd64/amd64/exception.S#9 (text+ko) ==== @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.136 2009/01/14 14:20:08 kib Exp $ + * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.137 2009/02/03 09:01:45 jkoshy Exp $ */ #include "opt_atpic.h" @@ -383,22 +383,24 @@ * NMI handling is special. * * First, NMIs do not respect the state of the processor's RFLAGS.IF - * bit and the NMI handler may be invoked at any time, including when - * the processor is in a critical section with RFLAGS.IF == 0. In - * particular, this means that the processor's GS.base values could be - * inconsistent on entry to the handler, and so we need to read - * MSR_GSBASE to determine if a 'swapgs' is needed. We use '%ebx', a - * C-preserved register, to remember whether to swap GS back on the - * exit path. + * bit. The NMI handler may be entered at any time, including when + * the processor is in a critical section with RFLAGS.IF == 0. + * The processor's GS.base value could be invalid on entry to the + * handler. * * Second, the processor treats NMIs specially, blocking further NMIs - * until an 'iretq' instruction is executed. We therefore need to - * execute the NMI handler with interrupts disabled to prevent a - * nested interrupt from executing an 'iretq' instruction and - * inadvertently taking the processor out of NMI mode. + * until an 'iretq' instruction is executed. We thus need to execute + * the NMI handler with interrupts disabled, to prevent a nested interrupt + * from executing an 'iretq' instruction and inadvertently taking the + * processor out of NMI mode. * - * Third, the NMI handler runs on its own stack (tss_ist1), shared - * with the double fault handler. + * Third, the NMI handler runs on its own stack (tss_ist2). The canonical + * GS.base value for the processor is stored just above the bottom of its + * NMI stack. For NMIs taken from kernel mode, the current value in + * the processor's GS.base is saved at entry to C-preserved register %r12, + * the canonical value for GS.base is then loaded into the processor, and + * the saved value is restored at exit time. For NMIs taken from user mode, + * the cheaper 'SWAPGS' instructions are used for swapping GS.base. */ IDTVEC(nmi) @@ -423,12 +425,22 @@ movq %r15,TF_R15(%rsp) xorl %ebx,%ebx testb $SEL_RPL_MASK,TF_CS(%rsp) - jnz nmi_needswapgs /* we came from userland */ + jnz nmi_fromuserspace + /* + * We've interrupted the kernel. Preserve GS.base in %r12. + */ movl $MSR_GSBASE,%ecx rdmsr - cmpl $VM_MAXUSER_ADDRESS >> 32,%edx - jae nmi_calltrap /* GS.base holds a kernel VA */ -nmi_needswapgs: + movq %rax,%r12 + shlq $32,%rdx + orq %rdx,%r12 + /* Retrieve and load the canonical value for GS.base. */ + movq TF_SIZE(%rsp),%rdx + movl %edx,%eax + shrq $32,%rdx + wrmsr + jmp nmi_calltrap +nmi_fromuserspace: incl %ebx swapgs /* Note: this label is also used by ddb and gdb: */ @@ -439,14 +451,19 @@ MEXITCOUNT #ifdef HWPMC_HOOKS /* - * Check if the current trap was from user mode and if so - * whether the current thread needs a user call chain to be - * captured. We are still in NMI mode at this point. + * Capture a userspace callchain if needed. + * + * - Check if the current trap was from user mode. + * - Check if the current thread is valid. + * - Check if the thread requires a user call chain to be + * captured. + * + * We are still in NMI mode at this point. */ - testb $SEL_RPL_MASK,TF_CS(%rsp) - jz nocallchain - movq PCPU(CURTHREAD),%rax /* curthread present? */ - orq %rax,%rax + testl %ebx,%ebx + jz nocallchain /* not from userspace */ + movq PCPU(CURTHREAD),%rax + orq %rax,%rax /* curthread present? */ jz nocallchain testl $TDP_CALLCHAIN,TD_PFLAGS(%rax) /* flagged for capture? */ jz nocallchain @@ -498,8 +515,18 @@ nocallchain: #endif testl %ebx,%ebx - jz nmi_restoreregs + jz nmi_kernelexit swapgs + jmp nmi_restoreregs +nmi_kernelexit: + /* + * Put back the preserved MSR_GSBASE value. + */ + movl $MSR_GSBASE,%ecx + movq %r12,%rdx + movl %edx,%eax + shrq $32,%rdx + wrmsr nmi_restoreregs: movq TF_RDI(%rsp),%rdi movq TF_RSI(%rsp),%rsi ==== //depot/projects/usb/src/sys/amd64/amd64/machdep.c#12 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.690 2008/09/08 09:59:05 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.691 2009/02/03 09:01:45 jkoshy Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -809,6 +809,9 @@ static char dblfault_stack[PAGE_SIZE] __aligned(16); +static char nmi0_stack[PAGE_SIZE] __aligned(16); +CTASSERT(sizeof(struct nmi_pcpu) == 16); + struct amd64tss common_tss[MAXCPU]; /* software prototypes -- in more palatable form */ @@ -1291,6 +1294,7 @@ caddr_t kmdp; int gsel_tss, x; struct pcpu *pc; + struct nmi_pcpu *np; u_int64_t msr; char *env; @@ -1365,7 +1369,7 @@ setidt(x, &IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0); setidt(IDT_DE, &IDTVEC(div), SDT_SYSIGT, SEL_KPL, 0); setidt(IDT_DB, &IDTVEC(dbg), SDT_SYSIGT, SEL_KPL, 0); - setidt(IDT_NMI, &IDTVEC(nmi), SDT_SYSIGT, SEL_KPL, 1); + setidt(IDT_NMI, &IDTVEC(nmi), SDT_SYSIGT, SEL_KPL, 2); setidt(IDT_BP, &IDTVEC(bpt), SDT_SYSIGT, SEL_UPL, 0); setidt(IDT_OF, &IDTVEC(ofl), SDT_SYSIGT, SEL_KPL, 0); setidt(IDT_BR, &IDTVEC(bnd), SDT_SYSIGT, SEL_KPL, 0); @@ -1438,6 +1442,14 @@ /* doublefault stack space, runs on ist1 */ common_tss[0].tss_ist1 = (long)&dblfault_stack[sizeof(dblfault_stack)]; + /* + * NMI stack, runs on ist2. The pcpu pointer is stored just + * above the start of the ist2 stack. + */ + np = ((struct nmi_pcpu *) &nmi0_stack[sizeof(nmi0_stack)]) - 1; + np->np_pcpu = (register_t) pc; + common_tss[0].tss_ist2 = (long) np; + /* Set the IO permission bitmap (empty due to tss seg limit) */ common_tss[0].tss_iobase = sizeof(struct amd64tss); ==== //depot/projects/usb/src/sys/amd64/amd64/mp_machdep.c#16 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.296 2009/01/29 09:22:56 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.297 2009/02/03 09:01:45 jkoshy Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -92,6 +92,7 @@ /* Temporary holder for double fault stack */ char *doublefault_stack; +char *nmi_stack; /* Hotwire a 0->4MB V==P mapping */ extern pt_entry_t *KPTphys; @@ -437,6 +438,7 @@ init_secondary(void) { struct pcpu *pc; + struct nmi_pcpu *np; u_int64_t msr, cr0; int cpu, gsel_tss, x; struct region_descriptor ap_gdt; @@ -450,6 +452,10 @@ common_tss[cpu].tss_iobase = sizeof(struct amd64tss); common_tss[cpu].tss_ist1 = (long)&doublefault_stack[PAGE_SIZE]; + /* The NMI stack runs on IST2. */ + np = ((struct nmi_pcpu *) &nmi_stack[PAGE_SIZE]) - 1; + common_tss[cpu].tss_ist2 = (long) np; + /* Prepare private GDT */ gdt_segs[GPROC0_SEL].ssd_base = (long) &common_tss[cpu]; ssdtosyssd(&gdt_segs[GPROC0_SEL], @@ -474,6 +480,9 @@ pc->pc_rsp0 = 0; pc->pc_gs32p = &gdt[NGDT * cpu + GUGS32_SEL]; + /* Save the per-cpu pointer for use by the NMI handler. */ + np->np_pcpu = (register_t) pc; + wrmsr(MSR_FSBASE, 0); /* User value */ wrmsr(MSR_GSBASE, (u_int64_t)pc); wrmsr(MSR_KGSBASE, (u_int64_t)pc); /* XXX User value while we're in the kernel */ @@ -725,6 +734,7 @@ /* allocate and set up an idle stack data page */ bootstacks[cpu] = (void *)kmem_alloc(kernel_map, KSTACK_PAGES * PAGE_SIZE); doublefault_stack = (char *)kmem_alloc(kernel_map, PAGE_SIZE); + nmi_stack = (char *)kmem_alloc(kernel_map, PAGE_SIZE); bootSTK = (char *)bootstacks[cpu] + KSTACK_PAGES * PAGE_SIZE - 8; bootAP = cpu; ==== //depot/projects/usb/src/sys/amd64/conf/NOTES#14 (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.83 2008/12/01 16:53:01 sam Exp $ +# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.86 2009/02/07 00:01:10 wkoszek Exp $ # # @@ -150,6 +150,11 @@ # AGP GART support device agp +# +# AGP debugging. +# +options AGP_DEBUG + ##################################################################### # HARDWARE DEVICE CONFIGURATION @@ -267,7 +272,6 @@ # nfe: nVidia nForce MCP on-board Ethernet Networking (BSD open source) # nve: nVidia nForce MCP on-board Ethernet Networking # ral: Ralink Technology IEEE 802.11 wireless adapter -# ural: Ralink Technology RT2500USB IEEE 802.11 wireless adapter # wpi: Intel 3945ABG Wireless LAN controller device ed @@ -277,10 +281,9 @@ device iwi device iwn device ipw -device nfe # nVidia nForce MCP on-board Ethernet Networking -device nve # nVidia nForce MCP on-board Ethernet Networking +device nfe +device nve device ral -device ural device wpi device ath # Atheros pci/cardbus NIC's @@ -356,9 +359,11 @@ # Miscellaneous hardware: # # ipmi: Intelligent Platform Management Interface +# pbio: Parallel (8255 PPI) basic I/O (mode 0) port (e.g. Advantech PCL-724) # smbios: DMI/SMBIOS entry point # vpd: Vital Product Data kernel interface # asmc: Apple System Management Controller +# si: Specialix International SI/XIO or SX intelligent serial card # Notes on the Specialix SI/XIO driver: # The host card is memory, not IO mapped. @@ -367,13 +372,14 @@ # The cards can use an IRQ of 11, 12 or 15. device ipmi -# Parallel (8255 PPI) basic I/O (mode 0) port (e.g. Advantech PCL-724) device pbio hint.pbio.0.at="isa" hint.pbio.0.port="0x360" device smbios device vpd device asmc +#device si + # # Laptop/Notebook options: # ==== //depot/projects/usb/src/sys/amd64/include/intr_machdep.h#7 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/intr_machdep.h,v 1.20 2009/01/29 09:22:56 jeff Exp $ + * $FreeBSD: src/sys/amd64/include/intr_machdep.h,v 1.21 2009/02/03 09:01:45 jkoshy Exp $ */ #ifndef __MACHINE_INTR_MACHDEP_H__ @@ -120,6 +120,15 @@ struct trapframe; +/* + * The following data structure holds per-cpu data, and is placed just + * above the top of the space used for the NMI stack. + */ +struct nmi_pcpu { + register_t np_pcpu; + register_t __padding; /* pad to 16 bytes */ +}; + extern struct mtx icu_lock; extern int elcr_found; ==== //depot/projects/usb/src/sys/amd64/include/legacyvar.h#3 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/legacyvar.h,v 1.8 2007/09/30 11:05:13 marius Exp $ + * $FreeBSD: src/sys/amd64/include/legacyvar.h,v 1.9 2009/02/08 07:03:34 imp Exp $ */ #ifndef _MACHINE_LEGACYVAR_H_ @@ -43,12 +43,12 @@ #undef LEGACY_ACCESSOR int legacy_pcib_maxslots(device_t dev); -uint32_t legacy_pcib_read_config(device_t dev, int bus, int slot, int func, - int reg, int bytes); +uint32_t legacy_pcib_read_config(device_t dev, u_int bus, u_int slot, + u_int func, u_int reg, int bytes); int legacy_pcib_read_ivar(device_t dev, device_t child, int which, uintptr_t *result); -void legacy_pcib_write_config(device_t dev, int bus, int slot, int func, - int reg, u_int32_t data, int bytes); +void legacy_pcib_write_config(device_t dev, u_int bus, u_int slot, + u_int func, u_int reg, uint32_t data, int bytes); int legacy_pcib_write_ivar(device_t dev, device_t child, int which, uintptr_t value); struct resource *legacy_pcib_alloc_resource(device_t dev, device_t child, ==== //depot/projects/usb/src/sys/amd64/pci/pci_bus.c#6 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_bus.c,v 1.122 2007/09/30 11:05:13 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_bus.c,v 1.123 2009/02/08 07:02:42 imp Exp $"); #include "opt_cpu.h" @@ -55,9 +55,9 @@ /* read configuration space register */ -u_int32_t -legacy_pcib_read_config(device_t dev, int bus, int slot, int func, - int reg, int bytes) +uint32_t +legacy_pcib_read_config(device_t dev, u_int bus, u_int slot, u_int func, + u_int reg, int bytes) { return(pci_cfgregread(bus, slot, func, reg, bytes)); } @@ -65,8 +65,8 @@ /* write configuration space register */ void -legacy_pcib_write_config(device_t dev, int bus, int slot, int func, - int reg, u_int32_t data, int bytes) +legacy_pcib_write_config(device_t dev, u_int bus, u_int slot, u_int func, + u_int reg, uint32_t data, int bytes) { pci_cfgregwrite(bus, slot, func, reg, data, bytes); } ==== //depot/projects/usb/src/sys/arm/arm/busdma_machdep.c#15 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.41 2009/01/30 07:01:32 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.42 2009/02/04 01:14:06 cognet Exp $"); /* * ARM bus dma support routines @@ -1168,7 +1168,7 @@ STAILQ_FOREACH(bpage, &map->bpages, links) { if ((vm_offset_t)buf >= bpage->datavaddr && - (vm_offset_t)buf + len < bpage->datavaddr + + (vm_offset_t)buf + len <= bpage->datavaddr + bpage->datacount) return (1); } ==== //depot/projects/usb/src/sys/arm/arm/dump_machdep.c#6 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/dump_machdep.c,v 1.6 2008/11/06 16:20:27 raj Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/dump_machdep.c,v 1.7 2009/02/02 20:09:14 cognet Exp $"); #include #include @@ -158,14 +158,12 @@ { struct dumperinfo *di = (struct dumperinfo*)arg; vm_paddr_t pa; - vm_offset_t va; uint32_t pgs; size_t counter, sz, chunk; int c, error; error = 0; /* catch case in which chunk size is 0 */ counter = 0; - va = 0; pgs = mdp->md_size / PAGE_SIZE; pa = mdp->md_start; ==== //depot/projects/usb/src/sys/arm/arm/elf_trampoline.c#10 (text+ko) ==== @@ -23,7 +23,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/elf_trampoline.c,v 1.23 2009/01/09 10:45:04 raj Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/elf_trampoline.c,v 1.24 2009/02/02 20:09:14 cognet Exp $"); #include #include #include @@ -404,11 +404,11 @@ int symtabindex = -1; int symstrindex = -1; vm_offset_t lastaddr = 0; - Elf_Addr ssym = 0, esym = 0; + Elf_Addr ssym = 0; Elf_Dyn *dp; eh = (Elf32_Ehdr *)kstart; - ssym = esym = 0; + ssym = 0; entry_point = (void*)eh->e_entry; memcpy(phdr, (void *)(kstart + eh->e_phoff ), eh->e_phnum * sizeof(phdr[0])); ==== //depot/projects/usb/src/sys/arm/arm/pmap.c#13 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.106 2008/11/06 16:28:28 raj Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.107 2009/02/02 20:09:14 cognet Exp $"); #include #include #include @@ -3102,7 +3102,7 @@ pmap_remove_all(vm_page_t m) { pv_entry_t pv; - pt_entry_t *ptep, pte; + pt_entry_t *ptep; struct l2_bucket *l2b; boolean_t flush = FALSE; pmap_t curpm; @@ -3130,7 +3130,6 @@ l2b = pmap_get_l2_bucket(pv->pv_pmap, pv->pv_va); KASSERT(l2b != NULL, ("No l2 bucket")); ptep = &l2b->l2b_kva[l2pte_index(pv->pv_va)]; - pte = *ptep; *ptep = 0; PTE_SYNC_CURRENT(pv->pv_pmap, ptep); pmap_free_l2_bucket(pv->pv_pmap, l2b, 1); ==== //depot/projects/usb/src/sys/arm/arm/vm_machdep.c#8 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.37 2008/08/04 14:47:49 raj Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.38 2009/02/02 20:09:14 cognet Exp $"); #include #include @@ -108,14 +108,13 @@ cpu_fork(register struct thread *td1, register struct proc *p2, struct thread *td2, int flags) { - struct pcb *pcb1, *pcb2; + struct pcb *pcb2; struct trapframe *tf; struct switchframe *sf; struct mdproc *mdp2; if ((flags & RFPROC) == 0) return; - pcb1 = td1->td_pcb; pcb2 = (struct pcb *)(td2->td_kstack + td2->td_kstack_pages * PAGE_SIZE) - 1; #ifdef __XSCALE__ #ifndef CPU_XSCALE_CORE3 ==== //depot/projects/usb/src/sys/arm/conf/AVILA#11 (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/arm/conf/AVILA,v 1.21 2008/12/27 17:22:17 bz Exp $ +# $FreeBSD: src/sys/arm/conf/AVILA,v 1.22 2009/02/03 19:16:04 sam Exp $ ident AVILA @@ -66,13 +66,15 @@ device pci device uart +device ixpwdog # watchdog timer +device cfi # flash support + # I2C Bus device iicbus device iicbb device iic device ixpiic # I2C bus glue -device ixpwdog # watchdog timer device ds1672 # DS1672 on I2C bus device ad7418 # AD7418 on I2C bus ==== //depot/projects/usb/src/sys/arm/conf/AVILA.hints#4 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/arm/conf/AVILA.hints,v 1.4 2008/12/20 03:26:09 sam Exp $ +# $FreeBSD: src/sys/arm/conf/AVILA.hints,v 1.5 2009/02/03 19:16:04 sam Exp $ # # Device wiring for the Gateworks Avila 2384. @@ -29,6 +29,10 @@ hint.npe.1.mii="B" hint.npe.1.phy=1 +# FLASH +hint.cfi.0.at="ixp0" +hint.cfi.0.addr=0x50000000 + # CF IDE controller hint.ata_avila.0.at="ixp0" ==== //depot/projects/usb/src/sys/arm/include/atomic.h#6 (text+ko) ==== @@ -33,7 +33,7 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/arm/include/atomic.h,v 1.25 2008/11/22 05:55:56 kmacy Exp $ + * $FreeBSD: src/sys/arm/include/atomic.h,v 1.26 2009/02/03 19:06:12 sam Exp $ */ #ifndef _MACHINE_ATOMIC_H_ @@ -344,7 +344,8 @@ #define atomic_clear_ptr atomic_clear_32 #define atomic_set_ptr atomic_set_32 -#define atomic_cmpset_ptr atomic_cmpset_32 +#define atomic_cmpset_ptr(dst, old, new) \ + atomic_cmpset_32((volatile u_int *)(dst), (u_int)(old), (u_int)(new)) #define atomic_cmpset_rel_ptr atomic_cmpset_ptr #define atomic_cmpset_acq_ptr atomic_cmpset_ptr #define atomic_store_ptr atomic_store_32 ==== //depot/projects/usb/src/sys/arm/sa11x0/assabet_machdep.c#7 (text+ko) ==== @@ -47,7 +47,7 @@ #include -__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.26 2008/12/01 10:16:25 stas Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.28 2009/02/02 20:24:29 cognet Exp $"); #include "opt_md.h" @@ -210,12 +210,10 @@ struct pv_addr md_addr; struct pv_addr md_bla; int loop; - u_int kerneldatasize, symbolsize; u_int l1pagetable; vm_offset_t freemempos; vm_offset_t lastalloced; vm_offset_t lastaddr; - vm_size_t pt_size; uint32_t memsize = 32 * 1024 * 1024; sa1110_uart_vaddr = SACOM1_VBASE; @@ -232,8 +230,6 @@ physical_end = lastaddr; physical_freestart = (((vm_offset_t)physical_end) + PAGE_MASK) & ~PAGE_MASK; md_addr.pv_va = md_addr.pv_pa = MDROOT_ADDR; - kerneldatasize = (u_int32_t)&end - (u_int32_t)KERNVIRTADDR; - symbolsize = 0; freemempos = (vm_offset_t)round_page(physical_freestart); memset((void *)freemempos, 0, 256*1024); /* Define a macro to simplify memory allocation */ @@ -265,14 +261,12 @@ } } - valloc_pages(systempage, 1); - /* * Allocate a page for the system page mapped to V0x00000000 * This page will just contain the system vectors and can be * shared by all processes. */ - pt_size = round_page(freemempos) - physical_freestart; + valloc_pages(systempage, 1); /* Allocate stacks for all modes */ valloc_pages(irqstack, IRQ_STACK_SIZE); ==== //depot/projects/usb/src/sys/arm/xscale/ixp425/avila_machdep.c#10 (text+ko) ==== @@ -48,7 +48,7 @@ #include "opt_msgbuf.h" #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/avila_machdep.c,v 1.14 2008/12/20 03:26:09 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/avila_machdep.c,v 1.15 2009/02/03 19:16:04 sam Exp $"); #define _ARM32_BUS_DMA_PRIVATE #include @@ -154,6 +154,10 @@ { IXP425_EXP_VBASE, IXP425_EXP_HWBASE, IXP425_EXP_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, }, + /* CFI Flash on the Expansion Bus */ + { IXP425_EXP_BUS_CS0_VBASE, IXP425_EXP_BUS_CS0_HWBASE, + IXP425_EXP_BUS_CS0_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, }, + /* IXP425 PCI Configuration */ { IXP425_PCI_VBASE, IXP425_PCI_HWBASE, IXP425_PCI_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, }, ==== //depot/projects/usb/src/sys/arm/xscale/ixp425/files.ixp425#6 (text+ko) ==== @@ -1,4 +1,4 @@ -#$FreeBSD: src/sys/arm/xscale/ixp425/files.ixp425,v 1.7 2008/12/23 17:40:02 sam Exp $ +#$FreeBSD: src/sys/arm/xscale/ixp425/files.ixp425,v 1.8 2009/02/03 19:16:04 sam Exp $ arm/arm/bus_space_generic.c standard arm/arm/cpufunc_asm_xscale.S standard arm/arm/irq_dispatch.S standard @@ -15,6 +15,7 @@ arm/xscale/ixp425/uart_bus_ixp425.c optional uart arm/xscale/ixp425/ixp425_a4x_space.c optional uart arm/xscale/ixp425/ixp425_a4x_io.S optional uart +dev/cfi/cfi_bus_ixp4xx.c optional cfi dev/uart/uart_dev_ns8250.c optional uart # # NPE-based Ethernet support (requires qmgr also). ==== //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425.c#7 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425.c,v 1.12 2008/12/23 04:48:27 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425.c,v 1.13 2009/02/03 19:16:04 sam Exp $"); #define _ARM32_BUS_DMA_PRIVATE #include @@ -329,6 +329,8 @@ { IXP425_IO_HWBASE, IXP425_IO_SIZE, IXP425_IO_VBASE }, { IXP425_PCI_HWBASE, IXP425_PCI_SIZE, IXP425_PCI_VBASE }, { IXP425_PCI_MEM_HWBASE,IXP425_PCI_MEM_SIZE, IXP425_PCI_MEM_VBASE }, + { IXP425_EXP_BUS_CS0_HWBASE, IXP425_EXP_BUS_CS0_SIZE, + IXP425_EXP_BUS_CS0_VBASE }, /* NB: needed only for uart_cpu_getdev */ { IXP425_UART0_HWBASE, IXP425_REG_SIZE, IXP425_UART0_VBASE }, { IXP425_UART1_HWBASE, IXP425_REG_SIZE, IXP425_UART1_VBASE }, ==== //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425reg.h#4 (text+ko) ==== @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/arm/xscale/ixp425/ixp425reg.h,v 1.4 2008/12/23 04:48:27 sam Exp $ + * $FreeBSD: src/sys/arm/xscale/ixp425/ixp425reg.h,v 1.5 2009/02/03 19:16:04 sam Exp $ * */ @@ -76,6 +76,10 @@ * Global cache clean area * FF00 0000 --------------------------- * + * FE00 0000 --------------------------- + * 16M CFI Flash (on ext bus) + * FD00 0000 --------------------------- + * * FC00 0000 --------------------------- * PCI Data (memory space) * F800 0000 --------------------------- IXP425_PCI_MEM_VBASE @@ -649,6 +653,9 @@ #define IXP425_EXP_BUS_CSx_VBASE(i) \ (IXP425_MAC_B_VBASE + (i)*IXP425_MAC_B_SIZE) +#define IXP425_EXP_BUS_CS0_HWBASE IXP425_EXP_BUS_CSx_HWBASE(0) +#define IXP425_EXP_BUS_CS0_VBASE 0xFD000000UL +#define IXP425_EXP_BUS_CS0_SIZE 0x01000000 /* NB: 16M */ #define IXP425_EXP_BUS_CS1_HWBASE IXP425_EXP_BUS_CSx_HWBASE(1) #define IXP425_EXP_BUS_CS1_VBASE IXP425_EXP_BUS_CSx_VBASE(1) #define IXP425_EXP_BUS_CS1_SIZE 0x1000 @@ -663,7 +670,6 @@ #define IXP425_EXP_BUS_CS4_SIZE 0x1000 /* NB: not mapped (yet) */ -#define IXP425_EXP_BUS_CS0_HWBASE IXP425_EXP_BUS_CSx_HWBASE(0) #define IXP425_EXP_BUS_CS5_HWBASE IXP425_EXP_BUS_CSx_HWBASE(5) #define IXP425_EXP_BUS_CS6_HWBASE IXP425_EXP_BUS_CSx_HWBASE(6) >>> TRUNCATED FOR MAIL (1000 lines) <<< From rwatson at FreeBSD.org Sun Feb 8 06:44:21 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Sun Feb 8 06:44:27 2009 Subject: PERFORCE change 157369 for review Message-ID: <200902081444.n18EiJFh071941@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157369 Change 157369 by rwatson@rwatson_cinnamon_macosx on 2009/02/08 14:43:31 Use 32-bit types for 32-bit padding. Submitted by: sson Affected files ... .. //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#87 edit Differences ... ==== //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#87 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2004-2008 Apple Inc. + * Copyright (c) 2004-2009 Apple Inc. * Copyright (c) 2005 SPARTA, Inc. * All rights reserved. * @@ -30,7 +30,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#86 $ + * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#87 $ */ #include @@ -168,7 +168,7 @@ token_t *t; u_char *dptr = NULL; u_int16_t pad0_16 = 0; - u_int16_t pad0_32 = 0; + u_int32_t pad0_32 = 0; GET_TOKEN_AREA(t, dptr, sizeof(u_char) + 2 * sizeof(u_int16_t) + 3 * sizeof(u_int32_t) + sizeof(u_int64_t) + sizeof(u_int32_t)); @@ -217,7 +217,7 @@ token_t *t; u_char *dptr = NULL; u_int16_t pad0_16 = 0; - u_int16_t pad0_32 = 0; + u_int32_t pad0_32 = 0; GET_TOKEN_AREA(t, dptr, sizeof(u_char) + 2 * sizeof(u_int16_t) + 3 * sizeof(u_int32_t) + sizeof(u_int64_t) * 2); From rwatson at FreeBSD.org Sun Feb 8 06:53:31 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Sun Feb 8 06:53:37 2009 Subject: PERFORCE change 157371 for review Message-ID: <200902081453.n18ErTe6072625@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157371 Change 157371 by rwatson@rwatson_cinnamon_macosx on 2009/02/08 14:52:55 Fix mental arithmetic error in IPv6 address encoding for socket_ex tokens. Submitted by: sson Affected files ... .. //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#88 edit Differences ... ==== //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#88 (text+ko) ==== @@ -30,7 +30,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#87 $ + * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#88 $ */ #include @@ -962,7 +962,7 @@ 5 * sizeof(u_int16_t) + 2 * sizeof(u_int32_t)); else if (so_domain == AF_INET6) GET_TOKEN_AREA(t, dptr, sizeof(u_char) + - 5 * sizeof(u_int16_t) + 16 * sizeof(u_int32_t)); + 5 * sizeof(u_int16_t) + 8 * sizeof(u_int32_t)); else { errno = EINVAL; return (NULL); From hselasky at FreeBSD.org Sun Feb 8 10:09:50 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Sun Feb 8 10:09:57 2009 Subject: PERFORCE change 157375 for review Message-ID: <200902081809.n18I9n3k004760@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157375 Change 157375 by hselasky@hselasky_laptop001 on 2009/02/08 18:09:47 Style fix. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#29 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#29 (text+ko) ==== @@ -864,7 +864,7 @@ */ xfer->frlengths[xfer->aframes] += td->len - temp; } - } else{ + } else { if (xfer->aframes != xfer->nframes) { /* transfer was complete */ xfer->frlengths[xfer->aframes] += td->len; From hselasky at FreeBSD.org Sun Feb 8 12:26:18 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Sun Feb 8 12:26:24 2009 Subject: PERFORCE change 157384 for review Message-ID: <200902082026.n18KQGYG022363@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157384 Change 157384 by hselasky@hselasky_laptop001 on 2009/02/08 20:25:45 USB controller: EHCI High Speed Interrupt endpoint fix. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#32 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#32 (text+ko) ==== @@ -1896,8 +1896,17 @@ EHCI_QH_SET_MPL(xfer->max_packet_size)); if (usb2_get_speed(xfer->xroot->udev) == USB_SPEED_HIGH) { - qh_endp |= (EHCI_QH_SET_EPS(EHCI_QH_SPEED_HIGH) | - EHCI_QH_DTC | EHCI_QH_SET_NRL(8)); + if (methods != &ehci_device_intr_methods) { + qh_endp |= (EHCI_QH_SET_EPS(EHCI_QH_SPEED_HIGH) | + EHCI_QH_DTC | EHCI_QH_SET_NRL(8)); + } else { + /* + * Nak-Reload count must be zero for interrupt + * endpoints See EHCI pdf file, section 4.9 + */ + qh_endp |= (EHCI_QH_SET_EPS(EHCI_QH_SPEED_HIGH) | + EHCI_QH_DTC); + } } else { if (usb2_get_speed(xfer->xroot->udev) == USB_SPEED_FULL) { From hselasky at c2i.net Sun Feb 8 12:27:06 2009 From: hselasky at c2i.net (Hans Petter Selasky) Date: Sun Feb 8 12:27:13 2009 Subject: PERFORCE change 157384 for review In-Reply-To: <200902082026.n18KQGYG022363@repoman.freebsd.org> References: <200902082026.n18KQGYG022363@repoman.freebsd.org> Message-ID: <200902082129.30214.hselasky@c2i.net> On Sunday 08 February 2009, Hans Petter Selasky wrote: > http://perforce.freebsd.org/chv.cgi?CH=157384 Reported by Andrew Thompson. --HPS From thompsa at FreeBSD.org Sun Feb 8 13:14:50 2009 From: thompsa at FreeBSD.org (Andrew Thompson) Date: Sun Feb 8 13:14:57 2009 Subject: PERFORCE change 157384 for review In-Reply-To: <200902082026.n18KQGYG022363@repoman.freebsd.org> References: <200902082026.n18KQGYG022363@repoman.freebsd.org> Message-ID: <20090208211442.GA33200@citylink.fud.org.nz> On Sun, Feb 08, 2009 at 08:26:16PM +0000, Hans Petter Selasky wrote: > http://perforce.freebsd.org/chv.cgi?CH=157384 > > Change 157384 by hselasky@hselasky_laptop001 on 2009/02/08 20:25:45 > > > USB controller: EHCI High Speed Interrupt endpoint fix. > > Affected files ... > > .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#32 edit > Oh snap, I found the same problem (r188336). It helps to confirm with others reporting and working on issues that (a) a patch has been made and (b) it resolves the problem on the original hardware. cheers, Andrew From rwatson at FreeBSD.org Sun Feb 8 15:24:34 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Sun Feb 8 15:24:40 2009 Subject: PERFORCE change 157403 for review Message-ID: <200902082324.n18NOWpX051781@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157403 Change 157403 by rwatson@rwatson_cinnamon_macosx on 2009/02/08 23:23:57 Use au_domain_to_bsm() and au_socket_type_to_bsm() to convert arguments to au_to_socket_ex() before encoding a token. Submitted by: sson Affected files ... .. //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#89 edit Differences ... ==== //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#89 (text+ko) ==== @@ -30,7 +30,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#88 $ + * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#89 $ */ #include @@ -969,8 +969,8 @@ } ADD_U_CHAR(dptr, AUT_SOCKET_EX); - ADD_U_INT16(dptr, so_domain); /* XXXRW: explicitly convert? */ - ADD_U_INT16(dptr, so_type); /* XXXRW: explicitly convert? */ + ADD_U_INT16(dptr, au_domain_to_bsm(so_domain)); + ADD_U_INT16(dptr, au_socket_type_to_bsm(so_type)); if (so_domain == AF_INET) { ADD_U_INT16(dptr, AU_IPv4); sin = (struct sockaddr_in *)sa_local; From rwatson at FreeBSD.org Sun Feb 8 15:26:37 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Sun Feb 8 15:26:43 2009 Subject: PERFORCE change 157404 for review Message-ID: <200902082326.n18NQZgL051968@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157404 Change 157404 by rwatson@rwatson_cinnamon_macosx on 2009/02/08 23:25:42 Update NEWS. Affected files ... .. //depot/projects/trustedbsd/openbsm/NEWS#31 edit Differences ... ==== //depot/projects/trustedbsd/openbsm/NEWS#31 (text+ko) ==== @@ -15,6 +15,8 @@ cnt,argv rather than cnt so that execve(2) arguments are captured if AUE_EXECVE events are audited. These may provide more usable defaults for many users. +- Use au_domain_to_bsm(3) and au_socket_type_to_bsm(3) to convert + au_to_socket_ex(3) arguments to BSM format. OpenBSM 1.1 alpha 5 @@ -428,4 +430,4 @@ to support reloading of kernel event table. - Allow comments in /etc/security configuration files. -$P4: //depot/projects/trustedbsd/openbsm/NEWS#30 $ +$P4: //depot/projects/trustedbsd/openbsm/NEWS#31 $ From antab at FreeBSD.org Sun Feb 8 15:42:03 2009 From: antab at FreeBSD.org (Arnar Mar Sig) Date: Sun Feb 8 15:42:10 2009 Subject: PERFORCE change 157407 for review Message-ID: <200902082342.n18Ng1en053173@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157407 Change 157407 by antab@antab_farm on 2009/02/08 23:41:58 Change nexus and at32bus to use hints instead of builtin list. Add interrupt handling, seems to be working but need to test more. Add at32_pm, at32_intc and at32_sdramc driver skeletons for testing. First draft of clock handling, just a api skeleton for device drivers to call to enable/disable and get/set rate. Affected files ... .. //depot/projects/avr32/src/sys/avr32/avr32/at32.c#3 edit .. //depot/projects/avr32/src/sys/avr32/avr32/at32_intc.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/at32_pio.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/at32_pm.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/at32_rtc.c#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/at32_sdramc.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/at32ap700x.c#2 delete .. //depot/projects/avr32/src/sys/avr32/avr32/clock.c#3 edit .. //depot/projects/avr32/src/sys/avr32/avr32/cpu.c#4 edit .. //depot/projects/avr32/src/sys/avr32/avr32/exception.S#3 edit .. //depot/projects/avr32/src/sys/avr32/avr32/intr.c#3 edit .. //depot/projects/avr32/src/sys/avr32/avr32/machdep.c#4 edit .. //depot/projects/avr32/src/sys/avr32/avr32/nexus.c#3 edit .. //depot/projects/avr32/src/sys/avr32/conf/NGW100#4 edit .. //depot/projects/avr32/src/sys/avr32/conf/cpu/at32ap7000.hints#1 add .. //depot/projects/avr32/src/sys/avr32/conf/cpu/at32ap7002.hints#1 add .. //depot/projects/avr32/src/sys/avr32/conf/cpu/at32ap700x.hints#1 add .. //depot/projects/avr32/src/sys/avr32/include/at32.h#3 delete .. //depot/projects/avr32/src/sys/avr32/include/at32ap700x.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/cpu.h#4 edit .. //depot/projects/avr32/src/sys/avr32/include/intr.h#3 edit .. //depot/projects/avr32/src/sys/avr32/include/reg.h#3 edit .. //depot/projects/avr32/src/sys/avr32/include/reg_intc.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/reg_pm.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/reg_rtc.h#2 edit .. //depot/projects/avr32/src/sys/avr32/include/reg_sdramc.h#1 add .. //depot/projects/avr32/src/sys/conf/files#2 edit .. //depot/projects/avr32/src/sys/conf/files.avr32#4 edit .. //depot/projects/avr32/src/sys/conf/ldscript.avr32#3 edit .. //depot/projects/avr32/src/sys/dev/uart/uart_dev_atmel.c#3 edit .. //depot/projects/avr32/src/sys/sys/devclk.h#1 add Differences ... ==== //depot/projects/avr32/src/sys/avr32/avr32/at32.c#3 (text+ko) ==== @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -43,39 +44,66 @@ #include #include #include -#include +#include +#include #include #include /* Prototypes */ +static int at32_probe(device_t); +static int at32_attach(device_t); +static device_t at32_add_child(device_t, int, const char *, int); +static void at32_hinted_child(device_t, const char *, int); static struct resource_list *at32_get_resource_list(device_t, device_t); static int at32_print_child(device_t, device_t); -static int at32_activate_resource(device_t, device_t, int, int, struct resource *); +static int at32_activate_resource(device_t, device_t, int, int, + struct resource *); +static int at32_deactivate_resource(device_t, device_t, int, int, + struct resource *); static int at32_teardown_intr(device_t, device_t, struct resource *, void *); -static int at32_setup_intr(device_t, device_t, struct resource *, int, driver_filter_t *, driver_intr_t *, void *, void **); -static int at32_release_resource(device_t, device_t, int, int, struct resource *); -static struct resource *at32_alloc_resource(device_t, device_t, int, int *, u_long, u_long, u_long, u_int); -static int at32_attach(device_t); -static void at32_add_child(device_t, int, const char *, int, bus_addr_t, bus_size_t, int); -static void at32_identify(driver_t *, device_t); -static int at32_probe(device_t); +static int at32_setup_intr(device_t, device_t, struct resource *, int, + driver_filter_t *, driver_intr_t *, void *, void **); +static int at32_release_resource(device_t, device_t, int, int, + struct resource *); +static struct resource *at32_alloc_resource(device_t, device_t, int, int *, + u_long, u_long, u_long, u_int); +static uint64_t at32_clk_get_rate(device_t, device_t); +static int at32_clk_set_rate(device_t, device_t, uint64_t); +static void at32_clk_enable(device_t, device_t); +static void at32_clk_disable(device_t, device_t); /* Driver variables and private data */ +struct at32_softc { + struct rman sc_irq_rman; + struct resource *sc_mem_res; + struct rman sc_mem_rman; +}; +struct at32_ivar { + struct resource_list resources; + int clk_bus; + int clk_index; +}; static device_method_t at32_methods[] = { DEVMETHOD(device_probe, at32_probe), DEVMETHOD(device_attach, at32_attach), - DEVMETHOD(device_identify, at32_identify), + DEVMETHOD(bus_add_child, at32_add_child), + DEVMETHOD(bus_hinted_child, at32_hinted_child), + DEVMETHOD(bus_print_child, at32_print_child), DEVMETHOD(bus_alloc_resource, at32_alloc_resource), DEVMETHOD(bus_setup_intr, at32_setup_intr), DEVMETHOD(bus_teardown_intr, at32_teardown_intr), DEVMETHOD(bus_activate_resource, at32_activate_resource), - DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), + DEVMETHOD(bus_deactivate_resource, at32_deactivate_resource), DEVMETHOD(bus_get_resource_list, at32_get_resource_list), DEVMETHOD(bus_set_resource, bus_generic_rl_set_resource), DEVMETHOD(bus_get_resource, bus_generic_rl_get_resource), DEVMETHOD(bus_release_resource, at32_release_resource), - DEVMETHOD(bus_print_child, at32_print_child), + + DEVMETHOD(devclk_get_rate, at32_clk_get_rate), + DEVMETHOD(devclk_set_rate, at32_clk_set_rate), + DEVMETHOD(devclk_enable, at32_clk_enable), + DEVMETHOD(devclk_disable, at32_clk_disable), {0, 0}, }; static driver_t at32_driver = { @@ -94,87 +122,94 @@ return (0); } -static void -at32_identify(driver_t *drv, device_t parent) -{ - BUS_ADD_CHILD(parent, 0, "at32bus", 0); -} - -static void -at32_add_child(device_t dev, int prio, const char *name, int unit, - bus_addr_t addr, bus_size_t size, int irq) -{ - device_t kid; - struct at32_ivar *ivar; - - kid = device_add_child_ordered(dev, prio, name, unit); - if (kid == NULL) { - printf("Can't add child %s%d ordered\n", name, unit); - return; - } - ivar = malloc(sizeof(*ivar), M_DEVBUF, M_NOWAIT | M_ZERO); - if (ivar == NULL) { - device_delete_child(dev, kid); - printf("Can't add alloc ivar\n"); - return; - } - device_set_ivars(kid, ivar); - resource_list_init(&ivar->resources); - if (addr != 0) { - bus_set_resource(kid, SYS_RES_MEMORY, 0, addr, size); - } - if (irq != -1) { - bus_set_resource(kid, SYS_RES_IRQ, 0, irq, 1); - } -} - static int at32_attach(device_t dev) { - int i; + int rid; struct at32_softc *sc = device_get_softc(dev); - struct at32_cpu_device *walker; - sc->sc_st = 0; - sc->sc_sh = AT32AP700X_BASE; - sc->dev = dev; - - // Resource list for IRQ + /* Resource list for IRQ */ + /* Reserve irqs from nexus ? */ sc->sc_irq_rman.rm_type = RMAN_ARRAY; sc->sc_irq_rman.rm_descr = "AT32 IRQs"; if (rman_init(&sc->sc_irq_rman) != 0 || - rman_manage_region(&sc->sc_irq_rman, 1, IRQ_COUNT) != 0) { - panic("at32_attach: failed to set up IRQ rman"); + rman_manage_region(&sc->sc_irq_rman, 1, IRQ_COUNT) != 0) { + panic("at32_attach: failed to set up IRQ rman\n"); } - // Resource list for system memory + /* Resource list for system memory */ + rid = 0; + sc->sc_mem_res = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, + AVR32_SEG_P4, 0xfffffffful, 0, RF_ACTIVE); + if (sc->sc_mem_res == NULL) { + panic("at32_attach: failed to alloc bus memory\n"); + } sc->sc_mem_rman.rm_type = RMAN_ARRAY; sc->sc_mem_rman.rm_descr = "AT32 Memory"; if (rman_init(&sc->sc_mem_rman) != 0 || - rman_manage_region(&sc->sc_mem_rman, AVR32_SEG_P4, - 0xfffffffful) != 0) { + rman_manage_region(&sc->sc_mem_rman, AVR32_SEG_P4, + 0xfffffffful) != 0) { panic("at32_attach: fail to set up memory rman\n"); } - /* Reserve memory range for INTC, we will handle access to it */ - sc->sc_intc_res = rman_reserve_resource(&sc->sc_mem_rman, - AT32AP700X_BASE + AT32AP700X_INTC_OFFSET, - AT32AP700X_BASE + AT32AP700X_INTC_OFFSET + AT32AP700X_INTC_SIZE, - AT32AP700X_INTC_SIZE, 0, dev); - if (!sc->sc_intc_res) { - panic("at32_attach: unable to reserve INTC memory\n"); + bus_generic_probe(dev); + bus_enumerate_hinted_children(dev); + bus_generic_attach(dev); + return 0; +} + +static device_t +at32_add_child(device_t bus, int order, const char *name, int unit) +{ + device_t child; + struct at32_ivar *ivar; + + ivar = malloc(sizeof(struct at32_ivar), M_DEVBUF, M_WAITOK | M_ZERO); + if (ivar == NULL) { + device_printf(bus, "Failed to allocate ivar\n"); + return (0); + } + resource_list_init(&ivar->resources); + + child = device_add_child_ordered(bus, order, name, unit); + if (child == NULL) { + device_printf(bus, "Can't add child %s%d ordered\n", name, unit); + return (0); } + device_set_ivars(child, ivar); + + return (child); +} + +static void +at32_hinted_child(device_t bus, const char *dname, int dunit) +{ + device_t child; + long maddr; + int msize, irq, result; + + child = BUS_ADD_CHILD(bus, 0, dname, dunit); + + /* + * Set hard-wired resources for hinted child using + * specific RIDs. + */ + resource_long_value(dname, dunit, "maddr", &maddr); + resource_int_value(dname, dunit, "msize", &msize); - // Add buildin devices - for (i = 0, walker = at32_cpu_devices; walker->name; i++, walker++) { - at32_add_child(dev, i, walker->name, walker->unit, - walker->mem_base, walker->mem_len, walker->irq); - }; + result = bus_set_resource(child, SYS_RES_MEMORY, 0, maddr, msize); + if (result != 0) { + device_printf(bus, "warning: bus_set_resource() failed\n"); + } - bus_generic_probe(dev); - bus_generic_attach(dev); - return 0; + if (resource_int_value(dname, dunit, "irq", &irq) == 0) { + result = bus_set_resource(child, SYS_RES_IRQ, 0, irq, 1); + if (result != 0) { + device_printf(bus, + "warning: bus_set_resource() failed\n"); + } + } } static struct resource * @@ -247,32 +282,38 @@ static int at32_setup_intr(device_t dev, device_t child, struct resource *ires, int flags, - driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep) + driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep) { if ((rman_get_flags(ires) & RF_SHAREABLE) == 0) { flags |= INTR_EXCL; } - - avr32_setup_irqhandler(device_get_nameunit(child), - filt, intr, arg, rman_get_start(ires), flags, cookiep); + BUS_SETUP_INTR(device_get_parent(dev), child, ires, flags, filt, + intr, arg, cookiep); return (0); } static int at32_teardown_intr(device_t dev, device_t child, struct resource *res, - void *cookie) + void *cookie) { - return (avr32_remove_irqhandler(rman_get_start(res), cookie)); + return (BUS_TEARDOWN_INTR(device_get_parent(dev), child, res, cookie)); } static int at32_activate_resource(device_t bus, device_t child, int type, int rid, - struct resource *r) + struct resource *r) { return (rman_activate_resource(r)); } static int +at32_deactivate_resource(device_t bus, device_t child, int type, int rid, + struct resource *r) +{ + return (rman_deactivate_resource(r)); +} + +static int at32_print_child(device_t dev, device_t child) { struct at32_ivar *ivars; @@ -284,7 +325,6 @@ retval += bus_print_child_header(dev, child); - retval += resource_list_print_type(rl, "port", SYS_RES_IOPORT, "%#lx"); retval += resource_list_print_type(rl, "mem", SYS_RES_MEMORY, "%#lx"); retval += resource_list_print_type(rl, "irq", SYS_RES_IRQ, "%ld"); if (device_get_flags(dev)) { @@ -304,4 +344,28 @@ return (&(ivar->resources)); } +static uint64_t +at32_clk_get_rate(device_t dev, device_t child) +{ + avr32_impl(); + return (0); +} + +static int +at32_clk_set_rate(device_t dev, device_t child, uint64_t rate) +{ + avr32_impl(); + return (0); +} + +static void +at32_clk_enable(device_t dev, device_t child) +{ + /* TODO: Implement */ +} +static void +at32_clk_disable(device_t dev, device_t child) +{ + /* TODO: Implement */ +} ==== //depot/projects/avr32/src/sys/avr32/avr32/at32_pio.c#2 (text+ko) ==== @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -42,7 +43,6 @@ #include #include #include -#include #include #include #include @@ -105,8 +105,10 @@ at32_pio_attach(device_t dev) { struct at32_pio_softc *sc = device_get_softc(dev); + sc->dev = dev; - sc->dev = dev; + /* Make sure clock is active before doing anything */ + devclk_enable(dev); return 0; } ==== //depot/projects/avr32/src/sys/avr32/avr32/at32_rtc.c#2 (text+ko) ==== @@ -30,7 +30,7 @@ * fRTC = 2 ^ -(PSEL + 1) * 32KHz * The datasheet also says we should set PSEL to at last 2 to ensure no ticks * are missed when entering sleep modes. - * So we will set PSEL to 14 giving us a 1Hz clock + * So we will set PSEL to 14 giving us a 1Hz */ #include @@ -42,6 +42,7 @@ #include #include #include +#include #include #include #include @@ -49,16 +50,15 @@ #include #include #include -#include #include #include #include "clock_if.h" #define RD4(off) \ - bus_space_read_4(sc->sc_bst, sc->sc_bsh, (off)) + bus_space_read_4(sc->bst, sc->bsh, (off)) #define WR4(off, val) \ - bus_space_write_4(sc->sc_bst, sc->sc_bsh, (off), (val)) + bus_space_write_4(sc->bst, sc->bsh, (off), (val)) /* Prototypes */ static int at32_rtc_probe(device_t); @@ -66,14 +66,16 @@ static int at32_rtc_detach(device_t); static int at32_rtc_gettime(device_t, struct timespec *); static int at32_rtc_settime(device_t, struct timespec *); +static int at32_rtc_activate(device_t); +static void at32_rtc_deactivate(device_t); /* Driver variables and private data */ -static struct at32_rtc_softc { - struct resource *sc_regs_res; - int sc_regs_rid; - bus_space_tag_t sc_bst; - bus_space_handle_t sc_bsh; -} *rtc_softc; +struct at32_rtc_softc { + struct resource *regs_res; + int regs_rid; + bus_space_tag_t bst; + bus_space_handle_t bsh; +}; static device_method_t at32_rtc_methods[] = { /* Device interface */ DEVMETHOD(device_probe, at32_rtc_probe), @@ -104,29 +106,23 @@ at32_rtc_attach(device_t dev) { struct at32_rtc_softc *sc = device_get_softc(dev); + int err; - /* Global Pointer to private data, (cant i get with passed in - * timecounter callback? */ - rtc_softc = sc; - - /* Set private data and map register space */ - sc->sc_regs_res = bus_alloc_resource(dev, SYS_RES_MEMORY, &sc->sc_regs_rid, 0, - ~0, 0, RF_ACTIVE); - if (!sc->sc_regs_res) { - return (ENOMEM); + err = at32_rtc_activate(dev); + if (err) { + return (err); } - sc->sc_bsh = rman_get_bushandle(sc->sc_regs_res); - sc->sc_bst = rman_get_bustag(sc->sc_regs_res); - /* Enable RTC and set prescaler to 14 */ + /* Enable RTC and set prescaler to 2 */ WR4(AT32_RTC_CTRL, - 2 << bit_shift(RTC, CTRL, PSEL) | - bit_offset(RTC, CTRL, PCLR) | - bit_offset(RTC, CTRL, EN)); + 2 << bit_shift(RTC, CTRL, PSEL) | + bit_offset(RTC, CTRL, PCLR) | + bit_offset(RTC, CTRL, EN)); + + /* Enable interrupt on TOP */ + WR4(AT32_RTC_IER, bit_offset(RTC, IER, TOPI)); clock_register(dev, 1000000); - - return (0); } @@ -134,7 +130,12 @@ at32_rtc_detach(device_t dev) { struct at32_rtc_softc *sc = device_get_softc(dev); - bus_release_resource(dev, SYS_RES_MEMORY, sc->sc_regs_rid, sc->sc_regs_res); + + /* Disable interrupt */ + WR4(AT32_RTC_IER, bit_offset(RTC, IER, TOPI)); + + at32_rtc_deactivate(dev); + return (0); } static int @@ -153,3 +154,42 @@ WR4(AT32_RTC_VAL, ts->tv_sec); return (0); } + +static int +at32_rtc_activate(device_t dev) +{ + struct at32_rtc_softc *sc = device_get_softc(dev); + int rid, err = ENOMEM; + + /* Make sure device clock is enabled before writing */ + devclk_enable(dev); + + /* Set private data and map register space */ + sc->regs_res = bus_alloc_resource(dev, SYS_RES_MEMORY, &sc->regs_rid, 0, + ~0, 0, RF_ACTIVE); + if (!sc->regs_res) { + goto err; + } + sc->bsh = rman_get_bushandle(sc->regs_res); + sc->bst = rman_get_bustag(sc->regs_res); + + return (0); + +err: + at32_rtc_deactivate(dev); + return (err); +} + +static void +at32_rtc_deactivate(device_t dev) +{ + struct at32_rtc_softc *sc = device_get_softc(dev); + + if (sc->regs_res) { + bus_release_resource(dev, SYS_RES_MEMORY, + rman_get_rid(sc->regs_res), sc->regs_res); + } + + /* Turn off device clock */ + devclk_disable(dev); +} ==== //depot/projects/avr32/src/sys/avr32/avr32/clock.c#3 (text+ko) ==== @@ -38,6 +38,7 @@ #include #include #include +#include #include #include ==== //depot/projects/avr32/src/sys/avr32/avr32/cpu.c#4 (text+ko) ==== @@ -64,25 +64,13 @@ #include extern vm_offset_t _evba; -extern vm_offset_t _evba_irq; void cpu_init(void) { - int i; - /* Set exception vector */ sysreg_write(EVBA, (uint32_t)&_evba); __asm__ __volatile__ ("csrf %0" : : "i"(AT32_SYS_SR_EM)); - - - /* Setup INTC, every interrupt is at priority 0 */ -/* for (i = 0; i < IRQ_COUNT; i++) { - reg_write(AT32AP700X_BASE + AT32AP700X_INTC_OFFSET + - (i * sizeof(register_t)), INTC, IPR, - (_evba_irq - _evba)); - } -*/ } void ==== //depot/projects/avr32/src/sys/avr32/avr32/exception.S#3 (text+ko) ==== @@ -26,27 +26,52 @@ */ #include +#include #include +#include #include "assym.s" __FBSDID("$FreeBSD: $"); /* Save a trapfrome to stack */ -#define PUSH_TRAPFRAME \ - sub sp, 4; \ - stmts --sp, r0-lr; \ - mfsr r11, AT32_SYS_RAR_EX; \ - mfsr r12, AT32_SYS_RSR_EX; \ +#define PUSH_TRAPFRAME(context) \ + sub sp, 4; \ + stmts --sp, r0-lr; \ + mfsr r11, AT32_SYS_RAR_##context; \ + mfsr r12, AT32_SYS_RSR_##context; \ pushm r11-r12; /* Restore trapframe from stack */ -#define POP_TRAPFRAME \ +#define POP_TRAPFRAME(context) \ popm r11-r12; \ - mtsr AT32_SYS_RAR_EX, r11; \ - mtsr AT32_SYS_RSR_EX, r12; \ - ldmts sp++, r0-lr; \ - sub sp, -4 + mtsr AT32_SYS_RAR_##context, r11; \ + mtsr AT32_SYS_RSR_##context, r12; \ + ldmts sp++, r0-lr; \ + sub sp, -4; + +/* Handle IRQ */ +#define IRQ(num) \ + GLOBAL(intr_handle##num); \ + PUSH_TRAPFRAME(INT##num); \ + mov r10, num; \ + lddpc r12, intr_cause_offset##num; \ + ld.w r11, r12; \ + mov r12, sp; \ + call intr_handle; \ + POP_TRAPFRAME(INT##num); \ + rete; \ +intr_cause_offset##num:; \ + .long AT32AP700X_BASE + AT32AP700X_INTC_OFFSET + \ + AT32_INTC_ICR0 - (4 * num); + +#if 0 +#define IRQ(num) \ + GLOBAL(intr_handle##num); \ + sub r12, pc, (. - i##num); \ + bral panic; \ +i##num: .asciz "IRQ!"; +#endif .section .text.evba,"ax",@progbits .align 2 @@ -110,12 +135,12 @@ /* later this should be done in assembly, but using C for now */ tlb_miss: - PUSH_TRAPFRAME + PUSH_TRAPFRAME(EX) mfsr r12, AT32_SYS_ECR mfsr r11, AT32_SYS_TLBEAR mfsr r10, AT32_SYS_TLBEHI rcall pmap_tlb_miss - POP_TRAPFRAME + POP_TRAPFRAME(EX) rete handle_critical: @@ -126,26 +151,26 @@ rete handle_illegal_opcode: - PUSH_TRAPFRAME + PUSH_TRAPFRAME(EX) mfsr r12, AT32_SYS_ECR - mov r11, sp + mov r11, sp rcall trap_handle_illegal_opcode rete handle_address_fault: - PUSH_TRAPFRAME + PUSH_TRAPFRAME(EX) mfsr r12, AT32_SYS_ECR - mov r11, sp + mov r11, sp rcall trap_handle_address_fault - POP_TRAPFRAME + POP_TRAPFRAME(EX) rete handle_protection_fault: - PUSH_TRAPFRAME + PUSH_TRAPFRAME(EX) mfsr r12, AT32_SYS_ECR - mov r11, sp + mov r11, sp rcall trap_handle_protection_fault - POP_TRAPFRAME + POP_TRAPFRAME(EX) rete handle_dtlb_modified: @@ -153,16 +178,14 @@ rete handle_breakpoint: - PUSH_TRAPFRAME - mov r12, AT32_SYS_ECR - mov r11, sp + PUSH_TRAPFRAME(EX) + mov r12, AT32_SYS_ECR + mov r11, sp rcall trap_handle_breakpoint - POP_TRAPFRAME + POP_TRAPFRAME(EX) rete -.section .text.evba.irq -ENTRY(handle_irq) - sub r12, pc, (. - 2f) - bral panic - rete -2: .asciz "Interrupt handler needed" +IRQ(0) +IRQ(1) +IRQ(2) +IRQ(3) ==== //depot/projects/avr32/src/sys/avr32/avr32/intr.c#3 (text+ko) ==== @@ -41,10 +41,12 @@ #include #include #include +#include #include /* Private data */ -static struct intr_event *intr_events[IRQ_COUNT]; +static struct intr_event *intr_event[IRQ_COUNT]; +extern vm_offset_t _evba; /* Code */ register_t @@ -70,14 +72,46 @@ } void +intr_init() +{ + size_t offset; + int i; + + /* Setup INTC, every interrupt is at priority 0 */ + for (i = 0; i < IRQ_COUNT; i++) { + offset = AT32AP700X_BASE + AT32AP700X_INTC_OFFSET + + (i * sizeof(register_t)); + + reg_write(offset, INTC, IPR, + (vm_offset_t)intr_handle0 - (vm_offset_t)&_evba); + } + + /* Enable interrupts */ + sysreg_write(COMPARE, 0); + sysreg_write(SR, sysreg_read(SR) & ~INTR_MASK); +} + +void +intr_handle(struct trapframe *tf, int irq, int pri) +{ + if (!intr_event[irq] || TAILQ_EMPTY(&intr_event[irq]->ie_handlers)) { + printf("stray interrupt %d, priority %d\n", irq, pri); + return; + } + + if (intr_event_handle(intr_event[irq], tf) != 0) { + panic("stray interrupt %d, priority %d\n", irq, pri); + } +} + +void avr32_mask_irq(uintptr_t irq) { int pri; - avr32_impl(); pri = bit_value(INTC, IPR, INTLEVEL, - reg_read(AT32AP700X_BASE + AT32AP700X_INTC_OFFSET + - (irq * sizeof(register_t)), INTC, IPR)); + reg_read(AT32AP700X_BASE + AT32AP700X_INTC_OFFSET + + (irq * sizeof(register_t)), INTC, IPR)); sysreg_write(SR, sysreg_read(SR) | (bit_offset(SYS, SR, I0M) << pri)); } @@ -86,12 +120,10 @@ { int pri; - avr32_impl(); pri = bit_value(INTC, IPR, INTLEVEL, - reg_read(AT32AP700X_BASE + AT32AP700X_INTC_OFFSET + - (irq * sizeof(register_t)), INTC, IPR)); + reg_read(AT32AP700X_BASE + AT32AP700X_INTC_OFFSET + + (irq * sizeof(register_t)), INTC, IPR)); sysreg_write(SR, sysreg_read(SR) | ~(bit_offset(SYS, SR, I0M) << pri)); - } void @@ -105,18 +137,18 @@ return; } - event = intr_events[irq]; + event = intr_event[irq]; if (event == NULL) { error = intr_event_create(&event, (void *)irq, 0, irq, - (mask_fn)avr32_mask_irq, (mask_fn)avr32_unmask_irq, - NULL, NULL, "intr%d:", irq); + (mask_fn)avr32_mask_irq, (mask_fn)avr32_unmask_irq, + NULL, NULL, "intr%d:", irq); if (error) { return; } - intr_events[irq] = event; + intr_event[irq] = event; } intr_event_add_handler(event, name, filt, hand, arg, - intr_priority(flags), flags, cookiep); + intr_priority(flags), flags, cookiep); } int avr32_remove_irqhandler(int irq, void *cookie) @@ -124,7 +156,8 @@ struct intr_event *event; int error; - event = intr_events[irq]; + + event = intr_event[irq]; avr32_mask_irq(irq); error = intr_event_remove_handler(cookie); ==== //depot/projects/avr32/src/sys/avr32/avr32/machdep.c#4 (text+ko) ==== @@ -65,10 +65,16 @@ #include #include #include +#include + +/* Prototypes */ +void mi_startup(void); +void avr32_init(void); +static void avr32_init_proc0(void); +/* Misc variables and private data */ struct msgbuf *msgbufp = NULL; int cold = 1; - struct pcpu __pcpu; struct pcpu *pcpup = &__pcpu; struct pcb proc0_pcb; @@ -82,14 +88,13 @@ static void cpu_startup(void *); SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL); -// Prototypes (Should be in headers!) -void mi_startup(void); -void avr32_init(void); -void avr32_init_proc0(void); - -void avr32_init() { - cninit(); // Init console - cpu_init(); // Init needed cpu things (evb and irq) +/* Code */ +void +avr32_init() +{ + cninit(); // Init console + cpu_init(); // Init needed cpu things (evb and irq) + intr_init(); // Init interrupt handling uboot_parse_tags(); // Parse uboot tags realmem = btoc(phys_avail[1] - phys_avail[0]); @@ -102,7 +107,9 @@ mi_startup(); // Call machine independent part } -void avr32_init_proc0() { +static void +avr32_init_proc0() +{ proc_linkup(&proc0, &thread0); thread0.td_kstack = proc0_stack_end; thread0.td_kstack_pages = KSTACK_PAGES - 1; @@ -114,14 +121,16 @@ PCPU_SET(curpcb, thread0.td_pcb); } -static void cpu_startup(void *dummy) { +static void +cpu_startup(void *dummy) +{ uint32_t config; char arch_type; if (boothowto & RB_VERBOSE) { bootverbose++; } - bootverbose++; +// bootverbose++; vm_ksubmap_init(&kmi); @@ -170,7 +179,7 @@ printf("real memory = %u (%u MB)\n", ptoa(realmem), ptoa(realmem) / 1048576); - printf("avail memory = %u (%uMB)\n", ptoa(cnt.v_free_count), + printf("avail memory = %u (%u MB)\n", ptoa(cnt.v_free_count), ptoa(cnt.v_free_count) / 1048576); /* @@ -180,41 +189,57 @@ vm_pager_bufferinit(); } -void cpu_pcpu_init(struct pcpu *pcpu, int cpuid, size_t size) { +void +cpu_pcpu_init(struct pcpu *pcpu, int cpuid, size_t size) +{ pcpu->pc_asid_next = 1; pcpu->pc_asid_generation = 1; } -int fill_regs(struct thread *td, struct reg *regs) { +int +fill_regs(struct thread *td, struct reg *regs) +{ memcpy(regs, &td->td_frame->regs, sizeof(struct reg)); return (0); } -int fill_fpregs(struct thread *td, struct fpreg *regs) { +int +fill_fpregs(struct thread *td, struct fpreg *regs) +{ /* No FPU on avr32 */ memset(regs, 0, sizeof(struct fpreg)); return (0); } -int set_regs(struct thread *td, struct reg *regs) { +int +set_regs(struct thread *td, struct reg *regs) +{ memcpy(&td->td_frame->regs, regs, sizeof(struct reg)); return (0); } -int set_fpregs(struct thread *td, struct fpreg *regs) { +int +set_fpregs(struct thread *td, struct fpreg *regs) +{ /* No FPU on avr32 */ return (0); } -int fill_dbregs(struct thread *td, struct dbreg *regs) { +int +fill_dbregs(struct thread *td, struct dbreg *regs) +{ return (0); } -int set_dbregs(struct thread *td, struct dbreg *regs) { +int +set_dbregs(struct thread *td, struct dbreg *regs) +{ return (0); } >>> TRUNCATED FOR MAIL (1000 lines) <<< From thompsa at FreeBSD.org Sun Feb 8 18:42:06 2009 From: thompsa at FreeBSD.org (Andrew Thompson) Date: Sun Feb 8 18:42:14 2009 Subject: PERFORCE change 157412 for review Message-ID: <200902090242.n192g4vr079701@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157412 Change 157412 by thompsa@thompsa_burger on 2009/02/09 02:41:33 Sync from svn.freebsd.org/base/user/thompsa/usb which is a minimal changeset from oldUSB (no config_td). This excludes the taskqueue changes (for the moment) as requested. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#26 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumfw.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumreg.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumvar.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#26 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_uralreg.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_uralvar.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zyd2.c#29 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zydfw.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zydreg.h#3 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#26 (text+ko) ==== @@ -1,3 +1,5 @@ +/* $FreeBSD: user/thompsa/usb/sys/dev/usb2/wlan/if_rum2.c 188355 2009-02-09 00:58:16Z thompsa $ */ + /*- * Copyright (c) 2005-2007 Damien Bergamini * Copyright (c) 2006 Niall O'Higgins @@ -16,13 +18,8 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* - * NOTE: all function names beginning like "rum_cfg_" can only - * be called from within the config thread function ! - */ - #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/wlan/if_rum2.c,v 1.9 2009/02/06 15:03:17 kevlo Exp $"); +__FBSDID("$FreeBSD: user/thompsa/usb/sys/dev/usb2/wlan/if_rum2.c 188355 2009-02-09 00:58:16Z thompsa $"); /*- * Ralink Technology RT2501USB/RT2601USB chipset driver @@ -34,15 +31,11 @@ #include #include -#define usb2_config_td_cc rum_config_copy -#define usb2_config_td_softc rum_softc - #define USB_DEBUG_VAR rum_debug #include #include #include -#include #include #include #include @@ -61,931 +54,815 @@ "Debug level"); #endif -/* prototypes */ +static const struct usb2_device_id rum_devs[] = { + { USB_VP(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_HWU54DM) }, + { USB_VP(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_RT2573_2) }, + { USB_VP(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_RT2573_3) }, + { USB_VP(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_RT2573_4) }, + { USB_VP(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_WUG2700) }, + { USB_VP(USB_VENDOR_AMIT, USB_PRODUCT_AMIT_CGWLUSB2GO) }, + { USB_VP(USB_VENDOR_ASUS, USB_PRODUCT_ASUS_RT2573_1) }, + { USB_VP(USB_VENDOR_ASUS, USB_PRODUCT_ASUS_RT2573_2) }, + { USB_VP(USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F5D7050A) }, + { USB_VP(USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F5D9050V3) }, + { USB_VP(USB_VENDOR_CISCOLINKSYS, USB_PRODUCT_CISCOLINKSYS_WUSB54GC) }, + { USB_VP(USB_VENDOR_CISCOLINKSYS, USB_PRODUCT_CISCOLINKSYS_WUSB54GR) }, + { USB_VP(USB_VENDOR_CONCEPTRONIC2, USB_PRODUCT_CONCEPTRONIC2_C54RU2) }, + { USB_VP(USB_VENDOR_COREGA, USB_PRODUCT_COREGA_CGWLUSB2GL) }, + { USB_VP(USB_VENDOR_COREGA, USB_PRODUCT_COREGA_CGWLUSB2GPX) }, + { USB_VP(USB_VENDOR_DICKSMITH, USB_PRODUCT_DICKSMITH_CWD854F) }, + { USB_VP(USB_VENDOR_DICKSMITH, USB_PRODUCT_DICKSMITH_RT2573) }, + { USB_VP(USB_VENDOR_DLINK2, USB_PRODUCT_DLINK2_DWLG122C1) }, + { USB_VP(USB_VENDOR_DLINK2, USB_PRODUCT_DLINK2_WUA1340) }, + { USB_VP(USB_VENDOR_DLINK2, USB_PRODUCT_DLINK2_DWA111) }, + { USB_VP(USB_VENDOR_DLINK2, USB_PRODUCT_DLINK2_DWA110) }, + { USB_VP(USB_VENDOR_GIGABYTE, USB_PRODUCT_GIGABYTE_GNWB01GS) }, + { USB_VP(USB_VENDOR_GIGABYTE, USB_PRODUCT_GIGABYTE_GNWI05GS) }, + { USB_VP(USB_VENDOR_GIGASET, USB_PRODUCT_GIGASET_RT2573) }, + { USB_VP(USB_VENDOR_GOODWAY, USB_PRODUCT_GOODWAY_RT2573) }, + { USB_VP(USB_VENDOR_GUILLEMOT, USB_PRODUCT_GUILLEMOT_HWGUSB254LB) }, + { USB_VP(USB_VENDOR_GUILLEMOT, USB_PRODUCT_GUILLEMOT_HWGUSB254V2AP) }, + { USB_VP(USB_VENDOR_HUAWEI3COM, USB_PRODUCT_HUAWEI3COM_WUB320G) }, + { USB_VP(USB_VENDOR_MELCO, USB_PRODUCT_MELCO_G54HP) }, + { USB_VP(USB_VENDOR_MELCO, USB_PRODUCT_MELCO_SG54HP) }, + { USB_VP(USB_VENDOR_MSI, USB_PRODUCT_MSI_RT2573_1) }, + { USB_VP(USB_VENDOR_MSI, USB_PRODUCT_MSI_RT2573_2) }, + { USB_VP(USB_VENDOR_MSI, USB_PRODUCT_MSI_RT2573_3) }, + { USB_VP(USB_VENDOR_MSI, USB_PRODUCT_MSI_RT2573_4) }, + { USB_VP(USB_VENDOR_NOVATECH, USB_PRODUCT_NOVATECH_RT2573) }, + { USB_VP(USB_VENDOR_PLANEX2, USB_PRODUCT_PLANEX2_GWUS54HP) }, + { USB_VP(USB_VENDOR_PLANEX2, USB_PRODUCT_PLANEX2_GWUS54MINI2) }, + { USB_VP(USB_VENDOR_PLANEX2, USB_PRODUCT_PLANEX2_GWUSMM) }, + { USB_VP(USB_VENDOR_QCOM, USB_PRODUCT_QCOM_RT2573) }, + { USB_VP(USB_VENDOR_QCOM, USB_PRODUCT_QCOM_RT2573_2) }, + { USB_VP(USB_VENDOR_RALINK, USB_PRODUCT_RALINK_RT2573) }, + { USB_VP(USB_VENDOR_RALINK, USB_PRODUCT_RALINK_RT2573_2) }, + { USB_VP(USB_VENDOR_RALINK, USB_PRODUCT_RALINK_RT2671) }, + { USB_VP(USB_VENDOR_SITECOMEU, USB_PRODUCT_SITECOMEU_WL113R2) }, + { USB_VP(USB_VENDOR_SITECOMEU, USB_PRODUCT_SITECOMEU_WL172) }, + { USB_VP(USB_VENDOR_SPARKLAN, USB_PRODUCT_SPARKLAN_RT2573) }, + { USB_VP(USB_VENDOR_SURECOM, USB_PRODUCT_SURECOM_RT2573) }, +}; + +MODULE_DEPEND(rum, wlan, 1, 1, 1); +MODULE_DEPEND(rum, wlan_amrr, 1, 1, 1); +MODULE_DEPEND(rum, usb2_wlan, 1, 1, 1); +MODULE_DEPEND(rum, usb2_core, 1, 1, 1); -static device_probe_t rum_probe; +static device_probe_t rum_match; static device_attach_t rum_attach; static device_detach_t rum_detach; static usb2_callback_t rum_bulk_read_callback; -static usb2_callback_t rum_bulk_read_clear_stall_callback; static usb2_callback_t rum_bulk_write_callback; -static usb2_callback_t rum_bulk_write_clear_stall_callback; -static usb2_config_td_command_t rum_cfg_first_time_setup; -static usb2_config_td_command_t rum_config_copy; -static usb2_config_td_command_t rum_cfg_scan_start; -static usb2_config_td_command_t rum_cfg_scan_end; -static usb2_config_td_command_t rum_cfg_select_band; -static usb2_config_td_command_t rum_cfg_set_chan; -static usb2_config_td_command_t rum_cfg_enable_tsf_sync; -static usb2_config_td_command_t rum_cfg_enable_mrr; -static usb2_config_td_command_t rum_cfg_update_slot; -static usb2_config_td_command_t rum_cfg_select_antenna; -static usb2_config_td_command_t rum_cfg_set_txpreamble; -static usb2_config_td_command_t rum_cfg_update_promisc; -static usb2_config_td_command_t rum_cfg_pre_init; -static usb2_config_td_command_t rum_cfg_init; -static usb2_config_td_command_t rum_cfg_pre_stop; -static usb2_config_td_command_t rum_cfg_stop; -static usb2_config_td_command_t rum_cfg_amrr_timeout; -static usb2_config_td_command_t rum_cfg_prepare_beacon; -static usb2_config_td_command_t rum_cfg_newstate; +static usb2_proc_callback_t rum_task; +static usb2_proc_callback_t rum_scantask; +static usb2_proc_callback_t rum_promisctask; +static usb2_proc_callback_t rum_amrr_task; -static const char *rum_get_rf(uint32_t); -static int rum_ioctl_cb(struct ifnet *, u_long, caddr_t); -static void rum_std_command(struct ieee80211com *, usb2_config_td_command_t *); -static void rum_scan_start_cb(struct ieee80211com *); -static void rum_scan_end_cb(struct ieee80211com *); -static void rum_set_channel_cb(struct ieee80211com *); -static uint16_t rum_cfg_eeprom_read_2(struct rum_softc *, uint16_t); -static uint32_t rum_cfg_bbp_disbusy(struct rum_softc *); -static uint32_t rum_cfg_read(struct rum_softc *, uint16_t); -static uint8_t rum_cfg_bbp_init(struct rum_softc *); -static uint8_t rum_cfg_bbp_read(struct rum_softc *, uint8_t); -static void rum_cfg_amrr_start(struct rum_softc *); -static void rum_cfg_bbp_write(struct rum_softc *, uint8_t, uint8_t); -static void rum_cfg_do_request(struct rum_softc *, - struct usb2_device_request *, void *); -static void rum_cfg_eeprom_read(struct rum_softc *, uint16_t, void *, - uint16_t); -static void rum_cfg_load_microcode(struct rum_softc *, const uint8_t *, - uint16_t); -static void rum_cfg_read_eeprom(struct rum_softc *); -static void rum_cfg_read_multi(struct rum_softc *, uint16_t, void *, - uint16_t); -static void rum_cfg_rf_write(struct rum_softc *, uint8_t, uint32_t); -static void rum_cfg_set_bssid(struct rum_softc *, uint8_t *); -static void rum_cfg_set_macaddr(struct rum_softc *, uint8_t *); -static void rum_cfg_write(struct rum_softc *, uint16_t, uint32_t); -static void rum_cfg_write_multi(struct rum_softc *, uint16_t, void *, - uint16_t); -static void rum_end_of_commands(struct rum_softc *); -static void rum_init_cb(void *); -static void rum_start_cb(struct ifnet *); -static void rum_watchdog(void *); -static uint8_t rum_get_rssi(struct rum_softc *, uint8_t); static struct ieee80211vap *rum_vap_create(struct ieee80211com *, - const char[], int, int, int, const uint8_t[], - const uint8_t[]); -static void rum_vap_delete(struct ieee80211vap *); + const char name[IFNAMSIZ], int unit, int opmode, + int flags, const uint8_t bssid[IEEE80211_ADDR_LEN], + const uint8_t mac[IEEE80211_ADDR_LEN]); +static void rum_vap_delete(struct ieee80211vap *); +static void rum_tx_free(struct rum_tx_data *, int); +static int rum_alloc_tx_list(struct rum_softc *); +static void rum_free_tx_list(struct rum_softc *); +static int rum_newstate(struct ieee80211vap *, + enum ieee80211_state, int); +static void rum_setup_tx_desc(struct rum_softc *, + struct rum_tx_desc *, uint32_t, uint16_t, int, + int); +static int rum_tx_mgt(struct rum_softc *, struct mbuf *, + struct ieee80211_node *); +static int rum_tx_raw(struct rum_softc *, struct mbuf *, + struct ieee80211_node *, + const struct ieee80211_bpf_params *); +static int rum_tx_data(struct rum_softc *, struct mbuf *, + struct ieee80211_node *); +static void rum_start(struct ifnet *); +static int rum_ioctl(struct ifnet *, u_long, caddr_t); +static void rum_eeprom_read(struct rum_softc *, uint16_t, void *, + int); +static uint32_t rum_read(struct rum_softc *, uint16_t); +static void rum_read_multi(struct rum_softc *, uint16_t, void *, + int); +static void rum_write(struct rum_softc *, uint16_t, uint32_t); +static void rum_write_multi(struct rum_softc *, uint16_t, void *, + size_t); +static void rum_bbp_write(struct rum_softc *, uint8_t, uint8_t); +static uint8_t rum_bbp_read(struct rum_softc *, uint8_t); +static void rum_rf_write(struct rum_softc *, uint8_t, uint32_t); +static void rum_select_antenna(struct rum_softc *); +static void rum_enable_mrr(struct rum_softc *); +static void rum_set_txpreamble(struct rum_softc *); +static void rum_set_basicrates(struct rum_softc *); +static void rum_select_band(struct rum_softc *, + struct ieee80211_channel *); +static void rum_set_chan(struct rum_softc *, + struct ieee80211_channel *); +static void rum_enable_tsf_sync(struct rum_softc *); +static void rum_update_slot(struct ifnet *); +static void rum_set_bssid(struct rum_softc *, const uint8_t *); +static void rum_set_macaddr(struct rum_softc *, const uint8_t *); +static const char *rum_get_rf(int); +static void rum_read_eeprom(struct rum_softc *); +static int rum_bbp_init(struct rum_softc *); +static void rum_init_locked(struct rum_softc *); +static void rum_init(void *); +static void rum_stop(void *); +static int rum_load_microcode(struct rum_softc *, const u_char *, + size_t); +static int rum_prepare_beacon(struct rum_softc *, + struct ieee80211vap *); +static int rum_raw_xmit(struct ieee80211_node *, struct mbuf *, + const struct ieee80211_bpf_params *); static struct ieee80211_node *rum_node_alloc(struct ieee80211vap *, - const uint8_t[]); -static void rum_newassoc(struct ieee80211_node *, int); -static void rum_cfg_disable_tsf_sync(struct rum_softc *); -static void rum_cfg_set_run(struct rum_softc *, struct rum_config_copy *); -static void rum_fill_write_queue(struct rum_softc *); -static void rum_tx_clean_queue(struct rum_softc *); -static void rum_tx_freem(struct mbuf *); -static void rum_tx_mgt(struct rum_softc *, struct mbuf *, - struct ieee80211_node *); -static struct ieee80211vap *rum_get_vap(struct rum_softc *); -static void rum_tx_data(struct rum_softc *, struct mbuf *, - struct ieee80211_node *); -static void rum_tx_prot(struct rum_softc *, const struct mbuf *, - struct ieee80211_node *, uint8_t, uint16_t); -static void rum_tx_raw(struct rum_softc *, struct mbuf *, - struct ieee80211_node *, - const struct ieee80211_bpf_params *); -static int rum_raw_xmit_cb(struct ieee80211_node *, struct mbuf *, - const struct ieee80211_bpf_params *); -static void rum_setup_desc_and_tx(struct rum_softc *, struct mbuf *, - uint32_t, uint16_t, uint16_t); -static int rum_newstate_cb(struct ieee80211vap *, - enum ieee80211_state nstate, int arg); -static void rum_update_mcast_cb(struct ifnet *); -static void rum_update_promisc_cb(struct ifnet *); + const uint8_t mac[IEEE80211_ADDR_LEN]); +static void rum_newassoc(struct ieee80211_node *, int); +static void rum_scan_start(struct ieee80211com *); +static void rum_scan_end(struct ieee80211com *); +static void rum_set_channel(struct ieee80211com *); +static int rum_get_rssi(struct rum_softc *, uint8_t); +static void rum_amrr_start(struct rum_softc *, + struct ieee80211_node *); +static void rum_amrr_timeout(void *); +static void rum_queue_command(struct rum_softc *, + usb2_proc_callback_t *, struct usb2_proc_msg *, + struct usb2_proc_msg *); -/* various supported device vendors/products */ -static const struct usb2_device_id rum_devs[] = { - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_HWU54DM, 0)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_RT2573_2, 0)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_RT2573_3, 0)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_RT2573_4, 0)}, - {USB_VPI(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_WUG2700, 0)}, - {USB_VPI(USB_VENDOR_AMIT, USB_PRODUCT_AMIT_CGWLUSB2GO, 0)}, - {USB_VPI(USB_VENDOR_ASUS, USB_PRODUCT_ASUS_RT2573_1, 0)}, - {USB_VPI(USB_VENDOR_ASUS, USB_PRODUCT_ASUS_RT2573_2, 0)}, - {USB_VPI(USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F5D7050A, 0)}, - {USB_VPI(USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F5D9050V3, 0)}, - {USB_VPI(USB_VENDOR_CISCOLINKSYS, USB_PRODUCT_CISCOLINKSYS_WUSB54GC, 0)}, - {USB_VPI(USB_VENDOR_CISCOLINKSYS, USB_PRODUCT_CISCOLINKSYS_WUSB54GR, 0)}, - {USB_VPI(USB_VENDOR_CONCEPTRONIC2, USB_PRODUCT_CONCEPTRONIC2_C54RU2, 0)}, - {USB_VPI(USB_VENDOR_COREGA, USB_PRODUCT_COREGA_CGWLUSB2GL, 0)}, - {USB_VPI(USB_VENDOR_COREGA, USB_PRODUCT_COREGA_CGWLUSB2GPX, 0)}, - {USB_VPI(USB_VENDOR_DICKSMITH, USB_PRODUCT_DICKSMITH_CWD854F, 0)}, - {USB_VPI(USB_VENDOR_DICKSMITH, USB_PRODUCT_DICKSMITH_RT2573, 0)}, - {USB_VPI(USB_VENDOR_DLINK2, USB_PRODUCT_DLINK2_DWLG122C1, 0)}, - {USB_VPI(USB_VENDOR_DLINK2, USB_PRODUCT_DLINK2_WUA1340, 0)}, - {USB_VPI(USB_VENDOR_DLINK2, USB_PRODUCT_DLINK2_DWA111, 0)}, - {USB_VPI(USB_VENDOR_DLINK2, USB_PRODUCT_DLINK2_DWA110, 0)}, - {USB_VPI(USB_VENDOR_GIGABYTE, USB_PRODUCT_GIGABYTE_GNWB01GS, 0)}, - {USB_VPI(USB_VENDOR_GIGABYTE, USB_PRODUCT_GIGABYTE_GNWI05GS, 0)}, - {USB_VPI(USB_VENDOR_GIGASET, USB_PRODUCT_GIGASET_RT2573, 0)}, - {USB_VPI(USB_VENDOR_GOODWAY, USB_PRODUCT_GOODWAY_RT2573, 0)}, - {USB_VPI(USB_VENDOR_GUILLEMOT, USB_PRODUCT_GUILLEMOT_HWGUSB254LB, 0)}, - {USB_VPI(USB_VENDOR_GUILLEMOT, USB_PRODUCT_GUILLEMOT_HWGUSB254V2AP, 0)}, - {USB_VPI(USB_VENDOR_HUAWEI3COM, USB_PRODUCT_HUAWEI3COM_WUB320G, 0)}, - {USB_VPI(USB_VENDOR_MELCO, USB_PRODUCT_MELCO_G54HP, 0)}, - {USB_VPI(USB_VENDOR_MELCO, USB_PRODUCT_MELCO_SG54HP, 0)}, - {USB_VPI(USB_VENDOR_MELCO, USB_PRODUCT_MELCO_SG54HG, 0)}, - {USB_VPI(USB_VENDOR_MSI, USB_PRODUCT_MSI_RT2573_1, 0)}, - {USB_VPI(USB_VENDOR_MSI, USB_PRODUCT_MSI_RT2573_2, 0)}, - {USB_VPI(USB_VENDOR_MSI, USB_PRODUCT_MSI_RT2573_3, 0)}, - {USB_VPI(USB_VENDOR_MSI, USB_PRODUCT_MSI_RT2573_4, 0)}, - {USB_VPI(USB_VENDOR_NOVATECH, USB_PRODUCT_NOVATECH_RT2573, 0)}, - {USB_VPI(USB_VENDOR_PLANEX2, USB_PRODUCT_PLANEX2_GWUS54HP, 0)}, - {USB_VPI(USB_VENDOR_PLANEX2, USB_PRODUCT_PLANEX2_GWUS54MINI2, 0)}, - {USB_VPI(USB_VENDOR_PLANEX2, USB_PRODUCT_PLANEX2_GWUSMM, 0)}, - {USB_VPI(USB_VENDOR_QCOM, USB_PRODUCT_QCOM_RT2573, 0)}, - {USB_VPI(USB_VENDOR_QCOM, USB_PRODUCT_QCOM_RT2573_2, 0)}, - {USB_VPI(USB_VENDOR_RALINK, USB_PRODUCT_RALINK_RT2573, 0)}, - {USB_VPI(USB_VENDOR_RALINK, USB_PRODUCT_RALINK_RT2573_2, 0)}, - {USB_VPI(USB_VENDOR_RALINK, USB_PRODUCT_RALINK_RT2671, 0)}, - {USB_VPI(USB_VENDOR_SITECOMEU, USB_PRODUCT_SITECOMEU_WL113R2, 0)}, - {USB_VPI(USB_VENDOR_SITECOMEU, USB_PRODUCT_SITECOMEU_WL172, 0)}, - {USB_VPI(USB_VENDOR_SPARKLAN, USB_PRODUCT_SPARKLAN_RT2573, 0)}, - {USB_VPI(USB_VENDOR_SURECOM, USB_PRODUCT_SURECOM_RT2573, 0)}, +static const struct { + uint32_t reg; + uint32_t val; +} rum_def_mac[] = { + { RT2573_TXRX_CSR0, 0x025fb032 }, + { RT2573_TXRX_CSR1, 0x9eaa9eaf }, + { RT2573_TXRX_CSR2, 0x8a8b8c8d }, + { RT2573_TXRX_CSR3, 0x00858687 }, + { RT2573_TXRX_CSR7, 0x2e31353b }, + { RT2573_TXRX_CSR8, 0x2a2a2a2c }, + { RT2573_TXRX_CSR15, 0x0000000f }, + { RT2573_MAC_CSR6, 0x00000fff }, + { RT2573_MAC_CSR8, 0x016c030a }, + { RT2573_MAC_CSR10, 0x00000718 }, + { RT2573_MAC_CSR12, 0x00000004 }, + { RT2573_MAC_CSR13, 0x00007f00 }, + { RT2573_SEC_CSR0, 0x00000000 }, + { RT2573_SEC_CSR1, 0x00000000 }, + { RT2573_SEC_CSR5, 0x00000000 }, + { RT2573_PHY_CSR1, 0x000023b0 }, + { RT2573_PHY_CSR5, 0x00040a06 }, + { RT2573_PHY_CSR6, 0x00080606 }, + { RT2573_PHY_CSR7, 0x00000408 }, + { RT2573_AIFSN_CSR, 0x00002273 }, + { RT2573_CWMIN_CSR, 0x00002344 }, + { RT2573_CWMAX_CSR, 0x000034aa } }; -struct rum_def_mac { - uint32_t reg; - uint32_t val; -}; - -static const struct rum_def_mac rum_def_mac[] = { - {RT2573_TXRX_CSR0, 0x025fb032}, - {RT2573_TXRX_CSR1, 0x9eaa9eaf}, - {RT2573_TXRX_CSR2, 0x8a8b8c8d}, - {RT2573_TXRX_CSR3, 0x00858687}, - {RT2573_TXRX_CSR7, 0x2e31353b}, - {RT2573_TXRX_CSR8, 0x2a2a2a2c}, - {RT2573_TXRX_CSR15, 0x0000000f}, - {RT2573_MAC_CSR6, 0x00000fff}, - {RT2573_MAC_CSR8, 0x016c030a}, - {RT2573_MAC_CSR10, 0x00000718}, - {RT2573_MAC_CSR12, 0x00000004}, - {RT2573_MAC_CSR13, 0x00007f00}, - {RT2573_SEC_CSR0, 0x00000000}, - {RT2573_SEC_CSR1, 0x00000000}, - {RT2573_SEC_CSR5, 0x00000000}, - {RT2573_PHY_CSR1, 0x000023b0}, - {RT2573_PHY_CSR5, 0x00040a06}, - {RT2573_PHY_CSR6, 0x00080606}, - {RT2573_PHY_CSR7, 0x00000408}, - {RT2573_AIFSN_CSR, 0x00002273}, - {RT2573_CWMIN_CSR, 0x00002344}, - {RT2573_CWMAX_CSR, 0x000034aa} -}; - -struct rum_def_bbp { +static const struct { uint8_t reg; uint8_t val; +} rum_def_bbp[] = { + { 3, 0x80 }, + { 15, 0x30 }, + { 17, 0x20 }, + { 21, 0xc8 }, + { 22, 0x38 }, + { 23, 0x06 }, + { 24, 0xfe }, + { 25, 0x0a }, + { 26, 0x0d }, + { 32, 0x0b }, + { 34, 0x12 }, + { 37, 0x07 }, + { 39, 0xf8 }, + { 41, 0x60 }, + { 53, 0x10 }, + { 54, 0x18 }, + { 60, 0x10 }, + { 61, 0x04 }, + { 62, 0x04 }, + { 75, 0xfe }, + { 86, 0xfe }, + { 88, 0xfe }, + { 90, 0x0f }, + { 99, 0x00 }, + { 102, 0x16 }, + { 107, 0x04 } }; -static const struct rum_def_bbp rum_def_bbp[] = { - {3, 0x80}, - {15, 0x30}, - {17, 0x20}, - {21, 0xc8}, - {22, 0x38}, - {23, 0x06}, - {24, 0xfe}, - {25, 0x0a}, - {26, 0x0d}, - {32, 0x0b}, - {34, 0x12}, - {37, 0x07}, - {39, 0xf8}, - {41, 0x60}, - {53, 0x10}, - {54, 0x18}, - {60, 0x10}, - {61, 0x04}, - {62, 0x04}, - {75, 0xfe}, - {86, 0xfe}, - {88, 0xfe}, - {90, 0x0f}, - {99, 0x00}, - {102, 0x16}, - {107, 0x04} -}; +static const struct rfprog { + uint8_t chan; + uint32_t r1, r2, r3, r4; +} rum_rf5226[] = { + { 1, 0x00b03, 0x001e1, 0x1a014, 0x30282 }, + { 2, 0x00b03, 0x001e1, 0x1a014, 0x30287 }, + { 3, 0x00b03, 0x001e2, 0x1a014, 0x30282 }, + { 4, 0x00b03, 0x001e2, 0x1a014, 0x30287 }, + { 5, 0x00b03, 0x001e3, 0x1a014, 0x30282 }, + { 6, 0x00b03, 0x001e3, 0x1a014, 0x30287 }, + { 7, 0x00b03, 0x001e4, 0x1a014, 0x30282 }, + { 8, 0x00b03, 0x001e4, 0x1a014, 0x30287 }, + { 9, 0x00b03, 0x001e5, 0x1a014, 0x30282 }, + { 10, 0x00b03, 0x001e5, 0x1a014, 0x30287 }, + { 11, 0x00b03, 0x001e6, 0x1a014, 0x30282 }, + { 12, 0x00b03, 0x001e6, 0x1a014, 0x30287 }, + { 13, 0x00b03, 0x001e7, 0x1a014, 0x30282 }, + { 14, 0x00b03, 0x001e8, 0x1a014, 0x30284 }, -struct rfprog { - uint8_t chan; - uint32_t r1, r2, r3, r4; -}; + { 34, 0x00b03, 0x20266, 0x36014, 0x30282 }, + { 38, 0x00b03, 0x20267, 0x36014, 0x30284 }, + { 42, 0x00b03, 0x20268, 0x36014, 0x30286 }, + { 46, 0x00b03, 0x20269, 0x36014, 0x30288 }, -static const struct rfprog rum_rf5226[] = { - {1, 0x00b03, 0x001e1, 0x1a014, 0x30282}, - {2, 0x00b03, 0x001e1, 0x1a014, 0x30287}, - {3, 0x00b03, 0x001e2, 0x1a014, 0x30282}, - {4, 0x00b03, 0x001e2, 0x1a014, 0x30287}, - {5, 0x00b03, 0x001e3, 0x1a014, 0x30282}, - {6, 0x00b03, 0x001e3, 0x1a014, 0x30287}, - {7, 0x00b03, 0x001e4, 0x1a014, 0x30282}, - {8, 0x00b03, 0x001e4, 0x1a014, 0x30287}, - {9, 0x00b03, 0x001e5, 0x1a014, 0x30282}, - {10, 0x00b03, 0x001e5, 0x1a014, 0x30287}, - {11, 0x00b03, 0x001e6, 0x1a014, 0x30282}, - {12, 0x00b03, 0x001e6, 0x1a014, 0x30287}, - {13, 0x00b03, 0x001e7, 0x1a014, 0x30282}, - {14, 0x00b03, 0x001e8, 0x1a014, 0x30284}, + { 36, 0x00b03, 0x00266, 0x26014, 0x30288 }, + { 40, 0x00b03, 0x00268, 0x26014, 0x30280 }, + { 44, 0x00b03, 0x00269, 0x26014, 0x30282 }, + { 48, 0x00b03, 0x0026a, 0x26014, 0x30284 }, + { 52, 0x00b03, 0x0026b, 0x26014, 0x30286 }, + { 56, 0x00b03, 0x0026c, 0x26014, 0x30288 }, + { 60, 0x00b03, 0x0026e, 0x26014, 0x30280 }, + { 64, 0x00b03, 0x0026f, 0x26014, 0x30282 }, - {34, 0x00b03, 0x20266, 0x36014, 0x30282}, - {38, 0x00b03, 0x20267, 0x36014, 0x30284}, - {42, 0x00b03, 0x20268, 0x36014, 0x30286}, - {46, 0x00b03, 0x20269, 0x36014, 0x30288}, + { 100, 0x00b03, 0x0028a, 0x2e014, 0x30280 }, + { 104, 0x00b03, 0x0028b, 0x2e014, 0x30282 }, + { 108, 0x00b03, 0x0028c, 0x2e014, 0x30284 }, + { 112, 0x00b03, 0x0028d, 0x2e014, 0x30286 }, + { 116, 0x00b03, 0x0028e, 0x2e014, 0x30288 }, + { 120, 0x00b03, 0x002a0, 0x2e014, 0x30280 }, + { 124, 0x00b03, 0x002a1, 0x2e014, 0x30282 }, + { 128, 0x00b03, 0x002a2, 0x2e014, 0x30284 }, + { 132, 0x00b03, 0x002a3, 0x2e014, 0x30286 }, + { 136, 0x00b03, 0x002a4, 0x2e014, 0x30288 }, + { 140, 0x00b03, 0x002a6, 0x2e014, 0x30280 }, - {36, 0x00b03, 0x00266, 0x26014, 0x30288}, - {40, 0x00b03, 0x00268, 0x26014, 0x30280}, - {44, 0x00b03, 0x00269, 0x26014, 0x30282}, - {48, 0x00b03, 0x0026a, 0x26014, 0x30284}, - {52, 0x00b03, 0x0026b, 0x26014, 0x30286}, - {56, 0x00b03, 0x0026c, 0x26014, 0x30288}, - {60, 0x00b03, 0x0026e, 0x26014, 0x30280}, - {64, 0x00b03, 0x0026f, 0x26014, 0x30282}, + { 149, 0x00b03, 0x002a8, 0x2e014, 0x30287 }, + { 153, 0x00b03, 0x002a9, 0x2e014, 0x30289 }, + { 157, 0x00b03, 0x002ab, 0x2e014, 0x30281 }, + { 161, 0x00b03, 0x002ac, 0x2e014, 0x30283 }, + { 165, 0x00b03, 0x002ad, 0x2e014, 0x30285 } +}, rum_rf5225[] = { + { 1, 0x00b33, 0x011e1, 0x1a014, 0x30282 }, + { 2, 0x00b33, 0x011e1, 0x1a014, 0x30287 }, + { 3, 0x00b33, 0x011e2, 0x1a014, 0x30282 }, + { 4, 0x00b33, 0x011e2, 0x1a014, 0x30287 }, + { 5, 0x00b33, 0x011e3, 0x1a014, 0x30282 }, + { 6, 0x00b33, 0x011e3, 0x1a014, 0x30287 }, + { 7, 0x00b33, 0x011e4, 0x1a014, 0x30282 }, + { 8, 0x00b33, 0x011e4, 0x1a014, 0x30287 }, + { 9, 0x00b33, 0x011e5, 0x1a014, 0x30282 }, + { 10, 0x00b33, 0x011e5, 0x1a014, 0x30287 }, + { 11, 0x00b33, 0x011e6, 0x1a014, 0x30282 }, + { 12, 0x00b33, 0x011e6, 0x1a014, 0x30287 }, + { 13, 0x00b33, 0x011e7, 0x1a014, 0x30282 }, + { 14, 0x00b33, 0x011e8, 0x1a014, 0x30284 }, - {100, 0x00b03, 0x0028a, 0x2e014, 0x30280}, - {104, 0x00b03, 0x0028b, 0x2e014, 0x30282}, - {108, 0x00b03, 0x0028c, 0x2e014, 0x30284}, - {112, 0x00b03, 0x0028d, 0x2e014, 0x30286}, - {116, 0x00b03, 0x0028e, 0x2e014, 0x30288}, - {120, 0x00b03, 0x002a0, 0x2e014, 0x30280}, - {124, 0x00b03, 0x002a1, 0x2e014, 0x30282}, - {128, 0x00b03, 0x002a2, 0x2e014, 0x30284}, - {132, 0x00b03, 0x002a3, 0x2e014, 0x30286}, - {136, 0x00b03, 0x002a4, 0x2e014, 0x30288}, - {140, 0x00b03, 0x002a6, 0x2e014, 0x30280}, + { 34, 0x00b33, 0x01266, 0x26014, 0x30282 }, + { 38, 0x00b33, 0x01267, 0x26014, 0x30284 }, + { 42, 0x00b33, 0x01268, 0x26014, 0x30286 }, + { 46, 0x00b33, 0x01269, 0x26014, 0x30288 }, - {149, 0x00b03, 0x002a8, 0x2e014, 0x30287}, - {153, 0x00b03, 0x002a9, 0x2e014, 0x30289}, - {157, 0x00b03, 0x002ab, 0x2e014, 0x30281}, - {161, 0x00b03, 0x002ac, 0x2e014, 0x30283}, - {165, 0x00b03, 0x002ad, 0x2e014, 0x30285} -}; + { 36, 0x00b33, 0x01266, 0x26014, 0x30288 }, + { 40, 0x00b33, 0x01268, 0x26014, 0x30280 }, + { 44, 0x00b33, 0x01269, 0x26014, 0x30282 }, + { 48, 0x00b33, 0x0126a, 0x26014, 0x30284 }, + { 52, 0x00b33, 0x0126b, 0x26014, 0x30286 }, + { 56, 0x00b33, 0x0126c, 0x26014, 0x30288 }, + { 60, 0x00b33, 0x0126e, 0x26014, 0x30280 }, + { 64, 0x00b33, 0x0126f, 0x26014, 0x30282 }, -static const struct rfprog rum_rf5225[] = { - {1, 0x00b33, 0x011e1, 0x1a014, 0x30282}, - {2, 0x00b33, 0x011e1, 0x1a014, 0x30287}, - {3, 0x00b33, 0x011e2, 0x1a014, 0x30282}, - {4, 0x00b33, 0x011e2, 0x1a014, 0x30287}, - {5, 0x00b33, 0x011e3, 0x1a014, 0x30282}, - {6, 0x00b33, 0x011e3, 0x1a014, 0x30287}, - {7, 0x00b33, 0x011e4, 0x1a014, 0x30282}, - {8, 0x00b33, 0x011e4, 0x1a014, 0x30287}, - {9, 0x00b33, 0x011e5, 0x1a014, 0x30282}, - {10, 0x00b33, 0x011e5, 0x1a014, 0x30287}, - {11, 0x00b33, 0x011e6, 0x1a014, 0x30282}, - {12, 0x00b33, 0x011e6, 0x1a014, 0x30287}, - {13, 0x00b33, 0x011e7, 0x1a014, 0x30282}, - {14, 0x00b33, 0x011e8, 0x1a014, 0x30284}, + { 100, 0x00b33, 0x0128a, 0x2e014, 0x30280 }, + { 104, 0x00b33, 0x0128b, 0x2e014, 0x30282 }, + { 108, 0x00b33, 0x0128c, 0x2e014, 0x30284 }, + { 112, 0x00b33, 0x0128d, 0x2e014, 0x30286 }, + { 116, 0x00b33, 0x0128e, 0x2e014, 0x30288 }, + { 120, 0x00b33, 0x012a0, 0x2e014, 0x30280 }, + { 124, 0x00b33, 0x012a1, 0x2e014, 0x30282 }, + { 128, 0x00b33, 0x012a2, 0x2e014, 0x30284 }, + { 132, 0x00b33, 0x012a3, 0x2e014, 0x30286 }, + { 136, 0x00b33, 0x012a4, 0x2e014, 0x30288 }, + { 140, 0x00b33, 0x012a6, 0x2e014, 0x30280 }, - {34, 0x00b33, 0x01266, 0x26014, 0x30282}, - {38, 0x00b33, 0x01267, 0x26014, 0x30284}, - {42, 0x00b33, 0x01268, 0x26014, 0x30286}, - {46, 0x00b33, 0x01269, 0x26014, 0x30288}, - - {36, 0x00b33, 0x01266, 0x26014, 0x30288}, - {40, 0x00b33, 0x01268, 0x26014, 0x30280}, - {44, 0x00b33, 0x01269, 0x26014, 0x30282}, - {48, 0x00b33, 0x0126a, 0x26014, 0x30284}, - {52, 0x00b33, 0x0126b, 0x26014, 0x30286}, - {56, 0x00b33, 0x0126c, 0x26014, 0x30288}, - {60, 0x00b33, 0x0126e, 0x26014, 0x30280}, - {64, 0x00b33, 0x0126f, 0x26014, 0x30282}, - - {100, 0x00b33, 0x0128a, 0x2e014, 0x30280}, - {104, 0x00b33, 0x0128b, 0x2e014, 0x30282}, - {108, 0x00b33, 0x0128c, 0x2e014, 0x30284}, - {112, 0x00b33, 0x0128d, 0x2e014, 0x30286}, - {116, 0x00b33, 0x0128e, 0x2e014, 0x30288}, - {120, 0x00b33, 0x012a0, 0x2e014, 0x30280}, - {124, 0x00b33, 0x012a1, 0x2e014, 0x30282}, - {128, 0x00b33, 0x012a2, 0x2e014, 0x30284}, - {132, 0x00b33, 0x012a3, 0x2e014, 0x30286}, - {136, 0x00b33, 0x012a4, 0x2e014, 0x30288}, - {140, 0x00b33, 0x012a6, 0x2e014, 0x30280}, - - {149, 0x00b33, 0x012a8, 0x2e014, 0x30287}, - {153, 0x00b33, 0x012a9, 0x2e014, 0x30289}, - {157, 0x00b33, 0x012ab, 0x2e014, 0x30281}, - {161, 0x00b33, 0x012ac, 0x2e014, 0x30283}, - {165, 0x00b33, 0x012ad, 0x2e014, 0x30285} + { 149, 0x00b33, 0x012a8, 0x2e014, 0x30287 }, + { 153, 0x00b33, 0x012a9, 0x2e014, 0x30289 }, + { 157, 0x00b33, 0x012ab, 0x2e014, 0x30281 }, + { 161, 0x00b33, 0x012ac, 0x2e014, 0x30283 }, + { 165, 0x00b33, 0x012ad, 0x2e014, 0x30285 } }; static const struct usb2_config rum_config[RUM_N_TRANSFER] = { - [RUM_BULK_DT_WR] = { + [RUM_BULK_WR] = { .type = UE_BULK, .endpoint = UE_ADDR_ANY, .direction = UE_DIR_OUT, .mh.bufsize = (MCLBYTES + RT2573_TX_DESC_SIZE + 8), .mh.flags = {.pipe_bof = 1,.force_short_xfer = 1,}, - .mh.callback = &rum_bulk_write_callback, + .mh.callback = rum_bulk_write_callback, .mh.timeout = 5000, /* ms */ }, - - [RUM_BULK_DT_RD] = { + [RUM_BULK_RD] = { .type = UE_BULK, .endpoint = UE_ADDR_ANY, .direction = UE_DIR_IN, .mh.bufsize = (MCLBYTES + RT2573_RX_DESC_SIZE), .mh.flags = {.pipe_bof = 1,.short_xfer_ok = 1,}, - .mh.callback = &rum_bulk_read_callback, - }, - - [RUM_BULK_CS_WR] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.callback = &rum_bulk_write_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ - }, - - [RUM_BULK_CS_RD] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(struct usb2_device_request), - .mh.callback = &rum_bulk_read_clear_stall_callback, - .mh.timeout = 1000, /* 1 second */ - .mh.interval = 50, /* 50ms */ + .mh.callback = rum_bulk_read_callback, }, }; -static devclass_t rum_devclass; - -static device_method_t rum_methods[] = { - DEVMETHOD(device_probe, rum_probe), - DEVMETHOD(device_attach, rum_attach), - DEVMETHOD(device_detach, rum_detach), - {0, 0} -}; - -static driver_t rum_driver = { - .name = "rum", - .methods = rum_methods, - .size = sizeof(struct rum_softc), -}; - -DRIVER_MODULE(rum, ushub, rum_driver, rum_devclass, NULL, 0); -MODULE_DEPEND(rum, usb2_wlan, 1, 1, 1); -MODULE_DEPEND(rum, usb2_core, 1, 1, 1); -MODULE_DEPEND(rum, wlan, 1, 1, 1); -MODULE_DEPEND(rum, wlan_amrr, 1, 1, 1); - static int -rum_probe(device_t dev) +rum_match(device_t self) { - struct usb2_attach_arg *uaa = device_get_ivars(dev); + struct usb2_attach_arg *uaa = device_get_ivars(self); - if (uaa->usb2_mode != USB_MODE_HOST) { + if (uaa->usb2_mode != USB_MODE_HOST) return (ENXIO); - } - if (uaa->info.bConfigIndex != 0) { + if (uaa->info.bConfigIndex != 0) return (ENXIO); - } - if (uaa->info.bIfaceIndex != RT2573_IFACE_INDEX) { + if (uaa->info.bIfaceIndex != RT2573_IFACE_INDEX) return (ENXIO); - } + return (usb2_lookup_id_by_uaa(rum_devs, sizeof(rum_devs), uaa)); } static int -rum_attach(device_t dev) +rum_attach(device_t self) { - struct usb2_attach_arg *uaa = device_get_ivars(dev); - struct rum_softc *sc = device_get_softc(dev); - int error; - uint8_t iface_index; + struct usb2_attach_arg *uaa = device_get_ivars(self); + struct rum_softc *sc = device_get_softc(self); + struct ieee80211com *ic; + struct ifnet *ifp; + const uint8_t *ucode = NULL; + uint8_t bands, iface_index; + uint32_t tmp; + int error, ntries, size; - device_set_usb2_desc(dev); - - mtx_init(&sc->sc_mtx, "rum lock", MTX_NETWORK_LOCK, - MTX_DEF | MTX_RECURSE); - - snprintf(sc->sc_name, sizeof(sc->sc_name), "%s", - device_get_nameunit(dev)); - + device_set_usb2_desc(self); sc->sc_udev = uaa->device; - sc->sc_unit = device_get_unit(dev); + sc->sc_dev = self; - usb2_callout_init_mtx(&sc->sc_watchdog, &sc->sc_mtx, 0); + mtx_init(&sc->sc_mtx, device_get_nameunit(self), + MTX_NETWORK_LOCK, MTX_DEF); iface_index = RT2573_IFACE_INDEX; error = usb2_transfer_setup(uaa->device, &iface_index, sc->sc_xfer, rum_config, RUM_N_TRANSFER, sc, &sc->sc_mtx); if (error) { - device_printf(dev, "could not allocate USB transfers, " + device_printf(self, "could not allocate USB transfers, " "err=%s\n", usb2_errstr(error)); goto detach; } - error = usb2_config_td_setup(&sc->sc_config_td, sc, &sc->sc_mtx, - &rum_end_of_commands, - sizeof(struct usb2_config_td_cc), 24); + error = usb2_proc_create(&sc->sc_tq, &sc->sc_mtx, + device_get_nameunit(self), USB_PRI_MED); if (error) { - device_printf(dev, "could not setup config " - "thread!\n"); + device_printf(self, "could not setup config thread!\n"); + goto detach; + } + + ifp = sc->sc_ifp = if_alloc(IFT_IEEE80211); + if (ifp == NULL) { + device_printf(sc->sc_dev, "can not if_alloc()\n"); + goto detach; + } + ic = ifp->if_l2com; + + RUM_LOCK(sc); + /* retrieve RT2573 rev. no */ + for (ntries = 0; ntries < 1000; ntries++) { + if ((tmp = rum_read(sc, RT2573_MAC_CSR0)) != 0) + break; + DELAY(1000); + } + if (ntries == 1000) { + device_printf(self, "timeout waiting for chip to settle\n"); + RUM_UNLOCK(sc); + goto detach; + } + + /* retrieve MAC address and various other things from EEPROM */ + rum_read_eeprom(sc); + + device_printf(self, "MAC/BBP RT2573 (rev 0x%05x), RF %s\n", + tmp, rum_get_rf(sc->rf_rev)); + + ucode = rt2573_ucode; + size = sizeof rt2573_ucode; + error = rum_load_microcode(sc, ucode, size); + if (error != 0) { + device_printf(self, "could not load 8051 microcode\n"); + RUM_UNLOCK(sc); goto detach; } - mtx_lock(&sc->sc_mtx); + RUM_UNLOCK(sc); + + ifp->if_softc = sc; + if_initname(ifp, "rum", device_get_unit(sc->sc_dev)); + ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + ifp->if_init = rum_init; + ifp->if_ioctl = rum_ioctl; + ifp->if_start = rum_start; + IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN); + ifp->if_snd.ifq_drv_maxlen = IFQ_MAXLEN; + IFQ_SET_READY(&ifp->if_snd); + + ic->ic_ifp = ifp; + ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ + + /* set device capabilities */ + ic->ic_caps = + IEEE80211_C_STA /* station mode supported */ + | IEEE80211_C_IBSS /* IBSS mode supported */ + | IEEE80211_C_MONITOR /* monitor mode supported */ + | IEEE80211_C_HOSTAP /* HostAp mode supported */ + | IEEE80211_C_TXPMGT /* tx power management */ + | IEEE80211_C_SHPREAMBLE /* short preamble supported */ + | IEEE80211_C_SHSLOT /* short slot time supported */ + | IEEE80211_C_BGSCAN /* bg scanning supported */ + | IEEE80211_C_WPA /* 802.11i */ + ; + + bands = 0; + setbit(&bands, IEEE80211_MODE_11B); + setbit(&bands, IEEE80211_MODE_11G); + if (sc->rf_rev == RT2573_RF_5225 || sc->rf_rev == RT2573_RF_5226) + setbit(&bands, IEEE80211_MODE_11A); + ieee80211_init_channels(ic, NULL, &bands); + + ieee80211_ifattach(ic); + ic->ic_newassoc = rum_newassoc; + ic->ic_raw_xmit = rum_raw_xmit; + ic->ic_node_alloc = rum_node_alloc; + ic->ic_scan_start = rum_scan_start; + ic->ic_scan_end = rum_scan_end; + ic->ic_set_channel = rum_set_channel; + + ic->ic_vap_create = rum_vap_create; + ic->ic_vap_delete = rum_vap_delete; + + sc->sc_rates = ieee80211_get_ratetable(ic->ic_curchan); + + bpfattach(ifp, DLT_IEEE802_11_RADIO, + sizeof (struct ieee80211_frame) + sizeof(sc->sc_txtap)); - /* start setup */ + sc->sc_rxtap_len = sizeof sc->sc_rxtap; + sc->sc_rxtap.wr_ihdr.it_len = htole16(sc->sc_rxtap_len); + sc->sc_rxtap.wr_ihdr.it_present = htole32(RT2573_RX_RADIOTAP_PRESENT); - usb2_config_td_queue_command - (&sc->sc_config_td, NULL, &rum_cfg_first_time_setup, 0, 0); + sc->sc_txtap_len = sizeof sc->sc_txtap; + sc->sc_txtap.wt_ihdr.it_len = htole16(sc->sc_txtap_len); + sc->sc_txtap.wt_ihdr.it_present = htole32(RT2573_TX_RADIOTAP_PRESENT); - rum_watchdog(sc); - mtx_unlock(&sc->sc_mtx); - return (0); /* success */ + if (bootverbose) + ieee80211_announce(ic); + return 0; detach: - rum_detach(dev); + rum_detach(self); return (ENXIO); /* failure */ } static int -rum_detach(device_t dev) +rum_detach(device_t self) { - struct rum_softc *sc = device_get_softc(dev); - struct ieee80211com *ic; - struct ifnet *ifp; + struct rum_softc *sc = device_get_softc(self); + struct ifnet *ifp = sc->sc_ifp; + struct ieee80211com *ic = ifp->if_l2com; - usb2_config_td_drain(&sc->sc_config_td); - - mtx_lock(&sc->sc_mtx); - - usb2_callout_stop(&sc->sc_watchdog); - - rum_cfg_pre_stop(sc, NULL, 0); - - ifp = sc->sc_ifp; - ic = ifp->if_l2com; + RUM_LOCK(sc); + sc->sc_flags |= RUM_FLAG_DETACH; + rum_stop(sc); + RUM_UNLOCK(sc); - mtx_unlock(&sc->sc_mtx); - /* stop all USB transfers first */ usb2_transfer_unsetup(sc->sc_xfer, RUM_N_TRANSFER); + usb2_proc_free(&sc->sc_tq); - /* get rid of any late children */ - bus_generic_detach(dev); - if (ifp) { bpfdetach(ifp); ieee80211_ifdetach(ic); if_free(ifp); } - usb2_config_td_unsetup(&sc->sc_config_td); - - usb2_callout_drain(&sc->sc_watchdog); - mtx_destroy(&sc->sc_mtx); return (0); } -static void -rum_cfg_do_request(struct rum_softc *sc, struct usb2_device_request *req, - void *data) +static struct ieee80211vap * +rum_vap_create(struct ieee80211com *ic, + const char name[IFNAMSIZ], int unit, int opmode, int flags, + const uint8_t bssid[IEEE80211_ADDR_LEN], + const uint8_t mac[IEEE80211_ADDR_LEN]) { - uint16_t length; - usb2_error_t err; + struct rum_softc *sc = ic->ic_ifp->if_softc; + struct rum_vap *rvp; + struct ieee80211vap *vap; -repeat: + if (!TAILQ_EMPTY(&ic->ic_vaps)) /* only one at a time */ + return NULL; + rvp = (struct rum_vap *) malloc(sizeof(struct rum_vap), + M_80211_VAP, M_NOWAIT | M_ZERO); + if (rvp == NULL) + return NULL; + vap = &rvp->vap; + /* enable s/w bmiss handling for sta mode */ + ieee80211_vap_setup(ic, vap, name, unit, opmode, + flags | IEEE80211_CLONE_NOBEACONS, bssid, mac); - if (usb2_config_td_is_gone(&sc->sc_config_td)) { - goto error; - } - err = usb2_do_request_flags - (sc->sc_udev, &sc->sc_mtx, req, data, 0, NULL, 1000); + /* override state transition machine */ + rvp->newstate = vap->iv_newstate; + vap->iv_newstate = rum_newstate; - if (err) { + rvp->sc = sc; + usb2_callout_init_mtx(&rvp->amrr_ch, &sc->sc_mtx, 0); + ieee80211_amrr_init(&rvp->amrr, vap, + IEEE80211_AMRR_MIN_SUCCESS_THRESHOLD, + IEEE80211_AMRR_MAX_SUCCESS_THRESHOLD, + 1000 /* 1 sec */); - DPRINTF("device request failed, err=%s " - "(ignored)\n", usb2_errstr(err)); - - /* wait a little before next try */ >>> TRUNCATED FOR MAIL (1000 lines) <<< From thompsa at FreeBSD.org Sun Feb 8 18:45:09 2009 From: thompsa at FreeBSD.org (Andrew Thompson) Date: Sun Feb 8 18:45:15 2009 Subject: PERFORCE change 157413 for review Message-ID: <200902090245.n192j8Qt079927@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157413 Change 157413 by thompsa@thompsa_burger on 2009/02/09 02:44:33 Remove usb2_config_td.[ch], they are no longer used. Affected files ... .. //depot/projects/usb/src/sys/conf/files#51 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_config_td.c#14 delete .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_config_td.h#9 delete .. //depot/projects/usb/src/sys/modules/usb2/core/Makefile#12 edit Differences ... ==== //depot/projects/usb/src/sys/conf/files#51 (text+ko) ==== @@ -1572,7 +1572,6 @@ # dev/usb2/core/usb2_busdma.c optional usb2_core dev/usb2/core/usb2_compat_linux.c optional usb2_core -dev/usb2/core/usb2_config_td.c optional usb2_core dev/usb2/core/usb2_core.c optional usb2_core dev/usb2/core/usb2_debug.c optional usb2_core dev/usb2/core/usb2_dev.c optional usb2_core ==== //depot/projects/usb/src/sys/modules/usb2/core/Makefile#12 (text+ko) ==== @@ -35,7 +35,6 @@ SRCS+= usb2_if.c SRCS+= usb2_busdma.c SRCS+= usb2_compat_linux.c -SRCS+= usb2_config_td.c SRCS+= usb2_core.c SRCS+= usb2_debug.c SRCS+= usb2_dev.c From hselasky at c2i.net Mon Feb 9 00:18:42 2009 From: hselasky at c2i.net (Hans Petter Selasky) Date: Mon Feb 9 00:18:49 2009 Subject: PERFORCE change 157412 for review In-Reply-To: <200902090242.n192g4vr079701@repoman.freebsd.org> References: <200902090242.n192g4vr079701@repoman.freebsd.org> Message-ID: <200902090921.06610.hselasky@c2i.net> On Monday 09 February 2009, Andrew Thompson wrote: > http://perforce.freebsd.org/chv.cgi?CH=157412 > > Change 157412 by thompsa@thompsa_burger on 2009/02/09 02:41:33 > > Sync from svn.freebsd.org/base/user/thompsa/usb which is a minimal > changeset from oldUSB (no config_td). > > This excludes the taskqueue changes (for the moment) as requested. > > Affected files ... > > .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#26 edit > .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumfw.h#2 edit > .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumreg.h#2 edit > .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumvar.h#3 edit > .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#26 edit > .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_uralreg.h#2 edit > .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_uralvar.h#3 edit > .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zyd2.c#29 edit > .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zydfw.h#2 edit > .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zydreg.h#3 edit > Are you planning to port in the "if_upgt" and "if_urtw" aswell? --HPS From hselasky at FreeBSD.org Mon Feb 9 05:43:19 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Mon Feb 9 05:43:47 2009 Subject: PERFORCE change 157429 for review Message-ID: <200902091343.n19DhHQF089933@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157429 Change 157429 by hselasky@hselasky_laptop001 on 2009/02/09 13:43:03 Factor out USB ethernet and USB serial driver specific control request. Fix some minor issues in USB WLAN drivers, like ensuring that xxx_tx_free() is called in all USB callback error cases. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#32 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.h#10 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.c#11 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.h#9 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.c#27 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.h#15 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#27 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumvar.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#27 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_uralvar.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zyd2.c#30 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zydreg.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/usb2_wlan.c#6 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/usb2_wlan.h#8 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#32 (text+ko) ==== @@ -477,6 +477,49 @@ } /*------------------------------------------------------------------------* + * usb2_do_request_proc - factored out code + * + * This function is factored out code. It does basically the same like + * usb2_do_request_flags, except it will check the status of the + * passed process argument before doing the USB request. If the + * process is draining the USB_ERR_IOERROR code will be returned. It + * is assumed that the mutex associated with the process is locked + * when calling this function. + *------------------------------------------------------------------------*/ +usb2_error_t +usb2_do_request_proc(struct usb2_device *udev, struct usb2_process *pproc, + struct usb2_device_request *req, void *data, uint32_t flags, + uint16_t *actlen, uint32_t timeout) +{ + usb2_error_t err; + uint16_t len; + + /* get request data length */ + len = UGETW(req->wLength); + + /* check if the device is being detached */ + if (usb2_proc_is_gone(pproc)) { + err = USB_ERR_IOERROR; + goto done; + } + + /* forward the USB request */ + err = usb2_do_request_flags(udev, pproc->up_mtx, + req, data, flags, actlen, timeout); + +done: + /* on failure we zero the data */ + /* on short packet we zero the unused data */ + if ((len != 0) && (req->bmRequestType & UE_DIR_IN)) { + if (err) + memset(data, 0, len); + else if (actlen && *actlen != len) + memset(((uint8_t *)data) + *actlen, 0, len - *actlen); + } + return (err); +} + +/*------------------------------------------------------------------------* * usb2_req_reset_port * * This function will instruct an USB HUB to perform a reset sequence ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.h#10 (text+ko) ==== @@ -27,9 +27,14 @@ #ifndef _USB2_REQUEST_H_ #define _USB2_REQUEST_H_ +struct usb2_process; + usb2_error_t usb2_do_request_flags(struct usb2_device *udev, struct mtx *mtx, struct usb2_device_request *req, void *data, uint32_t flags, uint16_t *actlen, uint32_t timeout); +usb2_error_t usb2_do_request_proc(struct usb2_device *udev, struct usb2_process *pproc, + struct usb2_device_request *req, void *data, uint32_t flags, + uint16_t *actlen, uint32_t timeout); usb2_error_t usb2_req_clear_hub_feature(struct usb2_device *udev, struct mtx *mtx, uint16_t sel); usb2_error_t usb2_req_clear_port_feature(struct usb2_device *udev, ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.c#11 (text+ko) ==== @@ -155,8 +155,8 @@ /* fork rest of the attach code */ UE_LOCK(ue); ue_queue_command(ue, ue_attach_post_task, - &ue->ue_attach_task[0].hdr, - &ue->ue_attach_task[1].hdr); + &ue->ue_sync_task[0].hdr, + &ue->ue_sync_task[1].hdr); UE_UNLOCK(ue); error: @@ -293,8 +293,8 @@ UE_LOCK(ue); if (ifp->if_drv_flags & IFF_DRV_RUNNING) ue_queue_command(ue, ue_stop_task, - &ue->ue_start_stop_task[0].hdr, - &ue->ue_start_stop_task[1].hdr); + &ue->ue_sync_task[0].hdr, + &ue->ue_sync_task[1].hdr); UE_UNLOCK(ue); } @@ -304,36 +304,6 @@ return (usb2_proc_is_gone(&ue->ue_tq)); } -/* factored out code */ -usb2_error_t -usb2_ether_do_request(struct usb2_ether *ue, - struct usb2_device_request *req, void *data, - unsigned int timeout) -{ - uint16_t len; - usb2_error_t err; - - /* get request data length */ - len = UGETW(req->wLength); - - /* check if the device is being detached */ - if (usb2_proc_is_gone(&ue->ue_tq)) { - err = USB_ERR_IOERROR; - goto done; - } - - /* do the USB request */ - err = usb2_do_request_flags(ue->ue_udev, ue->ue_mtx, - req, data, 0, NULL, timeout); - -done: - /* on failure we zero the data */ - if (err && len && (req->bmRequestType & UE_DIR_IN)) - memset(data, 0, len); - - return (err); -} - static void ue_init(void *arg) { @@ -341,8 +311,8 @@ UE_LOCK(ue); ue_queue_command(ue, ue_start_task, - &ue->ue_start_stop_task[0].hdr, - &ue->ue_start_stop_task[1].hdr); + &ue->ue_sync_task[0].hdr, + &ue->ue_sync_task[1].hdr); UE_UNLOCK(ue); } @@ -486,12 +456,12 @@ &ue->ue_promisc_task[1].hdr); else ue_queue_command(ue, ue_start_task, - &ue->ue_start_stop_task[0].hdr, - &ue->ue_start_stop_task[1].hdr); + &ue->ue_sync_task[0].hdr, + &ue->ue_sync_task[1].hdr); } else { ue_queue_command(ue, ue_stop_task, - &ue->ue_start_stop_task[0].hdr, - &ue->ue_start_stop_task[1].hdr); + &ue->ue_sync_task[0].hdr, + &ue->ue_sync_task[1].hdr); } UE_UNLOCK(ue); break; ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.h#9 (text+ko) ==== @@ -89,12 +89,11 @@ struct sysctl_ctx_list ue_sysctl_ctx; struct ifqueue ue_rxq; struct usb2_callout ue_watchdog; - struct usb2_ether_cfg_task ue_attach_task[2]; + struct usb2_ether_cfg_task ue_sync_task[2]; struct usb2_ether_cfg_task ue_media_task[2]; struct usb2_ether_cfg_task ue_multi_task[2]; struct usb2_ether_cfg_task ue_promisc_task[2]; struct usb2_ether_cfg_task ue_tick_task[2]; - struct usb2_ether_cfg_task ue_start_stop_task[2]; int ue_unit; @@ -102,10 +101,10 @@ uint8_t ue_eaddr[ETHER_ADDR_LEN]; }; +#define usb2_ether_do_request(ue,req,data,timo) \ + usb2_do_request_proc((ue)->ue_udev,&(ue)->ue_tq,req,data,0,NULL,timo) + uint8_t usb2_ether_pause(struct usb2_ether *, unsigned int); -usb2_error_t usb2_ether_do_request(struct usb2_ether *, - struct usb2_device_request *, void *, - unsigned int timeout); struct ifnet *usb2_ether_getifp(struct usb2_ether *); struct mii_data *usb2_ether_getmii(struct usb2_ether *); void *usb2_ether_getsc(struct usb2_ether *); ==== //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.c#27 (text+ko) ==== @@ -1125,39 +1125,3 @@ usb2_cv_signal(&sc->sc_cv); mtx_unlock(sc->sc_mtx); } - -/* factored out code */ -usb2_error_t -usb2_com_cfg_do_request(struct usb2_device *udev, - struct usb2_com_softc *sc, struct usb2_device_request *req, - void *data, unsigned int flags, unsigned int timeout) -{ - struct usb2_com_super_softc *ssc = sc->sc_super; - uint16_t len; - uint16_t actlen; - usb2_error_t err; - - /* get request data length */ - len = UGETW(req->wLength); - - /* check if the device is being detached */ - if (usb2_proc_is_gone(&ssc->sc_tq)) { - err = USB_ERR_IOERROR; - goto done; - } - - /* do the USB request */ - err = usb2_do_request_flags(udev, sc->sc_mtx, - req, data, flags, &actlen, timeout); - -done: - if ((req->bmRequestType & UE_DIR_IN) && (len != 0)) { - /* on failure we zero the data */ - /* on short packet we zero the rest of the buffer */ - if (err) - memset(data, 0, len); - else if (len != actlen) - memset(((uint8_t *)data) + actlen, 0, len - actlen); - } - return (err); -} ==== //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.h#15 (text+ko) ==== @@ -181,6 +181,9 @@ #define UCOM_LS_BREAK 0x04 }; +#define usb2_com_cfg_do_request(udev,com,req,ptr,flags,timo) \ + usb2_do_request_proc(udev,&(com)->sc_super->sc_tq,req,ptr,flags,NULL,timo) + int usb2_com_attach(struct usb2_com_super_softc *, struct usb2_com_softc *, uint32_t, void *, const struct usb2_com_callback *callback, struct mtx *); @@ -192,7 +195,4 @@ void usb2_com_put_data(struct usb2_com_softc *, struct usb2_page_cache *, uint32_t, uint32_t); uint8_t usb2_com_cfg_is_gone(struct usb2_com_softc *); -usb2_error_t usb2_com_cfg_do_request(struct usb2_device *, - struct usb2_com_softc *, struct usb2_device_request *, void *, - unsigned int, unsigned int); #endif /* _USB2_SERIAL_H_ */ ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#27 (text+ko) ==== @@ -54,6 +54,9 @@ "Debug level"); #endif +#define rum_do_request(sc,req,data) \ + usb2_do_request_proc((sc)->sc_udev, &(sc)->sc_tq, req, data, 0, NULL, 5000) + static const struct usb2_device_id rum_devs[] = { { USB_VP(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_HWU54DM) }, { USB_VP(USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_RT2573_2) }, @@ -116,10 +119,13 @@ static usb2_callback_t rum_bulk_read_callback; static usb2_callback_t rum_bulk_write_callback; +static usb2_proc_callback_t rum_attach_post; static usb2_proc_callback_t rum_task; static usb2_proc_callback_t rum_scantask; static usb2_proc_callback_t rum_promisctask; static usb2_proc_callback_t rum_amrr_task; +static usb2_proc_callback_t rum_init_task; +static usb2_proc_callback_t rum_stop_task; static struct ieee80211vap *rum_vap_create(struct ieee80211com *, const char name[IFNAMSIZ], int unit, int opmode, @@ -169,9 +175,7 @@ static const char *rum_get_rf(int); static void rum_read_eeprom(struct rum_softc *); static int rum_bbp_init(struct rum_softc *); -static void rum_init_locked(struct rum_softc *); static void rum_init(void *); -static void rum_stop(void *); static int rum_load_microcode(struct rum_softc *, const u_char *, size_t); static int rum_prepare_beacon(struct rum_softc *, @@ -391,12 +395,8 @@ { struct usb2_attach_arg *uaa = device_get_ivars(self); struct rum_softc *sc = device_get_softc(self); - struct ieee80211com *ic; - struct ifnet *ifp; - const uint8_t *ucode = NULL; - uint8_t bands, iface_index; - uint32_t tmp; - int error, ntries, size; + uint8_t iface_index; + int error; device_set_usb2_desc(self); sc->sc_udev = uaa->device; @@ -420,42 +420,64 @@ goto detach; } - ifp = sc->sc_ifp = if_alloc(IFT_IEEE80211); - if (ifp == NULL) { - device_printf(sc->sc_dev, "can not if_alloc()\n"); - goto detach; - } - ic = ifp->if_l2com; + /* fork rest of the attach code */ + RUM_LOCK(sc); + rum_queue_command(sc, rum_attach_post, + &sc->sc_synctask[0].hdr, + &sc->sc_synctask[1].hdr); + RUM_UNLOCK(sc); + return (0); + +detach: + rum_detach(self); + return (ENXIO); /* failure */ +} + +static void +rum_attach_post(struct usb2_proc_msg *pm) +{ + struct rum_task *task = (struct rum_task *)pm; + struct rum_softc *sc = task->sc; + struct ifnet *ifp; + struct ieee80211com *ic; + unsigned int ntries; + int error; + uint32_t tmp; + uint8_t bands; - RUM_LOCK(sc); /* retrieve RT2573 rev. no */ - for (ntries = 0; ntries < 1000; ntries++) { + for (ntries = 0; ntries != 1000; ntries++) { if ((tmp = rum_read(sc, RT2573_MAC_CSR0)) != 0) break; - DELAY(1000); + usb2_pause_mtx(&sc->sc_mtx, hz / 1000); } if (ntries == 1000) { - device_printf(self, "timeout waiting for chip to settle\n"); - RUM_UNLOCK(sc); - goto detach; + device_printf(sc->sc_dev, "timeout waiting for chip to settle\n"); + return; } /* retrieve MAC address and various other things from EEPROM */ rum_read_eeprom(sc); - device_printf(self, "MAC/BBP RT2573 (rev 0x%05x), RF %s\n", + device_printf(sc->sc_dev, "MAC/BBP RT2573 (rev 0x%05x), RF %s\n", tmp, rum_get_rf(sc->rf_rev)); - ucode = rt2573_ucode; - size = sizeof rt2573_ucode; - error = rum_load_microcode(sc, ucode, size); + error = rum_load_microcode(sc, rt2573_ucode, sizeof(rt2573_ucode)); if (error != 0) { - device_printf(self, "could not load 8051 microcode\n"); RUM_UNLOCK(sc); - goto detach; + device_printf(sc->sc_dev, "could not load 8051 microcode\n"); + return; } RUM_UNLOCK(sc); + ifp = sc->sc_ifp = if_alloc(IFT_IEEE80211); + if (ifp == NULL) { + device_printf(sc->sc_dev, "can not if_alloc()\n"); + RUM_LOCK(sc); + return; + } + ic = ifp->if_l2com; + ifp->if_softc = sc; if_initname(ifp, "rum", device_get_unit(sc->sc_dev)); ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; @@ -516,10 +538,7 @@ if (bootverbose) ieee80211_announce(ic); - return 0; -detach: - rum_detach(self); - return (ENXIO); /* failure */ + RUM_LOCK(sc); } static int @@ -529,10 +548,8 @@ struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; - RUM_LOCK(sc); - sc->sc_flags |= RUM_FLAG_DETACH; - rum_stop(sc); - RUM_UNLOCK(sc); + /* wait for any post attach or other command to complete */ + usb2_proc_drain(&sc->sc_tq); /* stop all USB transfers first */ usb2_transfer_unsetup(sc->sc_xfer, RUM_N_TRANSFER); @@ -543,6 +560,10 @@ ieee80211_ifdetach(ic); if_free(ifp); } + + /* free TX list, if any */ + rum_free_tx_list(sc); + mtx_destroy(&sc->sc_mtx); return (0); @@ -683,9 +704,6 @@ struct ieee80211_node *ni; uint32_t tmp; - if (sc->sc_flags & RUM_FLAG_DETACH) - return; - ostate = vap->iv_state; switch (sc->sc_state) { @@ -773,7 +791,7 @@ struct ieee80211_channel *c = ic->ic_curchan; struct rum_tx_data *data; struct mbuf *m; - int len; + unsigned int len; switch (USB_GET_STATE(xfer)) { case USB_ST_TRANSFERRED: @@ -790,15 +808,6 @@ /* FALLTHROUGH */ case USB_ST_SETUP: tr_setup: -#if 0 - if (sc->sc_flags & RUM_FLAG_WAIT_COMMAND) { - /* - * don't send anything while a command is pending ! - */ - break; - } -#endif - data = STAILQ_FIRST(&sc->tx_q); if (data) { STAILQ_REMOVE_HEAD(&sc->tx_q, next); @@ -845,6 +854,13 @@ DPRINTFN(11, "transfer error, %s\n", usb2_errstr(xfer->error)); + ifp->if_oerrors++; + data = xfer->priv_fifo; + if (data != NULL) { + rum_tx_free(data, xfer->error); + xfer->priv_fifo = NULL; + } + if (xfer->error == USB_ERR_STALLED) { /* try to clear stall first */ xfer->flags.stall_pipe = 1; @@ -852,13 +868,6 @@ } if (xfer->error == USB_ERR_TIMEOUT) device_printf(sc->sc_dev, "device timeout\n"); - - ifp->if_oerrors++; - data = xfer->priv_fifo; - if (data != NULL) { - rum_tx_free(data, xfer->error); - xfer->priv_fifo = NULL; - } break; } } @@ -873,7 +882,7 @@ struct mbuf *m = NULL; uint32_t flags; uint8_t rssi = 0; - int len; + unsigned int len; switch (USB_GET_STATE(xfer)) { case USB_ST_TRANSFERRED: @@ -965,7 +974,6 @@ goto tr_setup; } return; - } } @@ -1333,15 +1341,20 @@ RUM_LOCK(sc); if (ifp->if_flags & IFF_UP) { if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { - rum_init_locked(sc); + rum_queue_command(sc, rum_init_task, + &sc->sc_synctask[0].hdr, + &sc->sc_synctask[1].hdr); startall = 1; } else rum_queue_command(sc, rum_promisctask, &sc->sc_promisctask[0].hdr, &sc->sc_promisctask[1].hdr); } else { - if (ifp->if_drv_flags & IFF_DRV_RUNNING) - rum_stop(sc); + if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + rum_queue_command(sc, rum_stop_task, + &sc->sc_synctask[0].hdr, + &sc->sc_synctask[1].hdr); + } } RUM_UNLOCK(sc); if (startall) @@ -1372,7 +1385,7 @@ USETW(req.wIndex, addr); USETW(req.wLength, len); - error = usb2_do_request(sc->sc_udev, &sc->sc_mtx, &req, buf); + error = rum_do_request(sc, &req, buf); if (error != 0) { device_printf(sc->sc_dev, "could not read EEPROM: %s\n", usb2_errstr(error)); @@ -1401,7 +1414,7 @@ USETW(req.wIndex, reg); USETW(req.wLength, len); - error = usb2_do_request(sc->sc_udev, &sc->sc_mtx, &req, buf); + error = rum_do_request(sc, &req, buf); if (error != 0) { device_printf(sc->sc_dev, "could not multi read MAC register: %s\n", @@ -1429,7 +1442,7 @@ USETW(req.wIndex, reg); USETW(req.wLength, len); - error = usb2_do_request(sc->sc_udev, &sc->sc_mtx, &req, buf); + error = rum_do_request(sc, &req, buf); if (error != 0) { device_printf(sc->sc_dev, "could not multi write MAC register: %s\n", @@ -1787,9 +1800,6 @@ struct ifnet *ifp = sc->sc_ifp; uint32_t tmp; - if (sc->sc_flags & RUM_FLAG_DETACH) - return; - tmp = rum_read(sc, RT2573_TXRX_CSR0); tmp &= ~RT2573_DROP_NOT_TO_ME; @@ -1933,9 +1943,11 @@ } static void -rum_init_locked(struct rum_softc *sc) +rum_init_task(struct usb2_proc_msg *pm) { #define N(a) (sizeof (a) / sizeof ((a)[0])) + struct rum_task *task = (struct rum_task *)pm; + struct rum_softc *sc = task->sc; struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; uint32_t tmp; @@ -1944,11 +1956,8 @@ RUM_LOCK_ASSERT(sc, MA_OWNED); - if (sc->sc_flags & RUM_FLAG_DETACH) - return; + rum_stop_task(pm); - rum_stop(sc); - /* initialize MAC registers to default values */ for (i = 0; i < N(rum_def_mac); i++) rum_write(sc, rum_def_mac[i].reg, rum_def_mac[i].val); @@ -2015,7 +2024,7 @@ usb2_transfer_start(sc->sc_xfer[RUM_BULK_RD]); return; -fail: rum_stop(sc); +fail: rum_stop_task(pm); #undef N } @@ -2027,7 +2036,9 @@ struct ieee80211com *ic = ifp->if_l2com; RUM_LOCK(sc); - rum_init_locked(sc); + rum_queue_command(sc, rum_init_task, + &sc->sc_synctask[0].hdr, + &sc->sc_synctask[1].hdr); RUM_UNLOCK(sc); if (ifp->if_drv_flags & IFF_DRV_RUNNING) @@ -2035,9 +2046,10 @@ } static void -rum_stop(void *priv) +rum_stop_task(struct usb2_proc_msg *pm) { - struct rum_softc *sc = priv; + struct rum_task *task = (struct rum_task *)pm; + struct rum_softc *sc = task->sc; struct ifnet *ifp = sc->sc_ifp; uint32_t tmp; @@ -2053,10 +2065,6 @@ rum_free_tx_list(sc); - /* Stop now if the device has vanished */ - if (sc->sc_flags & RUM_FLAG_DETACH) - return; - /* disable Rx */ tmp = rum_read(sc, RT2573_TXRX_CSR0); rum_write(sc, RT2573_TXRX_CSR0, tmp | RT2573_DISABLE_RX); @@ -2083,7 +2091,7 @@ USETW(req.wIndex, 0); USETW(req.wLength, 0); - error = usb2_do_request(sc->sc_udev, &sc->sc_mtx, &req, NULL); + error = rum_do_request(sc, &req, NULL); if (error != 0) { device_printf(sc->sc_dev, "could not run firmware: %s\n", usb2_errstr(error)); @@ -2296,9 +2304,6 @@ RUM_LOCK_ASSERT(sc, MA_OWNED); - if (sc->sc_flags & RUM_FLAG_DETACH) - return; - switch (sc->sc_scan_action) { case RUM_SCAN_START: /* abort TSF synchronization */ @@ -2395,6 +2400,11 @@ task->hdr.pm_callback = fn; task->sc = sc; + /* + * Init and stop must be synchronous! + */ + if ((fn == rum_init_task) || (fn == rum_stop_task)) + usb2_proc_mwait(&sc->sc_tq, t0, t1); } static device_method_t rum_methods[] = { ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumvar.h#4 (text+ko) ==== @@ -100,14 +100,14 @@ struct usb2_process sc_tq; const struct ieee80211_rate_table *sc_rates; + struct usb2_xfer *sc_xfer[RUM_N_TRANSFER]; uint8_t rf_rev; uint8_t rffreq; - struct usb2_xfer *sc_xfer[RUM_N_TRANSFER]; - enum ieee80211_state sc_state; int sc_arg; + struct rum_task sc_synctask[2]; struct rum_task sc_task[2]; struct rum_task sc_promisctask[2]; struct rum_task sc_scantask[2]; @@ -124,9 +124,6 @@ struct mtx sc_mtx; - int sc_flags; -#define RUM_FLAG_DETACH 0x0001 - uint32_t sta[6]; uint32_t rf_regs[4]; uint8_t txpow[44]; ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#27 (text+ko) ==== @@ -55,6 +55,9 @@ "Debug level"); #endif +#define ural_do_request(sc,req,data) \ + usb2_do_request_proc((sc)->sc_udev, &(sc)->sc_tq, req, data, 0, NULL, 5000) + #define URAL_RSSI(rssi) \ ((rssi) > (RAL_NOISE_FLOOR + RAL_RSSI_CORR) ? \ ((rssi) - (RAL_NOISE_FLOOR + RAL_RSSI_CORR)) : 0) @@ -95,10 +98,13 @@ static usb2_callback_t ural_bulk_read_callback; static usb2_callback_t ural_bulk_write_callback; +static usb2_proc_callback_t ural_attach_post; static usb2_proc_callback_t ural_task; static usb2_proc_callback_t ural_scantask; static usb2_proc_callback_t ural_promisctask; static usb2_proc_callback_t ural_amrr_task; +static usb2_proc_callback_t ural_init_task; +static usb2_proc_callback_t ural_stop_task; static struct ieee80211vap *ural_vap_create(struct ieee80211com *, const char name[IFNAMSIZ], int unit, int opmode, @@ -153,9 +159,7 @@ static int ural_bbp_init(struct ural_softc *); static void ural_set_txantenna(struct ural_softc *, int); static void ural_set_rxantenna(struct ural_softc *, int); -static void ural_init_locked(struct ural_softc *); static void ural_init(void *); -static void ural_stop(void *); static int ural_raw_xmit(struct ieee80211_node *, struct mbuf *, const struct ieee80211_bpf_params *); static void ural_amrr_start(struct ural_softc *, @@ -394,10 +398,8 @@ { struct usb2_attach_arg *uaa = device_get_ivars(self); struct ural_softc *sc = device_get_softc(self); - struct ifnet *ifp; - struct ieee80211com *ic; int error; - uint8_t bands, iface_index; + uint8_t iface_index; device_set_usb2_desc(self); sc->sc_udev = uaa->device; @@ -422,14 +424,28 @@ goto detach; } - ifp = sc->sc_ifp = if_alloc(IFT_IEEE80211); - if (ifp == NULL) { - device_printf(sc->sc_dev, "can not if_alloc()\n"); - goto detach; - } - ic = ifp->if_l2com; + /* fork rest of the attach code */ + RAL_LOCK(sc); + ural_queue_command(sc, ural_attach_post, + &sc->sc_synctask[0].hdr, + &sc->sc_synctask[1].hdr); + RAL_UNLOCK(sc); + return (0); + +detach: + ural_detach(self); + return (ENXIO); /* failure */ +} + +static void +ural_attach_post(struct usb2_proc_msg *pm) +{ + struct ural_task *task = (struct ural_task *)pm; + struct ural_softc *sc = task->sc; + struct ifnet *ifp; + struct ieee80211com *ic; + uint8_t bands; - RAL_LOCK(sc); /* retrieve RT2570 rev. no */ sc->asic_rev = ural_read(sc, RAL_MAC_CSR0); @@ -440,6 +456,14 @@ device_printf(sc->sc_dev, "MAC/BBP RT2570 (rev 0x%02x), RF %s\n", sc->asic_rev, ural_get_rf(sc->rf_rev)); + ifp = sc->sc_ifp = if_alloc(IFT_IEEE80211); + if (ifp == NULL) { + device_printf(sc->sc_dev, "can not if_alloc()\n"); + RAL_LOCK(sc); + return; + } + ic = ifp->if_l2com; + ifp->if_softc = sc; if_initname(ifp, "ural", device_get_unit(sc->sc_dev)); ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; @@ -500,11 +524,7 @@ if (bootverbose) ieee80211_announce(ic); - return (0); /* success */ - -detach: - ural_detach(self); - return (ENXIO); /* failure */ + RAL_LOCK(sc); } static int @@ -514,10 +534,8 @@ struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; - RAL_LOCK(sc); - sc->sc_flags |= URAL_FLAG_DETACH; - ural_stop(sc); - RAL_UNLOCK(sc); + /* wait for any post attach or other command to complete */ + usb2_proc_drain(&sc->sc_tq); /* stop all USB transfers first */ usb2_transfer_unsetup(sc->sc_xfer, URAL_N_TRANSFER); @@ -528,6 +546,10 @@ ieee80211_ifdetach(ic); if_free(ifp); } + + /* free TX list, if any */ + ural_free_tx_list(sc); + mtx_destroy(&sc->sc_mtx); return (0); @@ -668,9 +690,6 @@ struct ieee80211_node *ni; struct mbuf *m; - if (sc->sc_flags & URAL_FLAG_DETACH) - return; - ostate = vap->iv_state; switch (sc->sc_state) { @@ -747,9 +766,6 @@ RAL_LOCK_ASSERT(sc, MA_OWNED); - if (sc->sc_flags & URAL_FLAG_DETACH) - return; - if (sc->sc_scan_action == URAL_SCAN_START) { /* abort TSF synchronization */ DPRINTF("starting scan\n"); @@ -806,7 +822,7 @@ struct ieee80211_channel *c = ic->ic_curchan; struct ural_tx_data *data; struct mbuf *m; - int len; + unsigned int len; switch (USB_GET_STATE(xfer)) { case USB_ST_TRANSFERRED: @@ -823,15 +839,6 @@ /* FALLTHROUGH */ case USB_ST_SETUP: tr_setup: -#if 0 - if (sc->sc_flags & URAL_FLAG_WAIT_COMMAND) { - /* - * don't send anything while a command is pending ! - */ - break; - } -#endif - data = STAILQ_FIRST(&sc->tx_q); if (data) { STAILQ_REMOVE_HEAD(&sc->tx_q, next); @@ -878,6 +885,13 @@ DPRINTFN(11, "transfer error, %s\n", usb2_errstr(xfer->error)); + ifp->if_oerrors++; + data = xfer->priv_fifo; + if (data != NULL) { + ural_tx_free(data, xfer->error); + xfer->priv_fifo = NULL; + } + if (xfer->error == USB_ERR_STALLED) { /* try to clear stall first */ xfer->flags.stall_pipe = 1; @@ -885,13 +899,6 @@ } if (xfer->error == USB_ERR_TIMEOUT) device_printf(sc->sc_dev, "device timeout\n"); - - ifp->if_oerrors++; - data = xfer->priv_fifo; - if (data != NULL) { - ural_tx_free(data, xfer->error); - xfer->priv_fifo = NULL; - } break; } } @@ -906,7 +913,7 @@ struct mbuf *m = NULL; uint32_t flags; uint8_t rssi = 0; - int len; + unsigned int len; switch (USB_GET_STATE(xfer)) { case USB_ST_TRANSFERRED: @@ -1001,7 +1008,6 @@ goto tr_setup; } return; - } } @@ -1406,15 +1412,20 @@ RAL_LOCK(sc); if (ifp->if_flags & IFF_UP) { if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { - ural_init_locked(sc); + ural_queue_command(sc, ural_init_task, + &sc->sc_synctask[0].hdr, + &sc->sc_synctask[1].hdr); startall = 1; } else ural_queue_command(sc, ural_promisctask, &sc->sc_promisctask[0].hdr, &sc->sc_promisctask[1].hdr); } else { - if (ifp->if_drv_flags & IFF_DRV_RUNNING) - ural_stop(sc); + if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + ural_queue_command(sc, ural_stop_task, + &sc->sc_synctask[0].hdr, + &sc->sc_synctask[1].hdr); + } } RAL_UNLOCK(sc); if (startall) @@ -1443,7 +1454,7 @@ USETW(req.wIndex, 1); USETW(req.wLength, 0); - error = usb2_do_request(sc->sc_udev, &sc->sc_mtx, &req, NULL); + error = ural_do_request(sc, &req, NULL); if (error != 0) { device_printf(sc->sc_dev, "could not set test mode: %s\n", usb2_errstr(error)); @@ -1462,7 +1473,7 @@ USETW(req.wIndex, addr); USETW(req.wLength, len); - error = usb2_do_request(sc->sc_udev, &sc->sc_mtx, &req, buf); + error = ural_do_request(sc, &req, buf); if (error != 0) { device_printf(sc->sc_dev, "could not read EEPROM: %s\n", usb2_errstr(error)); @@ -1482,7 +1493,7 @@ USETW(req.wIndex, reg); USETW(req.wLength, sizeof (uint16_t)); - error = usb2_do_request(sc->sc_udev, &sc->sc_mtx, &req, &val); >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Mon Feb 9 05:59:36 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Mon Feb 9 05:59:43 2009 Subject: PERFORCE change 157430 for review Message-ID: <200902091359.n19DxYMo091167@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157430 Change 157430 by hselasky@hselasky_laptop001 on 2009/02/09 13:58:44 USB process naming cleanup. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/controller/usb2_controller.c#25 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.c#17 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.h#8 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/controller/usb2_controller.c#25 (text+ko) ==== @@ -168,16 +168,16 @@ /* Get rid of USB callback processes */ - usb2_proc_unsetup(&bus->giant_callback_proc); - usb2_proc_unsetup(&bus->non_giant_callback_proc); + usb2_proc_free(&bus->giant_callback_proc); + usb2_proc_free(&bus->non_giant_callback_proc); /* Get rid of USB roothub process */ - usb2_proc_unsetup(&bus->roothub_proc); + usb2_proc_free(&bus->roothub_proc); /* Get rid of USB explore process */ - usb2_proc_unsetup(&bus->explore_proc); + usb2_proc_free(&bus->explore_proc); return (0); } @@ -375,6 +375,8 @@ static void usb2_attach_sub(device_t dev, struct usb2_bus *bus) { + const char *pname = device_get_nameunit(dev); + /* Initialise USB process messages */ bus->explore_msg[0].hdr.pm_callback = &usb2_bus_explore; bus->explore_msg[0].bus = bus; @@ -398,20 +400,20 @@ /* Create USB explore, roothub and callback processes */ - if (usb2_proc_setup(&bus->giant_callback_proc, - &bus->bus_mtx, USB_PRI_MED)) { + if (usb2_proc_create(&bus->giant_callback_proc, + &bus->bus_mtx, pname, USB_PRI_MED)) { printf("WARNING: Creation of USB Giant " "callback process failed.\n"); - } else if (usb2_proc_setup(&bus->non_giant_callback_proc, - &bus->bus_mtx, USB_PRI_HIGH)) { + } else if (usb2_proc_create(&bus->non_giant_callback_proc, + &bus->bus_mtx, pname, USB_PRI_HIGH)) { printf("WARNING: Creation of USB non-Giant " "callback process failed.\n"); - } else if (usb2_proc_setup(&bus->roothub_proc, - &bus->bus_mtx, USB_PRI_HIGH)) { + } else if (usb2_proc_create(&bus->roothub_proc, + &bus->bus_mtx, pname, USB_PRI_HIGH)) { printf("WARNING: Creation of USB roothub " "process failed.\n"); - } else if (usb2_proc_setup(&bus->explore_proc, - &bus->bus_mtx, USB_PRI_MED)) { + } else if (usb2_proc_create(&bus->explore_proc, + &bus->bus_mtx, pname, USB_PRI_MED)) { printf("WARNING: Creation of USB explore " "process failed.\n"); } else { ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.c#17 (text+ko) ==== @@ -164,7 +164,7 @@ } /*------------------------------------------------------------------------* - * usb2_proc_setup + * usb2_proc_create * * This function will create a process using the given "prio" that can * execute callbacks. The mutex pointed to by "p_mtx" will be applied @@ -197,18 +197,12 @@ return (0); error: - usb2_proc_unsetup(up); + usb2_proc_free(up); return (ENOMEM); } -uint8_t -usb2_proc_setup(struct usb2_process *up, struct mtx *p_mtx, uint8_t prio) -{ - return (usb2_proc_create(up, p_mtx, "usbproc", prio) ? 1 : 0); -} - /*------------------------------------------------------------------------* - * usb2_proc_unsetup + * usb2_proc_free * * NOTE: If the structure pointed to by "up" is all zero, this * function does nothing. @@ -217,7 +211,7 @@ * removed nor called. *------------------------------------------------------------------------*/ void -usb2_proc_unsetup(struct usb2_process *up) +usb2_proc_free(struct usb2_process *up) { if (!(up->up_mtx)) { /* not initialised */ @@ -232,12 +226,6 @@ up->up_mtx = NULL; } -void -usb2_proc_free(struct usb2_process *up) -{ - usb2_proc_unsetup(up); -} - /*------------------------------------------------------------------------* * usb2_proc_msignal * ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.h#8 (text+ko) ==== @@ -79,14 +79,11 @@ uint8_t usb2_proc_cwait(struct usb2_process *up, int timeout); uint8_t usb2_proc_is_gone(struct usb2_process *up); -uint8_t usb2_proc_setup(struct usb2_process *up, struct mtx *p_mtx, - uint8_t prio); int usb2_proc_create(struct usb2_process *up, struct mtx *p_mtx, const char *pmesg, uint8_t prio); void usb2_proc_csignal(struct usb2_process *up); void usb2_proc_drain(struct usb2_process *up); void usb2_proc_mwait(struct usb2_process *up, void *pm0, void *pm1); -void usb2_proc_unsetup(struct usb2_process *up); void usb2_proc_free(struct usb2_process *up); void *usb2_proc_msignal(struct usb2_process *up, void *pm0, void *pm1); From hselasky at FreeBSD.org Mon Feb 9 06:18:57 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Mon Feb 9 06:19:04 2009 Subject: PERFORCE change 157433 for review Message-ID: <200902091418.n19EIsaq093594@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157433 Change 157433 by hselasky@hselasky_laptop001 on 2009/02/09 14:18:31 Fix USB WLAN regression issue. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#28 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumvar.h#5 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#28 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_uralvar.h#5 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#28 (text+ko) ==== @@ -490,6 +490,7 @@ ic->ic_ifp = ifp; ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ + IEEE80211_ADDR_COPY(ic->ic_myaddr, sc->sc_bssid); /* set device capabilities */ ic->ic_caps = @@ -1827,15 +1828,13 @@ static void rum_read_eeprom(struct rum_softc *sc) { - struct ifnet *ifp = sc->sc_ifp; - struct ieee80211com *ic = ifp->if_l2com; uint16_t val; #ifdef RUM_DEBUG int i; #endif /* read MAC address */ - rum_eeprom_read(sc, RT2573_EEPROM_ADDRESS, ic->ic_myaddr, 6); + rum_eeprom_read(sc, RT2573_EEPROM_ADDRESS, sc->sc_bssid, 6); rum_eeprom_read(sc, RT2573_EEPROM_ANTENNA, &val, 2); val = le16toh(val); ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumvar.h#5 (text+ko) ==== @@ -127,6 +127,7 @@ uint32_t sta[6]; uint32_t rf_regs[4]; uint8_t txpow[44]; + uint8_t sc_bssid[6]; struct { uint8_t val; ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#28 (text+ko) ==== @@ -476,6 +476,7 @@ ic->ic_ifp = ifp; ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ + IEEE80211_ADDR_COPY(ic->ic_myaddr, sc->sc_bssid); /* set device capabilities */ ic->ic_caps = @@ -1978,8 +1979,6 @@ static void ural_read_eeprom(struct ural_softc *sc) { - struct ifnet *ifp = sc->sc_ifp; - struct ieee80211com *ic = ifp->if_l2com; uint16_t val; ural_eeprom_read(sc, RAL_EEPROM_CONFIG0, &val, 2); @@ -1992,7 +1991,7 @@ sc->nb_ant = val & 0x3; /* read MAC address */ - ural_eeprom_read(sc, RAL_EEPROM_ADDRESS, ic->ic_myaddr, 6); + ural_eeprom_read(sc, RAL_EEPROM_ADDRESS, sc->sc_bssid, 6); /* read default values for BBP registers */ ural_eeprom_read(sc, RAL_EEPROM_BBP_BASE, sc->bbp_prom, 2 * 16); ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_uralvar.h#5 (text+ko) ==== @@ -130,6 +130,7 @@ uint16_t sta[11]; uint32_t rf_regs[4]; uint8_t txpow[14]; + uint8_t sc_bssid[6]; struct { uint8_t val; From jhb at FreeBSD.org Mon Feb 9 08:15:56 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon Feb 9 08:16:04 2009 Subject: PERFORCE change 157439 for review Message-ID: <200902091615.n19GFrtp018651@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157439 Change 157439 by jhb@jhb_jhbbsd on 2009/02/09 16:14:58 IFC @157437 Affected files ... .. //depot/projects/smpng/sys/amd64/amd64/busdma_machdep.c#29 integrate .. //depot/projects/smpng/sys/amd64/conf/NOTES#47 integrate .. //depot/projects/smpng/sys/amd64/include/legacyvar.h#7 integrate .. //depot/projects/smpng/sys/amd64/pci/pci_bus.c#22 integrate .. //depot/projects/smpng/sys/arm/arm/busdma_machdep.c#27 integrate .. //depot/projects/smpng/sys/cam/cam_xpt.c#53 integrate .. //depot/projects/smpng/sys/conf/NOTES#160 integrate .. //depot/projects/smpng/sys/conf/files#226 integrate .. //depot/projects/smpng/sys/conf/options#161 integrate .. //depot/projects/smpng/sys/conf/options.amd64#24 integrate .. //depot/projects/smpng/sys/conf/options.i386#63 integrate .. //depot/projects/smpng/sys/conf/options.ia64#22 integrate .. //depot/projects/smpng/sys/conf/options.mips#3 integrate .. //depot/projects/smpng/sys/conf/options.pc98#61 integrate .. //depot/projects/smpng/sys/crypto/via/padlock.c#14 integrate .. //depot/projects/smpng/sys/dev/acpi_support/acpi_panasonic.c#7 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi_pcib_acpi.c#27 integrate .. //depot/projects/smpng/sys/dev/agp/agp.c#5 integrate .. //depot/projects/smpng/sys/dev/ath/ath_hal/ah_regdomain.c#5 integrate .. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5212.h#4 integrate .. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c#5 integrate .. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5212_rfgain.c#3 integrate .. //depot/projects/smpng/sys/dev/ath/if_ath.c#65 integrate .. //depot/projects/smpng/sys/dev/ath/if_athioctl.h#18 integrate .. //depot/projects/smpng/sys/dev/atkbdc/atkbdc_isa.c#5 integrate .. //depot/projects/smpng/sys/dev/bge/if_bge.c#103 integrate .. //depot/projects/smpng/sys/dev/bm/if_bm.c#5 integrate .. //depot/projects/smpng/sys/dev/cardbus/cardbus_device.c#4 integrate .. //depot/projects/smpng/sys/dev/cfi/cfi_core.c#3 integrate .. //depot/projects/smpng/sys/dev/cfi/cfi_dev.c#3 integrate .. //depot/projects/smpng/sys/dev/cfi/cfi_reg.h#2 integrate .. //depot/projects/smpng/sys/dev/cfi/cfi_var.h#2 integrate .. //depot/projects/smpng/sys/dev/exca/exca.c#25 integrate .. //depot/projects/smpng/sys/dev/fxp/if_fxp.c#87 integrate .. //depot/projects/smpng/sys/dev/hifn/hifn7751.c#26 integrate .. //depot/projects/smpng/sys/dev/lmc/if_lmc.c#20 integrate .. //depot/projects/smpng/sys/dev/lmc/if_lmc.h#7 integrate .. //depot/projects/smpng/sys/dev/my/if_my.c#29 integrate .. //depot/projects/smpng/sys/dev/nve/if_nve.c#18 integrate .. //depot/projects/smpng/sys/dev/pccard/card_if.m#17 integrate .. //depot/projects/smpng/sys/dev/pccard/pccard.c#47 integrate .. //depot/projects/smpng/sys/dev/pccard/pccard_cis.c#28 integrate .. //depot/projects/smpng/sys/dev/pccard/pccardvarp.h#5 integrate .. //depot/projects/smpng/sys/dev/pcn/if_pcn.c#3 integrate .. //depot/projects/smpng/sys/dev/ppc/ppc.c#24 integrate .. //depot/projects/smpng/sys/dev/ppc/ppcvar.h#8 integrate .. //depot/projects/smpng/sys/dev/re/if_re.c#70 integrate .. //depot/projects/smpng/sys/dev/safe/safe.c#13 integrate .. //depot/projects/smpng/sys/dev/scc/scc_if.m#3 integrate .. //depot/projects/smpng/sys/dev/si/si.c#26 integrate .. //depot/projects/smpng/sys/dev/sound/macio/aoa.c#2 integrate .. //depot/projects/smpng/sys/dev/sound/macio/aoa.h#2 integrate .. //depot/projects/smpng/sys/dev/sound/macio/davbus.c#2 integrate .. //depot/projects/smpng/sys/dev/sound/macio/i2s.c#2 integrate .. //depot/projects/smpng/sys/dev/sound/macio/snapper.c#2 integrate .. //depot/projects/smpng/sys/dev/sound/macio/tumbler.c#2 integrate .. //depot/projects/smpng/sys/dev/syscons/scterm-teken.c#2 integrate .. //depot/projects/smpng/sys/dev/syscons/teken/teken.c#3 integrate .. //depot/projects/smpng/sys/dev/syscons/teken/teken.h#3 integrate .. //depot/projects/smpng/sys/dev/usb/if_rum.c#8 integrate .. //depot/projects/smpng/sys/dev/usb/if_urtw.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/usbdevs#125 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/ehci2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/ohci2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/uhci2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_busdma.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/include/usb2_devid.h#5 integrate .. //depot/projects/smpng/sys/dev/usb2/include/usb2_devtable.h#5 integrate .. //depot/projects/smpng/sys/dev/usb2/wlan/if_rum2.c#5 integrate .. //depot/projects/smpng/sys/dev/xen/netfront/netfront.c#6 integrate .. //depot/projects/smpng/sys/fs/fifofs/fifo_vnops.c#49 integrate .. //depot/projects/smpng/sys/fs/tmpfs/tmpfs.h#5 integrate .. //depot/projects/smpng/sys/fs/tmpfs/tmpfs_subr.c#8 integrate .. //depot/projects/smpng/sys/fs/tmpfs/tmpfs_vnops.c#9 integrate .. //depot/projects/smpng/sys/fs/udf/ecma167-udf.h#7 integrate .. //depot/projects/smpng/sys/fs/udf/udf.h#10 integrate .. //depot/projects/smpng/sys/fs/udf/udf_vfsops.c#42 integrate .. //depot/projects/smpng/sys/fs/udf/udf_vnops.c#45 integrate .. //depot/projects/smpng/sys/geom/part/g_part.c#14 integrate .. //depot/projects/smpng/sys/geom/part/g_part_bsd.c#10 integrate .. //depot/projects/smpng/sys/geom/part/g_part_ebr.c#1 branch .. //depot/projects/smpng/sys/geom/part/g_part_mbr.c#6 integrate .. //depot/projects/smpng/sys/i386/conf/NOTES#138 integrate .. //depot/projects/smpng/sys/i386/i386/busdma_machdep.c#48 integrate .. //depot/projects/smpng/sys/i386/i386/vm_machdep.c#90 integrate .. //depot/projects/smpng/sys/i386/xen/clock.c#5 integrate .. //depot/projects/smpng/sys/i386/xen/pmap.c#5 integrate .. //depot/projects/smpng/sys/ia64/conf/NOTES#11 integrate .. //depot/projects/smpng/sys/ia64/ia64/busdma_machdep.c#30 integrate .. //depot/projects/smpng/sys/kern/kern_jail.c#64 integrate .. //depot/projects/smpng/sys/kern/kern_linker.c#97 integrate .. //depot/projects/smpng/sys/kern/kern_lock.c#72 integrate .. //depot/projects/smpng/sys/kern/kern_sysctl.c#59 integrate .. //depot/projects/smpng/sys/kern/subr_clist.c#5 integrate .. //depot/projects/smpng/sys/kern/tty.c#85 integrate .. //depot/projects/smpng/sys/kern/uipc_debug.c#6 integrate .. //depot/projects/smpng/sys/kern/uipc_socket.c#120 integrate .. //depot/projects/smpng/sys/kern/vfs_bio.c#115 integrate .. //depot/projects/smpng/sys/kern/vfs_init.c#27 integrate .. //depot/projects/smpng/sys/kern/vfs_mount.c#88 integrate .. //depot/projects/smpng/sys/kern/vfs_subr.c#162 integrate .. //depot/projects/smpng/sys/kern/vfs_syscalls.c#141 integrate .. //depot/projects/smpng/sys/mips/mips/busdma_machdep.c#3 integrate .. //depot/projects/smpng/sys/mips/mips/in_cksum.c#3 integrate .. //depot/projects/smpng/sys/modules/geom/geom_part/Makefile#4 integrate .. //depot/projects/smpng/sys/modules/geom/geom_part/geom_part_ebr/Makefile#1 branch .. //depot/projects/smpng/sys/modules/libalias/libalias/Makefile#3 integrate .. //depot/projects/smpng/sys/net/if.c#111 integrate .. //depot/projects/smpng/sys/net/rtsock.c#69 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_crypto.h#14 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_ddb.c#10 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_output.c#37 integrate .. //depot/projects/smpng/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c#20 integrate .. //depot/projects/smpng/sys/netinet/in.c#48 integrate .. //depot/projects/smpng/sys/netinet/in_pcb.c#91 integrate .. //depot/projects/smpng/sys/netinet/ip_fw_nat.c#7 integrate .. //depot/projects/smpng/sys/netinet/ip_ipsec.c#12 integrate .. //depot/projects/smpng/sys/netinet/ip_output.c#102 integrate .. //depot/projects/smpng/sys/netinet/libalias/alias.c#8 integrate .. //depot/projects/smpng/sys/netinet/libalias/alias_db.c#10 integrate .. //depot/projects/smpng/sys/netinet/libalias/alias_local.h#7 integrate .. //depot/projects/smpng/sys/netinet/libalias/alias_sctp.c#1 branch .. //depot/projects/smpng/sys/netinet/libalias/alias_sctp.h#1 branch .. //depot/projects/smpng/sys/netinet/raw_ip.c#76 integrate .. //depot/projects/smpng/sys/netinet/sctp_crc32.c#8 integrate .. //depot/projects/smpng/sys/netinet/sctp_crc32.h#6 integrate .. //depot/projects/smpng/sys/netinet/sctputil.c#26 integrate .. //depot/projects/smpng/sys/netinet/tcp_subr.c#106 integrate .. //depot/projects/smpng/sys/netinet/tcp_usrreq.c#73 integrate .. //depot/projects/smpng/sys/netinet/udp_usrreq.c#88 integrate .. //depot/projects/smpng/sys/netinet6/in6.c#50 integrate .. //depot/projects/smpng/sys/netinet6/in6_pcb.c#58 integrate .. //depot/projects/smpng/sys/netinet6/in6_src.c#39 integrate .. //depot/projects/smpng/sys/netinet6/ip6_forward.c#27 integrate .. //depot/projects/smpng/sys/netinet6/ip6_ipsec.c#7 integrate .. //depot/projects/smpng/sys/netinet6/ip6_output.c#59 integrate .. //depot/projects/smpng/sys/netinet6/raw_ip6.c#57 integrate .. //depot/projects/smpng/sys/netinet6/udp6_usrreq.c#54 integrate .. //depot/projects/smpng/sys/netipsec/ipsec.c#31 integrate .. //depot/projects/smpng/sys/netipsec/ipsec.h#18 integrate .. //depot/projects/smpng/sys/netipsec/ipsec6.h#7 integrate .. //depot/projects/smpng/sys/nfsserver/nfs_syscalls.c#40 integrate .. //depot/projects/smpng/sys/opencrypto/cryptosoft.c#16 integrate .. //depot/projects/smpng/sys/pc98/conf/NOTES#66 integrate .. //depot/projects/smpng/sys/rpc/clnt_rc.c#5 integrate .. //depot/projects/smpng/sys/security/audit/audit_bsm.c#15 integrate .. //depot/projects/smpng/sys/security/audit/audit_bsm_klib.c#14 integrate .. //depot/projects/smpng/sys/security/audit/audit_pipe.c#15 integrate .. //depot/projects/smpng/sys/security/audit/audit_private.h#13 integrate .. //depot/projects/smpng/sys/sys/bus_dma.h#4 integrate .. //depot/projects/smpng/sys/sys/cfictl.h#3 integrate .. //depot/projects/smpng/sys/sys/jail.h#22 integrate .. //depot/projects/smpng/sys/sys/lockmgr.h#27 integrate .. //depot/projects/smpng/sys/sys/mount.h#71 integrate .. //depot/projects/smpng/sys/sys/sysctl.h#55 integrate .. //depot/projects/smpng/sys/sys/tty.h#28 integrate .. //depot/projects/smpng/sys/ufs/ffs/ffs_alloc.c#50 integrate .. //depot/projects/smpng/sys/vm/vm_fault.c#72 integrate .. //depot/projects/smpng/sys/vm/vm_kern.c#42 integrate .. //depot/projects/smpng/sys/vm/vm_map.c#93 integrate .. //depot/projects/smpng/sys/vm/vm_map.h#40 integrate .. //depot/projects/smpng/sys/vm/vm_mmap.c#73 integrate .. //depot/projects/smpng/sys/vm/vm_object.c#104 integrate .. //depot/projects/smpng/sys/vm/vm_object.h#36 integrate .. //depot/projects/smpng/sys/vm/vm_unix.c#12 integrate .. //depot/projects/smpng/sys/vm/vnode_pager.c#68 integrate .. //depot/projects/smpng/sys/vm/vnode_pager.h#7 integrate Differences ... ==== //depot/projects/smpng/sys/amd64/amd64/busdma_machdep.c#29 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.86 2008/07/15 03:34:49 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.87 2009/02/08 22:54:58 imp Exp $"); #include #include @@ -1128,6 +1128,13 @@ bz->active_bpages++; mtx_unlock(&bounce_lock); + if (dmat->flags & BUS_DMA_KEEP_PG_OFFSET) { + /* page offset needs to be preserved */ + bpage->vaddr &= ~PAGE_MASK; + bpage->busaddr &= ~PAGE_MASK; + bpage->vaddr |= vaddr & PAGE_MASK; + bpage->busaddr |= vaddr & PAGE_MASK; + } bpage->datavaddr = vaddr; bpage->datacount = size; STAILQ_INSERT_TAIL(&(map->bpages), bpage, links); ==== //depot/projects/smpng/sys/amd64/conf/NOTES#47 (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.83 2008/12/01 16:53:01 sam Exp $ +# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.86 2009/02/07 00:01:10 wkoszek Exp $ # # @@ -150,6 +150,11 @@ # AGP GART support device agp +# +# AGP debugging. +# +options AGP_DEBUG + ##################################################################### # HARDWARE DEVICE CONFIGURATION @@ -267,7 +272,6 @@ # nfe: nVidia nForce MCP on-board Ethernet Networking (BSD open source) # nve: nVidia nForce MCP on-board Ethernet Networking # ral: Ralink Technology IEEE 802.11 wireless adapter -# ural: Ralink Technology RT2500USB IEEE 802.11 wireless adapter # wpi: Intel 3945ABG Wireless LAN controller device ed @@ -277,10 +281,9 @@ device iwi device iwn device ipw -device nfe # nVidia nForce MCP on-board Ethernet Networking -device nve # nVidia nForce MCP on-board Ethernet Networking +device nfe +device nve device ral -device ural device wpi device ath # Atheros pci/cardbus NIC's @@ -356,9 +359,11 @@ # Miscellaneous hardware: # # ipmi: Intelligent Platform Management Interface +# pbio: Parallel (8255 PPI) basic I/O (mode 0) port (e.g. Advantech PCL-724) # smbios: DMI/SMBIOS entry point # vpd: Vital Product Data kernel interface # asmc: Apple System Management Controller +# si: Specialix International SI/XIO or SX intelligent serial card # Notes on the Specialix SI/XIO driver: # The host card is memory, not IO mapped. @@ -367,13 +372,14 @@ # The cards can use an IRQ of 11, 12 or 15. device ipmi -# Parallel (8255 PPI) basic I/O (mode 0) port (e.g. Advantech PCL-724) device pbio hint.pbio.0.at="isa" hint.pbio.0.port="0x360" device smbios device vpd device asmc +#device si + # # Laptop/Notebook options: # ==== //depot/projects/smpng/sys/amd64/include/legacyvar.h#7 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/legacyvar.h,v 1.8 2007/09/30 11:05:13 marius Exp $ + * $FreeBSD: src/sys/amd64/include/legacyvar.h,v 1.9 2009/02/08 07:03:34 imp Exp $ */ #ifndef _MACHINE_LEGACYVAR_H_ @@ -43,12 +43,12 @@ #undef LEGACY_ACCESSOR int legacy_pcib_maxslots(device_t dev); -uint32_t legacy_pcib_read_config(device_t dev, int bus, int slot, int func, - int reg, int bytes); +uint32_t legacy_pcib_read_config(device_t dev, u_int bus, u_int slot, + u_int func, u_int reg, int bytes); int legacy_pcib_read_ivar(device_t dev, device_t child, int which, uintptr_t *result); -void legacy_pcib_write_config(device_t dev, int bus, int slot, int func, - int reg, u_int32_t data, int bytes); +void legacy_pcib_write_config(device_t dev, u_int bus, u_int slot, + u_int func, u_int reg, uint32_t data, int bytes); int legacy_pcib_write_ivar(device_t dev, device_t child, int which, uintptr_t value); struct resource *legacy_pcib_alloc_resource(device_t dev, device_t child, ==== //depot/projects/smpng/sys/amd64/pci/pci_bus.c#22 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_bus.c,v 1.122 2007/09/30 11:05:13 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_bus.c,v 1.123 2009/02/08 07:02:42 imp Exp $"); #include "opt_cpu.h" @@ -55,9 +55,9 @@ /* read configuration space register */ -u_int32_t -legacy_pcib_read_config(device_t dev, int bus, int slot, int func, - int reg, int bytes) +uint32_t +legacy_pcib_read_config(device_t dev, u_int bus, u_int slot, u_int func, + u_int reg, int bytes) { return(pci_cfgregread(bus, slot, func, reg, bytes)); } @@ -65,8 +65,8 @@ /* write configuration space register */ void -legacy_pcib_write_config(device_t dev, int bus, int slot, int func, - int reg, u_int32_t data, int bytes) +legacy_pcib_write_config(device_t dev, u_int bus, u_int slot, u_int func, + u_int reg, uint32_t data, int bytes) { pci_cfgregwrite(bus, slot, func, reg, data, bytes); } ==== //depot/projects/smpng/sys/arm/arm/busdma_machdep.c#27 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.42 2009/02/04 01:14:06 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.43 2009/02/08 22:54:58 imp Exp $"); /* * ARM bus dma support routines @@ -1417,6 +1417,13 @@ bz->active_bpages++; mtx_unlock(&bounce_lock); + if (dmat->flags & BUS_DMA_KEEP_PG_OFFSET) { + /* page offset needs to be preserved */ + bpage->vaddr &= ~PAGE_MASK; + bpage->busaddr &= ~PAGE_MASK; + bpage->vaddr |= vaddr & PAGE_MASK; + bpage->busaddr |= vaddr & PAGE_MASK; + } bpage->datavaddr = vaddr; bpage->datacount = size; STAILQ_INSERT_TAIL(&(map->bpages), bpage, links); ==== //depot/projects/smpng/sys/cam/cam_xpt.c#53 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.208 2009/01/23 21:08:00 trasz Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.209 2009/02/08 22:08:48 trasz Exp $"); #include #include @@ -4178,7 +4178,7 @@ struct sbuf sb; #ifdef INVARIANTS - if (path != NULL && path->bus != NULL && path->bus->sim != NULL) + if (path != NULL && path->bus != NULL) mtx_assert(path->bus->sim->mtx, MA_OWNED); #endif ==== //depot/projects/smpng/sys/conf/NOTES#160 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1524 2009/01/20 02:08:21 sobomax Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1527 2009/02/08 12:33:05 wkoszek Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -714,40 +714,81 @@ # # Network interfaces: # The `loop' device is MANDATORY when networking is enabled. +device loop + # The `ether' device provides generic code to handle # Ethernets; it is MANDATORY when an Ethernet device driver is # configured or token-ring is enabled. +device ether + # The `vlan' device implements the VLAN tagging of Ethernet frames # according to IEEE 802.1Q. It requires `device miibus'. +device vlan + # The `wlan' device provides generic code to support 802.11 # drivers, including host AP mode; it is MANDATORY for the wi, # and ath drivers and will eventually be required by all 802.11 drivers. +device wlan +options IEEE80211_DEBUG #enable debugging msgs +options IEEE80211_AMPDU_AGE #age frames in AMPDU reorder q's + # The `wlan_wep', `wlan_tkip', and `wlan_ccmp' devices provide # support for WEP, TKIP, and AES-CCMP crypto protocols optionally # used with 802.11 devices that depend on the `wlan' module. +device wlan_wep +device wlan_ccmp +device wlan_tkip + # The `wlan_xauth' device provides support for external (i.e. user-mode) # authenticators for use with 802.11 drivers that use the `wlan' # module and support 802.1x and/or WPA security protocols. +device wlan_xauth + # The `wlan_acl' device provides a MAC-based access control mechanism # for use with 802.11 drivers operating in ap mode and using the # `wlan' module. +# The 'wlan_amrr' device provides AMRR transmit rate control algorithm +device wlan_acl +device wlan_amrr + +# Generic TokenRing +device token + # The `fddi' device provides generic code to support FDDI. +device fddi + # The `arcnet' device provides generic code to support Arcnet. +device arcnet + # The `sppp' device serves a similar role for certain types # of synchronous PPP links (like `cx', `ar'). +device sppp + # The `sl' device implements the Serial Line IP (SLIP) service. # The `ppp' device implements the Point-to-Point Protocol. + + # The `bpf' device enables the Berkeley Packet Filter. Be # aware of the legal and administrative consequences of enabling this # option. The number of devices determines the maximum number of # simultaneous BPF clients programs runnable. DHCP requires bpf. +device bpf + # The `disc' device implements a minimal network interface, # which throws away all packets sent and never receives any. It is # included for testing and benchmarking purposes. +device disc + # The `edsc' device implements a minimal Ethernet interface, # which discards all packets sent and receives none. +device edsc + # The `tap' device is a pty-like virtual Ethernet interface -# The `tun' device implements (user-)ppp and nos-tun +device tap + +# The `tun' device implements (user-)ppp and nos-tun(8) +device tun + # The `gif' device implements IPv6 over IP4 tunneling, # IPv4 over IPv6 tunneling, IPv4 over IPv4 tunneling and # IPv6 over IPv6 tunneling. @@ -755,17 +796,45 @@ # GRE and MOBILE, as specified in the RFC1701 and RFC2004. # The XBONEHACK option allows the same pair of addresses to be configured on # multiple gif interfaces. +device gif +device gre +options XBONEHACK + # The `faith' device captures packets sent to it and diverts them # to the IPv4/IPv6 translation daemon. # The `stf' device implements 6to4 encapsulation. +device faith +device stf + # The `ef' device provides support for multiple ethernet frame types # specified via ETHER_* options. See ef(4) for details. -# +device ef +options ETHER_II # enable Ethernet_II frame +options ETHER_8023 # enable Ethernet_802.3 (Novell) frame +options ETHER_8022 # enable Ethernet_802.2 frame +options ETHER_SNAP # enable Ethernet_802.2/SNAP frame + # The pf packet filter consists of three devices: # The `pf' device provides /dev/pf and the firewall code itself. # The `pflog' device provides the pflog0 interface which logs packets. # The `pfsync' device provides the pfsync0 interface used for # synchronization of firewall state tables (over the net). +device pf +device pflog +device pfsync + +# Bridge interface. +device if_bridge + +# Common Address Redundancy Protocol. See carp(4) for more details. +device carp + +# IPsec interface. +device enc + +# Link aggregation interface. +device lagg + # # The PPP_BSDCOMP option enables support for compress(1) style entire # packet compression, the PPP_DEFLATE is for zlib/gzip style compression. @@ -773,48 +842,8 @@ # events for resetting the demand dial activity timer - requires bpf. # See pppd(8) for more details. # -device ether #Generic Ethernet -device vlan #VLAN support (needs miibus) -device wlan #802.11 support -options IEEE80211_DEBUG #enable debugging msgs -options IEEE80211_AMPDU_AGE #age frames in AMPDU reorder q's -device wlan_wep #802.11 WEP support -device wlan_ccmp #802.11 CCMP support -device wlan_tkip #802.11 TKIP support -device wlan_xauth #802.11 external authenticator support -device wlan_acl #802.11 MAC ACL support -device wlan_amrr #AMRR transmit rate control algorithm -device token #Generic TokenRing -device fddi #Generic FDDI -device arcnet #Generic Arcnet -device sppp #Generic Synchronous PPP -device loop #Network loopback device -device bpf #Berkeley packet filter -device disc #Discard device based on loopback -device edsc #Ethernet discard device -device tap #Virtual Ethernet driver -device tun #Tunnel driver (ppp(8), nos-tun(8)) -device gre #IP over IP tunneling -device if_bridge #Bridge interface -device pf #PF OpenBSD packet-filter firewall -device pflog #logging support interface for PF -device pfsync #synchronization interface for PF -device carp #Common Address Redundancy Protocol -device enc #IPsec interface -device lagg #Link aggregation interface -device ef # Multiple ethernet frames support -options ETHER_II # enable Ethernet_II frame -options ETHER_8023 # enable Ethernet_802.3 (Novell) frame -options ETHER_8022 # enable Ethernet_802.2 frame -options ETHER_SNAP # enable Ethernet_802.2/SNAP frame -# for IPv6 -device gif #IPv6 and IPv4 tunneling -options XBONEHACK -device faith #for IPv6 and IPv4 translation -device stf #6to4 IPv6 over IPv4 encapsulation - # # Internet family options: # @@ -2109,44 +2138,9 @@ # scd: Sony CD-ROM using proprietary (non-ATAPI) interface # mcd: Mitsumi CD-ROM using proprietary (non-ATAPI) interface # bktr: Brooktree bt848/848a/849a/878/879 video capture and TV Tuner board -# cy: Cyclades serial driver # joy: joystick (including IO DATA PCJOY PC Card joystick) -# rc: RISCom/8 multiport card -# rp: Comtrol Rocketport(ISA/PCI) - single card -# si: Specialix SI/XIO 4-32 port terminal multiplexor # cmx: OmniKey CardMan 4040 pccard smartcard reader -# Notes on the Comtrol Rocketport driver: -# -# The exact values used for rp0 depend on how many boards you have -# in the system. The manufacturer's sample configs are listed as: -# -# device rp # core driver support -# -# Comtrol Rocketport ISA single card -# hint.rp.0.at="isa" -# hint.rp.0.port="0x280" -# -# If instead you have two ISA cards, one installed at 0x100 and the -# second installed at 0x180, then you should add the following to -# your kernel probe hints: -# hint.rp.0.at="isa" -# hint.rp.0.port="0x100" -# hint.rp.1.at="isa" -# hint.rp.1.port="0x180" -# -# For 4 ISA cards, it might be something like this: -# hint.rp.0.at="isa" -# hint.rp.0.port="0x180" -# hint.rp.1.at="isa" -# hint.rp.1.port="0x100" -# hint.rp.2.at="isa" -# hint.rp.2.port="0x340" -# hint.rp.3.at="isa" -# hint.rp.3.port="0x240" -# -# For PCI cards, you need no hints. - # Mitsumi CD-ROM device mcd hint.mcd.0.at="isa" @@ -2323,6 +2317,7 @@ # ppi General-purpose I/O ("Geek Port") + IEEE1284 I/O # pps Pulse per second Timing Interface # lpbb Philips official parallel port I2C bit-banging interface +# pcfclock Parallel port clock driver. # # Supported interfaces: # ppc ISA-bus parallel port interfaces. ==== //depot/projects/smpng/sys/conf/files#226 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1365 2009/01/14 10:44:16 rwatson Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1367 2009/02/08 14:43:20 wkoszek Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -1036,7 +1036,7 @@ dependency "iwn.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwn.fw" \ no-implicit-rule \ - clean "iwn.fwo" + clean "iwnfw.fwo" iwn.fw optional iwnfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-4965-4.44.17.fw.uu" \ @@ -1234,7 +1234,7 @@ dependency "rt2561.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} rt2561.fw" \ no-implicit-rule \ - clean "rt2561.fwo" + clean "rt2561fw.fwo" rt2561.fw optional rt2561fw | ralfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ral/rt2561.fw.uu" \ @@ -1248,7 +1248,7 @@ dependency "rt2561s.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} rt2561s.fw" \ no-implicit-rule \ - clean "rt2561s.fwo" + clean "rt2561sfw.fwo" rt2561s.fw optional rt2561sfw | ralfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ral/rt2561s.fw.uu" \ @@ -1262,7 +1262,7 @@ dependency "rt2661.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} rt2661.fw" \ no-implicit-rule \ - clean "rt2661.fwo" + clean "rt2661fw.fwo" rt2661.fw optional rt2661fw | ralfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ral/rt2661.fw.uu" \ @@ -1276,7 +1276,7 @@ dependency "rt2860.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} rt2860.fw" \ no-implicit-rule \ - clean "rt2860.fwo" + clean "rt2860fw.fwo" rt2860.fw optional rt2860fw | ralfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ral/rt2860.fw.uu" \ @@ -1697,7 +1697,7 @@ dependency "wpi.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} wpi.fw" \ no-implicit-rule \ - clean "wpi.fwo" + clean "wpifw.fwo" wpi.fw optional wpifw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/wpi/iwlwifi-3945-2.14.4.fw.uu" \ @@ -2387,6 +2387,7 @@ netinet/libalias/alias_mod.c optional libalias | netgraph_nat netinet/libalias/alias_proxy.c optional libalias | netgraph_nat netinet/libalias/alias_util.c optional libalias | netgraph_nat +netinet/libalias/alias_sctp.c optional libalias | netgraph_nat netinet6/dest6.c optional inet6 netinet6/frag6.c optional inet6 netinet6/icmp6.c optional inet6 ==== //depot/projects/smpng/sys/conf/options#161 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.658 2009/01/28 18:00:22 sam Exp $ +# $FreeBSD: src/sys/conf/options,v 1.660 2009/02/06 10:30:46 wkoszek Exp $ # # On the handling of kernel options # @@ -36,7 +36,7 @@ AHC_DUMP_EEPROM opt_aic7xxx.h AHC_DEBUG opt_aic7xxx.h AHC_DEBUG_OPTS opt_aic7xxx.h -AHC_REG_PRETTY_PRINT opt_aic7xxx.h +AHC_REG_PRETTY_PRINT opt_aic7xxx.h AHD_DEBUG opt_aic79xx.h AHD_DEBUG_OPTS opt_aic79xx.h AHD_TMODE_ENABLE opt_aic79xx.h @@ -137,7 +137,7 @@ MBUF_PACKET_ZONE_DISABLE opt_global.h PANIC_REBOOT_WAIT_TIME opt_panic.h PPC_DEBUG opt_ppc.h -PPC_PROBE_CHIPSET opt_ppc.h +PPC_PROBE_CHIPSET opt_ppc.h PPS_SYNC opt_ntp.h PREEMPTION opt_sched.h QUOTA @@ -424,13 +424,13 @@ # SCTP opt_sctp.h SCTP_DEBUG opt_sctp.h # Enable debug printfs -SCTP_WITH_NO_CSUM opt_sctp.h # Use this at your peril -SCTP_LOCK_LOGGING opt_sctp.h # Log to KTR lock activity -SCTP_MBUF_LOGGING opt_sctp.h # Log to KTR general mbuf aloc/free +SCTP_WITH_NO_CSUM opt_sctp.h # Use this at your peril +SCTP_LOCK_LOGGING opt_sctp.h # Log to KTR lock activity +SCTP_MBUF_LOGGING opt_sctp.h # Log to KTR general mbuf aloc/free SCTP_MBCNT_LOGGING opt_sctp.h # Log to KTR mbcnt activity -SCTP_PACKET_LOGGING opt_sctp.h # Log to a packet buffer last N packets -SCTP_LTRACE_CHUNKS opt_sctp.h # Log to KTR chunks processed -SCTP_LTRACE_ERRORS opt_sctp.h # Log to KTR error returns. +SCTP_PACKET_LOGGING opt_sctp.h # Log to a packet buffer last N packets +SCTP_LTRACE_CHUNKS opt_sctp.h # Log to KTR chunks processed +SCTP_LTRACE_ERRORS opt_sctp.h # Log to KTR error returns. # # # @@ -804,3 +804,7 @@ # Virtualize the network stack VIMAGE opt_global.h VIMAGE_GLOBALS opt_global.h + +# Common Flash Interface (CFI) options +CFI_SUPPORT_STRATAFLASH opt_cfi.h +CFI_ARMEDANDDANGEROUS opt_cfi.h ==== //depot/projects/smpng/sys/conf/options.amd64#24 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options.amd64,v 1.33 2008/05/26 10:39:52 bz Exp $ +# $FreeBSD: src/sys/conf/options.amd64,v 1.34 2009/02/06 20:57:10 wkoszek Exp $ # Options specific to AMD64 platform kernels AUTO_EOI_1 opt_auto_eoi.h @@ -37,6 +37,9 @@ VGA_SLOW_IOACCESS opt_vga.h VGA_WIDTH90 opt_vga.h +# AGP debugging support +AGP_DEBUG opt_agp.h + ATKBD_DFLT_KEYMAP opt_atkbd.h # ------------------------------- ==== //depot/projects/smpng/sys/conf/options.i386#63 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options.i386,v 1.243 2008/08/15 20:58:57 kmacy Exp $ +# $FreeBSD: src/sys/conf/options.i386,v 1.244 2009/02/06 20:57:10 wkoszek Exp $ # Options specific to the i386 platform kernels AUTO_EOI_1 opt_auto_eoi.h @@ -88,6 +88,9 @@ VESA VESA_DEBUG opt_vesa.h +# AGP debugging support +AGP_DEBUG opt_agp.h + PSM_DEBUG opt_psm.h PSM_HOOKRESUME opt_psm.h PSM_RESETAFTERSUSPEND opt_psm.h ==== //depot/projects/smpng/sys/conf/options.ia64#22 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options.ia64,v 1.28 2007/07/30 22:42:33 marcel Exp $ +# $FreeBSD: src/sys/conf/options.ia64,v 1.29 2009/02/07 09:57:14 wkoszek Exp $ # Options specific to the ia64 platform kernels ITANIUM opt_global.h @@ -20,6 +20,9 @@ VGA_SLOW_IOACCESS opt_vga.h VGA_WIDTH90 opt_vga.h +# AGP debugging. +AGP_DEBUG opt_agp.h + PSM_HOOKRESUME opt_psm.h PSM_RESETAFTERSUSPEND opt_psm.h PSM_DEBUG opt_psm.h ==== //depot/projects/smpng/sys/conf/options.mips#3 (text+ko) ==== @@ -26,7 +26,7 @@ # SUCH DAMAGE. # # JNPR: options.mips,v 1.2 2006/09/15 12:52:34 -# $FreeBSD: src/sys/conf/options.mips,v 1.2 2008/09/19 03:36:37 imp Exp $ +# $FreeBSD: src/sys/conf/options.mips,v 1.3 2009/02/06 10:30:46 wkoszek Exp $ CPU_MIPS4KC opt_global.h CPU_MIPS32 opt_global.h @@ -48,7 +48,7 @@ KERNPHYSADDR opt_global.h KERNVIRTADDR opt_global.h PHYSADDR opt_global.h -SOFTFLOAT opt_global.h +SOFTFLOAT opt_global.h TARGET_OCTEON opt_global.h TARGET_EMULATOR opt_ddb.h ==== //depot/projects/smpng/sys/conf/options.pc98#61 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options.pc98,v 1.204 2008/06/14 12:51:44 wkoszek Exp $ +# $FreeBSD: src/sys/conf/options.pc98,v 1.205 2009/02/06 20:57:10 wkoszek Exp $ # Options specific to the pc98 platform kernels AUTO_EOI_1 opt_auto_eoi.h @@ -96,6 +96,7 @@ # Debugging NPX_DEBUG opt_npx.h STOP_NMI opt_cpu.h +AGP_DEBUG opt_agp.h # BPF just-in-time compiler BPF_JITTER opt_bpf.h ==== //depot/projects/smpng/sys/crypto/via/padlock.c#14 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/crypto/via/padlock.c,v 1.22 2009/01/12 19:23:46 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/crypto/via/padlock.c,v 1.23 2009/02/05 19:30:28 imp Exp $"); #include #include @@ -72,7 +72,7 @@ MALLOC_DEFINE(M_PADLOCK, "padlock_data", "PadLock Data"); static void -padlock_identify(device_t *dev, device_t parent) +padlock_identify(driver_t *drv, device_t parent) { /* NB: order 10 is so we get attached after h/w devices */ if (device_find_child(parent, "padlock", -1) == NULL && ==== //depot/projects/smpng/sys/dev/acpi_support/acpi_panasonic.c#7 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_panasonic.c,v 1.13 2007/06/17 04:40:33 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_panasonic.c,v 1.14 2009/02/05 18:39:33 imp Exp $"); #include "opt_acpi.h" #include @@ -79,7 +79,7 @@ static int acpi_panasonic_probe(device_t dev); static int acpi_panasonic_attach(device_t dev); static int acpi_panasonic_detach(device_t dev); -static void acpi_panasonic_shutdown(device_t dev); +static int acpi_panasonic_shutdown(device_t dev); static int acpi_panasonic_sysctl(SYSCTL_HANDLER_ARGS); static ACPI_INTEGER acpi_panasonic_sinf(ACPI_HANDLE h, ACPI_INTEGER index); static void acpi_panasonic_sset(ACPI_HANDLE h, ACPI_INTEGER index, @@ -220,7 +220,7 @@ return (0); } -static void +static int acpi_panasonic_shutdown(device_t dev) { struct acpi_panasonic_softc *sc; @@ -230,6 +230,7 @@ sc = device_get_softc(dev); mute = 1; hkey_sound_mute(sc->handle, HKEY_SET, &mute); + return (0); } static int ==== //depot/projects/smpng/sys/dev/acpica/acpi_pcib_acpi.c#27 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_pcib_acpi.c,v 1.55 2007/09/30 11:05:14 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_pcib_acpi.c,v 1.56 2009/02/05 18:40:42 imp Exp $"); #include "opt_acpi.h" #include @@ -68,10 +68,11 @@ int which, uintptr_t *result); static int acpi_pcib_write_ivar(device_t dev, device_t child, int which, uintptr_t value); -static uint32_t acpi_pcib_read_config(device_t dev, int bus, int slot, - int func, int reg, int bytes); -static void acpi_pcib_write_config(device_t dev, int bus, int slot, - int func, int reg, uint32_t data, int bytes); +static uint32_t acpi_pcib_read_config(device_t dev, u_int bus, + u_int slot, u_int func, u_int reg, int bytes); +static void acpi_pcib_write_config(device_t dev, u_int bus, + u_int slot, u_int func, u_int reg, uint32_t data, + int bytes); static int acpi_pcib_acpi_route_interrupt(device_t pcib, device_t dev, int pin); static int acpi_pcib_alloc_msi(device_t pcib, device_t dev, @@ -297,15 +298,15 @@ } static uint32_t -acpi_pcib_read_config(device_t dev, int bus, int slot, int func, int reg, - int bytes) +acpi_pcib_read_config(device_t dev, u_int bus, u_int slot, u_int func, + u_int reg, int bytes) { return (pci_cfgregread(bus, slot, func, reg, bytes)); } static void -acpi_pcib_write_config(device_t dev, int bus, int slot, int func, int reg, - uint32_t data, int bytes) +acpi_pcib_write_config(device_t dev, u_int bus, u_int slot, u_int func, + u_int reg, uint32_t data, int bytes) { pci_cfgregwrite(bus, slot, func, reg, data, bytes); } ==== //depot/projects/smpng/sys/dev/agp/agp.c#5 (text+ko) ==== @@ -25,8 +25,9 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/agp/agp.c,v 1.61 2008/12/23 16:04:33 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/agp/agp.c,v 1.62 2009/02/06 20:57:10 wkoszek Exp $"); +#include "opt_agp.h" #include "opt_bus.h" #include @@ -554,7 +555,7 @@ */ m = vm_page_grab(mem->am_obj, OFF_TO_IDX(i), VM_ALLOC_WIRED | VM_ALLOC_ZERO | VM_ALLOC_RETRY); - AGP_DPF("found page pa=%#x\n", VM_PAGE_TO_PHYS(m)); + AGP_DPF("found page pa=%#jx\n", (uintmax_t)VM_PAGE_TO_PHYS(m)); } VM_OBJECT_UNLOCK(mem->am_obj); @@ -585,8 +586,8 @@ for (j = 0; j < PAGE_SIZE && i + j < mem->am_size; j += AGP_PAGE_SIZE) { vm_offset_t pa = VM_PAGE_TO_PHYS(m) + j; - AGP_DPF("binding offset %#x to pa %#x\n", - offset + i + j, pa); + AGP_DPF("binding offset %#jx to pa %#jx\n", + (uintmax_t)offset + i + j, (uintmax_t)pa); error = AGP_BIND_PAGE(dev, offset + i + j, pa); if (error) { /* ==== //depot/projects/smpng/sys/dev/ath/ath_hal/ah_regdomain.c#5 (text+ko) ==== @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $FreeBSD: src/sys/dev/ath/ath_hal/ah_regdomain.c,v 1.4 2009/02/03 19:00:56 sam Exp $ + * $FreeBSD: src/sys/dev/ath/ath_hal/ah_regdomain.c,v 1.7 2009/02/07 01:54:57 sam Exp $ */ #include "opt_ah.h" >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Mon Feb 9 08:59:43 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Mon Feb 9 08:59:49 2009 Subject: PERFORCE change 157443 for review Message-ID: <200902091659.n19GxdP6033610@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157443 Change 157443 by hselasky@hselasky_laptop001 on 2009/02/09 16:59:35 USB WLAN patches: - Fix issues with freed memory accessed. - Some other minor nits. - USB WLAN adapters have been tested and found to work in device mode. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#29 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumvar.h#6 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#29 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_uralvar.h#6 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zyd2.c#31 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zydreg.h#5 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#29 (text+ko) ==== @@ -133,8 +133,8 @@ const uint8_t mac[IEEE80211_ADDR_LEN]); static void rum_vap_delete(struct ieee80211vap *); static void rum_tx_free(struct rum_tx_data *, int); -static int rum_alloc_tx_list(struct rum_softc *); -static void rum_free_tx_list(struct rum_softc *); +static void rum_setup_tx_list(struct rum_softc *); +static void rum_unsetup_tx_list(struct rum_softc *); static int rum_newstate(struct ieee80211vap *, enum ieee80211_state, int); static void rum_setup_tx_desc(struct rum_softc *, @@ -552,19 +552,21 @@ /* wait for any post attach or other command to complete */ usb2_proc_drain(&sc->sc_tq); - /* stop all USB transfers first */ + /* stop all USB transfers */ usb2_transfer_unsetup(sc->sc_xfer, RUM_N_TRANSFER); usb2_proc_free(&sc->sc_tq); + /* free TX list, if any */ + RUM_LOCK(sc); + rum_unsetup_tx_list(sc); + RUM_UNLOCK(sc); + if (ifp) { bpfdetach(ifp); ieee80211_ifdetach(ic); if_free(ifp); } - /* free TX list, if any */ - rum_free_tx_list(sc); - mtx_destroy(&sc->sc_mtx); return (0); @@ -612,11 +614,8 @@ rum_vap_delete(struct ieee80211vap *vap) { struct rum_vap *rvp = RUM_VAP(vap); - struct rum_softc *sc = rvp->sc; - RUM_LOCK(sc); - usb2_callout_stop(&rvp->amrr_ch); - RUM_UNLOCK(sc); + usb2_callout_drain(&rvp->amrr_ch); ieee80211_amrr_cleanup(&rvp->amrr); ieee80211_vap_detach(vap); free(rvp, M_80211_VAP); @@ -641,17 +640,12 @@ sc->tx_nfree++; } -static int -rum_alloc_tx_list(struct rum_softc *sc) +static void +rum_setup_tx_list(struct rum_softc *sc) { struct rum_tx_data *data; int i; - sc->tx_data = malloc(sizeof(struct rum_tx_data) * RUM_TX_LIST_COUNT, - M_USB, M_NOWAIT|M_ZERO); - if (sc->tx_data == NULL) - return (ENOMEM); - sc->tx_nfree = 0; STAILQ_INIT(&sc->tx_q); STAILQ_INIT(&sc->tx_free); @@ -663,18 +657,20 @@ STAILQ_INSERT_TAIL(&sc->tx_free, data, next); sc->tx_nfree++; } - return 0; } static void -rum_free_tx_list(struct rum_softc *sc) +rum_unsetup_tx_list(struct rum_softc *sc) { struct rum_tx_data *data; int i; - if (sc->tx_data == NULL) - return; + /* make sure any subsequent use of the queues will fail */ + sc->tx_nfree = 0; + STAILQ_INIT(&sc->tx_q); + STAILQ_INIT(&sc->tx_free); + /* free up all node references and mbufs */ for (i = 0; i < RUM_TX_LIST_COUNT; i++) { data = &sc->tx_data[i]; @@ -687,8 +683,6 @@ data->ni = NULL; } } - free(sc->tx_data, M_USB); - sc->tx_data = NULL; } static void @@ -724,7 +718,8 @@ rum_enable_mrr(sc); rum_set_txpreamble(sc); rum_set_basicrates(sc); - rum_set_bssid(sc, ni->ni_bssid); + IEEE80211_ADDR_COPY(sc->sc_bssid, ni->ni_bssid); + rum_set_bssid(sc, sc->sc_bssid); } if (vap->iv_opmode == IEEE80211_M_HOSTAP || @@ -1998,11 +1993,7 @@ /* * Allocate Tx and Rx xfer queues. */ - error = rum_alloc_tx_list(sc); - if (error != 0) { - device_printf(sc->sc_dev, "could not allocate Tx list\n"); - goto fail; - } + rum_setup_tx_list(sc); /* update Rx filter */ tmp = rum_read(sc, RT2573_TXRX_CSR0) & 0xffff; @@ -2056,13 +2047,17 @@ ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); + RUM_UNLOCK(sc); + /* - * stop all the transfers, if not already stopped: + * Drain the USB transfers, if not already drained: */ - usb2_transfer_stop(sc->sc_xfer[RUM_BULK_WR]); - usb2_transfer_stop(sc->sc_xfer[RUM_BULK_RD]); + usb2_transfer_drain(sc->sc_xfer[RUM_BULK_WR]); + usb2_transfer_drain(sc->sc_xfer[RUM_BULK_RD]); + + RUM_LOCK(sc); - rum_free_tx_list(sc); + rum_unsetup_tx_list(sc); /* disable Rx */ tmp = rum_read(sc, RT2573_TXRX_CSR0); @@ -2298,7 +2293,6 @@ struct rum_softc *sc = task->sc; struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); uint32_t tmp; RUM_LOCK_ASSERT(sc, MA_OWNED); @@ -2311,19 +2305,13 @@ rum_set_bssid(sc, ifp->if_broadcastaddr); break; - case RUM_SCAN_END: - rum_enable_tsf_sync(sc); - /* XXX keep local copy */ - rum_set_bssid(sc, vap->iv_bss->ni_bssid); - break; - case RUM_SET_CHANNEL: rum_set_chan(sc, ic->ic_curchan); break; - default: - panic("unknown scan action %d\n", sc->sc_scan_action); - /* NEVER REACHED */ + default: /* RUM_SCAN_END */ + rum_enable_tsf_sync(sc); + rum_set_bssid(sc, sc->sc_bssid); break; } } ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumvar.h#6 (text+ko) ==== @@ -116,7 +116,7 @@ #define RUM_SCAN_END 1 #define RUM_SET_CHANNEL 2 - struct rum_tx_data *tx_data; + struct rum_tx_data tx_data[RUM_TX_LIST_COUNT]; rum_txdhead tx_q; rum_txdhead tx_free; int tx_nfree; ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#29 (text+ko) ==== @@ -112,8 +112,8 @@ const uint8_t mac[IEEE80211_ADDR_LEN]); static void ural_vap_delete(struct ieee80211vap *); static void ural_tx_free(struct ural_tx_data *, int); -static int ural_alloc_tx_list(struct ural_softc *); -static void ural_free_tx_list(struct ural_softc *); +static void ural_setup_tx_list(struct ural_softc *); +static void ural_unsetup_tx_list(struct ural_softc *); static int ural_newstate(struct ieee80211vap *, enum ieee80211_state, int); static void ural_setup_tx_desc(struct ural_softc *, @@ -538,19 +538,21 @@ /* wait for any post attach or other command to complete */ usb2_proc_drain(&sc->sc_tq); - /* stop all USB transfers first */ + /* stop all USB transfers */ usb2_transfer_unsetup(sc->sc_xfer, URAL_N_TRANSFER); usb2_proc_free(&sc->sc_tq); + /* free TX list, if any */ + RAL_LOCK(sc); + ural_unsetup_tx_list(sc); + RAL_UNLOCK(sc); + if (ifp) { bpfdetach(ifp); ieee80211_ifdetach(ic); if_free(ifp); } - /* free TX list, if any */ - ural_free_tx_list(sc); - mtx_destroy(&sc->sc_mtx); return (0); @@ -598,11 +600,8 @@ ural_vap_delete(struct ieee80211vap *vap) { struct ural_vap *uvp = URAL_VAP(vap); - struct ural_softc *sc = uvp->sc; - RAL_LOCK(sc); - usb2_callout_stop(&uvp->amrr_ch); - RAL_UNLOCK(sc); + usb2_callout_drain(&uvp->amrr_ch); ieee80211_amrr_cleanup(&uvp->amrr); ieee80211_vap_detach(vap); free(uvp, M_80211_VAP); @@ -627,17 +626,12 @@ sc->tx_nfree++; } -static int -ural_alloc_tx_list(struct ural_softc *sc) +static void +ural_setup_tx_list(struct ural_softc *sc) { struct ural_tx_data *data; int i; - sc->tx_data = malloc(sizeof(struct ural_tx_data) * RAL_TX_LIST_COUNT, - M_USB, M_NOWAIT|M_ZERO); - if (sc->tx_data == NULL) - return (ENOMEM); - sc->tx_nfree = 0; STAILQ_INIT(&sc->tx_q); STAILQ_INIT(&sc->tx_free); @@ -649,18 +643,20 @@ STAILQ_INSERT_TAIL(&sc->tx_free, data, next); sc->tx_nfree++; } - return 0; } static void -ural_free_tx_list(struct ural_softc *sc) +ural_unsetup_tx_list(struct ural_softc *sc) { struct ural_tx_data *data; int i; - if (sc->tx_data == NULL) - return; + /* make sure any subsequent use of the queues will fail */ + sc->tx_nfree = 0; + STAILQ_INIT(&sc->tx_q); + STAILQ_INIT(&sc->tx_free); + /* free up all node references and mbufs */ for (i = 0; i < RAL_TX_LIST_COUNT; i++) { data = &sc->tx_data[i]; @@ -673,8 +669,6 @@ data->ni = NULL; } } - free(sc->tx_data, M_USB); - sc->tx_data = NULL; } static void @@ -711,7 +705,8 @@ ural_update_slot(ic->ic_ifp); ural_set_txpreamble(sc); ural_set_basicrates(sc, ic->ic_bsschan); - ural_set_bssid(sc, ni->ni_bssid); + IEEE80211_ADDR_COPY(sc->sc_bssid, ni->ni_bssid); + ural_set_bssid(sc, sc->sc_bssid); } if (vap->iv_opmode == IEEE80211_M_HOSTAP || @@ -763,23 +758,27 @@ struct ural_softc *sc = task->sc; struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); RAL_LOCK_ASSERT(sc, MA_OWNED); - if (sc->sc_scan_action == URAL_SCAN_START) { + switch (sc->sc_scan_action) { + case URAL_SCAN_START: /* abort TSF synchronization */ DPRINTF("starting scan\n"); ural_write(sc, RAL_TXRX_CSR19, 0); ural_set_bssid(sc, ifp->if_broadcastaddr); - } else if (sc->sc_scan_action == URAL_SET_CHANNEL) { + break; + + case URAL_SET_CHANNEL: ural_set_chan(sc, ic->ic_curchan); - } else { + break; + + default: /* URAL_SCAN_END */ DPRINTF("stopping scan\n"); ural_enable_tsf_sync(sc); - /* XXX keep local copy */ - ural_set_bssid(sc, vap->iv_bss->ni_bssid); - } + ural_set_bssid(sc, sc->sc_bssid); + break; + } } static int @@ -2092,7 +2091,6 @@ struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; uint16_t tmp; - usb2_error_t error; int i, ntries; RAL_LOCK_ASSERT(sc, MA_OWNED); @@ -2143,11 +2141,7 @@ /* * Allocate Tx and Rx xfer queues. */ - error = ural_alloc_tx_list(sc); - if (error != 0) { - device_printf(sc->sc_dev, "could not allocate Tx list\n"); - goto fail; - } + ural_setup_tx_list(sc); /* kick Rx */ tmp = RAL_DROP_PHY | RAL_DROP_CRC; @@ -2198,12 +2192,14 @@ ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); /* - * stop all the transfers, if not already stopped: + * Drain all the transfers, if not already drained: */ - usb2_transfer_stop(sc->sc_xfer[URAL_BULK_WR]); - usb2_transfer_stop(sc->sc_xfer[URAL_BULK_RD]); + RAL_UNLOCK(sc); + usb2_transfer_drain(sc->sc_xfer[URAL_BULK_WR]); + usb2_transfer_drain(sc->sc_xfer[URAL_BULK_RD]); + RAL_LOCK(sc); - ural_free_tx_list(sc); + ural_unsetup_tx_list(sc); /* disable Rx */ ural_write(sc, RAL_TXRX_CSR2, RAL_DISABLE_RX); ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_uralvar.h#6 (text+ko) ==== @@ -119,7 +119,7 @@ struct ural_task sc_promisctask[2]; struct ural_task sc_scantask[2]; - struct ural_tx_data *tx_data; + struct ural_tx_data tx_data[RAL_TX_LIST_COUNT]; ural_txdhead tx_q; ural_txdhead tx_free; int tx_nfree; ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_zyd2.c#31 (text+ko) ==== @@ -64,7 +64,7 @@ ZYD_DEBUG_ANY = 0xffffffff }; #define DPRINTF(sc, m, fmt, ...) do { \ - if (sc->sc_debug & (m)) \ + if (zyd_debug & (m)) \ printf("%s: " fmt, __func__, ## __VA_ARGS__); \ } while (0) #else @@ -98,8 +98,8 @@ const uint8_t mac[IEEE80211_ADDR_LEN]); static void zyd_vap_delete(struct ieee80211vap *); static void zyd_tx_free(struct zyd_tx_data *, int); -static int zyd_alloc_tx_list(struct zyd_softc *); -static void zyd_free_tx_list(struct zyd_softc *); +static void zyd_setup_tx_list(struct zyd_softc *); +static void zyd_unsetup_tx_list(struct zyd_softc *); static struct ieee80211_node *zyd_node_alloc(struct ieee80211vap *, const uint8_t mac[IEEE80211_ADDR_LEN]); static int zyd_newstate(struct ieee80211vap *, enum ieee80211_state, int); @@ -293,7 +293,7 @@ if (uaa->usb2_mode != USB_MODE_HOST) return (ENXIO); - if (uaa->info.bConfigIndex != 0) + if (uaa->info.bConfigIndex != ZYD_CONFIG_INDEX) return (ENXIO); if (uaa->info.bIfaceIndex != ZYD_IFACE_INDEX) return (ENXIO); @@ -306,7 +306,7 @@ { struct usb2_attach_arg *uaa = device_get_ivars(dev); struct zyd_softc *sc = device_get_softc(dev); - int error = ENXIO; + int error; uint8_t iface_index; if (uaa->info.bcdDevice < 0x4330) { @@ -320,9 +320,7 @@ sc->sc_dev = dev; sc->sc_udev = uaa->device; sc->sc_macrev = USB_GET_DRIVER_INFO(uaa); -#ifdef USB_DEBUG - sc->sc_debug = zyd_debug; -#endif + mtx_init(&sc->sc_mtx, device_get_nameunit(sc->sc_dev), MTX_NETWORK_LOCK, MTX_DEF); @@ -447,19 +445,19 @@ /* wait for any post attach or other command to complete */ usb2_proc_drain(&sc->sc_tq); - /* stop all USB transfers first */ + /* stop all USB transfers */ usb2_transfer_unsetup(sc->sc_xfer, ZYD_N_TRANSFER); usb2_proc_free(&sc->sc_tq); + /* free TX list, if any */ + zyd_unsetup_tx_list(sc); + if (ifp) { bpfdetach(ifp); ieee80211_ifdetach(ic); if_free(ifp); } - /* free TX list, if any */ - zyd_free_tx_list(sc); - mtx_destroy(&sc->sc_mtx); return (0); @@ -530,17 +528,12 @@ sc->tx_nfree++; } -static int -zyd_alloc_tx_list(struct zyd_softc *sc) +static void +zyd_setup_tx_list(struct zyd_softc *sc) { struct zyd_tx_data *data; int i; - sc->tx_data = malloc(sizeof(struct zyd_tx_data) * ZYD_TX_LIST_CNT, - M_USB, M_NOWAIT|M_ZERO); - if (sc->tx_data == NULL) - return (ENOMEM); - sc->tx_nfree = 0; STAILQ_INIT(&sc->tx_q); STAILQ_INIT(&sc->tx_free); @@ -552,18 +545,20 @@ STAILQ_INSERT_TAIL(&sc->tx_free, data, next); sc->tx_nfree++; } - return 0; } static void -zyd_free_tx_list(struct zyd_softc *sc) +zyd_unsetup_tx_list(struct zyd_softc *sc) { struct zyd_tx_data *data; int i; - if (sc->tx_data == NULL) - return; + /* make sure any subsequent use of the queues will fail */ + sc->tx_nfree = 0; + STAILQ_INIT(&sc->tx_q); + STAILQ_INIT(&sc->tx_free); + /* free up all node references and mbufs */ for (i = 0; i < ZYD_TX_LIST_CNT; i++) { data = &sc->tx_data[i]; @@ -576,8 +571,6 @@ data->ni = NULL; } } - free(sc->tx_data, M_USB); - sc->tx_data = NULL; } /* ARGUSED */ @@ -1923,13 +1916,11 @@ USETW(req.wIndex, 0); USETW(req.wLength, IEEE80211_ADDR_LEN); - ZYD_LOCK(sc); error = zyd_do_request(sc, &req, sc->sc_bssid); if (error != 0) { device_printf(sc->sc_dev, "could not read EEPROM: %s\n", usb2_errstr(error)); } - ZYD_UNLOCK(sc); return (error); } @@ -2868,10 +2859,7 @@ /* * Allocate Tx and Rx xfer queues. */ - if ((error = zyd_alloc_tx_list(sc)) != 0) { - device_printf(sc->sc_dev, "could not allocate Tx list\n"); - goto fail; - } + zyd_setup_tx_list(sc); /* enable interrupts */ zyd_write32_m(sc, ZYD_CR_INTERRUPT, ZYD_HWINT_MASK); @@ -2917,12 +2905,14 @@ ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); /* - * stop all the transfers, if not already stopped: + * Drain all the transfers, if not already drained: */ - usb2_transfer_stop(sc->sc_xfer[ZYD_BULK_WR]); - usb2_transfer_stop(sc->sc_xfer[ZYD_BULK_RD]); + ZYD_UNLOCK(sc); + usb2_transfer_drain(sc->sc_xfer[ZYD_BULK_WR]); + usb2_transfer_drain(sc->sc_xfer[ZYD_BULK_RD]); + ZYD_LOCK(sc); - zyd_free_tx_list(sc); + zyd_unsetup_tx_list(sc); /* Stop now if the device was never set up */ if (!(sc->sc_flags & ZYD_FLAG_INITONCE)) @@ -3063,18 +3053,16 @@ /* want broadcast address while scanning */ zyd_set_bssid(sc, ifp->if_broadcastaddr); break; - case ZYD_SCAN_END: - /* restore previous bssid */ - zyd_set_bssid(sc, sc->sc_bssid); - break; + case ZYD_SET_CHANNEL: zyd_set_chan(sc, ic->ic_curchan); break; - default: - device_printf(sc->sc_dev, "unknown scan action %d\n", - sc->sc_scan_action); + + default: /* ZYD_SCAN_END */ + /* restore previous bssid */ + zyd_set_bssid(sc, sc->sc_bssid); break; - } + } } static void ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_zydreg.h#5 (text+ko) ==== @@ -1127,7 +1127,7 @@ uint16_t count; } __packed; -#define ZYD_CONFIG_NO 1 +#define ZYD_CONFIG_INDEX 0 #define ZYD_IFACE_INDEX 0 #define ZYD_INTR_TIMEOUT 1000 @@ -1274,7 +1274,6 @@ #define ZYD_FLAG_INITONCE (1 << 1) #define ZYD_FLAG_INITDONE (1 << 2) int sc_if_flags; - uint32_t sc_debug; struct zyd_task sc_synctask[2]; struct zyd_task sc_mcasttask[2]; @@ -1317,7 +1316,7 @@ struct mtx sc_mtx; struct cv sc_intr_cv; - struct zyd_tx_data *tx_data; + struct zyd_tx_data tx_data[ZYD_TX_LIST_CNT]; zyd_txdhead tx_q; zyd_txdhead tx_free; int tx_nfree; From jhb at FreeBSD.org Tue Feb 10 07:04:50 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Tue Feb 10 07:04:59 2009 Subject: PERFORCE change 157492 for review Message-ID: <200902101504.n1AF4jfx017577@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157492 Change 157492 by jhb@jhb_jhbbsd on 2009/02/10 15:04:25 IFC @157486 Affected files ... .. //depot/projects/smpng/sys/amd64/amd64/busdma_machdep.c#30 integrate .. //depot/projects/smpng/sys/amd64/conf/DEFAULTS#11 integrate .. //depot/projects/smpng/sys/arm/arm/busdma_machdep.c#28 integrate .. //depot/projects/smpng/sys/cam/cam_periph.c#30 integrate .. //depot/projects/smpng/sys/conf/NOTES#161 integrate .. //depot/projects/smpng/sys/conf/files#227 integrate .. //depot/projects/smpng/sys/conf/options#162 integrate .. //depot/projects/smpng/sys/dev/de/if_de.c#7 integrate .. //depot/projects/smpng/sys/dev/firewire/if_fwe.c#33 integrate .. //depot/projects/smpng/sys/dev/firewire/if_fwip.c#14 integrate .. //depot/projects/smpng/sys/dev/firewire/sbp.c#46 integrate .. //depot/projects/smpng/sys/dev/sound/pci/ds1.c#27 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/at91dci.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/at91dci_atmelarm.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/atmegadci.c#2 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/ehci2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/ehci2.h#4 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/ehci2_ixp4xx.c#1 branch .. //depot/projects/smpng/sys/dev/usb2/controller/ehci2_mbus.c#1 branch .. //depot/projects/smpng/sys/dev/usb2/controller/ehci2_pci.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/musb2_otg.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/ohci2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/uhci2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/usb2_controller.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/controller/uss820dci.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_config_td.c#3 delete .. //depot/projects/smpng/sys/dev/usb2/core/usb2_config_td.h#3 delete .. //depot/projects/smpng/sys/dev/usb2/core/usb2_core.h#4 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_device.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_hub.c#6 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_msctest.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_process.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_process.h#3 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_request.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_request.h#3 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_transfer.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_util.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/core/usb2_util.h#2 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_aue2.c#6 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_auereg.h#3 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_axe2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_axereg.h#3 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_cdce2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_cdcereg.h#3 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_cue2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_cuereg.h#3 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_kue2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_kuereg.h#3 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_rue2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_ruereg.h#3 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_udav2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/if_udavreg.h#3 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/usb2_ethernet.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/ethernet/usb2_ethernet.h#3 integrate .. //depot/projects/smpng/sys/dev/usb2/include/usb2_cdc.h#2 integrate .. //depot/projects/smpng/sys/dev/usb2/misc/ufm2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/u3g2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/uark2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/ubsa2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/ubser2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/uchcom2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/ucycom2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/ufoma2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/uftdi2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/ugensa2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/uipaq2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/ulpt2.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/umct2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/umodem2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/umoscom2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/uplcom2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/usb2_serial.c#3 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/usb2_serial.h#3 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/uslcom2.c#1 branch .. //depot/projects/smpng/sys/dev/usb2/serial/uvisor2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/serial/uvscom2.c#4 integrate .. //depot/projects/smpng/sys/dev/usb2/sound/uaudio2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/storage/umass2.c#6 integrate .. //depot/projects/smpng/sys/dev/usb2/template/usb2_template_cdce.c#2 integrate .. //depot/projects/smpng/sys/dev/usb2/wlan/if_rum2.c#6 integrate .. //depot/projects/smpng/sys/dev/usb2/wlan/if_rumreg.h#2 integrate .. //depot/projects/smpng/sys/dev/usb2/wlan/if_rumvar.h#3 integrate .. //depot/projects/smpng/sys/dev/usb2/wlan/if_ural2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/wlan/if_uralreg.h#2 integrate .. //depot/projects/smpng/sys/dev/usb2/wlan/if_uralvar.h#3 integrate .. //depot/projects/smpng/sys/dev/usb2/wlan/if_zyd2.c#5 integrate .. //depot/projects/smpng/sys/dev/usb2/wlan/if_zydfw.h#2 integrate .. //depot/projects/smpng/sys/dev/usb2/wlan/if_zydreg.h#3 integrate .. //depot/projects/smpng/sys/fs/udf/ecma167-udf.h#8 integrate .. //depot/projects/smpng/sys/fs/udf/udf_vfsops.c#43 integrate .. //depot/projects/smpng/sys/fs/udf/udf_vnops.c#46 integrate .. //depot/projects/smpng/sys/geom/part/g_part_apm.c#7 integrate .. //depot/projects/smpng/sys/geom/part/g_part_gpt.c#9 integrate .. //depot/projects/smpng/sys/geom/part/g_part_pc98.c#7 integrate .. //depot/projects/smpng/sys/geom/part/g_part_vtoc8.c#6 integrate .. //depot/projects/smpng/sys/i386/conf/DEFAULTS#13 integrate .. //depot/projects/smpng/sys/i386/i386/busdma_machdep.c#49 integrate .. //depot/projects/smpng/sys/kern/uipc_debug.c#7 integrate .. //depot/projects/smpng/sys/mips/include/pmap.h#4 integrate .. //depot/projects/smpng/sys/modules/usb2/Makefile#5 integrate .. //depot/projects/smpng/sys/modules/usb2/core/Makefile#2 integrate .. //depot/projects/smpng/sys/modules/usb2/serial_slcom/Makefile#1 branch .. //depot/projects/smpng/sys/net80211/ieee80211_regdomain.c#7 integrate .. //depot/projects/smpng/sys/netinet/sctp_uio.h#17 integrate .. //depot/projects/smpng/sys/pci/if_rl.c#76 integrate Differences ... ==== //depot/projects/smpng/sys/amd64/amd64/busdma_machdep.c#30 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.87 2009/02/08 22:54:58 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.88 2009/02/09 18:03:31 cognet Exp $"); #include #include @@ -93,6 +93,7 @@ int active_bpages; int total_bounced; int total_deferred; + int map_count; bus_size_t alignment; bus_size_t boundary; bus_addr_t lowaddr; @@ -418,7 +419,7 @@ else maxpages = MIN(MAX_BPAGES, Maxmem -atop(dmat->lowaddr)); if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0 - || (dmat->map_count > 0 && bz->total_bpages < maxpages)) { + || (bz->map_count > 0 && bz->total_bpages < maxpages)) { int pages; pages = MAX(atop(dmat->maxsize), 1); @@ -434,6 +435,7 @@ error = 0; } } + bz->map_count++; } else { *mapp = NULL; } @@ -457,6 +459,8 @@ __func__, dmat, EBUSY); return (EBUSY); } + if (dmat->bounce_zone) + dmat->bounce_zone->map_count--; free(map, M_DEVBUF); } dmat->map_count--; @@ -989,6 +993,7 @@ bz->lowaddr = dmat->lowaddr; bz->alignment = dmat->alignment; bz->boundary = dmat->boundary; + bz->map_count = 0; snprintf(bz->zoneid, 8, "zone%d", busdma_zonecount); busdma_zonecount++; snprintf(bz->lowaddrid, 18, "%#jx", (uintmax_t)bz->lowaddr); ==== //depot/projects/smpng/sys/amd64/conf/DEFAULTS#11 (text+ko) ==== @@ -1,7 +1,7 @@ # # DEFAULTS -- Default kernel configuration file for FreeBSD/amd64 # -# $FreeBSD: src/sys/amd64/conf/DEFAULTS,v 1.14 2008/12/17 17:43:22 marcel Exp $ +# $FreeBSD: src/sys/amd64/conf/DEFAULTS,v 1.15 2009/02/10 00:08:39 marcel Exp $ machine amd64 @@ -17,4 +17,5 @@ # Default partitioning schemes options GEOM_PART_BSD +options GEOM_PART_EBR options GEOM_PART_MBR ==== //depot/projects/smpng/sys/arm/arm/busdma_machdep.c#28 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.43 2009/02/08 22:54:58 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.44 2009/02/09 18:03:31 cognet Exp $"); /* * ARM bus dma support routines @@ -112,6 +112,7 @@ int active_bpages; int total_bounced; int total_deferred; + int map_count; bus_size_t alignment; bus_size_t boundary; bus_addr_t lowaddr; @@ -523,7 +524,7 @@ */ maxpages = MAX_BPAGES; if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0 - || (dmat->map_count > 0 && bz->total_bpages < maxpages)) { + || (bz->map_count > 0 && bz->total_bpages < maxpages)) { int pages; pages = MAX(atop(dmat->maxsize), 1); @@ -539,6 +540,7 @@ error = 0; } } + bz->map_count++; } CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d", __func__, dmat, dmat->flags, error); @@ -560,6 +562,8 @@ __func__, dmat, EBUSY); return (EBUSY); } + if (dmat->bounce_zone) + dmat->bounce_zone->map_count--; dmat->map_count--; CTR2(KTR_BUSDMA, "%s: tag %p error 0", __func__, dmat); return (0); @@ -1277,6 +1281,7 @@ bz->lowaddr = dmat->lowaddr; bz->alignment = dmat->alignment; bz->boundary = dmat->boundary; + bz->map_count = 0; snprintf(bz->zoneid, 8, "zone%d", busdma_zonecount); busdma_zonecount++; snprintf(bz->lowaddrid, 18, "%#jx", (uintmax_t)bz->lowaddr); ==== //depot/projects/smpng/sys/cam/cam_periph.c#30 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/cam/cam_periph.c,v 1.76 2009/01/26 15:01:47 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_periph.c,v 1.77 2009/02/09 17:02:54 fjoe Exp $"); #include #include @@ -171,7 +171,7 @@ break; } xpt_unlock_buses(); - if (p_drv == NULL) { + if (*p_drv == NULL) { printf("cam_periph_alloc: invalid periph name '%s'\n", name); return (CAM_REQ_INVALID); } ==== //depot/projects/smpng/sys/conf/NOTES#161 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1527 2009/02/08 12:33:05 wkoszek Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1528 2009/02/10 00:08:39 marcel Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -147,6 +147,7 @@ options GEOM_NOP # Test class. options GEOM_PART_APM # Apple partitioning options GEOM_PART_BSD # BSD disklabel +options GEOM_PART_EBR # Extended Boot Records options GEOM_PART_GPT # GPT partitioning options GEOM_PART_MBR # MBR partitioning options GEOM_PART_PC98 # PC-9800 disk partitioning ==== //depot/projects/smpng/sys/conf/files#227 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1367 2009/02/08 14:43:20 wkoszek Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1369 2009/02/09 22:38:55 thompsa Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -1567,7 +1567,6 @@ # dev/usb2/core/usb2_busdma.c optional usb2_core dev/usb2/core/usb2_compat_linux.c optional usb2_core -dev/usb2/core/usb2_config_td.c optional usb2_core dev/usb2/core/usb2_core.c optional usb2_core dev/usb2/core/usb2_debug.c optional usb2_core dev/usb2/core/usb2_dev.c optional usb2_core @@ -1624,6 +1623,7 @@ dev/usb2/serial/umodem2.c optional usb2_core usb2_serial usb2_serial_modem dev/usb2/serial/umoscom2.c optional usb2_core usb2_serial usb2_serial_moscom dev/usb2/serial/uplcom2.c optional usb2_core usb2_serial usb2_serial_plcom +dev/usb2/serial/uslcom2.c optional usb2_core usb2_serial usb2_serial_slcom dev/usb2/serial/usb2_serial.c optional usb2_core usb2_serial dev/usb2/serial/uvisor2.c optional usb2_core usb2_serial usb2_serial_visor dev/usb2/serial/uvscom2.c optional usb2_core usb2_serial usb2_serial_vscom ==== //depot/projects/smpng/sys/conf/options#162 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.660 2009/02/06 10:30:46 wkoszek Exp $ +# $FreeBSD: src/sys/conf/options,v 1.661 2009/02/10 00:08:39 marcel Exp $ # # On the handling of kernel options # @@ -92,6 +92,7 @@ GEOM_NOP opt_geom.h GEOM_PART_APM opt_geom.h GEOM_PART_BSD opt_geom.h +GEOM_PART_EBR opt_geom.h GEOM_PART_GPT opt_geom.h GEOM_PART_MBR opt_geom.h GEOM_PART_PC98 opt_geom.h ==== //depot/projects/smpng/sys/dev/de/if_de.c#7 (text) ==== @@ -36,7 +36,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/de/if_de.c,v 1.184 2008/04/05 17:24:44 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/de/if_de.c,v 1.185 2009/02/09 17:07:29 fjoe Exp $"); #define TULIP_HDR_DATA @@ -4561,7 +4561,7 @@ sc->tulip_setup_dma_addr = 0; } if (sc->tulip_setupbuf != NULL) { - bus_dmamem_free(sc->tulip_setup_tag, sc->tulip_setupdata, + bus_dmamem_free(sc->tulip_setup_tag, sc->tulip_setupbuf, sc->tulip_setup_map); sc->tulip_setup_map = NULL; sc->tulip_setupbuf = NULL; ==== //depot/projects/smpng/sys/dev/firewire/if_fwe.c#33 (text+ko) ==== @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/firewire/if_fwe.c,v 1.45 2008/03/25 09:38:58 ru Exp $ + * $FreeBSD: src/sys/dev/firewire/if_fwe.c,v 1.46 2009/02/09 16:58:18 fjoe Exp $ */ #ifdef HAVE_KERNEL_OPTION_HEADERS @@ -445,7 +445,7 @@ #ifdef DEVICE_POLLING { struct ifreq *ifr = (struct ifreq *) data; - struct firewire_comm *fc = fc = fwe->fd.fc; + struct firewire_comm *fc = fwe->fd.fc; if (ifr->ifr_reqcap & IFCAP_POLLING && !(ifp->if_capenable & IFCAP_POLLING)) { ==== //depot/projects/smpng/sys/dev/firewire/if_fwip.c#14 (text+ko) ==== @@ -33,7 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/firewire/if_fwip.c,v 1.17 2008/03/25 09:38:58 ru Exp $ + * $FreeBSD: src/sys/dev/firewire/if_fwip.c,v 1.18 2009/02/09 16:58:18 fjoe Exp $ */ #ifdef HAVE_KERNEL_OPTION_HEADERS @@ -427,7 +427,7 @@ #ifdef DEVICE_POLLING { struct ifreq *ifr = (struct ifreq *) data; - struct firewire_comm *fc = fc = fwip->fd.fc; + struct firewire_comm *fc = fwip->fd.fc; if (ifr->ifr_reqcap & IFCAP_POLLING && !(ifp->if_capenable & IFCAP_POLLING)) { ==== //depot/projects/smpng/sys/dev/firewire/sbp.c#46 (text+ko) ==== @@ -31,7 +31,7 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/firewire/sbp.c,v 1.98 2009/02/01 23:28:52 sbruno Exp $ + * $FreeBSD: src/sys/dev/firewire/sbp.c,v 1.99 2009/02/09 16:57:07 fjoe Exp $ * */ @@ -330,12 +330,11 @@ static void sbp_identify(driver_t *driver, device_t parent) { - device_t child; SBP_DEBUG(0) printf("sbp_identify\n"); END_DEBUG - child = BUS_ADD_CHILD(parent, 0, "sbp", device_get_unit(parent)); + BUS_ADD_CHILD(parent, 0, "sbp", device_get_unit(parent)); } /* ==== //depot/projects/smpng/sys/dev/sound/pci/ds1.c#27 (text+ko) ==== @@ -33,7 +33,7 @@ #include #include -SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pci/ds1.c,v 1.52 2007/06/17 06:10:41 ariff Exp $"); +SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pci/ds1.c,v 1.53 2009/02/09 22:59:22 cognet Exp $"); /* -------------------------------------------------------------------- */ @@ -396,7 +396,7 @@ pb->Format |= b16? 0 : 0x80000000; pb->Format |= (stereo && (ch == 2 || ch == 4))? 0x00000001 : 0; pb->LoopDefault = 0; - pb->PgBase = base? base : 0; + pb->PgBase = base; pb->PgLoop = 0; pb->PgLoopEnd = len >> ss; pb->PgLoopFrac = 0; ==== //depot/projects/smpng/sys/dev/usb2/controller/at91dci.c#3 (text+ko) ==== @@ -1,5 +1,5 @@ #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/at91dci.c,v 1.11 2009/01/13 19:05:51 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/at91dci.c,v 1.12 2009/02/09 21:47:39 thompsa Exp $"); /*- * Copyright (c) 2007-2008 Hans Petter Selasky. All rights reserved. @@ -275,7 +275,7 @@ DELAY(8000); } else { /* Wait for reset to complete. */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 8); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 125); } AT91_UDP_WRITE_4(sc, AT91_UDP_GSTATE, 0); @@ -1395,7 +1395,7 @@ (sc->sc_clocks_on) (sc->sc_clocks_arg); } /* wait a little for things to stabilise */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); /* disable and clear all interrupts */ ==== //depot/projects/smpng/sys/dev/usb2/controller/at91dci_atmelarm.c#4 (text+ko) ==== @@ -1,5 +1,5 @@ #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/at91dci_atmelarm.c,v 1.8 2009/02/01 00:51:25 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/at91dci_atmelarm.c,v 1.9 2009/02/09 21:47:39 thompsa Exp $"); /*- * Copyright (c) 2007-2008 Hans Petter Selasky. All rights reserved. @@ -168,7 +168,7 @@ at91_udp_pull_down(sc); /* wait 10ms for pulldown to stabilise */ - usb2_pause_mtx(NULL, 10); + usb2_pause_mtx(NULL, hz / 100); sc->sc_iclk = at91_pmc_clock_ref("udc_clk"); sc->sc_fclk = at91_pmc_clock_ref("udpck"); ==== //depot/projects/smpng/sys/dev/usb2/controller/atmegadci.c#2 (text+ko) ==== @@ -1,5 +1,5 @@ #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/atmegadci.c,v 1.1 2009/01/13 18:49:35 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/atmegadci.c,v 1.2 2009/02/09 21:47:39 thompsa Exp $"); /*- * Copyright (c) 2009 Hans Petter Selasky. All rights reserved. @@ -221,7 +221,7 @@ DELAY(8000); } else { /* Wait for reset to complete. */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 8); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 125); } /* hardware should have cleared RMWKUP bit */ @@ -1253,7 +1253,7 @@ (sc->sc_clocks_on) (&sc->sc_bus); /* wait a little for things to stabilise */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); /* enable interrupts */ ATMEGA_WRITE_1(sc, ATMEGA_UDIEN, ==== //depot/projects/smpng/sys/dev/usb2/controller/ehci2.c#5 (text+ko) ==== @@ -44,7 +44,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/ehci2.c,v 1.11 2009/02/08 21:08:00 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/ehci2.c,v 1.12 2009/02/09 21:47:39 thompsa Exp $"); #include #include @@ -177,7 +177,7 @@ EOWRITE4(sc, EHCI_USBCMD, 0); /* Halt controller */ for (n = 0; n != 100; n++) { - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); hcr = EOREAD4(sc, EHCI_USBSTS); if (hcr & EHCI_STS_HCH) { hcr = 0; @@ -193,7 +193,7 @@ EOWRITE4(sc, EHCI_USBCMD, EHCI_CMD_HCRESET); for (n = 0; n != 100; n++) { - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); hcr = EOREAD4(sc, EHCI_USBCMD); if (!(hcr & EHCI_CMD_HCRESET)) { if (sc->sc_flags & EHCI_SCFLG_SETMODE) @@ -478,7 +478,7 @@ EOWRITE4(sc, EHCI_CONFIGFLAG, EHCI_CONF_CF); for (i = 0; i < 100; i++) { - usb2_pause_mtx(NULL, 1); + usb2_pause_mtx(NULL, hz / 1000); hcr = EOREAD4(sc, EHCI_USBSTS) & EHCI_STS_HCH; if (!hcr) { break; @@ -511,11 +511,12 @@ if (ehci_hc_reset(sc)) { DPRINTF("reset failed!\n"); } - /* XXX let stray task complete */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 50); USB_BUS_UNLOCK(&sc->sc_bus); + /* XXX let stray task complete */ + usb2_pause_mtx(NULL, hz / 20); + usb2_callout_drain(&sc->sc_tmo_pcd); } @@ -549,7 +550,7 @@ if (hcr == 0) { break; } - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); } if (hcr != 0) { @@ -563,7 +564,7 @@ if (hcr == EHCI_STS_HCH) { break; } - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); } if (hcr != EHCI_STS_HCH) { @@ -607,7 +608,7 @@ if (hcr) { usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_RESUME_WAIT); + USB_MS_TO_TICKS(USB_RESUME_WAIT)); for (i = 1; i <= sc->sc_noport; i++) { cmd = EOREAD4(sc, EHCI_PORTSC(i)); @@ -625,16 +626,17 @@ if (hcr != EHCI_STS_HCH) { break; } - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); } if (hcr == EHCI_STS_HCH) { device_printf(sc->sc_bus.bdev, "config timeout\n"); } - usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_RESUME_WAIT); USB_BUS_UNLOCK(&sc->sc_bus); + usb2_pause_mtx(NULL, + USB_MS_TO_TICKS(USB_RESUME_WAIT)); + /* catch any lost interrupts */ ehci_do_poll(&sc->sc_bus); } @@ -1140,6 +1142,9 @@ td = xfer->td_transfer_cache; td_alt_next = td->alt_next; + if (xfer->aframes != xfer->nframes) { + xfer->frlengths[xfer->aframes] = 0; + } while (1) { usb2_pc_cpu_invalidate(td->page_cache); @@ -1148,8 +1153,8 @@ len = EHCI_QTD_GET_BYTES(status); /* - * Verify the status length and subtract - * the remainder from "frlengths[]": + * Verify the status length and + * add the length to "frlengths[]": */ if (len > td->len) { /* should not happen */ @@ -1157,7 +1162,7 @@ "0x%04x/0x%04x bytes\n", len, td->len); status |= EHCI_QTD_HALTED; } else if (xfer->aframes != xfer->nframes) { - xfer->frlengths[xfer->aframes] -= len; + xfer->frlengths[xfer->aframes] += td->len - len; } /* Check for last transfer */ if (((void *)td) == xfer->td_transfer_last) { @@ -3214,9 +3219,9 @@ /* wait 20ms for resume sequence to complete */ if (use_polling) { /* polling */ - DELAY(20 * 1000); + DELAY(20000); } else { - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 20); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 50); } EOWRITE4(sc, port, v & ~(EHCI_PS_SUSP | @@ -3225,9 +3230,9 @@ /* settle time */ if (use_polling) { /* polling */ - DELAY(4 * 1000); + DELAY(4000); } else { - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 4); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 250); } break; case UHF_PORT_POWER: @@ -3383,7 +3388,7 @@ } else { /* Wait for reset to complete. */ usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_PORT_ROOT_RESET_DELAY); + USB_MS_TO_TICKS(USB_PORT_ROOT_RESET_DELAY)); } /* Terminate reset sequence. */ @@ -3396,7 +3401,7 @@ } else { /* Wait for HC to complete reset. */ usb2_pause_mtx(&sc->sc_bus.bus_mtx, - EHCI_PORT_RESET_COMPLETE); + USB_MS_TO_TICKS(EHCI_PORT_RESET_COMPLETE)); } v = EOREAD4(sc, port); ==== //depot/projects/smpng/sys/dev/usb2/controller/ehci2.h#4 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/controller/ehci2.h,v 1.5 2009/01/13 19:03:01 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/controller/ehci2.h,v 1.6 2009/02/09 21:47:39 thompsa Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. * All rights reserved. @@ -468,7 +468,6 @@ struct ehci_sitd *sc_isoc_fs_p_last[EHCI_VIRTUAL_FRAMELIST_COUNT]; struct ehci_itd *sc_isoc_hs_p_last[EHCI_VIRTUAL_FRAMELIST_COUNT]; void *sc_intr_hdl; - device_t sc_dev; bus_size_t sc_io_size; bus_space_tag_t sc_io_tag; bus_space_handle_t sc_io_hdl; ==== //depot/projects/smpng/sys/dev/usb2/controller/ehci2_pci.c#4 (text+ko) ==== @@ -36,7 +36,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/ehci2_pci.c,v 1.8 2009/02/01 00:51:25 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/ehci2_pci.c,v 1.9 2009/02/09 21:47:39 thompsa Exp $"); /* * USB Enhanced Host Controller Driver, a.k.a. USB 2.0 controller. @@ -237,7 +237,6 @@ USB_GET_DMA_TAG(self), &ehci_iterate_hw_softc)) { return (ENOMEM); } - sc->sc_dev = self; pci_enable_busmaster(self); @@ -456,7 +455,7 @@ "timed out waiting for BIOS\n"); break; } - usb2_pause_mtx(NULL, 10); /* wait 10ms */ + usb2_pause_mtx(NULL, hz / 100); /* wait 10ms */ } } } ==== //depot/projects/smpng/sys/dev/usb2/controller/musb2_otg.c#3 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/controller/musb2_otg.c,v 1.10 2009/01/13 19:03:33 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/controller/musb2_otg.c,v 1.11 2009/02/09 21:47:39 thompsa Exp $ */ /*- * Copyright (c) 2008 Hans Petter Selasky. All rights reserved. * @@ -223,7 +223,7 @@ DELAY(8000); } else { /* Wait for reset to complete. */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 8); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 125); } temp = MUSB2_READ_1(sc, MUSB2_REG_POWER); @@ -1708,7 +1708,7 @@ (sc->sc_clocks_on) (sc->sc_clocks_arg); } /* wait a little for things to stabilise */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); /* disable all interrupts */ @@ -1721,7 +1721,7 @@ musbotg_pull_common(sc, 0); /* wait a little bit (10ms) */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 10); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 100); /* disable double packet buffering */ MUSB2_WRITE_2(sc, MUSB2_REG_RXDBDIS, 0xFFFF); ==== //depot/projects/smpng/sys/dev/usb2/controller/ohci2.c#4 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/ohci2.c,v 1.9 2009/02/07 06:27:16 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/ohci2.c,v 1.10 2009/02/09 21:47:39 thompsa Exp $"); /* * USB Open Host Controller driver. @@ -168,7 +168,7 @@ DPRINTF("SMM active, request owner change\n"); OWRITE4(sc, OHCI_COMMAND_STATUS, OHCI_OCR); for (i = 0; (i < 100) && (ctl & OHCI_IR); i++) { - usb2_pause_mtx(NULL, 1); + usb2_pause_mtx(NULL, hz / 1000); ctl = OREAD4(sc, OHCI_CONTROL); } if (ctl & OHCI_IR) { @@ -181,7 +181,8 @@ DPRINTF("cold started\n"); reset: /* controller was cold started */ - usb2_pause_mtx(NULL, USB_BUS_RESET_DELAY); + usb2_pause_mtx(NULL, + USB_MS_TO_TICKS(USB_BUS_RESET_DELAY)); } /* @@ -191,7 +192,8 @@ DPRINTF("%s: resetting\n", device_get_nameunit(sc->sc_bus.bdev)); OWRITE4(sc, OHCI_CONTROL, OHCI_HCFS_RESET); - usb2_pause_mtx(NULL, USB_BUS_RESET_DELAY); + usb2_pause_mtx(NULL, + USB_MS_TO_TICKS(USB_BUS_RESET_DELAY)); /* we now own the host controller and the bus has been reset */ ival = OHCI_GET_IVAL(OREAD4(sc, OHCI_FM_INTERVAL)); @@ -253,7 +255,8 @@ desca = OREAD4(sc, OHCI_RH_DESCRIPTOR_A); OWRITE4(sc, OHCI_RH_DESCRIPTOR_A, desca | OHCI_NOCP); OWRITE4(sc, OHCI_RH_STATUS, OHCI_LPSC); /* Enable port power */ - usb2_pause_mtx(NULL, OHCI_ENABLE_POWER_DELAY); + usb2_pause_mtx(NULL, + USB_MS_TO_TICKS(OHCI_ENABLE_POWER_DELAY)); OWRITE4(sc, OHCI_RH_DESCRIPTOR_A, desca); /* @@ -262,7 +265,8 @@ */ sc->sc_noport = 0; for (i = 0; (i < 10) && (sc->sc_noport == 0); i++) { - usb2_pause_mtx(NULL, OHCI_READ_DESC_DELAY); + usb2_pause_mtx(NULL, + USB_MS_TO_TICKS(OHCI_READ_DESC_DELAY)); sc->sc_noport = OHCI_GET_NDP(OREAD4(sc, OHCI_RH_DESCRIPTOR_A)); } @@ -417,11 +421,11 @@ OWRITE4(sc, OHCI_INTERRUPT_DISABLE, OHCI_ALL_INTRS); OWRITE4(sc, OHCI_CONTROL, OHCI_HCFS_RESET); + USB_BUS_UNLOCK(&sc->sc_bus); + /* XXX let stray task complete */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 50); + usb2_pause_mtx(NULL, hz / 20); - USB_BUS_UNLOCK(&sc->sc_bus); - usb2_callout_drain(&sc->sc_tmo_rhsc); } @@ -455,7 +459,7 @@ OWRITE4(sc, OHCI_CONTROL, ctl); usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_RESUME_WAIT); + USB_MS_TO_TICKS(USB_RESUME_WAIT)); USB_BUS_UNLOCK(&sc->sc_bus); } @@ -485,10 +489,12 @@ ctl = OREAD4(sc, OHCI_CONTROL); ctl |= OHCI_HCFS_RESUME; OWRITE4(sc, OHCI_CONTROL, ctl); - usb2_pause_mtx(&sc->sc_bus.bus_mtx, USB_RESUME_DELAY); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, + USB_MS_TO_TICKS(USB_RESUME_DELAY)); ctl = (ctl & ~OHCI_HCFS_MASK) | OHCI_HCFS_OPERATIONAL; OWRITE4(sc, OHCI_CONTROL, ctl); - usb2_pause_mtx(&sc->sc_bus.bus_mtx, USB_RESUME_RECOVERY); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, + USB_MS_TO_TICKS(USB_RESUME_RECOVERY)); sc->sc_control = sc->sc_intre = 0; USB_BUS_UNLOCK(&sc->sc_bus); @@ -827,6 +833,9 @@ td_alt_next = td->alt_next; td_flags = 0; + if (xfer->aframes != xfer->nframes) { + xfer->frlengths[xfer->aframes] = 0; + } while (1) { usb2_pc_cpu_invalidate(td->page_cache); @@ -850,10 +859,15 @@ cc = OHCI_CC_STALL; } else if (xfer->aframes != xfer->nframes) { /* - * subtract remaining length from - * "frlengths[]" + * Sum up total transfer length + * in "frlengths[]": */ - xfer->frlengths[xfer->aframes] -= temp; + xfer->frlengths[xfer->aframes] += td->len - temp; + } + } else { + if (xfer->aframes != xfer->nframes) { + /* transfer was complete */ + xfer->frlengths[xfer->aframes] += td->len; } } /* Check for last transfer */ @@ -2401,7 +2415,7 @@ DELAY(USB_PORT_ROOT_RESET_DELAY * 1000); } else { usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_PORT_ROOT_RESET_DELAY); + USB_MS_TO_TICKS(USB_PORT_ROOT_RESET_DELAY)); } if ((OREAD4(sc, port) & UPS_RESET) == 0) { ==== //depot/projects/smpng/sys/dev/usb2/controller/uhci2.c#5 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/uhci2.c,v 1.11 2009/02/07 06:27:16 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/uhci2.c,v 1.12 2009/02/09 21:47:39 thompsa Exp $"); /* * USB Universal Host Controller driver. @@ -271,7 +271,7 @@ /* wait */ usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_BUS_RESET_DELAY); + USB_MS_TO_TICKS(USB_BUS_RESET_DELAY)); /* terminate all transfers */ @@ -283,7 +283,7 @@ while (n--) { /* wait one millisecond */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); if (!(UREAD2(sc, UHCI_CMD) & UHCI_CMD_HCRESET)) { goto done_1; @@ -299,7 +299,7 @@ while (n--) { /* wait one millisecond */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); /* check if HC is stopped */ if (UREAD2(sc, UHCI_STS) & UHCI_STS_HCH) { @@ -345,7 +345,7 @@ while (n--) { /* wait one millisecond */ - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 1); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000); /* check that controller has started */ @@ -636,7 +636,8 @@ UHCICMD(sc, UHCI_CMD_EGSM); - usb2_pause_mtx(&sc->sc_bus.bus_mtx, USB_RESUME_WAIT); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, + USB_MS_TO_TICKS(USB_RESUME_WAIT)); USB_BUS_UNLOCK(&sc->sc_bus); } @@ -655,7 +656,7 @@ UHCICMD(sc, UHCI_CMD_FGR); usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_RESUME_DELAY); + USB_MS_TO_TICKS(USB_RESUME_DELAY)); /* and start traffic again */ @@ -2408,7 +2409,7 @@ if (use_polling) { DELAY(10000); } else { - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 10); + usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 100); } } @@ -2420,7 +2421,7 @@ DELAY(USB_PORT_ROOT_RESET_DELAY * 1000); } else { usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_PORT_ROOT_RESET_DELAY); + USB_MS_TO_TICKS(USB_PORT_ROOT_RESET_DELAY)); } DPRINTFN(4, "uhci port %d reset, status0 = 0x%04x\n", @@ -2453,7 +2454,7 @@ DELAY(USB_PORT_RESET_DELAY * 1000); } else { usb2_pause_mtx(&sc->sc_bus.bus_mtx, - USB_PORT_RESET_DELAY); + USB_MS_TO_TICKS(USB_PORT_RESET_DELAY)); } x = UREAD2(sc, port); @@ -2780,9 +2781,9 @@ /* wait 20ms for resume sequence to complete */ if (use_polling) { /* polling */ - DELAY(20 * 1000); + DELAY(20000); } else { - usb2_pause_mtx(&sc->sc_bus.bus_mtx, 20); >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Tue Feb 10 08:15:07 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Feb 10 08:15:15 2009 Subject: PERFORCE change 157496 for review Message-ID: <200902101615.n1AGF5nj023760@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157496 Change 157496 by hselasky@hselasky_laptop001 on 2009/02/10 16:14:20 IFC @ 157495 Affected files ... .. //depot/projects/usb/src/sys/amd64/amd64/busdma_machdep.c#12 integrate .. //depot/projects/usb/src/sys/amd64/conf/DEFAULTS#8 integrate .. //depot/projects/usb/src/sys/arm/arm/busdma_machdep.c#16 integrate .. //depot/projects/usb/src/sys/cam/cam_periph.c#8 integrate .. //depot/projects/usb/src/sys/cam/cam_xpt.c#14 integrate .. //depot/projects/usb/src/sys/conf/NOTES#28 integrate .. //depot/projects/usb/src/sys/conf/files#52 integrate .. //depot/projects/usb/src/sys/conf/options#21 integrate .. //depot/projects/usb/src/sys/dev/cfi/cfi_core.c#3 integrate .. //depot/projects/usb/src/sys/dev/de/if_de.c#6 integrate .. //depot/projects/usb/src/sys/dev/firewire/if_fwe.c#5 integrate .. //depot/projects/usb/src/sys/dev/firewire/if_fwip.c#7 integrate .. //depot/projects/usb/src/sys/dev/firewire/sbp.c#7 integrate .. //depot/projects/usb/src/sys/dev/re/if_re.c#14 integrate .. //depot/projects/usb/src/sys/dev/sound/pci/ds1.c#4 integrate .. //depot/projects/usb/src/sys/dev/syscons/scterm-teken.c#2 integrate .. //depot/projects/usb/src/sys/dev/syscons/teken/teken.c#4 integrate .. //depot/projects/usb/src/sys/dev/syscons/teken/teken.h#4 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/at91dci.c#27 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/at91dci_atmelarm.c#21 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#33 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.h#15 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_pci.c#25 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/musb2_otg.c#26 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#30 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.c#29 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/usb2_controller.c#26 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci.c#23 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_busdma.c#20 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_core.h#35 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#52 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#38 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_msctest.c#18 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.c#18 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.h#9 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#33 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.h#11 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#42 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_util.c#12 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_util.h#8 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_aue2.c#22 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_auereg.h#5 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axe2.c#22 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axereg.h#5 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdce2.c#20 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdcereg.h#5 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cue2.c#21 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cuereg.h#5 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kue2.c#21 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kuereg.h#5 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_rue2.c#21 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_ruereg.h#5 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udav2.c#21 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udavreg.h#5 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.c#12 integrate .. //depot/projects/usb/src/sys/dev/usb2/ethernet/usb2_ethernet.h#10 integrate .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_cdc.h#8 integrate .. //depot/projects/usb/src/sys/dev/usb2/misc/ufm2.c#12 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/u3g2.c#12 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uark2.c#17 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/ubsa2.c#23 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/ubser2.c#17 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uchcom2.c#20 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/ucycom2.c#18 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/ufoma2.c#23 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uftdi2.c#21 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/ugensa2.c#24 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uipaq2.c#20 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/ulpt2.c#16 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/umct2.c#17 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/umodem2.c#20 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/umoscom2.c#18 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uplcom2.c#20 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.c#28 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.h#16 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uvisor2.c#18 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uvscom2.c#20 integrate .. //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#29 integrate .. //depot/projects/usb/src/sys/dev/usb2/storage/umass2.c#28 integrate .. //depot/projects/usb/src/sys/dev/usb2/template/usb2_template_cdce.c#11 integrate .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#30 integrate .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumreg.h#3 integrate .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumvar.h#7 integrate .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#30 integrate .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_uralreg.h#3 integrate .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_uralvar.h#7 integrate .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zyd2.c#32 integrate .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zydfw.h#3 integrate .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zydreg.h#6 integrate .. //depot/projects/usb/src/sys/fs/tmpfs/tmpfs.h#6 integrate .. //depot/projects/usb/src/sys/fs/tmpfs/tmpfs_subr.c#8 integrate .. //depot/projects/usb/src/sys/fs/tmpfs/tmpfs_vnops.c#7 integrate .. //depot/projects/usb/src/sys/fs/udf/ecma167-udf.h#4 integrate .. //depot/projects/usb/src/sys/fs/udf/udf_vfsops.c#9 integrate .. //depot/projects/usb/src/sys/fs/udf/udf_vnops.c#11 integrate .. //depot/projects/usb/src/sys/geom/part/g_part.c#13 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_apm.c#10 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_ebr.c#1 branch .. //depot/projects/usb/src/sys/geom/part/g_part_gpt.c#11 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_mbr.c#7 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_pc98.c#7 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_vtoc8.c#6 integrate .. //depot/projects/usb/src/sys/i386/conf/DEFAULTS#9 integrate .. //depot/projects/usb/src/sys/i386/conf/NOTES#17 integrate .. //depot/projects/usb/src/sys/i386/i386/busdma_machdep.c#15 integrate .. //depot/projects/usb/src/sys/i386/xen/pmap.c#4 integrate .. //depot/projects/usb/src/sys/ia64/ia64/busdma_machdep.c#11 integrate .. //depot/projects/usb/src/sys/kern/kern_linker.c#13 integrate .. //depot/projects/usb/src/sys/kern/link_elf.c#11 integrate .. //depot/projects/usb/src/sys/kern/link_elf_obj.c#11 integrate .. //depot/projects/usb/src/sys/kern/subr_clist.c#5 integrate .. //depot/projects/usb/src/sys/kern/uipc_debug.c#6 integrate .. //depot/projects/usb/src/sys/mips/include/pmap.h#4 integrate .. //depot/projects/usb/src/sys/mips/mips/in_cksum.c#3 integrate .. //depot/projects/usb/src/sys/modules/geom/geom_part/Makefile#2 integrate .. //depot/projects/usb/src/sys/modules/geom/geom_part/geom_part_ebr/Makefile#1 branch .. //depot/projects/usb/src/sys/modules/usb2/Makefile#12 integrate .. //depot/projects/usb/src/sys/modules/usb2/core/Makefile#13 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_output.c#16 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_regdomain.c#8 integrate .. //depot/projects/usb/src/sys/netinet/sctp_crc32.c#6 integrate .. //depot/projects/usb/src/sys/netinet/sctp_uio.h#12 integrate .. //depot/projects/usb/src/sys/netinet/sctputil.c#16 integrate .. //depot/projects/usb/src/sys/nfsserver/nfs_syscalls.c#10 integrate .. //depot/projects/usb/src/sys/pci/if_rl.c#10 integrate .. //depot/projects/usb/src/sys/security/audit/audit_bsm.c#13 integrate .. //depot/projects/usb/src/sys/security/audit/audit_bsm_klib.c#12 integrate .. //depot/projects/usb/src/sys/security/audit/audit_pipe.c#13 integrate .. //depot/projects/usb/src/sys/security/audit/audit_private.h#9 integrate .. //depot/projects/usb/src/sys/sys/bus_dma.h#9 integrate .. //depot/projects/usb/src/sys/vm/vm_fault.c#9 integrate .. //depot/projects/usb/src/sys/vm/vm_kern.c#9 integrate .. //depot/projects/usb/src/sys/vm/vm_map.c#12 integrate .. //depot/projects/usb/src/sys/vm/vm_map.h#7 integrate .. //depot/projects/usb/src/sys/vm/vm_mmap.c#14 integrate .. //depot/projects/usb/src/sys/vm/vm_object.c#13 integrate .. //depot/projects/usb/src/sys/vm/vm_object.h#6 integrate .. //depot/projects/usb/src/sys/vm/vm_unix.c#2 integrate .. //depot/projects/usb/src/sys/vm/vnode_pager.c#12 integrate .. //depot/projects/usb/src/sys/vm/vnode_pager.h#2 integrate Differences ... ==== //depot/projects/usb/src/sys/amd64/amd64/busdma_machdep.c#12 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.86 2008/07/15 03:34:49 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.88 2009/02/09 18:03:31 cognet Exp $"); #include #include @@ -93,6 +93,7 @@ int active_bpages; int total_bounced; int total_deferred; + int map_count; bus_size_t alignment; bus_size_t boundary; bus_addr_t lowaddr; @@ -418,7 +419,7 @@ else maxpages = MIN(MAX_BPAGES, Maxmem -atop(dmat->lowaddr)); if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0 - || (dmat->map_count > 0 && bz->total_bpages < maxpages)) { + || (bz->map_count > 0 && bz->total_bpages < maxpages)) { int pages; pages = MAX(atop(dmat->maxsize), 1); @@ -434,6 +435,7 @@ error = 0; } } + bz->map_count++; } else { *mapp = NULL; } @@ -457,6 +459,8 @@ __func__, dmat, EBUSY); return (EBUSY); } + if (dmat->bounce_zone) + dmat->bounce_zone->map_count--; free(map, M_DEVBUF); } dmat->map_count--; @@ -989,6 +993,7 @@ bz->lowaddr = dmat->lowaddr; bz->alignment = dmat->alignment; bz->boundary = dmat->boundary; + bz->map_count = 0; snprintf(bz->zoneid, 8, "zone%d", busdma_zonecount); busdma_zonecount++; snprintf(bz->lowaddrid, 18, "%#jx", (uintmax_t)bz->lowaddr); ==== //depot/projects/usb/src/sys/amd64/conf/DEFAULTS#8 (text+ko) ==== @@ -1,7 +1,7 @@ # # DEFAULTS -- Default kernel configuration file for FreeBSD/amd64 # -# $FreeBSD: src/sys/amd64/conf/DEFAULTS,v 1.14 2008/12/17 17:43:22 marcel Exp $ +# $FreeBSD: src/sys/amd64/conf/DEFAULTS,v 1.15 2009/02/10 00:08:39 marcel Exp $ machine amd64 @@ -17,4 +17,5 @@ # Default partitioning schemes options GEOM_PART_BSD +options GEOM_PART_EBR options GEOM_PART_MBR ==== //depot/projects/usb/src/sys/arm/arm/busdma_machdep.c#16 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.42 2009/02/04 01:14:06 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.44 2009/02/09 18:03:31 cognet Exp $"); /* * ARM bus dma support routines @@ -112,6 +112,7 @@ int active_bpages; int total_bounced; int total_deferred; + int map_count; bus_size_t alignment; bus_size_t boundary; bus_addr_t lowaddr; @@ -523,7 +524,7 @@ */ maxpages = MAX_BPAGES; if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0 - || (dmat->map_count > 0 && bz->total_bpages < maxpages)) { + || (bz->map_count > 0 && bz->total_bpages < maxpages)) { int pages; pages = MAX(atop(dmat->maxsize), 1); @@ -539,6 +540,7 @@ error = 0; } } + bz->map_count++; } CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d", __func__, dmat, dmat->flags, error); @@ -560,6 +562,8 @@ __func__, dmat, EBUSY); return (EBUSY); } + if (dmat->bounce_zone) + dmat->bounce_zone->map_count--; dmat->map_count--; CTR2(KTR_BUSDMA, "%s: tag %p error 0", __func__, dmat); return (0); @@ -1277,6 +1281,7 @@ bz->lowaddr = dmat->lowaddr; bz->alignment = dmat->alignment; bz->boundary = dmat->boundary; + bz->map_count = 0; snprintf(bz->zoneid, 8, "zone%d", busdma_zonecount); busdma_zonecount++; snprintf(bz->lowaddrid, 18, "%#jx", (uintmax_t)bz->lowaddr); ==== //depot/projects/usb/src/sys/cam/cam_periph.c#8 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/cam/cam_periph.c,v 1.76 2009/01/26 15:01:47 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_periph.c,v 1.77 2009/02/09 17:02:54 fjoe Exp $"); #include #include @@ -171,7 +171,7 @@ break; } xpt_unlock_buses(); - if (p_drv == NULL) { + if (*p_drv == NULL) { printf("cam_periph_alloc: invalid periph name '%s'\n", name); return (CAM_REQ_INVALID); } ==== //depot/projects/usb/src/sys/cam/cam_xpt.c#14 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.208 2009/01/23 21:08:00 trasz Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.209 2009/02/08 22:08:48 trasz Exp $"); #include #include @@ -4178,7 +4178,7 @@ struct sbuf sb; #ifdef INVARIANTS - if (path != NULL && path->bus != NULL && path->bus->sim != NULL) + if (path != NULL && path->bus != NULL) mtx_assert(path->bus->sim->mtx, MA_OWNED); #endif ==== //depot/projects/usb/src/sys/conf/NOTES#28 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1525 2009/02/08 00:16:24 wkoszek Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1528 2009/02/10 00:08:39 marcel Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -147,6 +147,7 @@ options GEOM_NOP # Test class. options GEOM_PART_APM # Apple partitioning options GEOM_PART_BSD # BSD disklabel +options GEOM_PART_EBR # Extended Boot Records options GEOM_PART_GPT # GPT partitioning options GEOM_PART_MBR # MBR partitioning options GEOM_PART_PC98 # PC-9800 disk partitioning @@ -2138,44 +2139,9 @@ # scd: Sony CD-ROM using proprietary (non-ATAPI) interface # mcd: Mitsumi CD-ROM using proprietary (non-ATAPI) interface # bktr: Brooktree bt848/848a/849a/878/879 video capture and TV Tuner board -# cy: Cyclades serial driver # joy: joystick (including IO DATA PCJOY PC Card joystick) -# rc: RISCom/8 multiport card -# rp: Comtrol Rocketport(ISA/PCI) - single card -# si: Specialix SI/XIO 4-32 port terminal multiplexor # cmx: OmniKey CardMan 4040 pccard smartcard reader -# Notes on the Comtrol Rocketport driver: -# -# The exact values used for rp0 depend on how many boards you have -# in the system. The manufacturer's sample configs are listed as: -# -# device rp # core driver support -# -# Comtrol Rocketport ISA single card -# hint.rp.0.at="isa" -# hint.rp.0.port="0x280" -# -# If instead you have two ISA cards, one installed at 0x100 and the -# second installed at 0x180, then you should add the following to -# your kernel probe hints: -# hint.rp.0.at="isa" -# hint.rp.0.port="0x100" -# hint.rp.1.at="isa" -# hint.rp.1.port="0x180" -# -# For 4 ISA cards, it might be something like this: -# hint.rp.0.at="isa" -# hint.rp.0.port="0x180" -# hint.rp.1.at="isa" -# hint.rp.1.port="0x100" -# hint.rp.2.at="isa" -# hint.rp.2.port="0x340" -# hint.rp.3.at="isa" -# hint.rp.3.port="0x240" -# -# For PCI cards, you need no hints. - # Mitsumi CD-ROM device mcd hint.mcd.0.at="isa" @@ -2352,6 +2318,7 @@ # ppi General-purpose I/O ("Geek Port") + IEEE1284 I/O # pps Pulse per second Timing Interface # lpbb Philips official parallel port I2C bit-banging interface +# pcfclock Parallel port clock driver. # # Supported interfaces: # ppc ISA-bus parallel port interfaces. ==== //depot/projects/usb/src/sys/conf/files#52 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1366 2009/02/08 03:02:06 piso Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1369 2009/02/09 22:38:55 thompsa Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -1036,7 +1036,7 @@ dependency "iwn.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwn.fw" \ no-implicit-rule \ - clean "iwn.fwo" + clean "iwnfw.fwo" iwn.fw optional iwnfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-4965-4.44.17.fw.uu" \ @@ -1234,7 +1234,7 @@ dependency "rt2561.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} rt2561.fw" \ no-implicit-rule \ - clean "rt2561.fwo" + clean "rt2561fw.fwo" rt2561.fw optional rt2561fw | ralfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ral/rt2561.fw.uu" \ @@ -1248,7 +1248,7 @@ dependency "rt2561s.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} rt2561s.fw" \ no-implicit-rule \ - clean "rt2561s.fwo" + clean "rt2561sfw.fwo" rt2561s.fw optional rt2561sfw | ralfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ral/rt2561s.fw.uu" \ @@ -1262,7 +1262,7 @@ dependency "rt2661.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} rt2661.fw" \ no-implicit-rule \ - clean "rt2661.fwo" + clean "rt2661fw.fwo" rt2661.fw optional rt2661fw | ralfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ral/rt2661.fw.uu" \ @@ -1276,7 +1276,7 @@ dependency "rt2860.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} rt2860.fw" \ no-implicit-rule \ - clean "rt2860.fwo" + clean "rt2860fw.fwo" rt2860.fw optional rt2860fw | ralfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ral/rt2860.fw.uu" \ @@ -1715,7 +1715,7 @@ dependency "wpi.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} wpi.fw" \ no-implicit-rule \ - clean "wpi.fwo" + clean "wpifw.fwo" wpi.fw optional wpifw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/wpi/iwlwifi-3945-2.14.4.fw.uu" \ ==== //depot/projects/usb/src/sys/conf/options#21 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.660 2009/02/06 10:30:46 wkoszek Exp $ +# $FreeBSD: src/sys/conf/options,v 1.661 2009/02/10 00:08:39 marcel Exp $ # # On the handling of kernel options # @@ -92,6 +92,7 @@ GEOM_NOP opt_geom.h GEOM_PART_APM opt_geom.h GEOM_PART_BSD opt_geom.h +GEOM_PART_EBR opt_geom.h GEOM_PART_GPT opt_geom.h GEOM_PART_MBR opt_geom.h GEOM_PART_PC98 opt_geom.h ==== //depot/projects/usb/src/sys/dev/cfi/cfi_core.c#3 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/cfi/cfi_core.c,v 1.5 2009/02/07 05:32:19 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cfi/cfi_core.c,v 1.6 2009/02/08 20:29:37 sam Exp $"); #include "opt_cfi.h" @@ -439,7 +439,7 @@ * at the factory with a unique 64-bit number which is immutable. * The other segment is left blank for User (OEM) programming. * The User/OEM segment is One Time Programmable (OTP). It can also - * be locked to prevent any firther writes by setting bit 0 of the + * be locked to prevent any further writes by setting bit 0 of the * Protection Lock Register (PLR). The PLR can written only once. */ ==== //depot/projects/usb/src/sys/dev/de/if_de.c#6 (text) ==== @@ -36,7 +36,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/de/if_de.c,v 1.184 2008/04/05 17:24:44 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/de/if_de.c,v 1.185 2009/02/09 17:07:29 fjoe Exp $"); #define TULIP_HDR_DATA @@ -4561,7 +4561,7 @@ sc->tulip_setup_dma_addr = 0; } if (sc->tulip_setupbuf != NULL) { - bus_dmamem_free(sc->tulip_setup_tag, sc->tulip_setupdata, + bus_dmamem_free(sc->tulip_setup_tag, sc->tulip_setupbuf, sc->tulip_setup_map); sc->tulip_setup_map = NULL; sc->tulip_setupbuf = NULL; ==== //depot/projects/usb/src/sys/dev/firewire/if_fwe.c#5 (text+ko) ==== @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/firewire/if_fwe.c,v 1.45 2008/03/25 09:38:58 ru Exp $ + * $FreeBSD: src/sys/dev/firewire/if_fwe.c,v 1.46 2009/02/09 16:58:18 fjoe Exp $ */ #ifdef HAVE_KERNEL_OPTION_HEADERS @@ -445,7 +445,7 @@ #ifdef DEVICE_POLLING { struct ifreq *ifr = (struct ifreq *) data; - struct firewire_comm *fc = fc = fwe->fd.fc; + struct firewire_comm *fc = fwe->fd.fc; if (ifr->ifr_reqcap & IFCAP_POLLING && !(ifp->if_capenable & IFCAP_POLLING)) { ==== //depot/projects/usb/src/sys/dev/firewire/if_fwip.c#7 (text+ko) ==== @@ -33,7 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/firewire/if_fwip.c,v 1.17 2008/03/25 09:38:58 ru Exp $ + * $FreeBSD: src/sys/dev/firewire/if_fwip.c,v 1.18 2009/02/09 16:58:18 fjoe Exp $ */ #ifdef HAVE_KERNEL_OPTION_HEADERS @@ -427,7 +427,7 @@ #ifdef DEVICE_POLLING { struct ifreq *ifr = (struct ifreq *) data; - struct firewire_comm *fc = fc = fwip->fd.fc; + struct firewire_comm *fc = fwip->fd.fc; if (ifr->ifr_reqcap & IFCAP_POLLING && !(ifp->if_capenable & IFCAP_POLLING)) { ==== //depot/projects/usb/src/sys/dev/firewire/sbp.c#7 (text+ko) ==== @@ -31,7 +31,7 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/firewire/sbp.c,v 1.98 2009/02/01 23:28:52 sbruno Exp $ + * $FreeBSD: src/sys/dev/firewire/sbp.c,v 1.99 2009/02/09 16:57:07 fjoe Exp $ * */ @@ -330,12 +330,11 @@ static void sbp_identify(driver_t *driver, device_t parent) { - device_t child; SBP_DEBUG(0) printf("sbp_identify\n"); END_DEBUG - child = BUS_ADD_CHILD(parent, 0, "sbp", device_get_unit(parent)); + BUS_ADD_CHILD(parent, 0, "sbp", device_get_unit(parent)); } /* ==== //depot/projects/usb/src/sys/dev/re/if_re.c#14 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.151 2009/01/20 20:22:28 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.152 2009/02/09 04:59:13 yongari Exp $"); /* * RealTek 8139C+/8169/8169S/8110S/8168/8111/8101E PCI NIC driver @@ -156,7 +156,7 @@ #include "miibus_if.h" /* Tunables. */ -static int msi_disable = 1; +static int msi_disable = 0; TUNABLE_INT("hw.re.msi_disable", &msi_disable); #define RE_CSUM_FEATURES (CSUM_IP | CSUM_TCP | CSUM_UDP) @@ -2064,6 +2064,13 @@ mii_tick(mii); if ((sc->rl_flags & RL_FLAG_LINK) == 0) re_miibus_statchg(sc->rl_dev); + /* + * Reclaim transmitted frames here. Technically it is not + * necessary to do here but it ensures periodic reclamation + * regardless of Tx completion interrupt which seems to be + * lost on PCIe based controllers under certain situations. + */ + re_txeof(sc); re_watchdog(sc); callout_reset(&sc->rl_stat_callout, hz, re_tick, sc); } ==== //depot/projects/usb/src/sys/dev/sound/pci/ds1.c#4 (text+ko) ==== @@ -33,7 +33,7 @@ #include #include -SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pci/ds1.c,v 1.52 2007/06/17 06:10:41 ariff Exp $"); +SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pci/ds1.c,v 1.53 2009/02/09 22:59:22 cognet Exp $"); /* -------------------------------------------------------------------- */ @@ -396,7 +396,7 @@ pb->Format |= b16? 0 : 0x80000000; pb->Format |= (stereo && (ch == 2 || ch == 4))? 0x00000001 : 0; pb->LoopDefault = 0; - pb->PgBase = base? base : 0; + pb->PgBase = base; pb->PgLoop = 0; pb->PgLoopEnd = len >> ss; pb->PgLoopFrac = 0; ==== //depot/projects/usb/src/sys/dev/syscons/scterm-teken.c#2 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/syscons/scterm-teken.c,v 1.1 2009/01/01 13:26:53 ed Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/syscons/scterm-teken.c,v 1.2 2009/02/09 15:55:21 ed Exp $"); #include "opt_syscons.h" @@ -49,6 +49,7 @@ #include static void scteken_revattr(unsigned char, teken_attr_t *); +static unsigned int scteken_attr(const teken_attr_t *); static sc_term_init_t scteken_init; static sc_term_term_t scteken_term; @@ -165,21 +166,25 @@ scteken_ioctl(scr_stat *scp, struct tty *tp, u_long cmd, caddr_t data, struct thread *td) { + teken_stat *ts = scp->ts; vid_info_t *vi; + unsigned int attr; switch (cmd) { case GIO_ATTR: /* get current attributes */ - *(int*)data = SC_NORM_ATTR; + *(int*)data = + scteken_attr(teken_get_curattr(&ts->ts_teken)); return (0); case CONS_GETINFO: /* get current (virtual) console info */ - /* XXX: INCORRECT! */ vi = (vid_info_t *)data; if (vi->size != sizeof(struct vid_info)) return EINVAL; - vi->mv_norm.fore = SC_NORM_ATTR & 0x0f; - vi->mv_norm.back = (SC_NORM_ATTR >> 4) & 0x0f; - vi->mv_rev.fore = SC_NORM_ATTR & 0x0f; - vi->mv_rev.back = (SC_NORM_ATTR >> 4) & 0x0f; + + attr = scteken_attr(teken_get_defattr(&ts->ts_teken)); + vi->mv_norm.fore = attr & 0x0f; + vi->mv_norm.back = (attr >> 4) & 0x0f; + vi->mv_rev.fore = vi->mv_norm.back; + vi->mv_rev.back = vi->mv_norm.fore; /* * The other fields are filled by the upper routine. XXX */ @@ -280,7 +285,7 @@ } } -static inline unsigned int +static unsigned int scteken_attr(const teken_attr_t *a) { unsigned int attr = 0; @@ -300,7 +305,7 @@ attr |= FG_BLINK; #endif /* FG_BLINK */ - return (attr << 8); + return (attr); } static void @@ -337,7 +342,7 @@ } else #endif /* TEKEN_UTF8 */ { - attr = scteken_attr(a); + attr = scteken_attr(a) << 8; ch = c; } @@ -373,7 +378,7 @@ } else #endif /* TEKEN_UTF8 */ { - attr = scteken_attr(a); + attr = scteken_attr(a) << 8; ch = c; } ==== //depot/projects/usb/src/sys/dev/syscons/teken/teken.c#4 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/syscons/teken/teken.c,v 1.6 2009/01/20 11:34:28 ed Exp $ + * $FreeBSD: src/sys/dev/syscons/teken/teken.c,v 1.7 2009/02/09 15:55:21 ed Exp $ */ #include @@ -329,6 +329,20 @@ t->t_cursor = *p; } +const teken_attr_t * +teken_get_curattr(teken_t *t) +{ + + return (&t->t_curattr); +} + +const teken_attr_t * +teken_get_defattr(teken_t *t) +{ + + return (&t->t_defattr); +} + void teken_set_defattr(teken_t *t, const teken_attr_t *a) { ==== //depot/projects/usb/src/sys/dev/syscons/teken/teken.h#4 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/syscons/teken/teken.h,v 1.4 2009/01/20 11:34:28 ed Exp $ + * $FreeBSD: src/sys/dev/syscons/teken/teken.h,v 1.5 2009/02/09 15:55:21 ed Exp $ */ #ifndef _TEKEN_H_ @@ -170,7 +170,9 @@ /* Deliver character input. */ void teken_input(teken_t *, const void *, size_t); -/* Set teken attributes. */ +/* Get/set teken attributes. */ +const teken_attr_t *teken_get_curattr(teken_t *); +const teken_attr_t *teken_get_defattr(teken_t *); void teken_set_cursor(teken_t *, const teken_pos_t *); void teken_set_defattr(teken_t *, const teken_attr_t *); void teken_set_winsize(teken_t *, const teken_pos_t *); ==== //depot/projects/usb/src/sys/dev/usb2/controller/at91dci.c#27 (text+ko) ==== @@ -1,5 +1,5 @@ #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/at91dci.c,v 1.11 2009/01/13 19:05:51 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/at91dci.c,v 1.12 2009/02/09 21:47:39 thompsa Exp $"); /*- * Copyright (c) 2007-2008 Hans Petter Selasky. All rights reserved. ==== //depot/projects/usb/src/sys/dev/usb2/controller/at91dci_atmelarm.c#21 (text+ko) ==== @@ -1,5 +1,5 @@ #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/at91dci_atmelarm.c,v 1.8 2009/02/01 00:51:25 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/at91dci_atmelarm.c,v 1.9 2009/02/09 21:47:39 thompsa Exp $"); /*- * Copyright (c) 2007-2008 Hans Petter Selasky. All rights reserved. ==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#33 (text+ko) ==== @@ -44,7 +44,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/ehci2.c,v 1.10 2009/02/07 15:51:32 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/ehci2.c,v 1.12 2009/02/09 21:47:39 thompsa Exp $"); #include #include @@ -1896,17 +1896,10 @@ EHCI_QH_SET_MPL(xfer->max_packet_size)); if (usb2_get_speed(xfer->xroot->udev) == USB_SPEED_HIGH) { - if (methods != &ehci_device_intr_methods) { - qh_endp |= (EHCI_QH_SET_EPS(EHCI_QH_SPEED_HIGH) | - EHCI_QH_DTC | EHCI_QH_SET_NRL(8)); - } else { - /* - * Nak-Reload count must be zero for interrupt - * endpoints See EHCI pdf file, section 4.9 - */ - qh_endp |= (EHCI_QH_SET_EPS(EHCI_QH_SPEED_HIGH) | - EHCI_QH_DTC); - } + qh_endp |= (EHCI_QH_SET_EPS(EHCI_QH_SPEED_HIGH) | + EHCI_QH_DTC); + if (methods != &ehci_device_intr_methods) + qh_endp |= EHCI_QH_SET_NRL(8); } else { if (usb2_get_speed(xfer->xroot->udev) == USB_SPEED_FULL) { ==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.h#15 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/controller/ehci2.h,v 1.5 2009/01/13 19:03:01 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/controller/ehci2.h,v 1.6 2009/02/09 21:47:39 thompsa Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. * All rights reserved. ==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_pci.c#25 (text+ko) ==== @@ -36,7 +36,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/ehci2_pci.c,v 1.8 2009/02/01 00:51:25 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/ehci2_pci.c,v 1.9 2009/02/09 21:47:39 thompsa Exp $"); /* * USB Enhanced Host Controller Driver, a.k.a. USB 2.0 controller. ==== //depot/projects/usb/src/sys/dev/usb2/controller/musb2_otg.c#26 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/controller/musb2_otg.c,v 1.10 2009/01/13 19:03:33 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/controller/musb2_otg.c,v 1.11 2009/02/09 21:47:39 thompsa Exp $ */ /*- * Copyright (c) 2008 Hans Petter Selasky. All rights reserved. * ==== //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#30 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/ohci2.c,v 1.9 2009/02/07 06:27:16 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/ohci2.c,v 1.10 2009/02/09 21:47:39 thompsa Exp $"); /* * USB Open Host Controller driver. ==== //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.c#29 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/uhci2.c,v 1.11 2009/02/07 06:27:16 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb2/controller/uhci2.c,v 1.12 2009/02/09 21:47:39 thompsa Exp $"); /* * USB Universal Host Controller driver. ==== //depot/projects/usb/src/sys/dev/usb2/controller/usb2_controller.c#26 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/controller/usb2_controller.c,v 1.9 2009/01/13 19:03:23 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/controller/usb2_controller.c,v 1.10 2009/02/09 21:47:39 thompsa Exp $ */ /*- * Copyright (c) 2008 Hans Petter Selasky. All rights reserved. * ==== //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci.c#23 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/controller/uss820dci.c,v 1.9 2009/01/13 19:05:51 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/controller/uss820dci.c,v 1.10 2009/02/09 21:47:39 thompsa Exp $ */ /*- * Copyright (c) 2008 Hans Petter Selasky * All rights reserved. ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_busdma.c#20 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/core/usb2_busdma.c,v 1.7 2009/01/13 19:03:12 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/core/usb2_busdma.c,v 1.8 2009/02/08 22:54:58 imp Exp $ */ /*- * Copyright (c) 2008 Hans Petter Selasky. All rights reserved. * ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_core.h#35 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/core/usb2_core.h,v 1.7 2009/01/13 19:03:12 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/core/usb2_core.h,v 1.8 2009/02/09 21:56:33 thompsa Exp $ */ /*- * Copyright (c) 2008 Hans Petter Selasky. All rights reserved. * ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#52 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/core/usb2_device.c,v 1.11 2009/01/13 19:04:58 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/core/usb2_device.c,v 1.12 2009/02/09 21:56:33 thompsa Exp $ */ /*- * Copyright (c) 2008 Hans Petter Selasky. All rights reserved. * ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#38 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/core/usb2_hub.c,v 1.13 2009/02/01 00:51:25 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/core/usb2_hub.c,v 1.14 2009/02/09 21:56:33 thompsa Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. All rights reserved. * Copyright (c) 1998 Lennart Augustsson. All rights reserved. ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_msctest.c#18 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/core/usb2_msctest.c,v 1.4 2009/01/04 00:12:01 alfred Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/core/usb2_msctest.c,v 1.5 2009/02/09 21:56:33 thompsa Exp $ */ /*- * Copyright (c) 2008 Hans Petter Selasky. All rights reserved. * ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.c#18 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/core/usb2_process.c,v 1.2 2008/12/11 23:17:48 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/core/usb2_process.c,v 1.4 2009/02/09 21:56:33 thompsa Exp $ */ /*- * Copyright (c) 2008 Hans Petter Selasky. All rights reserved. * ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.h#9 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/core/usb2_process.h,v 1.2 2008/12/11 23:13:02 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/core/usb2_process.h,v 1.3 2009/02/09 21:56:33 thompsa Exp $ */ /*- * Copyright (c) 2008 Hans Petter Selasky. All rights reserved. * ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#33 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/core/usb2_request.c,v 1.7 2009/01/13 19:03:12 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/core/usb2_request.c,v 1.8 2009/02/09 21:56:33 thompsa Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. All rights reserved. * Copyright (c) 1998 Lennart Augustsson. All rights reserved. ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.h#11 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/core/usb2_request.h,v 1.3 2009/01/04 00:12:01 alfred Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/core/usb2_request.h,v 1.4 2009/02/09 21:56:33 thompsa Exp $ */ /*- * Copyright (c) 2008 Hans Petter Selasky. All rights reserved. * ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#42 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/core/usb2_transfer.c,v 1.10 2009/01/13 19:04:58 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/core/usb2_transfer.c,v 1.11 2009/02/09 21:56:33 thompsa Exp $ */ /*- * Copyright (c) 2008 Hans Petter Selasky. All rights reserved. * ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_util.c#12 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb2/core/usb2_util.c,v 1.3 2008/12/11 23:17:48 thompsa Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/core/usb2_util.c,v 1.4 2009/02/09 21:56:33 thompsa Exp $ */ /*- >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Tue Feb 10 09:40:40 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Feb 10 09:40:46 2009 Subject: PERFORCE change 157497 for review Message-ID: <200902101740.n1AHeWnQ040806@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157497 Change 157497 by hselasky@hselasky_laptop001 on 2009/02/10 17:39:48 USB WLAN: Fix more races and panics after that Andrew Thompson re-ported the WLAN drivers from the old USB stack. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#31 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#31 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zyd2.c#33 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zydreg.h#7 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#31 (text+ko) ==== @@ -126,6 +126,7 @@ static usb2_proc_callback_t rum_amrr_task; static usb2_proc_callback_t rum_init_task; static usb2_proc_callback_t rum_stop_task; +static usb2_proc_callback_t rum_flush_task; static struct ieee80211vap *rum_vap_create(struct ieee80211com *, const char name[IFNAMSIZ], int unit, int opmode, @@ -611,9 +612,31 @@ } static void +rum_flush_task(struct usb2_proc_msg *pm) +{ + struct rum_task *task = (struct rum_task *)pm; + struct rum_softc *sc = task->sc; + struct ifnet *ifp = sc->sc_ifp; + struct ieee80211com *ic = ifp->if_l2com; + struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); + struct rum_vap *rvp = RUM_VAP(vap); + + /* callout it stopped */ + usb2_callout_stop(&rvp->amrr_ch); +} + +static void rum_vap_delete(struct ieee80211vap *vap) { struct rum_vap *rvp = RUM_VAP(vap); + struct rum_softc *sc = rvp->sc; + + RUM_LOCK(sc); + /* wait for any pending tasks to complete */ + rum_queue_command(sc, rum_flush_task, + &sc->sc_synctask[0].hdr, + &sc->sc_synctask[1].hdr); + RUM_UNLOCK(sc); usb2_callout_drain(&rvp->amrr_ch); ieee80211_amrr_cleanup(&rvp->amrr); @@ -701,9 +724,16 @@ ostate = vap->iv_state; + /* callout it stopped */ + usb2_callout_stop(&rvp->amrr_ch); + switch (sc->sc_state) { case IEEE80211_S_INIT: if (ostate == IEEE80211_S_RUN) { + /* + * BUG: this code is not executed like it + * should --hps + */ /* abort TSF synchronization */ tmp = rum_read(sc, RT2573_TXRX_CSR9); rum_write(sc, RT2573_TXRX_CSR9, tmp & ~0x00ffffff); @@ -759,8 +789,6 @@ ieee80211_state_name[nstate]); RUM_LOCK(sc); - usb2_callout_stop(&rvp->amrr_ch); - /* do it in a process context */ sc->sc_state = nstate; sc->sc_arg = arg; @@ -2183,7 +2211,9 @@ ieee80211_amrr_node_init(&rvp->amrr, &RUM_NODE(ni)->amn, ni); - usb2_callout_reset(&rvp->amrr_ch, hz, rum_amrr_timeout, rvp); + /* XXX WLAN race --hps */ + if (sc->sc_state != IEEE80211_S_INIT) + usb2_callout_reset(&rvp->amrr_ch, hz, rum_amrr_timeout, rvp); } static void @@ -2192,8 +2222,15 @@ struct rum_vap *rvp = arg; struct rum_softc *sc = rvp->sc; + /* XXX WLAN race --hps */ + if (sc->sc_state == IEEE80211_S_INIT) + return; + rum_queue_command(sc, rum_amrr_task, &rvp->amrr_task[0].hdr, &rvp->amrr_task[1].hdr); + + /* to avoid sync-issues we need to reset the callout here */ + usb2_callout_reset(&rvp->amrr_ch, hz, rum_amrr_timeout, rvp); } static void @@ -2204,7 +2241,6 @@ struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - struct rum_vap *rvp = RUM_VAP(vap); struct ieee80211_node *ni = vap->iv_bss; int ok, fail; @@ -2215,13 +2251,15 @@ (le32toh(sc->sta[5]) & 0xffff); /* TX ok w/ retry */ fail = (le32toh(sc->sta[5]) >> 16); /* TX retry-fail count */ + /* XXX WLAN race --hps */ + if (sc->sc_state == IEEE80211_S_INIT) + return; + ieee80211_amrr_tx_update(&RUM_NODE(ni)->amn, ok+fail, ok, (le32toh(sc->sta[5]) & 0xffff) + fail); (void) ieee80211_amrr_choose(ni, &RUM_NODE(ni)->amn); ifp->if_oerrors += fail; /* count TX retry-fail as Tx errors */ - - usb2_callout_reset(&rvp->amrr_ch, hz, rum_amrr_timeout, rvp); } /* ARGUSED */ @@ -2388,9 +2426,10 @@ task->sc = sc; /* - * Init and stop must be synchronous! + * Init, stop and flush must be synchronous! */ - if ((fn == rum_init_task) || (fn == rum_stop_task)) + if ((fn == rum_init_task) || (fn == rum_stop_task) || + (fn == rum_flush_task)) usb2_proc_mwait(&sc->sc_tq, t0, t1); } ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#31 (text+ko) ==== @@ -105,6 +105,7 @@ static usb2_proc_callback_t ural_amrr_task; static usb2_proc_callback_t ural_init_task; static usb2_proc_callback_t ural_stop_task; +static usb2_proc_callback_t ural_flush_task; static struct ieee80211vap *ural_vap_create(struct ieee80211com *, const char name[IFNAMSIZ], int unit, int opmode, @@ -597,9 +598,31 @@ } static void +ural_flush_task(struct usb2_proc_msg *pm) +{ + struct ural_task *task = (struct ural_task *)pm; + struct ural_softc *sc = task->sc; + struct ifnet *ifp = sc->sc_ifp; + struct ieee80211com *ic = ifp->if_l2com; + struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); + struct ural_vap *uvp = URAL_VAP(vap); + + /* callout it stopped */ + usb2_callout_stop(&uvp->amrr_ch); +} + +static void ural_vap_delete(struct ieee80211vap *vap) { struct ural_vap *uvp = URAL_VAP(vap); + struct ural_softc *sc = uvp->sc; + + RAL_LOCK(sc); + /* wait for any pending tasks to complete */ + ural_queue_command(sc, ural_flush_task, + &sc->sc_synctask[0].hdr, + &sc->sc_synctask[1].hdr); + RAL_UNLOCK(sc); usb2_callout_drain(&uvp->amrr_ch); ieee80211_amrr_cleanup(&uvp->amrr); @@ -687,9 +710,16 @@ ostate = vap->iv_state; + /* callout is stopped */ + usb2_callout_stop(&uvp->amrr_ch); + switch (sc->sc_state) { case IEEE80211_S_INIT: if (ostate == IEEE80211_S_RUN) { + /* + * BUG: this code is not executed like it + * should --hps + */ /* abort TSF synchronization */ ural_write(sc, RAL_TXRX_CSR19, 0); @@ -793,8 +823,6 @@ ieee80211_state_name[nstate]); RAL_LOCK(sc); - usb2_callout_stop(&uvp->amrr_ch); - /* do it in a process context */ sc->sc_state = nstate; sc->sc_arg = arg; @@ -2269,7 +2297,9 @@ ieee80211_amrr_node_init(&uvp->amrr, &URAL_NODE(ni)->amn, ni); - usb2_callout_reset(&uvp->amrr_ch, hz, ural_amrr_timeout, uvp); + /* XXX WLAN race --hps */ + if (sc->sc_state != IEEE80211_S_INIT) + usb2_callout_reset(&uvp->amrr_ch, hz, ural_amrr_timeout, uvp); } static void @@ -2278,8 +2308,15 @@ struct ural_vap *uvp = arg; struct ural_softc *sc = uvp->sc; + /* XXX WLAN race --hps */ + if (sc->sc_state == IEEE80211_S_INIT) + return; + ural_queue_command(sc, ural_amrr_task, &uvp->amrr_task[0].hdr, &uvp->amrr_task[1].hdr); + + /* to avoid sync-issues we need to reset the callout here */ + usb2_callout_reset(&uvp->amrr_ch, hz, ural_amrr_timeout, uvp); } static void @@ -2290,7 +2327,6 @@ struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - struct ural_vap *uvp = URAL_VAP(vap); struct ieee80211_node *ni = vap->iv_bss; int ok, fail; @@ -2301,13 +2337,15 @@ sc->sta[8]; /* TX ok w/ retry */ fail = sc->sta[9]; /* TX retry-fail count */ + /* XXX WLAN race --hps */ + if (sc->sc_state == IEEE80211_S_INIT) + return; + ieee80211_amrr_tx_update(&URAL_NODE(ni)->amn, ok+fail, ok, sc->sta[8] + fail); (void) ieee80211_amrr_choose(ni, &URAL_NODE(ni)->amn); ifp->if_oerrors += fail; /* count TX retry-fail as Tx errors */ - - usb2_callout_reset(&uvp->amrr_ch, hz, ural_amrr_timeout, uvp); } static void @@ -2335,9 +2373,9 @@ task->sc = sc; /* - * Init and stop must be synchronous! + * Init, stop and flush must be synchronous! */ - if ((fn == ural_init_task) || (fn == ural_stop_task)) + if ((fn == ural_init_task) || (fn == ural_stop_task) || + (fn == ural_stop_task)) usb2_proc_mwait(&sc->sc_tq, t0, t1); } - ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_zyd2.c#33 (text+ko) ==== @@ -91,6 +91,7 @@ static usb2_proc_callback_t zyd_multitask; static usb2_proc_callback_t zyd_init_task; static usb2_proc_callback_t zyd_stop_task; +static usb2_proc_callback_t zyd_flush_task; static struct ieee80211vap *zyd_vap_create(struct ieee80211com *, const char name[IFNAMSIZ], int unit, int opmode, @@ -469,6 +470,7 @@ const uint8_t bssid[IEEE80211_ADDR_LEN], const uint8_t mac[IEEE80211_ADDR_LEN]) { + struct zyd_softc *sc = ic->ic_ifp->if_softc; struct zyd_vap *zvp; struct ieee80211vap *vap; @@ -487,6 +489,7 @@ zvp->newstate = vap->iv_newstate; vap->iv_newstate = zyd_newstate; + zvp->sc = sc; ieee80211_amrr_init(&zvp->amrr, vap, IEEE80211_AMRR_MIN_SUCCESS_THRESHOLD, IEEE80211_AMRR_MAX_SUCCESS_THRESHOLD, @@ -500,10 +503,24 @@ } static void +zyd_flush_task(struct usb2_proc_msg *_pm) +{ + /* nothing to do */ +} + +static void zyd_vap_delete(struct ieee80211vap *vap) { struct zyd_vap *zvp = ZYD_VAP(vap); + struct zyd_softc *sc = zvp->sc; + ZYD_LOCK(sc); + /* wait for any pending tasks to complete */ + zyd_queue_command(sc, zyd_flush_task, + &sc->sc_synctask[0].hdr, + &sc->sc_synctask[1].hdr); + ZYD_UNLOCK(sc); + ieee80211_amrr_cleanup(&zvp->amrr); ieee80211_vap_detach(vap); free(zvp, M_80211_VAP); @@ -3092,7 +3109,8 @@ /* * Init and stop must be synchronous! */ - if ((fn == zyd_init_task) || (fn == zyd_stop_task)) + if ((fn == zyd_init_task) || (fn == zyd_stop_task) || + (fn == zyd_flush_task)) usb2_proc_mwait(&sc->sc_tq, t0, t1); } ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_zydreg.h#7 (text+ko) ==== @@ -1247,6 +1247,7 @@ struct ieee80211vap vap; int (*newstate)(struct ieee80211vap *, enum ieee80211_state, int); + struct zyd_softc *sc; struct ieee80211_amrr amrr; }; #define ZYD_VAP(vap) ((struct zyd_vap *)(vap)) From hselasky at FreeBSD.org Tue Feb 10 10:26:34 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Feb 10 10:26:42 2009 Subject: PERFORCE change 157500 for review Message-ID: <200902101826.n1AIQUGU045243@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157500 Change 157500 by hselasky@hselasky_laptop001 on 2009/02/10 18:25:47 USB WLAN: Add more debug prints. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#32 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#32 (text+ko) ==== @@ -1441,8 +1441,8 @@ error = rum_do_request(sc, &req, buf); if (error != 0) { device_printf(sc->sc_dev, - "could not multi read MAC register: %s\n", - usb2_errstr(error)); + "could not multi read MAC register(0x%04x): %s\n", + reg, usb2_errstr(error)); } } @@ -1469,8 +1469,8 @@ error = rum_do_request(sc, &req, buf); if (error != 0) { device_printf(sc->sc_dev, - "could not multi write MAC register: %s\n", - usb2_errstr(error)); + "could not multi write MAC register(0x%04x): %s\n", + reg, usb2_errstr(error)); } } From hselasky at FreeBSD.org Tue Feb 10 10:27:36 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Feb 10 10:27:42 2009 Subject: PERFORCE change 157501 for review Message-ID: <200902101827.n1AIRYmo045304@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157501 Change 157501 by hselasky@hselasky_laptop001 on 2009/02/10 18:26:52 USB CORE: Make sure that USB process functions simply return if the process has been drained. Remove two unused functions. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.c#19 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.h#10 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.c#19 (text+ko) ==== @@ -84,9 +84,9 @@ while (1) { - if (up->up_gone) { + if (up->up_gone) break; - } + /* * NOTE to reimplementors: dequeueing a command from the * "used" queue and executing it must be atomic, with regard @@ -213,10 +213,10 @@ void usb2_proc_free(struct usb2_process *up) { - if (!(up->up_mtx)) { - /* not initialised */ + /* check if not initialised */ + if (up->up_mtx == NULL) return; - } + usb2_proc_drain(up); usb2_cv_destroy(&up->up_cv); @@ -246,6 +246,10 @@ uint32_t d; uint8_t t; + /* check if gone, return dummy value */ + if (up->up_gone) + return (_pm0); + mtx_assert(up->up_mtx, MA_OWNED); t = 0; @@ -319,9 +323,11 @@ uint8_t usb2_proc_is_gone(struct usb2_process *up) { + if (up->up_gone) + return (1); + mtx_assert(up->up_mtx, MA_OWNED); - - return (up->up_gone ? 1 : 0); + return (0); } /*------------------------------------------------------------------------* @@ -337,6 +343,10 @@ struct usb2_proc_msg *pm0 = _pm0; struct usb2_proc_msg *pm1 = _pm1; + /* check if gone */ + if (up->up_gone) + return; + mtx_assert(up->up_mtx, MA_OWNED); if (up->up_curtd == curthread) { @@ -372,13 +382,13 @@ void usb2_proc_drain(struct usb2_process *up) { - if (!(up->up_mtx)) { - /* not initialised */ + /* check if not initialised */ + if (up->up_mtx == NULL) return; - } - if (up->up_mtx != &Giant) { + /* handle special case with Giant */ + if (up->up_mtx != &Giant) mtx_assert(up->up_mtx, MA_NOTOWNED); - } + mtx_lock(up->up_mtx); /* Set the gone flag */ @@ -398,7 +408,8 @@ if (cold) { USB_THREAD_SUSPEND(up->up_ptr); - printf("WARNING: A USB process has been left suspended!\n"); + printf("WARNING: A USB process has " + "been left suspended!\n"); break; } usb2_cv_wait(&up->up_cv, up->up_mtx); @@ -413,64 +424,3 @@ } mtx_unlock(up->up_mtx); } - -/*------------------------------------------------------------------------* - * usb2_proc_cwait - * - * This function will suspend the current process until - * "usb2_proc_signal()" or "usb2_proc_drain()" is called. The - * "timeout" parameter defines the maximum wait time in system - * ticks. If "timeout" is zero that means no timeout. - * - * NOTE: This function can only be called from within an USB process. - * - * Return values: - * USB_PROC_WAIT_TIMEOUT: Timeout - * USB_PROC_WAIT_NORMAL: Success - * Else: USB process is tearing down - *------------------------------------------------------------------------*/ -uint8_t -usb2_proc_cwait(struct usb2_process *up, int timeout) -{ - int error; - - mtx_assert(up->up_mtx, MA_OWNED); - - if (up->up_gone) { - return (USB_PROC_WAIT_DRAIN); - } - up->up_csleep = 1; - - if (timeout == 0) { - usb2_cv_wait(&up->up_cv, up->up_mtx); - error = 0; - } else { - error = usb2_cv_timedwait(&up->up_cv, up->up_mtx, timeout); - } - - up->up_csleep = 0; - - if (up->up_gone) { - return (USB_PROC_WAIT_DRAIN); - } - if (error == EWOULDBLOCK) { - return (USB_PROC_WAIT_TIMEOUT); - } - return (0); -} - -/*------------------------------------------------------------------------* - * usb2_proc_csignal - * - * This function will wakeup the given USB process. - *------------------------------------------------------------------------*/ -void -usb2_proc_csignal(struct usb2_process *up) -{ - mtx_assert(up->up_mtx, MA_OWNED); - - if (up->up_csleep) { - up->up_csleep = 0; - usb2_cv_signal(&up->up_cv); - } -} ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.h#10 (text+ko) ==== @@ -77,11 +77,9 @@ /* prototypes */ -uint8_t usb2_proc_cwait(struct usb2_process *up, int timeout); uint8_t usb2_proc_is_gone(struct usb2_process *up); int usb2_proc_create(struct usb2_process *up, struct mtx *p_mtx, const char *pmesg, uint8_t prio); -void usb2_proc_csignal(struct usb2_process *up); void usb2_proc_drain(struct usb2_process *up); void usb2_proc_mwait(struct usb2_process *up, void *pm0, void *pm1); void usb2_proc_free(struct usb2_process *up); From hselasky at FreeBSD.org Tue Feb 10 12:00:10 2009 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Feb 10 12:00:16 2009 Subject: PERFORCE change 157504 for review Message-ID: <200902102000.n1AK08AF054148@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157504 Change 157504 by hselasky@hselasky_laptop001 on 2009/02/10 19:59:22 USB WLAN fixes after Andrew Thompsons diff reduction against the old USB stack. 1) Fix possible NULL pointer access at detach. 2) BAN use of DELAY(), replaced with usb2_pause_mtx() 3) BAN use of delay less loops polling USB hardware. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#33 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#32 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zyd2.c#34 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#33 (text+ko) ==== @@ -548,7 +548,7 @@ { struct rum_softc *sc = device_get_softc(self); struct ifnet *ifp = sc->sc_ifp; - struct ieee80211com *ic = ifp->if_l2com; + struct ieee80211com *ic; /* wait for any post attach or other command to complete */ usb2_proc_drain(&sc->sc_tq); @@ -563,6 +563,7 @@ RUM_UNLOCK(sc); if (ifp) { + ic = ifp->if_l2com; bpfdetach(ifp); ieee80211_ifdetach(ic); if_free(ifp); @@ -1480,9 +1481,10 @@ uint32_t tmp; int ntries; - for (ntries = 0; ntries < 5; ntries++) { + for (ntries = 0; ntries != 5; ntries++) { if (!(rum_read(sc, RT2573_PHY_CSR3) & RT2573_BBP_BUSY)) break; + usb2_pause_mtx(&sc->sc_mtx, hz / 1000); } if (ntries == 5) { device_printf(sc->sc_dev, "could not write to BBP\n"); @@ -1499,9 +1501,10 @@ uint32_t val; int ntries; - for (ntries = 0; ntries < 5; ntries++) { + for (ntries = 0; ntries != 5; ntries++) { if (!(rum_read(sc, RT2573_PHY_CSR3) & RT2573_BBP_BUSY)) break; + usb2_pause_mtx(&sc->sc_mtx, hz / 1000); } if (ntries == 5) { device_printf(sc->sc_dev, "could not read BBP\n"); @@ -1511,11 +1514,11 @@ val = RT2573_BBP_BUSY | RT2573_BBP_READ | reg << 8; rum_write(sc, RT2573_PHY_CSR3, val); - for (ntries = 0; ntries < 100; ntries++) { + for (ntries = 0; ntries != 10; ntries++) { val = rum_read(sc, RT2573_PHY_CSR3); if (!(val & RT2573_BBP_BUSY)) return val & 0xff; - DELAY(1); + usb2_pause_mtx(&sc->sc_mtx, hz / 1000); } device_printf(sc->sc_dev, "could not read BBP\n"); @@ -1528,9 +1531,10 @@ uint32_t tmp; int ntries; - for (ntries = 0; ntries < 5; ntries++) { + for (ntries = 0; ntries != 5; ntries++) { if (!(rum_read(sc, RT2573_PHY_CSR4) & RT2573_RF_BUSY)) break; + usb2_pause_mtx(&sc->sc_mtx, hz / 1000); } if (ntries == 5) { device_printf(sc->sc_dev, "could not write to RF\n"); @@ -1726,7 +1730,7 @@ rum_rf_write(sc, RT2573_RF3, rfprog[i].r3 | power << 7); rum_rf_write(sc, RT2573_RF4, rfprog[i].r4 | sc->rffreq << 10); - DELAY(10); + usb2_pause_mtx(&sc->sc_mtx, hz / 1000); /* enable smart mode for MIMO-capable RFs */ bbp3 = rum_bbp_read(sc, 3); @@ -1938,11 +1942,11 @@ int i, ntries; /* wait for BBP to be ready */ - for (ntries = 0; ntries < 100; ntries++) { + for (ntries = 0; ntries != 100; ntries++) { const uint8_t val = rum_bbp_read(sc, 0); if (val != 0 && val != 0xff) break; - DELAY(1000); + usb2_pause_mtx(&sc->sc_mtx, hz / 1000); } if (ntries == 100) { device_printf(sc->sc_dev, "timeout waiting for BBP\n"); @@ -1989,11 +1993,11 @@ rum_write(sc, RT2573_MAC_CSR1, 0); /* wait for BBP/RF to wakeup */ - for (ntries = 0; ntries < 1000; ntries++) { + for (ntries = 0; ntries != 1000; ntries++) { if (rum_read(sc, RT2573_MAC_CSR12) & 8) break; rum_write(sc, RT2573_MAC_CSR12, 4); /* force wakeup */ - DELAY(1000); + usb2_pause_mtx(&sc->sc_mtx, hz / 1000); } if (ntries == 1000) { device_printf(sc->sc_dev, @@ -2212,7 +2216,7 @@ ieee80211_amrr_node_init(&rvp->amrr, &RUM_NODE(ni)->amn, ni); /* XXX WLAN race --hps */ - if (sc->sc_state != IEEE80211_S_INIT) + if (sc->sc_state == IEEE80211_S_RUN) usb2_callout_reset(&rvp->amrr_ch, hz, rum_amrr_timeout, rvp); } @@ -2223,7 +2227,7 @@ struct rum_softc *sc = rvp->sc; /* XXX WLAN race --hps */ - if (sc->sc_state == IEEE80211_S_INIT) + if (sc->sc_state != IEEE80211_S_RUN) return; rum_queue_command(sc, rum_amrr_task, @@ -2252,7 +2256,7 @@ fail = (le32toh(sc->sta[5]) >> 16); /* TX retry-fail count */ /* XXX WLAN race --hps */ - if (sc->sc_state == IEEE80211_S_INIT) + if (sc->sc_state != IEEE80211_S_RUN) return; ieee80211_amrr_tx_update(&RUM_NODE(ni)->amn, ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#32 (text+ko) ==== @@ -534,7 +534,7 @@ { struct ural_softc *sc = device_get_softc(self); struct ifnet *ifp = sc->sc_ifp; - struct ieee80211com *ic = ifp->if_l2com; + struct ieee80211com *ic; /* wait for any post attach or other command to complete */ usb2_proc_drain(&sc->sc_tq); @@ -549,6 +549,7 @@ RAL_UNLOCK(sc); if (ifp) { + ic = ifp->if_l2com; bpfdetach(ifp); ieee80211_ifdetach(ic); if_free(ifp); @@ -1594,9 +1595,10 @@ uint16_t tmp; int ntries; - for (ntries = 0; ntries < 5; ntries++) { + for (ntries = 0; ntries != 5; ntries++) { if (!(ural_read(sc, RAL_PHY_CSR8) & RAL_BBP_BUSY)) break; + usb2_pause_mtx(&sc->sc_mtx, hz / 1000); } if (ntries == 5) { device_printf(sc->sc_dev, "could not write to BBP\n"); @@ -1616,9 +1618,10 @@ val = RAL_BBP_WRITE | reg << 8; ural_write(sc, RAL_PHY_CSR7, val); - for (ntries = 0; ntries < 5; ntries++) { + for (ntries = 0; ntries != 5; ntries++) { if (!(ural_read(sc, RAL_PHY_CSR8) & RAL_BBP_BUSY)) break; + usb2_pause_mtx(&sc->sc_mtx, hz / 1000); } if (ntries == 5) { device_printf(sc->sc_dev, "could not read BBP\n"); @@ -1634,9 +1637,10 @@ uint32_t tmp; int ntries; - for (ntries = 0; ntries < 5; ntries++) { + for (ntries = 0; ntries != 5; ntries++) { if (!(ural_read(sc, RAL_PHY_CSR10) & RAL_RF_LOBUSY)) break; + usb2_pause_mtx(&sc->sc_mtx, hz / 1000); } if (ntries == 5) { device_printf(sc->sc_dev, "could not write to RF\n"); @@ -1812,7 +1816,8 @@ /* clear CRC errors */ ural_read(sc, RAL_STA_CSR0); - DELAY(10000); + usb2_pause_mtx(&sc->sc_mtx, hz / 100); + ural_disable_rf_tune(sc); } @@ -2034,10 +2039,10 @@ int i, ntries; /* wait for BBP to be ready */ - for (ntries = 0; ntries < 100; ntries++) { + for (ntries = 0; ntries != 100; ntries++) { if (ural_bbp_read(sc, RAL_BBP_VERSION) != 0) break; - DELAY(1000); + usb2_pause_mtx(&sc->sc_mtx, hz / 1000); } if (ntries == 100) { device_printf(sc->sc_dev, "timeout waiting for BBP\n"); @@ -2133,12 +2138,12 @@ ural_write(sc, ural_def_mac[i].reg, ural_def_mac[i].val); /* wait for BBP and RF to wake up (this can take a long time!) */ - for (ntries = 0; ntries < 100; ntries++) { + for (ntries = 0; ntries != 100; ntries++) { tmp = ural_read(sc, RAL_MAC_CSR17); if ((tmp & (RAL_BBP_AWAKE | RAL_RF_AWAKE)) == (RAL_BBP_AWAKE | RAL_RF_AWAKE)) break; - DELAY(1000); + usb2_pause_mtx(&sc->sc_mtx, hz / 1000); } if (ntries == 100) { device_printf(sc->sc_dev, @@ -2298,7 +2303,7 @@ ieee80211_amrr_node_init(&uvp->amrr, &URAL_NODE(ni)->amn, ni); /* XXX WLAN race --hps */ - if (sc->sc_state != IEEE80211_S_INIT) + if (sc->sc_state == IEEE80211_S_RUN) usb2_callout_reset(&uvp->amrr_ch, hz, ural_amrr_timeout, uvp); } @@ -2309,7 +2314,7 @@ struct ural_softc *sc = uvp->sc; /* XXX WLAN race --hps */ - if (sc->sc_state == IEEE80211_S_INIT) + if (sc->sc_state != IEEE80211_S_RUN) return; ural_queue_command(sc, ural_amrr_task, @@ -2338,7 +2343,7 @@ fail = sc->sta[9]; /* TX retry-fail count */ /* XXX WLAN race --hps */ - if (sc->sc_state == IEEE80211_S_INIT) + if (sc->sc_state != IEEE80211_S_RUN) return; ieee80211_amrr_tx_update(&URAL_NODE(ni)->amn, ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_zyd2.c#34 (text+ko) ==== @@ -441,7 +441,7 @@ { struct zyd_softc *sc = device_get_softc(dev); struct ifnet *ifp = sc->sc_ifp; - struct ieee80211com *ic = ifp->if_l2com; + struct ieee80211com *ic; /* wait for any post attach or other command to complete */ usb2_proc_drain(&sc->sc_tq); @@ -454,6 +454,7 @@ zyd_unsetup_tx_list(sc); if (ifp) { + ic = ifp->if_l2com; bpfdetach(ifp); ieee80211_ifdetach(ic); if_free(ifp); From trasz at FreeBSD.org Wed Feb 11 01:28:55 2009 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Wed Feb 11 01:29:03 2009 Subject: PERFORCE change 157529 for review Message-ID: <200902110928.n1B9Sp2M089957@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=157529 Change 157529 by trasz@trasz_victim7 on 2009/02/11 09:27:59 IFC. Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/UPDATING#19 integrate .. //depot/projects/soc2008/trasz_nfs4acl/contrib/csup/updater.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/etc/rc.d/named#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/net/getaddrinfo.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/net/gethostbydns.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/stdlib/atol.3#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/string/memchr.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/sys/send.2#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc_r/uthread/uthread_init.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libdisk/open_disk.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/msun/src/math.h#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/release/Makefile#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/release/scripts/doFS.sh#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/geom/class/part/geom_part.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/ifconfig/ifieee80211.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/ifconfig/regdomain.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/ifconfig/regdomain.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/ipfw/ipfw.8#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/ipfw/nat.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/mount_nfs/mount_nfs.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/share/man/man4/re.4#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/share/man/man4/rum.4#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/share/man/man4/smb.4#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/share/man/man9/lock.9#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/amd64/busdma_machdep.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/conf/DEFAULTS#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/conf/NOTES#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/include/legacyvar.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/pci/pci_bus.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/arm/busdma_machdep.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/boot/sparc64/loader/main.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/cam/cam_periph.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/cam/cam_xpt.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/cam/scsi/scsi_cd.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/cam/scsi/scsi_da.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/conf/NOTES#25 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/conf/files#29 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/conf/options#19 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/conf/options.amd64#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/conf/options.i386#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/conf/options.ia64#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/conf/options.mips#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/conf/options.pc98#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/crypto/via/padlock.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/acpi_support/acpi_panasonic.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/acpica/acpi_pcib_acpi.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/agp/agp.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/arcmsr/arcmsr.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ath/ath_hal/ah_regdomain.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ath/ath_hal/ar5212/ar5212.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ath/ath_hal/ar5212/ar5212_ani.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ath/ath_hal/ar5212/ar5212_rfgain.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ath/if_ath.c#12 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ath/if_athioctl.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/atkbdc/atkbdc_isa.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/bge/if_bge.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cardbus/cardbus_device.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cfi/cfi_core.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cfi/cfi_dev.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cfi/cfi_reg.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cfi/cfi_var.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/de/if_de.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/exca/exca.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/firewire/if_fwe.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/firewire/if_fwip.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/firewire/sbp.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/fxp/if_fxp.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/hifn/hifn7751.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/iicbus/if_ic.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/iicbus/iicbb.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/iicbus/iicbus.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/iicbus/iicsmb.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/lmc/if_lmc.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/lmc/if_lmc.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/my/if_my.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/nve/if_nve.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/pccard/card_if.m#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/pccard/pccard.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/pccard/pccard_cis.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/pccard/pccardvarp.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/pcn/if_pcn.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ppc/ppc.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ppc/ppc_pci.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ppc/ppcvar.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/re/if_re.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/safe/safe.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/scc/scc_if.m#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/sdhci/sdhci.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/si/si.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/sis/if_sis.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/sound/macio/aoa.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/sound/macio/aoa.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/sound/macio/davbus.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/sound/macio/i2s.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/sound/macio/snapper.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/sound/macio/tumbler.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/sound/pci/ds1.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/syscons/scterm-teken.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/syscons/teken/teken.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/syscons/teken/teken.h#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/tl/if_tl.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/tx/if_tx.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/uart/uart_bus_pci.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb/if_rum.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb/if_urtw.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb/usbdevs#20 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/at91dci.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/at91dci_atmelarm.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/atmegadci.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/ehci2.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/ehci2.h#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/ehci2_ixp4xx.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/ehci2_mbus.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/ehci2_pci.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/musb2_otg.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/ohci2.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/uhci2.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/usb2_controller.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/controller/uss820dci.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_busdma.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_config_td.c#3 delete .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_config_td.h#3 delete .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_core.h#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_device.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_hub.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_msctest.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_process.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_process.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_request.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_request.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_transfer.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_util.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/core/usb2_util.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_aue2.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_auereg.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_axe2.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_axereg.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_cdce2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_cdcereg.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_cue2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_cuereg.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_kue2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_kuereg.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_rue2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_ruereg.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_udav2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/if_udavreg.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/usb2_ethernet.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/ethernet/usb2_ethernet.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/include/usb2_cdc.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/include/usb2_devid.h#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/include/usb2_devtable.h#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/misc/ufm2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/u3g2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uark2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/ubsa2.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/ubser2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uchcom2.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/ucycom2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/ufoma2.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uftdi2.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/ugensa2.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uipaq2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/ulpt2.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/umct2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/umodem2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/umoscom2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uplcom2.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/usb2_serial.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/usb2_serial.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uslcom2.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uvisor2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/serial/uvscom2.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/sound/uaudio2.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/storage/umass2.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/template/usb2_template_cdce.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/wlan/if_rum2.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/wlan/if_rumreg.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/wlan/if_rumvar.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/wlan/if_ural2.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/wlan/if_uralreg.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/wlan/if_uralvar.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/wlan/if_zyd2.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/wlan/if_zydfw.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/usb2/wlan/if_zydreg.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/xen/netfront/netfront.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/fifofs/fifo_vnops.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/tmpfs/tmpfs.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/tmpfs/tmpfs_subr.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/tmpfs/tmpfs_vnops.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/udf/ecma167-udf.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/udf/udf.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/udf/udf_vfsops.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/udf/udf_vnops.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/geom/part/g_part.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/geom/part/g_part_apm.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/geom/part/g_part_bsd.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/geom/part/g_part_ebr.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/sys/geom/part/g_part_gpt.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/geom/part/g_part_mbr.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/geom/part/g_part_pc98.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/geom/part/g_part_vtoc8.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/conf/DEFAULTS#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/conf/NOTES#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/i386/busdma_machdep.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/i386/vm_machdep.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/xen/pmap.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/ia64/conf/NOTES#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/ia64/ia64/busdma_machdep.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/ia64/ia64/mp_machdep.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/kern_jail.c#14 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/kern_linker.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/kern_lock.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/kern_sysctl.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/link_elf.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/link_elf_obj.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_bus.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_clist.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/tty.c#16 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/uipc_debug.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/uipc_socket.c#12 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/vfs_bio.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/vfs_init.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/vfs_mount.c#14 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/vfs_subr.c#24 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/mips/include/pmap.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/mips/mips/busdma_machdep.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/mips/mips/in_cksum.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/modules/geom/geom_part/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/modules/geom/geom_part/geom_part_ebr/Makefile#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/sys/modules/libalias/libalias/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/modules/usb2/Makefile#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/modules/usb2/core/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/modules/usb2/serial_slcom/Makefile#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/if.c#14 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/rtsock.c#13 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_adhoc.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_crypto.h#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_ddb.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_output.c#10 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_regdomain.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_tdma.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/in.c#13 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/in_pcb.c#15 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/ip_fw_nat.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/ip_ipsec.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/ip_output.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/libalias/alias.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/libalias/alias_db.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/libalias/alias_local.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/libalias/alias_sctp.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/libalias/alias_sctp.h#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/raw_ip.c#13 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_crc32.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_crc32.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctp_uio.h#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/sctputil.c#12 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/tcp_subr.c#14 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/tcp_usrreq.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/udp_usrreq.c#17 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/in6.c#14 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/in6_pcb.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/in6_src.c#10 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/ip6_forward.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/ip6_ipsec.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/ip6_output.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/raw_ip6.c#15 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/udp6_usrreq.c#14 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netipsec/ipsec.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netipsec/ipsec.h#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netipsec/ipsec6.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/nfsserver/nfs_syscalls.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/opencrypto/cryptosoft.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/pc98/conf/NOTES#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/pci/if_rl.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/pci/if_rlreg.h#11 integra