From owner-p4-projects@FreeBSD.ORG Sun May 6 01:28:35 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DB3BD16A406; Sun, 6 May 2007 01:28:34 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B7C0616A402 for ; Sun, 6 May 2007 01:28:34 +0000 (UTC) (envelope-from sephe@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id A615A13C487 for ; Sun, 6 May 2007 01:28:34 +0000 (UTC) (envelope-from sephe@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l461SYTB053637 for ; Sun, 6 May 2007 01:28:34 GMT (envelope-from sephe@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l461SRua053634 for perforce@freebsd.org; Sun, 6 May 2007 01:28:27 GMT (envelope-from sephe@FreeBSD.org) Date: Sun, 6 May 2007 01:28:27 GMT Message-Id: <200705060128.l461SRua053634@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sephe@FreeBSD.org using -f From: Sepherosa Ziehau To: Perforce Change Reviews Cc: Subject: PERFORCE change 119311 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 01:28:35 -0000 http://perforce.freebsd.org/chv.cgi?CH=119311 Change 119311 by sephe@sephe_zealot:sam_wifi on 2007/05/06 01:28:14 IFC @ ~119310 Affected files ... .. //depot/projects/wifi/MAINTAINERS#15 integrate .. //depot/projects/wifi/ObsoleteFiles.inc#14 integrate .. //depot/projects/wifi/UPDATING#28 integrate .. //depot/projects/wifi/bin/df/df.c#6 integrate .. //depot/projects/wifi/bin/sh/var.c#4 integrate .. //depot/projects/wifi/compat/opensolaris/misc/fsshare.c#2 integrate .. //depot/projects/wifi/contrib/gdb/gdb/ppcfbsd-nat.c#2 integrate .. //depot/projects/wifi/contrib/opensolaris/cmd/zdb/zdb.c#2 integrate .. //depot/projects/wifi/contrib/opensolaris/lib/libzfs/common/libzfs_changelist.c#2 integrate .. //depot/projects/wifi/contrib/opensolaris/lib/libzfs/common/libzfs_config.c#2 integrate .. //depot/projects/wifi/contrib/opensolaris/lib/libzfs/common/libzfs_import.c#2 integrate .. //depot/projects/wifi/contrib/sendmail/libmilter/engine.c#5 integrate .. //depot/projects/wifi/contrib/sendmail/libmilter/listener.c#5 integrate .. //depot/projects/wifi/contrib/sendmail/libmilter/main.c#3 integrate .. //depot/projects/wifi/contrib/top/commands.c#5 integrate .. //depot/projects/wifi/contrib/top/machine.h#4 integrate .. //depot/projects/wifi/contrib/top/top.X#6 integrate .. //depot/projects/wifi/contrib/top/top.c#6 integrate .. //depot/projects/wifi/contrib/traceroute/traceroute.c#6 integrate .. //depot/projects/wifi/etc/rc.d/netoptions#3 integrate .. //depot/projects/wifi/etc/rc.d/routing#3 integrate .. //depot/projects/wifi/etc/rc.d/zfs#3 integrate .. //depot/projects/wifi/etc/sendmail/freebsd.mc#5 integrate .. //depot/projects/wifi/etc/sendmail/freebsd.submit.mc#4 integrate .. //depot/projects/wifi/gnu/usr.bin/gdb/arch/powerpc/Makefile#2 integrate .. //depot/projects/wifi/gnu/usr.bin/gdb/arch/powerpc/init.c#2 integrate .. //depot/projects/wifi/include/stdlib.h#6 integrate .. //depot/projects/wifi/lib/libarchive/Makefile#24 integrate .. //depot/projects/wifi/lib/libarchive/archive.h.in#16 integrate .. //depot/projects/wifi/lib/libbsm/Makefile#3 integrate .. //depot/projects/wifi/lib/libc/Versions.def#2 integrate .. //depot/projects/wifi/lib/libc/amd64/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/arm/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/compat-43/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/db/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/gdtoa/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/gen/Symbol.map#5 integrate .. //depot/projects/wifi/lib/libc/gmon/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/i386/Symbol.map#3 integrate .. //depot/projects/wifi/lib/libc/ia64/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/inet/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/locale/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/locale/isdigit.3#5 integrate .. //depot/projects/wifi/lib/libc/nameser/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/net/Symbol.map#3 integrate .. //depot/projects/wifi/lib/libc/nls/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/posix1e/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/powerpc/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/quad/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/regex/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/resolv/Symbol.map#3 integrate .. //depot/projects/wifi/lib/libc/rpc/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/softfloat/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/sparc64/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/stdio/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/stdlib/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/stdlib/getenv.3#5 integrate .. //depot/projects/wifi/lib/libc/stdlib/getenv.c#3 integrate .. //depot/projects/wifi/lib/libc/stdlib/putenv.c#3 integrate .. //depot/projects/wifi/lib/libc/stdlib/setenv.c#3 integrate .. //depot/projects/wifi/lib/libc/stdtime/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/string/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/sys/Makefile.inc#8 integrate .. //depot/projects/wifi/lib/libc/sys/Symbol.map#3 integrate .. //depot/projects/wifi/lib/libc/sys/send.2#9 integrate .. //depot/projects/wifi/lib/libc/uuid/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/xdr/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libc/yp/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libelf/Version.map#2 integrate .. //depot/projects/wifi/lib/libexpat/expat_config.h#2 integrate .. //depot/projects/wifi/lib/libfetch/fetch.3#4 integrate .. //depot/projects/wifi/lib/libfetch/ftp.c#5 integrate .. //depot/projects/wifi/lib/libgeom/geom_getxml.c#2 integrate .. //depot/projects/wifi/lib/libpthread/pthread.map#6 integrate .. //depot/projects/wifi/lib/libpthread/thread/thr_info.c#4 integrate .. //depot/projects/wifi/lib/libpthread/thread/thr_private.h#8 integrate .. //depot/projects/wifi/lib/librt/Makefile#2 integrate .. //depot/projects/wifi/lib/librt/Version.map#1 branch .. //depot/projects/wifi/lib/libthr/pthread.map#8 integrate .. //depot/projects/wifi/lib/libthread_db/Symbol.map#2 integrate .. //depot/projects/wifi/lib/libthread_db/arch/powerpc/libpthread_md.c#2 integrate .. //depot/projects/wifi/lib/libutil/login_class.c#2 integrate .. //depot/projects/wifi/lib/msun/Symbol.map#3 integrate .. //depot/projects/wifi/lib/msun/amd64/Symbol.map#2 integrate .. //depot/projects/wifi/lib/msun/arm/Symbol.map#2 integrate .. //depot/projects/wifi/lib/msun/bsdsrc/b_tgamma.c#4 integrate .. //depot/projects/wifi/lib/msun/i387/Symbol.map#2 integrate .. //depot/projects/wifi/lib/msun/ia64/Symbol.map#2 integrate .. //depot/projects/wifi/lib/msun/powerpc/Symbol.map#2 integrate .. //depot/projects/wifi/lib/msun/sparc64/Symbol.map#2 integrate .. //depot/projects/wifi/lib/msun/src/e_lgamma_r.c#3 integrate .. //depot/projects/wifi/lib/msun/src/e_lgammaf_r.c#3 integrate .. //depot/projects/wifi/libexec/pppoed/pppoed.c#3 integrate .. //depot/projects/wifi/libexec/rtld-elf/Makefile#7 integrate .. //depot/projects/wifi/libexec/rtld-elf/Symbol.map#3 integrate .. //depot/projects/wifi/libexec/rtld-elf/Versions.def#3 delete .. //depot/projects/wifi/libexec/rtld-elf/i386/Symbol.map#3 integrate .. //depot/projects/wifi/release/doc/en_US.ISO8859-1/relnotes/article.sgml#7 integrate .. //depot/projects/wifi/sbin/fdisk/fdisk.8#3 integrate .. //depot/projects/wifi/sbin/fdisk/fdisk.c#8 integrate .. //depot/projects/wifi/sbin/fdisk_pc98/fdisk.8#4 integrate .. //depot/projects/wifi/sbin/fdisk_pc98/fdisk.c#7 integrate .. //depot/projects/wifi/sbin/geom/class/eli/geom_eli.c#9 integrate .. //depot/projects/wifi/sbin/ipfw/ipfw.8#21 integrate .. //depot/projects/wifi/sbin/ipfw/ipfw2.c#18 integrate .. //depot/projects/wifi/sbin/mdmfs/mdmfs.c#10 integrate .. //depot/projects/wifi/share/examples/Makefile#7 integrate .. //depot/projects/wifi/share/examples/netgraph/bluetooth/rc.bluetooth#3 delete .. //depot/projects/wifi/share/man/man4/Makefile#34 integrate .. //depot/projects/wifi/share/man/man4/led.4#6 integrate .. //depot/projects/wifi/share/man/man4/uftdi.4#6 integrate .. //depot/projects/wifi/share/man/man4/vlan.4#12 integrate .. //depot/projects/wifi/share/man/man9/rman.9#5 integrate .. //depot/projects/wifi/share/misc/bsd-family-tree#16 integrate .. //depot/projects/wifi/share/misc/committers-ports.dot#4 integrate .. //depot/projects/wifi/share/misc/committers-src.dot#4 integrate .. //depot/projects/wifi/share/misc/organization.dot#2 integrate .. //depot/projects/wifi/share/mk/bsd.symver.mk#2 integrate .. //depot/projects/wifi/share/mk/version_gen.awk#2 integrate .. //depot/projects/wifi/sys/amd64/amd64/local_apic.c#14 integrate .. //depot/projects/wifi/sys/amd64/amd64/mptable_pci.c#6 integrate .. //depot/projects/wifi/sys/amd64/amd64/msi.c#4 integrate .. //depot/projects/wifi/sys/amd64/amd64/nexus.c#11 integrate .. //depot/projects/wifi/sys/amd64/amd64/pmap.c#18 integrate .. //depot/projects/wifi/sys/amd64/amd64/vm_machdep.c#14 integrate .. //depot/projects/wifi/sys/amd64/include/intr_machdep.h#10 integrate .. //depot/projects/wifi/sys/amd64/pci/pci_bus.c#9 integrate .. //depot/projects/wifi/sys/arm/xscale/i80321/ep80219_machdep.c#2 integrate .. //depot/projects/wifi/sys/arm/xscale/i80321/iq31244_machdep.c#16 integrate .. //depot/projects/wifi/sys/arm/xscale/ixp425/avila_machdep.c#3 integrate .. //depot/projects/wifi/sys/cam/cam_xpt.c#19 integrate .. //depot/projects/wifi/sys/cam/scsi/scsi_da.c#13 integrate .. //depot/projects/wifi/sys/compat/freebsd32/freebsd32_misc.c#14 integrate .. //depot/projects/wifi/sys/compat/linprocfs/linprocfs.c#16 integrate .. //depot/projects/wifi/sys/compat/opensolaris/kern/opensolaris_kobj.c#2 integrate .. //depot/projects/wifi/sys/compat/opensolaris/kern/opensolaris_misc.c#2 integrate .. //depot/projects/wifi/sys/compat/opensolaris/kern/opensolaris_vfs.c#3 integrate .. //depot/projects/wifi/sys/compat/opensolaris/sys/misc.h#2 integrate .. //depot/projects/wifi/sys/compat/opensolaris/sys/sunddi.h#1 branch .. //depot/projects/wifi/sys/compat/opensolaris/sys/types.h#2 integrate .. //depot/projects/wifi/sys/compat/opensolaris/sys/vnode.h#2 integrate .. //depot/projects/wifi/sys/conf/files#45 integrate .. //depot/projects/wifi/sys/conf/kern.pre.mk#15 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/dnlc.c#3 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/gfs.c#2 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/arc.c#3 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c#2 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/spa.c#3 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/spa_config.c#3 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/vdev.c#3 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#2 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/zap.c#3 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#2 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c#3 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#2 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#3 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c#2 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#3 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#3 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#2 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/zil.c#2 integrate .. //depot/projects/wifi/sys/contrib/opensolaris/uts/common/fs/zfs/zvol.c#2 integrate .. //depot/projects/wifi/sys/dev/acpi_support/acpi_ibm.c#11 integrate .. //depot/projects/wifi/sys/dev/acpica/acpi.c#23 integrate .. //depot/projects/wifi/sys/dev/acpica/acpi_pcib_acpi.c#11 integrate .. //depot/projects/wifi/sys/dev/acpica/acpi_pcib_pci.c#8 integrate .. //depot/projects/wifi/sys/dev/ata/ata-disk.c#17 integrate .. //depot/projects/wifi/sys/dev/ata/atapi-cam.c#12 integrate .. //depot/projects/wifi/sys/dev/ath/if_ath.c#139 integrate .. //depot/projects/wifi/sys/dev/bce/if_bce.c#6 integrate .. //depot/projects/wifi/sys/dev/bce/if_bcefw.h#2 integrate .. //depot/projects/wifi/sys/dev/bce/if_bcereg.h#4 integrate .. //depot/projects/wifi/sys/dev/bge/if_bge.c#23 integrate .. //depot/projects/wifi/sys/dev/bge/if_bgereg.h#15 integrate .. //depot/projects/wifi/sys/dev/ciss/ciss.c#17 integrate .. //depot/projects/wifi/sys/dev/ciss/cissvar.h#3 integrate .. //depot/projects/wifi/sys/dev/cxgb/cxgb_main.c#3 integrate .. //depot/projects/wifi/sys/dev/cxgb/cxgb_sge.c#4 integrate .. //depot/projects/wifi/sys/dev/em/LICENSE#4 integrate .. //depot/projects/wifi/sys/dev/em/README#7 integrate .. //depot/projects/wifi/sys/dev/em/e1000_80003es2lan.c#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_80003es2lan.h#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_82540.c#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_82541.c#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_82541.h#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_82542.c#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_82543.c#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_82543.h#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_82571.c#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_82571.h#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_82575.c#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_82575.h#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_api.c#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_api.h#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_defines.h#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_hw.h#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_ich8lan.c#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_ich8lan.h#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_mac.c#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_mac.h#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_manage.c#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_manage.h#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_nvm.c#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_nvm.h#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_osdep.h#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_phy.c#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_phy.h#1 branch .. //depot/projects/wifi/sys/dev/em/e1000_regs.h#1 branch .. //depot/projects/wifi/sys/dev/em/if_em.c#21 integrate .. //depot/projects/wifi/sys/dev/em/if_em.h#11 integrate .. //depot/projects/wifi/sys/dev/em/if_em_hw.c#6 delete .. //depot/projects/wifi/sys/dev/em/if_em_hw.h#7 delete .. //depot/projects/wifi/sys/dev/em/if_em_osdep.h#7 delete .. //depot/projects/wifi/sys/dev/firewire/firewire.c#5 integrate .. //depot/projects/wifi/sys/dev/firewire/firewire.h#3 integrate .. //depot/projects/wifi/sys/dev/firewire/firewirereg.h#5 integrate .. //depot/projects/wifi/sys/dev/firewire/fwdev.c#7 integrate .. //depot/projects/wifi/sys/dev/firewire/fwohci.c#6 integrate .. //depot/projects/wifi/sys/dev/firewire/fwohcireg.h#4 integrate .. //depot/projects/wifi/sys/dev/firewire/if_fwip.c#9 integrate .. //depot/projects/wifi/sys/dev/firewire/sbp.c#8 integrate .. //depot/projects/wifi/sys/dev/firewire/sbp_targ.c#5 integrate .. //depot/projects/wifi/sys/dev/gem/if_gem.c#12 integrate .. //depot/projects/wifi/sys/dev/gem/if_gem_pci.c#7 integrate .. //depot/projects/wifi/sys/dev/gem/if_gemvar.h#6 integrate .. //depot/projects/wifi/sys/dev/hme/if_hme.c#14 integrate .. //depot/projects/wifi/sys/dev/ipmi/ipmi_smbios.c#3 integrate .. //depot/projects/wifi/sys/dev/led/led.c#4 integrate .. //depot/projects/wifi/sys/dev/led/led.h#2 integrate .. //depot/projects/wifi/sys/dev/mii/brgphy.c#14 integrate .. //depot/projects/wifi/sys/dev/mii/mii.c#9 integrate .. //depot/projects/wifi/sys/dev/msk/if_msk.c#6 integrate .. //depot/projects/wifi/sys/dev/msk/if_mskreg.h#3 integrate .. //depot/projects/wifi/sys/dev/mxge/if_mxge.c#6 integrate .. //depot/projects/wifi/sys/dev/pci/pci.c#27 integrate .. //depot/projects/wifi/sys/dev/pci/pci_if.m#6 integrate .. //depot/projects/wifi/sys/dev/pci/pci_pci.c#12 integrate .. //depot/projects/wifi/sys/dev/pci/pci_private.h#7 integrate .. //depot/projects/wifi/sys/dev/pci/pcib_if.m#6 integrate .. //depot/projects/wifi/sys/dev/pci/pcib_private.h#6 integrate .. //depot/projects/wifi/sys/dev/pci/pcireg.h#15 integrate .. //depot/projects/wifi/sys/dev/pci/pcivar.h#9 integrate .. //depot/projects/wifi/sys/dev/sound/pci/emu10kx.c#5 integrate .. //depot/projects/wifi/sys/dev/sound/pci/hda/hdac.c#7 integrate .. //depot/projects/wifi/sys/dev/sound/pci/hda/hdac_private.h#4 integrate .. //depot/projects/wifi/sys/dev/sound/pci/ich.c#14 integrate .. //depot/projects/wifi/sys/dev/stge/if_stge.c#5 integrate .. //depot/projects/wifi/sys/dev/stge/if_stgereg.h#2 integrate .. //depot/projects/wifi/sys/dev/uart/uart_kbd_sun.c#10 integrate .. //depot/projects/wifi/sys/dev/usb/if_axe.c#15 integrate .. //depot/projects/wifi/sys/dev/usb/if_axereg.h#9 integrate .. //depot/projects/wifi/sys/dev/usb/if_ural.c#23 integrate .. //depot/projects/wifi/sys/dev/usb/uftdi.c#6 integrate .. //depot/projects/wifi/sys/dev/usb/usbdevs#24 integrate .. //depot/projects/wifi/sys/fs/devfs/devfs_devs.c#12 integrate .. //depot/projects/wifi/sys/fs/devfs/devfs_vnops.c#33 integrate .. //depot/projects/wifi/sys/fs/procfs/procfs_ioctl.c#5 integrate .. //depot/projects/wifi/sys/fs/procfs/procfs_map.c#5 integrate .. //depot/projects/wifi/sys/fs/pseudofs/pseudofs_vncache.c#10 integrate .. //depot/projects/wifi/sys/geom/part/g_part.c#2 integrate .. //depot/projects/wifi/sys/geom/uzip/g_uzip.c#7 integrate .. //depot/projects/wifi/sys/i386/i386/local_apic.c#17 integrate .. //depot/projects/wifi/sys/i386/i386/mptable_pci.c#6 integrate .. //depot/projects/wifi/sys/i386/i386/msi.c#4 integrate .. //depot/projects/wifi/sys/i386/i386/nexus.c#10 integrate .. //depot/projects/wifi/sys/i386/i386/pmap.c#22 integrate .. //depot/projects/wifi/sys/i386/i386/sys_machdep.c#13 integrate .. //depot/projects/wifi/sys/i386/i386/vm_machdep.c#21 integrate .. //depot/projects/wifi/sys/i386/include/intr_machdep.h#11 integrate .. //depot/projects/wifi/sys/i386/pci/pci_bus.c#9 integrate .. //depot/projects/wifi/sys/kern/kern_descrip.c#25 integrate .. //depot/projects/wifi/sys/kern/kern_linker.c#8 integrate .. //depot/projects/wifi/sys/kern/kern_time.c#12 integrate .. //depot/projects/wifi/sys/kern/kern_uuid.c#6 integrate .. //depot/projects/wifi/sys/kern/subr_rman.c#12 integrate .. //depot/projects/wifi/sys/kern/sys_generic.c#15 integrate .. //depot/projects/wifi/sys/kern/uipc_debug.c#2 integrate .. //depot/projects/wifi/sys/kern/uipc_sockbuf.c#4 integrate .. //depot/projects/wifi/sys/kern/uipc_socket.c#27 integrate .. //depot/projects/wifi/sys/kern/uipc_syscalls.c#23 integrate .. //depot/projects/wifi/sys/kern/vfs_bio.c#23 integrate .. //depot/projects/wifi/sys/kern/vfs_mount.c#31 integrate .. //depot/projects/wifi/sys/kern/vfs_syscalls.c#22 integrate .. //depot/projects/wifi/sys/modules/em/Makefile#3 integrate .. //depot/projects/wifi/sys/modules/zfs/Makefile#2 integrate .. //depot/projects/wifi/sys/net/ieee8023ad_lacp.c#2 integrate .. //depot/projects/wifi/sys/net/if.h#10 integrate .. //depot/projects/wifi/sys/net/if_lagg.c#2 integrate .. //depot/projects/wifi/sys/net/if_lagg.h#2 integrate .. //depot/projects/wifi/sys/net80211/ieee80211_amrr.c#3 integrate .. //depot/projects/wifi/sys/netgraph/ng_l2tp.c#4 integrate .. //depot/projects/wifi/sys/netgraph/ng_mppc.c#5 integrate .. //depot/projects/wifi/sys/netinet/in_pcb.c#14 integrate .. //depot/projects/wifi/sys/netinet/in_pcb.h#9 integrate .. //depot/projects/wifi/sys/netinet/ip_divert.c#13 integrate .. //depot/projects/wifi/sys/netinet/ip_fw.h#13 integrate .. //depot/projects/wifi/sys/netinet/ip_fw2.c#25 integrate .. //depot/projects/wifi/sys/netinet/libalias/alias_proxy.c#6 integrate .. //depot/projects/wifi/sys/netinet/raw_ip.c#14 integrate .. //depot/projects/wifi/sys/netinet/sctp.h#3 integrate .. //depot/projects/wifi/sys/netinet/sctp_auth.c#5 integrate .. //depot/projects/wifi/sys/netinet/sctp_bsd_addr.c#4 integrate .. //depot/projects/wifi/sys/netinet/sctp_constants.h#6 integrate .. //depot/projects/wifi/sys/netinet/sctp_header.h#3 integrate .. //depot/projects/wifi/sys/netinet/sctp_indata.c#6 integrate .. //depot/projects/wifi/sys/netinet/sctp_indata.h#3 integrate .. //depot/projects/wifi/sys/netinet/sctp_input.c#6 integrate .. //depot/projects/wifi/sys/netinet/sctp_os_bsd.h#5 integrate .. //depot/projects/wifi/sys/netinet/sctp_output.c#6 integrate .. //depot/projects/wifi/sys/netinet/sctp_output.h#4 integrate .. //depot/projects/wifi/sys/netinet/sctp_pcb.c#6 integrate .. //depot/projects/wifi/sys/netinet/sctp_pcb.h#4 integrate .. //depot/projects/wifi/sys/netinet/sctp_peeloff.c#6 integrate .. //depot/projects/wifi/sys/netinet/sctp_structs.h#6 integrate .. //depot/projects/wifi/sys/netinet/sctp_uio.h#6 integrate .. //depot/projects/wifi/sys/netinet/sctp_usrreq.c#6 integrate .. //depot/projects/wifi/sys/netinet/sctputil.c#6 integrate .. //depot/projects/wifi/sys/netinet/sctputil.h#6 integrate .. //depot/projects/wifi/sys/netinet/tcp_debug.c#3 integrate .. //depot/projects/wifi/sys/netinet/tcp_input.c#23 integrate .. //depot/projects/wifi/sys/netinet/tcp_subr.c#27 integrate .. //depot/projects/wifi/sys/netinet/tcp_usrreq.c#24 integrate .. //depot/projects/wifi/sys/netinet/tcp_var.h#18 integrate .. //depot/projects/wifi/sys/netinet/udp_usrreq.c#17 integrate .. //depot/projects/wifi/sys/netinet6/in6_pcb.c#8 integrate .. //depot/projects/wifi/sys/netinet6/in6_src.c#10 integrate .. //depot/projects/wifi/sys/netinet6/nd6.c#12 integrate .. //depot/projects/wifi/sys/netinet6/nd6_nbr.c#12 integrate .. //depot/projects/wifi/sys/netinet6/route6.c#4 integrate .. //depot/projects/wifi/sys/netinet6/sctp6_usrreq.c#6 integrate .. //depot/projects/wifi/sys/nfsclient/nfs_bio.c#17 integrate .. //depot/projects/wifi/sys/nfsclient/nfs_vnops.c#25 integrate .. //depot/projects/wifi/sys/nfsserver/nfs_syscalls.c#10 integrate .. //depot/projects/wifi/sys/pci/if_vr.c#14 integrate .. //depot/projects/wifi/sys/pci/if_vrreg.h#8 integrate .. //depot/projects/wifi/sys/security/audit/audit_ioctl.h#3 integrate .. //depot/projects/wifi/sys/security/mac/mac_framework.h#4 integrate .. //depot/projects/wifi/sys/security/mac/mac_inet.c#4 integrate .. //depot/projects/wifi/sys/security/mac/mac_net.c#4 integrate .. //depot/projects/wifi/sys/security/mac/mac_pipe.c#4 integrate .. //depot/projects/wifi/sys/security/mac/mac_policy.h#4 integrate .. //depot/projects/wifi/sys/security/mac/mac_process.c#6 integrate .. //depot/projects/wifi/sys/security/mac/mac_socket.c#5 integrate .. //depot/projects/wifi/sys/security/mac/mac_system.c#5 integrate .. //depot/projects/wifi/sys/security/mac/mac_vfs.c#9 integrate .. //depot/projects/wifi/sys/security/mac_biba/mac_biba.c#13 integrate .. //depot/projects/wifi/sys/security/mac_bsdextended/mac_bsdextended.c#9 integrate .. //depot/projects/wifi/sys/security/mac_ifoff/mac_ifoff.c#4 integrate .. //depot/projects/wifi/sys/security/mac_lomac/mac_lomac.c#10 integrate .. //depot/projects/wifi/sys/security/mac_mls/mac_mls.c#11 integrate .. //depot/projects/wifi/sys/security/mac_partition/mac_partition.c#5 integrate .. //depot/projects/wifi/sys/security/mac_portacl/mac_portacl.c#7 integrate .. //depot/projects/wifi/sys/security/mac_seeotheruids/mac_seeotheruids.c#6 integrate .. //depot/projects/wifi/sys/security/mac_stub/mac_stub.c#13 integrate .. //depot/projects/wifi/sys/security/mac_test/mac_test.c#12 integrate .. //depot/projects/wifi/sys/sparc64/sparc64/machdep.c#13 integrate .. //depot/projects/wifi/sys/sparc64/sparc64/upa.c#4 integrate .. //depot/projects/wifi/sys/sys/filedesc.h#12 integrate .. //depot/projects/wifi/sys/sys/ioctl_compat.h#4 integrate .. //depot/projects/wifi/sys/sys/mount.h#21 integrate .. //depot/projects/wifi/sys/sys/param.h#26 integrate .. //depot/projects/wifi/sys/sys/proc.h#28 integrate .. //depot/projects/wifi/sys/sys/socketvar.h#13 integrate .. //depot/projects/wifi/sys/ufs/ffs/ffs_softdep.c#20 integrate .. //depot/projects/wifi/sys/vm/swap_pager.c#16 integrate .. //depot/projects/wifi/sys/vm/vm_map.c#15 integrate .. //depot/projects/wifi/tools/regression/netinet6/inet6_rth/Makefile#1 branch .. //depot/projects/wifi/tools/regression/netinet6/inet6_rth/inet6_rth-segments.c#1 branch .. //depot/projects/wifi/tools/regression/netinet6/inet6_rth/test_subr.c#1 branch .. //depot/projects/wifi/tools/regression/netinet6/inet6_rth/test_subr.h#1 branch .. //depot/projects/wifi/tools/sched/schedgraph.py#6 integrate .. //depot/projects/wifi/tools/tools/net80211/wesside/wesside/wesside.c#3 integrate .. //depot/projects/wifi/tools/tools/recoverdisk/recoverdisk.c#4 integrate .. //depot/projects/wifi/usr.bin/calendar/calendars/calendar.freebsd#22 integrate .. //depot/projects/wifi/usr.bin/calendar/calendars/calendar.usholiday#2 integrate .. //depot/projects/wifi/usr.bin/du/du.c#5 integrate .. //depot/projects/wifi/usr.bin/env/env.c#3 integrate .. //depot/projects/wifi/usr.bin/lastcomm/Makefile#2 integrate .. //depot/projects/wifi/usr.bin/lastcomm/lastcomm.c#5 integrate .. //depot/projects/wifi/usr.bin/limits/limits.c#3 integrate .. //depot/projects/wifi/usr.bin/login/login.c#5 integrate .. //depot/projects/wifi/usr.bin/netstat/inet.c#8 integrate .. //depot/projects/wifi/usr.bin/quota/quota.c#6 integrate .. //depot/projects/wifi/usr.bin/stat/stat.1#4 integrate .. //depot/projects/wifi/usr.bin/su/su.c#5 integrate .. //depot/projects/wifi/usr.bin/tar/write.c#15 integrate .. //depot/projects/wifi/usr.sbin/pciconf/cap.c#2 integrate .. //depot/projects/wifi/usr.sbin/pmcstat/Makefile#3 integrate .. //depot/projects/wifi/usr.sbin/pmcstat/pmcstat.8#6 integrate .. //depot/projects/wifi/usr.sbin/pmcstat/pmcstat.c#11 integrate .. //depot/projects/wifi/usr.sbin/pmcstat/pmcstat.h#3 integrate .. //depot/projects/wifi/usr.sbin/pstat/pstat.c#8 integrate .. //depot/projects/wifi/usr.sbin/rpcbind/rpcbind.8#5 integrate .. //depot/projects/wifi/usr.sbin/rpcbind/rpcbind.c#3 integrate .. //depot/projects/wifi/usr.sbin/sade/main.c#3 integrate .. //depot/projects/wifi/usr.sbin/sade/variable.c#3 integrate .. //depot/projects/wifi/usr.sbin/sysinstall/main.c#4 integrate .. //depot/projects/wifi/usr.sbin/sysinstall/variable.c#2 integrate .. //depot/projects/wifi/usr.sbin/traceroute6/traceroute6.c#3 integrate .. //depot/projects/wifi/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c#6 integrate Differences ... ==== //depot/projects/wifi/MAINTAINERS#15 (text+ko) ==== @@ -1,4 +1,4 @@ -$FreeBSD: src/MAINTAINERS,v 1.143 2007/04/06 10:57:15 pjd Exp $ +$FreeBSD: src/MAINTAINERS,v 1.144 2007/04/26 21:30:16 imp Exp $ Please note that the content of this file is strictly advisory. No locks listed here are valid. The only strict review requirements @@ -128,6 +128,7 @@ usr.sbin/bluetooth emax Pre-commit review preferred. gnu/usr.bin/send-pr bugmaster Pre-commit review requested. BSD.{local,x11*}.dist portmgr Pre-commit review requested, since these files interface with ports. +usb core Please contact core@ before any major changes Following are the entries from the Makefiles, and a few other sources. Please remove stale entries from both their origin, and this file. ==== //depot/projects/wifi/ObsoleteFiles.inc#14 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/ObsoleteFiles.inc,v 1.80 2007/04/20 23:47:30 brueffer Exp $ +# $FreeBSD: src/ObsoleteFiles.inc,v 1.81 2007/04/24 16:58:54 emax 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. # +# 20070423: rc.bluetooth (examples) removed +OLD_FILES+=usr/share/examples/netgraph/bluetooth/rc.bluetooth # 20070421: worm.4 removed OLD_FILES+=usr/share/man/man4/worm.4.gz # 20070417: trunk(4) renamed to lagg(4) ==== //depot/projects/wifi/UPDATING#28 (text+ko) ==== @@ -21,6 +21,12 @@ developers choose to disable these features on build machines to maximize performance. +20070423: + The ABI breakage in sendmail(8)'s libmilter has been repaired + so it is no longer necessary to recompile mail filters (aka, + milters). If you recompiled mail filters after the 20070408 + note, it is not necessary to recompile them again. + 20070417: The new trunk(4) driver has been renamed to lagg(4) as it better reflects its purpose. ifconfig will need to be recompiled. @@ -767,4 +773,4 @@ Contact Warner Losh if you have any questions about your use of this document. -$FreeBSD: src/UPDATING,v 1.488 2007/04/19 17:08:54 dds Exp $ +$FreeBSD: src/UPDATING,v 1.489 2007/04/23 22:15:07 gshapiro Exp $ ==== //depot/projects/wifi/bin/df/df.c#6 (text+ko) ==== @@ -44,7 +44,7 @@ #endif /* not lint */ #endif #include -__FBSDID("$FreeBSD: src/bin/df/df.c,v 1.68 2007/04/06 15:36:43 kan Exp $"); +__FBSDID("$FreeBSD: src/bin/df/df.c,v 1.70 2007/05/01 16:02:44 ache Exp $"); #include #include ==== //depot/projects/wifi/bin/sh/var.c#4 (text+ko) ==== @@ -36,7 +36,7 @@ #endif #endif /* not lint */ #include -__FBSDID("$FreeBSD: src/bin/sh/var.c,v 1.32 2006/06/15 07:00:49 stefanf Exp $"); +__FBSDID("$FreeBSD: src/bin/sh/var.c,v 1.35 2007/05/01 16:02:43 ache Exp $"); #include #include ==== //depot/projects/wifi/compat/opensolaris/misc/fsshare.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/compat/opensolaris/misc/fsshare.c,v 1.1 2007/04/06 01:08:59 pjd Exp $"); +__FBSDID("$FreeBSD: src/compat/opensolaris/misc/fsshare.c,v 1.2 2007/04/21 13:17:23 pjd Exp $"); #include #include @@ -99,21 +99,30 @@ /* * Function translate options to a format acceptable by exports(5), eg. * - * -ro -network=192.168.0.0 -mask=255.255.255.0 -maproot=0 + * -ro -network=192.168.0.0 -mask=255.255.255.0 -maproot=0 freefall.freebsd.org 69.147.83.54 * * Accepted input formats: * - * ro,network=192.168.0.0,mask=255.255.255.0,maproot=0 - * ro network=192.168.0.0 mask=255.255.255.0 maproot=0 - * -ro,-network=192.168.0.0,-mask=255.255.255.0,-maproot=0 - * -ro -network=192.168.0.0 -mask=255.255.255.0 -maproot=0 + * ro,network=192.168.0.0,mask=255.255.255.0,maproot=0,freefall.freebsd.org + * ro network=192.168.0.0 mask=255.255.255.0 maproot=0 freefall.freebsd.org + * -ro,-network=192.168.0.0,-mask=255.255.255.0,-maproot=0,freefall.freebsd.org + * -ro -network=192.168.0.0 -mask=255.255.255.0 -maproot=0 freefall.freebsd.org + * + * Recognized keywords: + * + * ro, maproot, mapall, mask, network, alldirs, public, webnfs, index, quiet + * */ +static const char *known_opts[] = { "ro", "maproot", "mapall", "mask", + "network", "alldirs", "public", "webnfs", "index", "quiet", NULL }; static char * translate_opts(const char *shareopts) { static char newopts[OPTSSIZE]; - char oldopts[OPTSSIZE], opt[64]; + char oldopts[OPTSSIZE]; char *o, *s = NULL; + unsigned int i; + size_t len; strlcpy(oldopts, shareopts, sizeof(oldopts)); newopts[0] = '\0'; @@ -121,8 +130,16 @@ while ((o = strsep(&s, "-, ")) != NULL) { if (o[0] == '\0') continue; - snprintf(opt, sizeof(opt), "-%s ", o); - strlcat(newopts, opt, sizeof(newopts)); + for (i = 0; known_opts[i] != NULL; i++) { + len = strlen(known_opts[i]); + if (strncmp(known_opts[i], o, len) == 0 && + (o[len] == '\0' || o[len] == '=')) { + strlcat(newopts, "-", sizeof(newopts)); + break; + } + } + strlcat(newopts, o, sizeof(newopts)); + strlcat(newopts, " ", sizeof(newopts)); } return (newopts); } ==== //depot/projects/wifi/contrib/gdb/gdb/ppcfbsd-nat.c#2 (text+ko) ==== @@ -143,11 +143,23 @@ } void +supply_gregset (char *regs) +{ + ppcfbsd_supply_reg (regs, -1); +} + +void fill_fpregset (char *fpregs, int regnum) { ppcfbsd_fill_fpreg (fpregs, regnum); } +void +supply_fpregset (char *fpregs) +{ + ppcfbsd_supply_fpreg (fpregs, -1); +} + /* Provide a prototype to silence -Wmissing-prototypes. */ void _initialize_ppcfbsd_nat (void); ==== //depot/projects/wifi/contrib/opensolaris/cmd/zdb/zdb.c#2 (text+ko) ==== @@ -932,11 +932,11 @@ if (doi.doi_checksum != ZIO_CHECKSUM_INHERIT || verbosity >= 6) (void) snprintf(aux + strlen(aux), sizeof (aux), " (K=%s)", - zio_checksum_table[doi.doi_checksum].ci_name); + zio_checksum_table[doi.doi_checksum].ci_name); if (doi.doi_compress != ZIO_COMPRESS_INHERIT || verbosity >= 6) (void) snprintf(aux + strlen(aux), sizeof (aux), " (Z=%s)", - zio_compress_table[doi.doi_compress].ci_name); + zio_compress_table[doi.doi_compress].ci_name); (void) printf("%10lld %3u %5s %5s %5s %5s %s%s\n", (u_longlong_t)object, doi.doi_indirection, iblk, dblk, lsize, @@ -1441,7 +1441,7 @@ (u_longlong_t)zb->zb_objset, (u_longlong_t)zb->zb_object, (u_longlong_t)blkid2offset(bc->bc_dnode, - zb->zb_level, zb->zb_blkid), + zb->zb_level, zb->zb_blkid), blkbuf); } @@ -1951,8 +1951,8 @@ spa_close(spa, (void *)zdb_read_block); error = spa_open(spa_name, spap, (void *)zdb_read_block); if (error) - fatal("Failed to open pool '%s': errno = %d\n", - spa_name, error); + fatal("Failed to open pool '%s': %s", + spa_name, strerror(error)); spa = *spap; } @@ -2156,7 +2156,7 @@ } if (error) - fatal("can't open %s: error %d", argv[0], error); + fatal("can't open %s: %s", argv[0], strerror(error)); argv++; if (--argc > 0) { ==== //depot/projects/wifi/contrib/opensolaris/lib/libzfs/common/libzfs_changelist.c#2 (text+ko) ==== @@ -339,22 +339,15 @@ changelist_free(prop_changelist_t *clp) { prop_changenode_t *cn; - uu_list_walk_t *walk; + void *cookie; if (clp->cl_list) { - verify((walk = uu_list_walk_start(clp->cl_list, - UU_WALK_ROBUST)) != NULL); - - while ((cn = uu_list_walk_next(walk)) != NULL) { - - uu_list_remove(clp->cl_list, cn); - + cookie = NULL; + while ((cn = uu_list_teardown(clp->cl_list, &cookie)) != NULL) { zfs_close(cn->cn_handle); free(cn); } - uu_list_walk_end(walk); - uu_list_destroy(clp->cl_list); } if (clp->cl_pool) @@ -418,7 +411,7 @@ } else { ASSERT(!clp->cl_alldependents); verify(uu_list_insert_before(clp->cl_list, - uu_list_first(clp->cl_list), cn) == 0); + uu_list_first(clp->cl_list), cn) == 0); } if (!clp->cl_alldependents) ==== //depot/projects/wifi/contrib/opensolaris/lib/libzfs/common/libzfs_config.c#2 (text+ko) ==== @@ -74,22 +74,16 @@ namespace_clear(libzfs_handle_t *hdl) { if (hdl->libzfs_ns_avl) { - uu_avl_walk_t *walk; config_node_t *cn; + void *cookie = NULL; - if ((walk = uu_avl_walk_start(hdl->libzfs_ns_avl, - UU_WALK_ROBUST)) == NULL) - return; - - while ((cn = uu_avl_walk_next(walk)) != NULL) { - uu_avl_remove(hdl->libzfs_ns_avl, cn); + while ((cn = uu_avl_teardown(hdl->libzfs_ns_avl, + &cookie)) != NULL) { nvlist_free(cn->cn_config); free(cn->cn_name); free(cn); } - uu_avl_walk_end(walk); - uu_avl_destroy(hdl->libzfs_ns_avl); hdl->libzfs_ns_avl = NULL; } @@ -110,7 +104,7 @@ config_node_t *cn; nvpair_t *elem; zfs_cmd_t zc = { 0 }; - uu_avl_walk_t *walk; + void *cookie; if (hdl->libzfs_ns_gen == 0) { /* @@ -172,21 +166,13 @@ /* * Clear out any existing configuration information. */ - if ((walk = uu_avl_walk_start(hdl->libzfs_ns_avl, - UU_WALK_ROBUST)) == NULL) { - nvlist_free(config); - return (no_memory(hdl)); - } - - while ((cn = uu_avl_walk_next(walk)) != NULL) { - uu_avl_remove(hdl->libzfs_ns_avl, cn); + cookie = NULL; + while ((cn = uu_avl_teardown(hdl->libzfs_ns_avl, &cookie)) != NULL) { nvlist_free(cn->cn_config); free(cn->cn_name); free(cn); } - uu_avl_walk_end(walk); - elem = NULL; while ((elem = nvlist_next_nvpair(config, elem)) != NULL) { nvlist_t *child; @@ -222,7 +208,7 @@ } /* - * Retrive the configuration for the given pool. The configuration is a nvlist + * Retrieve the configuration for the given pool. The configuration is a nvlist * describing the vdevs, as well as the statistics associated with each one. */ nvlist_t * ==== //depot/projects/wifi/contrib/opensolaris/lib/libzfs/common/libzfs_import.c#2 (text+ko) ==== @@ -220,7 +220,7 @@ &state) == 0 && state == POOL_STATE_SPARE && nvlist_lookup_uint64(config, ZPOOL_CONFIG_GUID, &vdev_guid) == 0) { if ((ne = zfs_alloc(hdl, sizeof (name_entry_t))) == NULL) - return (-1); + return (-1); if ((ne->ne_name = zfs_strdup(hdl, path)) == NULL) { free(ne); @@ -748,7 +748,6 @@ zpool_find_import(libzfs_handle_t *hdl, int argc, char **argv) { int i; - DIR *dirp; char path[MAXPATHLEN]; nvlist_t *ret = NULL, *config; int fd; @@ -824,7 +823,6 @@ free(ne); } - return (ret); } ==== //depot/projects/wifi/contrib/sendmail/libmilter/engine.c#5 (text+ko) ==== @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999-2004, 2006 Sendmail, Inc. and its suppliers. + * Copyright (c) 1999-2004, 2006, 2007 Sendmail, Inc. and its suppliers. * All rights reserved. * * By using this file, you agree to the terms and conditions set @@ -855,6 +855,7 @@ ; if (g->a_ctx->ctx_smfi != NULL && + g->a_ctx->ctx_smfi->xxfi_version > 4 && (fi_negotiate = g->a_ctx->ctx_smfi->xxfi_negotiate) != NULL) { int r; @@ -1177,6 +1178,7 @@ if (g == NULL) return _SMFIS_ABORT; if (g->a_ctx->ctx_smfi != NULL && + g->a_ctx->ctx_smfi->xxfi_version > 3 && (fi_data = g->a_ctx->ctx_smfi->xxfi_data) != NULL) return (*fi_data)(g->a_ctx); return SMFIS_CONTINUE; @@ -1310,6 +1312,7 @@ if (g == NULL) return _SMFIS_ABORT; if (g->a_ctx->ctx_smfi != NULL && + g->a_ctx->ctx_smfi->xxfi_version > 2 && (fi_unknown = g->a_ctx->ctx_smfi->xxfi_unknown) != NULL) return (*fi_unknown)(g->a_ctx, (const char *) g->a_buf); return SMFIS_CONTINUE; ==== //depot/projects/wifi/contrib/sendmail/libmilter/listener.c#5 (text+ko) ==== @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999-2006 Sendmail, Inc. and its suppliers. + * Copyright (c) 1999-2007 Sendmail, Inc. and its suppliers. * All rights reserved. * * By using this file, you agree to the terms and conditions set @@ -927,9 +927,9 @@ ctx->ctx_pflags |= SMFIP_NOEOH; if (smfi->xxfi_body == NULL) ctx->ctx_pflags |= SMFIP_NOBODY; - if (smfi->xxfi_data == NULL) + if (smfi->xxfi_version <= 3 || smfi->xxfi_data == NULL) ctx->ctx_pflags |= SMFIP_NODATA; - if (smfi->xxfi_unknown == NULL) + if (smfi->xxfi_version <= 2 || smfi->xxfi_unknown == NULL) ctx->ctx_pflags |= SMFIP_NOUNKNOWN; #if _FFR_WORKERS_POOL ==== //depot/projects/wifi/contrib/sendmail/libmilter/main.c#3 (text+ko) ==== @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999-2003, 2006 Sendmail, Inc. and its suppliers. + * Copyright (c) 1999-2003, 2006, 2007 Sendmail, Inc. and its suppliers. * All rights reserved. * * By using this file, you agree to the terms and conditions set @@ -52,7 +52,10 @@ (void) sm_strlcpy(smfi->xxfi_name, smfilter.xxfi_name, len); /* compare milter version with hard coded version */ - if (smfi->xxfi_version != SMFI_VERSION) + if (smfi->xxfi_version != SMFI_VERSION && + smfi->xxfi_version != 2 && + smfi->xxfi_version != 3 && + smfi->xxfi_version != 4) { /* hard failure for now! */ smi_log(SMI_LOG_ERR, ==== //depot/projects/wifi/contrib/top/commands.c#5 (text+ko) ==== @@ -8,7 +8,7 @@ * Copyright (c) 1984, 1989, William LeFebvre, Rice University * Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University * - * $FreeBSD: src/contrib/top/commands.c,v 1.13 2007/04/17 03:12:39 rafan Exp $ + * $FreeBSD: src/contrib/top/commands.c,v 1.15 2007/05/04 15:42:58 rafan Exp $ */ /* @@ -73,7 +73,7 @@ e - list errors generated by last \"kill\" or \"renice\" command\n\ H - toggle the displaying of threads\n\ i or I - toggle the displaying of idle processes\n\ -j - toggle the displaying of jail id\n\ +j - toggle the displaying of jail ID\n\ k - kill processes; send a signal to a list of processes\n\ m - toggle the display between 'cpu' and 'io' modes\n\ n or # - change number of processes to display\n", stdout); @@ -89,6 +89,7 @@ r - renice a process\n\ s - change number of seconds to delay between updates\n\ S - toggle the displaying of system processes\n\ +a - toggle the displaying of process titles\n\ t - toggle the display of this process\n\ u - display processes for only one user (+ selects all users)\n\ \n\ ==== //depot/projects/wifi/contrib/top/machine.h#4 (text+ko) ==== @@ -1,5 +1,5 @@ /* - * $FreeBSD: src/contrib/top/machine.h,v 1.8 2007/04/17 03:12:39 rafan Exp $ + * $FreeBSD: src/contrib/top/machine.h,v 1.9 2007/05/04 15:42:58 rafan Exp $ */ /* @@ -62,7 +62,7 @@ int thread; /* show threads */ int uid; /* only this uid (unless uid == -1) */ int wcpu; /* show weighted cpu */ - int jail; /* show jail id */ + int jail; /* show jail ID */ char *command; /* only this command (unless == NULL) */ }; ==== //depot/projects/wifi/contrib/top/top.X#6 (text+ko) ==== @@ -1,6 +1,6 @@ .\" NOTE: changes to the manual page for "top" should be made in the .\" file "top.X" and NOT in the file "top.1". -.\" $FreeBSD: src/contrib/top/top.X,v 1.18 2007/04/17 03:12:39 rafan Exp $ +.\" $FreeBSD: src/contrib/top/top.X,v 1.20 2007/05/04 15:42:58 rafan Exp $ .nr N %topn% .nr D %delay% .TH TOP 1 Local @@ -105,7 +105,7 @@ .B \-j Display the .IR jail (8) -id. +ID. .TP .B \-t Do not display the @@ -255,6 +255,9 @@ .B S Toggle the display of system processes. .TP +.B a +Toggle the display of process titles. +.TP .B k Send a signal (\*(lqkill\*(rq by default) to a list of processes. This acts similarly to the command @@ -291,7 +294,7 @@ .B j Toggle the display of .IR jail (8) -id. +ID. .TP .B t Toggle the display of the ==== //depot/projects/wifi/contrib/top/top.c#6 (text+ko) ==== @@ -13,7 +13,7 @@ * Copyright (c) 1994, 1995, William LeFebvre, Argonne National Laboratory * Copyright (c) 1996, William LeFebvre, Group sys Consulting * - * $FreeBSD: src/contrib/top/top.c,v 1.22 2007/04/19 14:24:54 rafan Exp $ + * $FreeBSD: src/contrib/top/top.c,v 1.23 2007/05/04 15:42:58 rafan Exp $ */ /* @@ -1064,7 +1064,7 @@ case CMD_jidtog: ps.jail = !ps.jail; new_message(MT_standout | MT_delayed, - " %sisplaying jail id.", + " %sisplaying jail ID.", ps.jail ? "D" : "Not d"); header_text = format_header(uname_field); reset_display(); ==== //depot/projects/wifi/contrib/traceroute/traceroute.c#6 (text+ko) ==== @@ -28,7 +28,7 @@ "@(#)$Id: traceroute.c,v 1.68 2000/12/14 08:04:33 leres Exp $ (LBL)"; #endif static const char rcsid[] = - "$FreeBSD: src/contrib/traceroute/traceroute.c,v 1.32 2006/10/15 17:44:49 dwmalone Exp $"; + "$FreeBSD: src/contrib/traceroute/traceroute.c,v 1.33 2007/04/30 19:08:12 maxim Exp $"; #endif /* @@ -630,7 +630,7 @@ case 'w': waittime = str2val(optarg, "wait time", - 2, 24 * 60 * 60); + 1, 24 * 60 * 60); break; case 'z': ==== //depot/projects/wifi/etc/rc.d/netoptions#3 (text+ko) ==== @@ -1,17 +1,17 @@ #!/bin/sh # -# $FreeBSD: src/etc/rc.d/netoptions,v 1.142 2007/04/09 10:09:39 des Exp $ +# $FreeBSD: src/etc/rc.d/netoptions,v 1.144 2007/05/02 15:49:30 mtm Exp $ # # PROVIDE: netoptions -# REQUIRE: localpkg +# REQUIRE: FILESYSTEMS # KEYWORD: nojail . /etc/rc.subr load_rc_config 'XXX' -echo -n 'Additional TCP options:' +echo -n 'Additional IP options:' case ${log_in_vain} in [Nn][Oo] | '') log_in_vain=0 @@ -32,4 +32,46 @@ >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sun May 6 02:11:29 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6BDA716A403; Sun, 6 May 2007 02:11:29 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 43AC616A401 for ; Sun, 6 May 2007 02:11:29 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 1C1DD13C44C for ; Sun, 6 May 2007 02:11:29 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l462BS3l065575 for ; Sun, 6 May 2007 02:11:28 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l462BSgK065572 for perforce@freebsd.org; Sun, 6 May 2007 02:11:28 GMT (envelope-from kmacy@freebsd.org) Date: Sun, 6 May 2007 02:11:28 GMT Message-Id: <200705060211.l462BSgK065572@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 119314 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 02:11:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=119314 Change 119314 by kmacy@kmacy_vt-x:opentoe_init on 2007/05/06 02:11:07 add read_mostly attribute Affected files ... .. //depot/projects/opentoe/sys/dev/cxgb/cxgb_osdep.h#8 edit Differences ... ==== //depot/projects/opentoe/sys/dev/cxgb/cxgb_osdep.h#8 (text+ko) ==== @@ -67,6 +67,8 @@ #define TASKQUEUE_CURRENT #endif +#define __read_mostly __attribute__((__section__(".data.read_mostly"))) + /* * Workaround for weird Chelsio issue */ From owner-p4-projects@FreeBSD.ORG Sun May 6 02:12:31 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EEE1716A403; Sun, 6 May 2007 02:12:30 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CD46F16A400 for ; Sun, 6 May 2007 02:12:30 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id BDF2413C4AD for ; Sun, 6 May 2007 02:12:30 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l462CURe065859 for ; Sun, 6 May 2007 02:12:30 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l462CU0V065856 for perforce@freebsd.org; Sun, 6 May 2007 02:12:30 GMT (envelope-from kmacy@freebsd.org) Date: Sun, 6 May 2007 02:12:30 GMT Message-Id: <200705060212.l462CU0V065856@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 119315 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 02:12:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=119315 Change 119315 by kmacy@kmacy_vt-x:opentoe_init on 2007/05/06 02:12:12 move mbufq routines into separate header Affected files ... .. //depot/projects/opentoe/sys/dev/cxgb/cxgb_adapter.h#16 edit .. //depot/projects/opentoe/sys/dev/cxgb/sys/mbufq.h#1 add Differences ... ==== //depot/projects/opentoe/sys/dev/cxgb/cxgb_adapter.h#16 (text+ko) ==== @@ -60,62 +60,12 @@ #include #include +#include + struct adapter; struct sge_qset; extern int cxgb_debug; -/* - * Put here for now until a more appropriate place is found - */ -struct mbuf_head { - struct mbuf *head; - struct mbuf *tail; - uint32_t qlen; - struct mtx lock; -}; - -static __inline void -mbufq_init(struct mbuf_head *l) -{ - l->head = l->tail = NULL; -} - -static __inline int -mbufq_empty(struct mbuf_head *l) -{ - return (l->head == NULL); -} - -static __inline void -mbufq_tail(struct mbuf_head *l, struct mbuf *m) -{ - l->qlen++; - l->tail->m_nextpkt = m; - l->tail = m; -} - -static __inline struct mbuf * -mbufq_dequeue(struct mbuf_head *l) -{ - struct mbuf *m; - - m = l->head; - if (m) { - if (m == l->tail) - l->tail = NULL; - l->head = m->m_nextpkt; - l->qlen--; - } - - return (m); -} - -static __inline struct mbuf * -mbufq_peek(struct mbuf_head *l) -{ - return (l->head); -} - struct port_info { struct adapter *adapter; struct ifnet *ifp; From owner-p4-projects@FreeBSD.ORG Sun May 6 02:13:33 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E440816A404; Sun, 6 May 2007 02:13:32 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9EDAD16A400 for ; Sun, 6 May 2007 02:13:32 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 8EFBB13C455 for ; Sun, 6 May 2007 02:13:32 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l462DWkF066125 for ; Sun, 6 May 2007 02:13:32 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l462DWAo066122 for perforce@freebsd.org; Sun, 6 May 2007 02:13:32 GMT (envelope-from kmacy@freebsd.org) Date: Sun, 6 May 2007 02:13:32 GMT Message-Id: <200705060213.l462DWAo066122@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 119316 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 02:13:33 -0000 http://perforce.freebsd.org/chv.cgi?CH=119316 Change 119316 by kmacy@kmacy_vt-x:opentoe_init on 2007/05/06 02:13:04 move NIC driver into a subdirectory add t3_tom makefile Affected files ... .. //depot/projects/opentoe/sys/modules/cxgb/Makefile#7 edit .. //depot/projects/opentoe/sys/modules/cxgb/cxgb/Makefile#1 add .. //depot/projects/opentoe/sys/modules/cxgb/t3_tom/Makefile#1 add Differences ... ==== //depot/projects/opentoe/sys/modules/cxgb/Makefile#7 (text+ko) ==== @@ -1,26 +1,7 @@ # $FreeBSD: src/sys/modules/cxgb/Makefile,v 1.5 2007/04/08 15:18:03 kmacy Exp $ -CXGB = ${.CURDIR}/../../dev/cxgb -.PATH: ${CXGB} ${CXGB}/common ${CXGB}/sys +SUBDIR= cxgb +SUBDIR+= t3_tom -KMOD= if_cxgb -SRCS= cxgb_mc5.c cxgb_vsc8211.c cxgb_ael1002.c cxgb_mv88e1xxx.c -SRCS+= cxgb_xgmac.c cxgb_t3_hw.c cxgb_main.c cxgb_sge.c cxgb_lro.c -SRCS+= uipc_mvec.c cxgb_offload.c cxgb_l2t.c -SRCS+= device_if.h bus_if.h pci_if.h opt_zero.h - - -CFLAGS+= -DCONFIG_CHELSIO_T3_CORE -g -DDEFAULT_JUMBO -DCONFIG_DEFINED +.include -.if ${MACHINE_ARCH} != "ia64" -# ld is broken on ia64 -t3fw-4.0.0.bin: ${CXGB}/t3fw-4.0.0.bin.gz.uu - uudecode -p < ${CXGB}/t3fw-4.0.0.bin.gz.uu \ - | gzip -dc > ${.TARGET} - -FIRMWS= t3fw-4.0.0.bin:t3fw400 -CLEANFILES+= t3fw-4.0.0.bin -.endif - - -.include From owner-p4-projects@FreeBSD.ORG Sun May 6 02:14:34 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B7C2F16A406; Sun, 6 May 2007 02:14:34 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9489C16A402 for ; Sun, 6 May 2007 02:14:34 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 83C6513C46C for ; Sun, 6 May 2007 02:14:34 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l462EYJE066423 for ; Sun, 6 May 2007 02:14:34 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l462EYpw066417 for perforce@freebsd.org; Sun, 6 May 2007 02:14:34 GMT (envelope-from kmacy@freebsd.org) Date: Sun, 6 May 2007 02:14:34 GMT Message-Id: <200705060214.l462EYpw066417@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 119317 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 02:14:35 -0000 http://perforce.freebsd.org/chv.cgi?CH=119317 Change 119317 by kmacy@kmacy_vt-x:opentoe_init on 2007/05/06 02:14:19 more incremental BSD-ification of linux TOE code Affected files ... .. //depot/projects/opentoe/sys/dev/cxgb/cxgb_l2t.h#6 edit .. //depot/projects/opentoe/sys/dev/cxgb/ulp/t3_tom/t3_cpl_io.c#4 edit .. //depot/projects/opentoe/sys/dev/cxgb/ulp/t3_tom/t3_ddp.c#3 edit .. //depot/projects/opentoe/sys/dev/cxgb/ulp/t3_tom/t3_ddp.h#2 edit .. //depot/projects/opentoe/sys/dev/cxgb/ulp/t3_tom/t3_defs.h#3 edit .. //depot/projects/opentoe/sys/dev/cxgb/ulp/t3_tom/t3_listen.c#3 edit .. //depot/projects/opentoe/sys/dev/cxgb/ulp/t3_tom/t3_tom.c#3 edit .. //depot/projects/opentoe/sys/dev/cxgb/ulp/t3_tom/t3_tom.h#3 edit .. //depot/projects/opentoe/sys/dev/cxgb/ulp/toecore/toe_offload.c#3 edit .. //depot/projects/opentoe/sys/dev/cxgb/ulp/toecore/toe_offload.h#4 edit Differences ... ==== //depot/projects/opentoe/sys/dev/cxgb/cxgb_l2t.h#6 (text+ko) ==== @@ -2,6 +2,7 @@ #define _CHELSIO_L2T_H #include +#include #include enum { ==== //depot/projects/opentoe/sys/dev/cxgb/ulp/t3_tom/t3_cpl_io.c#4 (text+ko) ==== @@ -10,11 +10,7 @@ 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. - - 3. Neither the name of the Chelsio Corporation nor the names of its + 2. Neither the name of the Chelsio Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. @@ -31,17 +27,47 @@ POSSIBILITY OF SUCH DAMAGE. ***************************************************************************/ -#include + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include #include -#include -#include +#include #include #include #include #include +#include #include -#include +#include + + + #define DEBUG_WR 0 @@ -75,11 +101,6 @@ static unsigned int mbuf_wrs[MAX_MBUF_IOV + 2] __read_mostly; /* - * Socket filter that drops everything by specifying a 0-length filter program. - */ -static struct sk_filter drop_all = { .refcnt = ATOMIC_INIT(1) }; - -/* * TOE information returned through inet_diag for offloaded connections. */ struct t3_inet_diag_info { @@ -100,9 +121,9 @@ process_cpl_msg_ref(void (*fn)(struct socket *, struct mbuf *), struct socket *so, struct mbuf *m) { - sock_hold(so); + soref_lock(so); process_cpl_msg(fn, so, m); - sock_put(so); + sorele_lock(so); } static inline int @@ -121,6 +142,7 @@ static struct mbuf * get_cpl_reply_mbuf(struct mbuf *m, size_t len) { +#ifdef notyet if (__predict_true(!skb_cloned(skb))) { BUG_ON(skb->len < len); __skb_trim(skb, len); @@ -131,6 +153,8 @@ __skb_put(skb, len); } return skb; +#endif + return (NULL); } /* @@ -139,12 +163,15 @@ static struct mbuf * __get_cpl_reply_mbuf(struct mbuf *m, size_t len) { +#ifdef notyet if (__predict_true(!skb_cloned(skb) && !skb->data_len)) { __skb_trim(skb, 0); skb_get(skb); } else skb = alloc_skb(len, gfp); return skb; +#endif + return (NULL); } /* @@ -158,8 +185,8 @@ send_or_defer(struct socket *so, struct tcpcb *tp, struct mbuf *m, int through_l2t) { - if (__predict_false(sk->sk_state == TCP_SYN_SENT)) - __skb_queue_tail(&tp->out_of_order_queue, m); // defer + if (__predict_false(tp->t_state == TCPS_SYN_SENT)) + mbufq_tail(T3_TOE(so)->out_of_order_queue, m); // defer else if (through_l2t) l2t_send(TOE_DEV(so), m, L2T_ENTRY(so)); // send through L2T else @@ -198,8 +225,8 @@ static inline void sk_insert_tid(struct tom_data *d, struct socket *so, unsigned int tid) { - sock_hold(sk); - cxgb_insert_tid(d->cdev, d->client, sk, tid); + soref_lock(so); + cxgb_insert_tid(d->cdev, d->client, so, tid); } /** @@ -226,18 +253,18 @@ unsigned int idx; struct tcpcb *tp = sototcpcb(so); struct dst_entry *dst = __sk_dst_get(sk); - struct tom_data *d = TOM_DATA(TOE_DEV(sk)); + struct tom_data *d = TOM_DATA(TOE_DEV(so)); const struct t3_data *td = TOE_DATA(d->cdev); - tp->advmss = dst_metric(dst, RTAX_ADVMSS); - if (USER_MSS(tp) && tp->advmss > USER_MSS(tp)) - tp->advmss = USER_MSS(tp); - if (tp->advmss > pmtu - 40) - tp->advmss = pmtu - 40; - if (tp->advmss < td->mtus[0] - 40) - tp->advmss = td->mtus[0] - 40; - idx = find_best_mtu(td, tp->advmss + 40); - tp->advmss = td->mtus[idx] - 40; + tp->t_maxseg = dst_metric(dst, RTAX_ADVMSS); + if (USER_MSS(tp) && tp->t_maxseg > USER_MSS(tp)) + tp->t_maxseg = USER_MSS(tp); + if (tp->t_maxseg > pmtu - 40) + tp->t_maxseg = pmtu - 40; + if (tp->t_maxseg < td->mtus[0] - 40) + tp->t_maxseg = td->mtus[0] - 40; + idx = find_best_mtu(td, tp->t_maxseg + 40); + tp->t_maxseg = td->mtus[idx] - 40; inet_csk(sk)->icsk_pmtu_cookie = pmtu; return idx; } @@ -252,13 +279,13 @@ return tid < t->ntids && !t->tid_tab[tid].ctx; } -#define VALIDATE_SOCK(sk) \ +#define VALIDATE_SOCK(so) \ do { \ - if (__predict_false(!(sk))) \ + if (__predict_false(!(so))) \ return CPL_RET_UNKNOWN_TID | CPL_RET_BUF_DONE; \ } while (0) #else -#define VALIDATE_SOCK(sk) do {} while (0) +#define VALIDATE_SOCK(so) do {} while (0) #endif /* @@ -271,21 +298,21 @@ connection_done(struct socket *so) { #if 0 - printk("connection_done: TID: %u, state: %d, dead %d, refs %d\n", + log("connection_done: TID: %u, state: %d, dead %d, refs %d\n", TID(sototcpcb(so)), sk->sk_state, sock_flag(sk, SOCK_DEAD), atomic_read(&sk->sk_refcnt)); // dump_stack(); #endif #ifdef T3_TRACE - T3_TRACE1(TIDTB(sk), + T3_TRACE1(TIDTB(so), "connection_done: GTS rpl pending %d, if pending wake", sock_flag(sk, ABORT_RPL_PENDING)); #endif if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) wake_up_all(sk->sk_sleep); - tcp_done(sk); + tcp_done(so); } /* @@ -320,7 +347,7 @@ } /* Returns bits 2:7 of a socket's TOS field */ -#define SK_TOS(sk) ((inet_sk(sk)->tos >> 2) & M_TOS) +#define SO_TOS(so) ((sotoinpcb(so)->inp_ip_tos >> 2) & M_TOS) /* * The next two functions calculate the option 0 value for a socket. @@ -330,9 +357,9 @@ { struct tcpcb *tp = sototcpcb(so); - return V_NAGLE((tp->nonagle & TCP_NAGLE_OFF) == 0) | - V_KEEP_ALIVE(sock_flag(so, SOCK_KEEPOPEN) != 0) | F_TCAM_BYPASS | - V_WND_SCALE(RCV_WSCALE(so)) | V_MSS_IDX(MTU_IDX(so)); + return V_NAGLE((tp->t_flags & TF_NODELAY) == 0) | + V_KEEP_ALIVE(!!(so->so_options & SO_KEEPALIVE)) | F_TCAM_BYPASS | + V_WND_SCALE(tp->rcv_scale) | V_MSS_IDX(MTU_IDX(so)); } static inline unsigned int @@ -340,14 +367,14 @@ { struct tcpcb *tp = sototcpcb(so); - return V_TOS(SK_TOS(so)) | V_ULP_MODE(ULP_MODE(so)) | + return V_TOS(SO_TOS(so)) | V_ULP_MODE(ULP_MODE(so)) | V_RCV_BUFSIZ(min(tp->rcv_wnd >> 10, (uint32_t)M_RCV_BUFSIZ)); } static inline unsigned int calc_opt2(const struct socket *so) { - const struct toedev *dev = TOE_DEV(sk); + const struct toedev *dev = TOE_DEV(so); int flv_valid = TOM_TUNABLE(dev, cong_alg) != -1; return V_FLAVORS_VALID(flv_valid) | @@ -420,13 +447,13 @@ } static inline void -free_wr_skb(struct mbuf *skb) +free_wr_skb(struct mbuf *m) { #if defined(CONFIG_T3_ZCOPY_SENDMSG) || defined(CONFIG_T3_ZCOPY_SENDMSG_MODULE) if (skb->data[0] == FW_WROPCODE_OFLD_TX_DATA) - t3_zcopy_cleanup_skb(skb); + t3_zcopy_cleanup_skb(m); #endif - kfree_skb(skb); + m_freem(m); } static void @@ -434,7 +461,7 @@ { struct mbuf *skb; while ((skb = dequeue_wr(tp)) != NULL) - free_wr_skb(skb); + free_wr_skb(m); } #define wr_queue_walk(tp, skb) \ @@ -467,19 +494,19 @@ skb->h.raw = skb->data; req = (struct tx_data_wr *)__skb_push(skb, sizeof(*req)); req->wr_hi = htonl(V_WR_OP(FW_WROPCODE_OFLD_TX_DATA)); - req->wr_lo = htonl(V_WR_TID(TID(tp))); + req->wr_lo = htonl(V_WR_TID(TID(so))); req->sndseq = htonl(tp->snd_nxt); /* len includes the length of any HW ULP additions */ req->len = htonl(len); - req->param = htonl(V_TX_PORT(L2T_ENTRY(sk)->smt_idx)); + req->param = htonl(V_TX_PORT(L2T_ENTRY(so)->smt_idx)); /* V_TX_ULP_SUBMODE sets both the mode and submode */ - req->flags = htonl(V_TX_ULP_SUBMODE(skb_ulp_mode(skb)) | - V_TX_URG(skb_urgent(skb)) | + req->flags = htonl(V_TX_ULP_SUBMODE(skb_ulp_mode(m)) | + V_TX_URG(skb_urgent(m)) | V_TX_SHOVE((!sock_flag(sk, TX_MORE_DATA)) && (skb_peek(&sk->sk_write_queue) ? 0 : 1))); if (!sock_flag(sk, TX_DATA_SENT)) { - req->flags |= htonl(F_TX_INIT | V_TX_CPU_IDX(qset(tp))); + req->flags |= htonl(F_TX_INIT | V_TX_CPU_IDX(qset(so))); /* * The send buffer size is in 32KB. In addition Linux doubles * what the user requested to account for header and mbuf @@ -518,10 +545,10 @@ if (__predict_false(sock_flag(sk, ABORT_SHUTDOWN))) return 0; - d = TOM_DATA(TOE_DEV(sk)); + d = TOM_DATA(TOE_DEV(so)); cdev = d->cdev; - while (WR_AVAIL(tp) && (skb = skb_peek(&sk->sk_write_queue)) != NULL && + while (WR_AVAIL(so) && (skb = skb_peek(&sk->sk_write_queue)) != NULL && !sock_flag(sk, TX_WAIT_IDLE) && (!(TCP_SKB_CB(skb)->flags & TCPCB_FLAG_HOLD) || skb_queue_len(&sk->sk_write_queue) > 1)) { @@ -531,18 +558,18 @@ int wrs_needed = skb_wrs[frags]; WARN_ON(frags >= ARRAY_SIZE(skb_wrs) || wrs_needed < 1); - if (WR_AVAIL(tp) < wrs_needed) + if (WR_AVAIL(so) < wrs_needed) break; __skb_unlink(skb, &sk->sk_write_queue); skb->priority = mkprio(CPL_PRIORITY_DATA, sk); skb->csum = wrs_needed; /* remember this until the WR_ACK */ - WR_AVAIL(tp) -= wrs_needed; - WR_UNACKED(tp) += wrs_needed; + WR_AVAIL(so) -= wrs_needed; + WR_UNACKED(so) += wrs_needed; enqueue_wr(tp, skb); if (__predict_true(TCP_SKB_CB(skb)->flags & TCPCB_FLAG_NEED_HDR)) { - len += ulp_extra_len(skb); + len += ulp_extra_len(m); make_tx_data_wr(sk, skb, len); tp->snd_nxt += len; tp->lsndtime = tcp_time_stamp; @@ -551,13 +578,13 @@ &d->tx_dma_pending); skb->sk = sk; #endif - if ((req_completion && WR_UNACKED(tp) == wrs_needed) || + if ((req_completion && WR_UNACKED(so) == wrs_needed) || (TCP_SKB_CB(skb)->flags & TCPCB_FLAG_COMPL) || - WR_UNACKED(tp) >= WR_MAX(tp) / 2) { - struct work_request_hdr *wr = cplhdr(skb); + WR_UNACKED(so) >= WR_MAX(so) / 2) { + struct work_request_hdr *wr = cplhdr(m); wr->wr_hi |= htonl(F_WR_COMPL); - WR_UNACKED(tp) = 0; + WR_UNACKED(so) = 0; } TCP_SKB_CB(skb)->flags &= ~TCPCB_FLAG_NEED_HDR; } else if (skb->data[0] == FW_WROPCODE_OFLD_CLOSE_CON) @@ -568,7 +595,7 @@ sock_set_flag(sk, TX_WAIT_IDLE); set_arp_failure_handler(skb, arp_failure_discard); - l2t_send(cdev, skb, L2T_ENTRY(sk)); + l2t_send(cdev, skb, L2T_ENTRY(so)); } sk->sk_wmem_queued -= total_size; return total_size; @@ -581,11 +608,12 @@ }; #endif -static inline void free_atid(struct toedev *cdev, unsigned int tid) +static inline void +free_atid(struct toedev *cdev, unsigned int tid) { struct socket *so = cxgb_free_atid(cdev, tid); - if (sk) - sock_put(sk); + if (so) + sorele_lock(so); } /* * Release resources held by an offload connection (TID, L2T entry, etc.) @@ -594,47 +622,47 @@ t3_release_offload_resources(struct socket *so) { struct tcpcb *tp = sototcpcb(so); - struct toedev *tdev = TOE_DEV(sk); + struct toedev *tdev = TOE_DEV(so); struct toedev *cdev; - unsigned int tid = TID(tp); + unsigned int tid = TID(so); if (!tdev) return; - cdev = TOE_DEV(sk); + cdev = TOE_DEV(so); if (!cdev) return; - qset(tp) = 0; - t3_release_ddp_resources(sk); + qset(so) = 0; + t3_release_ddp_resources(so); #ifdef CTRL_SKB_CACHE - kfree_skb(CTRL_SKB_CACHE(tp)); - CTRL_SKB_CACHE(tp) = NULL; + m_freem(CTRL_MBUF_CACHE(so)); + CTRL_MBUF_CACHE(so) = NULL; #endif - if (WR_AVAIL(tp) != WR_MAX(tp)) { + if (WR_AVAIL(so) != WR_MAX(so)) { purge_wr_queue(tp); reset_wr_list(tp); } - if (L2T_ENTRY(sk)) { - l2t_release(L2DATA(cdev), L2T_ENTRY(sk)); - L2T_ENTRY(sk) = NULL; + if (L2T_ENTRY(so)) { + l2t_release(L2DATA(cdev), L2T_ENTRY(so)); + L2T_ENTRY(so) = NULL; } - if (sk->sk_state == TCP_SYN_SENT) { // we have ATID + if (tp->t_state == TCPS_SYN_SENT) { // we have ATID free_atid(cdev, tid); - __skb_queue_purge(&tp->out_of_order_queue); + mbufq_purge(T3_TOE(so)->out_of_order_queue); } else { // we have TID - cxgb_remove_tid(cdev, (void *)sk, tid); - sock_put(sk); + cxgb_remove_tid(cdev, (void *)so, tid); + sorele_lock(so) } - t3_set_ca_ops(sk, &tcp_init_congestion_ops); - TOE_DEV(sk) = NULL; + t3_set_ca_ops(so, &tcp_init_congestion_ops); + TOE_DEV(so) = NULL; #if 0 - printk(KERN_INFO "closing TID %u, state %u\n", tid, sk->sk_state); + log(KERN_INFO "closing TID %u, state %u\n", tid, sk->sk_state); #endif } @@ -669,17 +697,17 @@ struct mbuf *p; struct tcpcb *tp = sototcpcb(so); - printk("TID %u info:\n", TID(tp)); + log("TID %u info:\n", TID(so)); skb_queue_walk(&sk->sk_write_queue, p) { d = cplhdr(p); - printk(" len %u, frags %u, flags %x, data %llx\n", + log(" len %u, frags %u, flags %x, data %llx\n", p->len, skb_shinfo(p)->nr_frags, TCP_SKB_CB(p)->flags, (unsigned long long)be64_to_cpu(*d)); } - printk("outstanding:\n"); + log("outstanding:\n"); wr_queue_walk(tp, p) { d = cplhdr(p); - printk(" len %u, frags %u, flags %x, data %llx,%llx,%llx\n", + log(" len %u, frags %u, flags %x, data %llx,%llx,%llx\n", p->len, skb_shinfo(p)->nr_frags, TCP_SKB_CB(p)->flags, (unsigned long long)be64_to_cpu(*d), (unsigned long long)be64_to_cpu(d[1]), @@ -703,10 +731,10 @@ { int pending = count_pending_wrs(tp); - if (__predict_false(WR_AVAIL(tp) + pending != WR_MAX(tp))) - printk(KERN_ERR "TID %u: credit imbalance: avail %u, " - "pending %u, total should be %u\n", TID(tp), - WR_AVAIL(tp), pending, WR_MAX(tp)); + if (__predict_false(WR_AVAIL(so) + pending != WR_MAX(so))) + log(LOG_ERR, "TID %u: credit imbalance: avail %u, " + "pending %u, total should be %u\n", TID(so), + WR_AVAIL(so), pending, WR_MAX(so)); } #endif @@ -715,10 +743,10 @@ { #if DEBUG_WR if (ext & (1 << (INET_DIAG_MEMINFO - 1))) { - bh_lock_sock(sk); - if (!sock_owned_by_user(sk)) - dump_wrs(sk); - bh_unlock_sock(sk); + SOCK_LOCK(so); + if (!sock_owned_by_user(so)) + dump_wrs(so); + SOCK_UNLOCK(so); } #endif @@ -730,11 +758,11 @@ rta = __RTA_PUT(skb, INET_DIAG_MAX + 1, sizeof(*info)); info = RTA_DATA(rta); info->toe_id = TOE_ID_CHELSIO_T3; - info->tid = TID(tp); - info->wrs = WR_MAX(tp) - WR_AVAIL(tp); - info->ulp_mode = ULP_MODE(tp); - info->ddp_enabled = DDP_STATE(tp) != NULL; - strcpy(info->dev_name, TOE_DEV(sk)->name); + info->tid = TID(so); + info->wrs = WR_MAX(so) - WR_AVAIL(so); + info->ulp_mode = ULP_MODE(so); + info->ddp_enabled = DDP_STATE(so) != NULL; + strcpy(info->dev_name, TOE_DEV(so)->name); rtattr_failure: ; } } @@ -757,15 +785,15 @@ req = (struct cpl_act_open_req *)__skb_put(skb, sizeof(*req)); req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD)); OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_ACT_OPEN_REQ, atid)); - req->local_port = inet_sk(sk)->sport; - req->peer_port = inet_sk(sk)->dport; - req->local_ip = inet_sk(sk)->saddr; - req->peer_ip = inet_sk(sk)->daddr; - req->opt0h = htonl(calc_opt0h(sk) | V_L2T_IDX(e->idx) | + req->local_port = sotoinpcb(so)->sport; + req->peer_port = sotoinpcb(so)->dport; + req->local_ip = sotoinpcb(so)->saddr; + req->peer_ip = sotoinpcb(so)->daddr; + req->opt0h = htonl(calc_opt0h(so) | V_L2T_IDX(e->idx) | V_TX_CHANNEL(e->smt_idx)); - req->opt0l = htonl(calc_opt0l(sk)); + req->opt0l = htonl(calc_opt0l(so)); req->params = 0; - req->opt2 = htonl(calc_opt2(sk)); + req->opt2 = htonl(calc_opt2(so)); } /* @@ -784,50 +812,52 @@ case CPL_ERR_TCAM_FULL: return ENOMEM; case CPL_ERR_CONN_EXIST: - printk(KERN_ERR "ACTIVE_OPEN_RPL: 4-tuple in use\n"); + log(LOG_ERR, "ACTIVE_OPEN_RPL: 4-tuple in use\n"); return EADDRINUSE; default: return EIO; } } -static void act_open_req_arp_failure(struct toedev *dev, struct mbuf *skb); +static void act_open_req_arp_failure(struct toedev *dev, struct mbuf *m); static void fail_act_open(struct socket *so, int errno) { sk->sk_err = errno; - sk->sk_error_report(sk); - t3_release_offload_resources(sk); - connection_done(sk); + sk->sk_error_report(so); + t3_release_offload_resources(so); + connection_done(so); TCP_INC_STATS_BH(TCP_MIB_ATTEMPTFAILS); } static void act_open_retry_timer(unsigned long data) { - struct mbuf *skb; + struct mbuf *m; struct socket *so = (struct socket *)data; struct inet_connection_sock *icsk = inet_csk(sk); - bh_lock_sock(sk); + SOCK_LOCK(so); if (sock_owned_by_user(sk)) /* try in a bit */ sk_reset_timer(sk, &icsk->icsk_retransmit_timer, jiffies + HZ / 20); else { - skb = alloc_skb(sizeof(struct cpl_act_open_req), GFP_ATOMIC); - if (!skb) - fail_act_open(sk, ENOMEM); + m = m_gethdr(M_NOWAIT, MT_DATA); + if (!m) + fail_act_open(so, ENOMEM); else { - skb->sk = sk; - set_arp_failure_handler(skb, act_open_req_arp_failure); - mk_act_open_req(sk, skb, TID(sototcpcb(so)), - L2T_ENTRY(sk)); - l2t_send(TOE_DEV(sk), skb, L2T_ENTRY(sk)); + m->m_pkthdr.priv = so; +#ifdef notyet + set_arp_failure_handler(m, act_open_req_arp_failure); +#endif + mk_act_open_req(so, m, TID(so), + L2T_ENTRY(so)); + l2t_send(TOE_DEV(so), m, L2T_ENTRY(so)); } } - bh_unlock_sock(sk); - sock_put(sk); + sorele(so); + SOCK_UNLOCK(so); } /* @@ -836,7 +866,7 @@ static void active_open_failed(struct socket *so, struct mbuf *m) { - struct cpl_act_open_rpl *rpl = cplhdr(skb); + struct cpl_act_open_rpl *rpl = cplhdr(m); struct inet_connection_sock *icsk = inet_csk(sk); if (rpl->status == CPL_ERR_CONN_EXIST && @@ -846,7 +876,7 @@ jiffies + HZ / 2); } else fail_act_open(sk, act_open_rpl_status_to_errno(rpl->status)); - __kfree_skb(skb); + m_freem(m); } /* @@ -873,7 +903,7 @@ if (cdev->type != T3A && act_open_has_tid(rpl->status)) cxgb_queue_tid_release(cdev, GET_TID(rpl)); - process_cpl_msg_ref(active_open_failed, sk, skb); + process_cpl_msg_ref(active_open_failed, sk, m); return 0; } @@ -885,16 +915,17 @@ * check SOCK_DEAD or sk->sk_sock. Or maybe generate the error here but don't * free the atid. Hmm. */ -static void act_open_req_arp_failure(struct toedev *dev, struct mbuf *skb) +static void +act_open_req_arp_failure(struct toedev *dev, struct mbuf *m) { - struct socket *so = skb->sk; + struct socket *so = m->m_pkthdr.priv; - sock_hold(sk); - bh_lock_sock(sk); - if (sk->sk_state == TCP_SYN_SENT || sk->sk_state == TCP_SYN_RECV) { + SOCK_LOCK(so); + soref(so); + if (tp->t_state == TCPS_SYN_SENT || sk->sk_state == TCP_SYN_RECV) { if (!sock_owned_by_user(sk)) { fail_act_open(sk, EHOSTUNREACH); - __kfree_skb(skb); + m_freem(m); } else { /* * Smart solution: Synthesize an ACTIVE_OPEN_RPL in the @@ -902,12 +933,12 @@ * are certain the mbuf is not shared. We also * don't bother trimming the buffer. */ - struct cpl_act_open_rpl *rpl = cplhdr(skb); + struct cpl_act_open_rpl *rpl = cplhdr(m); rpl->ot.opcode = CPL_ACT_OPEN_RPL; rpl->status = CPL_ERR_ARP_MISS; - SET_BLOG_CPL_HANDLER(skb, active_open_failed); - sk_add_backlog(sk, skb); + SET_BLOG_CPL_HANDLER(m, active_open_failed); + sk_add_backlog(sk, m); /* * XXX Make sure a PASS_ACCEPT_RPL behind us doesn't @@ -917,14 +948,15 @@ */ } } - bh_unlock_sock(sk); - sock_put(sk); + sorele(so); + SOCK_UNLOCK(so); } /* * Determine the receive window size for a socket. */ -static unsigned int select_rcv_wnd(struct socket *so) +static unsigned int +select_rcv_wnd(struct socket *so) { unsigned int wnd = tcp_full_space(sk); @@ -939,7 +971,8 @@ } #if defined(TCP_CONGESTION_CONTROL) -static void pivot_ca_ops(struct socket *so, int cong) +static void +pivot_ca_ops(struct socket *so, int cong) { struct inet_connection_sock *icsk = inet_csk(sk); @@ -956,25 +989,26 @@ * Assign offload parameters to some socket fields. This code is used by * both active and passive opens. */ -static inline void init_offload_sk(struct socket *so, struct toedev *dev, +static inline void +init_offload_so(struct socket *so, struct toedev *dev, unsigned int tid, struct l2t_entry *e, struct dst_entry *dst) { struct tcpcb *tp = sototcpcb(so); TOE_DEV(sk) = dev; - TID(tp) = tid; + TID(so) = tid; L2T_ENTRY(sk) = e; - WR_MAX(tp) = WR_AVAIL(tp) = TOM_TUNABLE(dev, max_wrs); - WR_UNACKED(tp) = 0; + WR_MAX(so) = WR_AVAIL(so) = TOM_TUNABLE(dev, max_wrs); + WR_UNACKED(so) = 0; DELACK_MODE(sk) = 0; - MTU_IDX(tp) = select_mss(sk, dst_mtu(dst)); + MTU_IDX(so) = select_mss(sk, dst_mtu(dst)); tp->rcv_wnd = select_rcv_wnd(sk); - ULP_MODE(tp) = TOM_TUNABLE(dev, ddp) && !sock_flag(sk, NO_DDP) && + ULP_MODE(so) = TOM_TUNABLE(dev, ddp) && !sock_flag(sk, NO_DDP) && tp->rcv_wnd >= MIN_DDP_RCV_WIN ? ULP_MODE_TCPDDP : 0; QSET_IDX(sk) = 0; #ifdef CTRL_SKB_CACHE - CTRL_SKB_CACHE(tp) = alloc_skb(CTRL_SKB_LEN, gfp_any()); + CTRL_SKB_CACHE(so) = alloc_skb(CTRL_SKB_LEN, gfp_any()); #endif reset_wr_list(tp); @@ -988,10 +1022,11 @@ /* * Send an active open request. */ -int t3_connect(struct toedev *tdev, struct socket *so, +int +t3_connect(struct toedev *tdev, struct socket *so, struct net_device *egress_dev) { - struct mbuf *skb; + struct mbuf *m; struct l2t_entry *e; struct tom_data *d = TOM_DATA(tdev); struct tcpcb *tp = sototcpcb(so); @@ -1005,26 +1040,25 @@ if (!e) goto free_tid; - skb = alloc_skb_nofail(sizeof(struct cpl_act_open_req)); - skb->sk = sk; - set_arp_failure_handler(skb, act_open_req_arp_failure); + m = alloc_mbuf_nofail(sizeof(struct cpl_act_open_req)); + m->m_pkthdr.priv = so; + set_arp_failure_handler(m, act_open_req_arp_failure); - sock_hold(sk); - - install_offload_ops(sk); + soref_lock(so); + + install_offload_ops(so); init_offload_sk(sk, tdev, atid, e, dst); - RCV_WSCALE(tp) = select_rcv_wscale(tcp_full_space(sk), + tp->rcv_scale) = select_rcv_wscale(tcp_full_space(sk), sysctl_tcp_window_scaling, tp->window_clamp); - sk->sk_err = 0; sock_reset_flag(sk, SOCK_DONE); TCP_INC_STATS(TCP_MIB_ACTIVEOPENS); - mk_act_open_req(sk, skb, atid, e); - l2t_send(d->cdev, skb, e); - if (ULP_MODE(tp)) - t3_enable_ddp(sk, 0); + mk_act_open_req(sk, m, atid, e); + l2t_send(d->cdev, m, e); + if (ULP_MODE(so)) + t3_enable_ddp(so, 0); return 0; free_tid: @@ -1037,12 +1071,13 @@ * Handle an ARP failure for a CPL_ABORT_REQ. Change it into a no RST variant * and send it along. */ -static void abort_arp_failure(struct toedev *cdev, struct mbuf *skb) +static void +abort_arp_failure(struct toedev *cdev, struct mbuf *m) { - struct cpl_abort_req *req = cplhdr(skb); + struct cpl_abort_req *req = cplhdr(m); req->cmd = CPL_ABORT_NO_RST; - cxgb_ofld_send(cdev, skb); + cxgb_ofld_send(cdev, m); } /* @@ -1051,20 +1086,24 @@ * not try to send a message after the connection has closed. Returns 1 if * an ABORT_REQ wasn't generated after all, 0 otherwise. */ -int t3_send_reset(struct socket *so, int mode, struct mbuf *skb) +int +t3_send_reset(struct socket *so, int mode, struct mbuf *m) { struct cpl_abort_req *req; struct tcpcb *tp = sototcpcb(so); - unsigned int tid = TID(tp); + unsigned int tid = TID(so); - if (__predict_false(sock_flag(sk, ABORT_SHUTDOWN) || !TOE_DEV(sk))) { - if (skb) - __kfree_skb(skb); + if (__predict_false(so->so_state == SS_DISCONNECTING || + so->so_state == SS_DISCONNECTED || !TOE_DEV(so))) { + if (m) + m_freem(m); return 1; } +#ifdef notyet sock_set_flag(sk, ABORT_RPL_PENDING); sock_set_flag(sk, ABORT_SHUTDOWN); +#endif /* Purge the send queue so we don't send anything after an abort. */ t3_purge_write_queue(sk); @@ -1072,25 +1111,26 @@ if (sock_flag(sk, CLOSE_CON_REQUESTED) && is_t3a(TOE_DEV(sk))) mode |= CPL_ABORT_POST_CLOSE_REQ; - if (!skb) - skb = alloc_skb_nofail(sizeof(*req)); - skb->priority = mkprio(CPL_PRIORITY_DATA, sk); - set_arp_failure_handler(skb, abort_arp_failure); - - req = (struct cpl_abort_req *)skb_put(skb, sizeof(*req)); + if (!m) + m = alloc_mbuf_nofail(sizeof(*req)); + m->m_priority = mkprio(CPL_PRIORITY_DATA, so); +#ifdef notyet + set_arp_failure_handler(m, abort_arp_failure); +#endif + MH_ALIGN(m, sizeof(*req)); + req = mtod(m, struct cpl_abort_req *); req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_OFLD_HOST_ABORT_CON_REQ)); req->wr.wr_lo = htonl(V_WR_TID(tid)); OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_ABORT_REQ, tid)); req->rsvd0 = htonl(tp->snd_nxt); req->rsvd1 = !sock_flag(sk, TX_DATA_SENT); req->cmd = mode; - if (sk->sk_state == TCP_SYN_SENT) - __skb_queue_tail(&tp->out_of_order_queue, skb); // defer + if (tp->t_state == TCPS_SYN_SENT) + mbufq_tail(T3_TOE(so)->out_of_order_queue, m); // defer else - l2t_send(TOE_DEV(sk), skb, L2T_ENTRY(sk)); + l2t_send(TOE_DEV(so), m, L2T_ENTRY(so)); return 0; } -EXPORT_SYMBOL(t3_send_reset); /* * Reset a connection that is on a listener's SYN queue or accept queue, @@ -1099,23 +1139,23 @@ * * Modeled after code in inet_csk_listen_stop(). */ -static void reset_listen_child(struct socket *child) +static void +reset_listen_child(struct socket *child) { - struct mbuf *skb = alloc_skb_nofail(sizeof(struct cpl_abort_req)); + struct mbuf *m = alloc_mbuf_nofail(sizeof(struct cpl_abort_req)); + - sock_hold(child); // need to survive past inet_csk_destroy_sock() - local_bh_disable(); - bh_lock_sock(child); + SOCK_LOCK(child); + soref(child); - t3_send_reset(child, CPL_ABORT_SEND_RST, skb); + t3_send_reset(child, CPL_ABORT_SEND_RST, m); sock_orphan(child); INC_ORPHAN_COUNT(child); if (child->sk_state == TCP_CLOSE) inet_csk_destroy_sock(child); + sorele_lock(child); - bh_unlock_sock(child); - local_bh_enable(); - sock_put(child); + SOCK_UNLOCK(child); } /* @@ -1130,77 +1170,88 @@ /* * Process the reap list. */ -DECLARE_TASK_FUNC(process_reap_list, task_param) +static void +reap_list_proc(void *data, int npending) { + struct socket *so; + mtx_lock(&reap_list_lock); - while (reap_list) { - struct socket *so = reap_list; - - reap_list = sk->sk_user_data; - sk->sk_user_data = NULL; + while (!TAILQ_EMPTY(reap_list->so_incomp)) { + so = TAILQ_HEAD(&reap_list->so_incomp, so_list); + TAILQ_REMOVE_HEAD(&reap_list->so_incomp, so_list); mtx_unlock(&reap_list_lock); - reset_listen_child(sk); + /* + * XXX BSD equiv? + */ + reset_listen_child(so); mtx_lock(&reap_list_lock); } + so = reap_list; + reap_list = NULL; mtx_unlock(&reap_list_lock); + reset_listen_child(so); + } -static T3_DECLARE_WORK(reap_task, process_reap_list, NULL); - /* * Add a socket to the reap list and schedule a work request to process it. * We thread sockets through their sk_user_data pointers. May be called * from softirq context and any associated open request must have already * been freed. */ -static void add_to_reap_list(struct socket *so) +static void +add_to_reap_list(struct socket *so) { - BUG_ON(sk->sk_user_data); + release_tcp_port(so); // release the port immediately, it may be reused - release_tcp_port(sk); // release the port immediately, it may be reused - mtx_lock(&reap_list_lock); - sk->sk_user_data = reap_list; - reap_list = sk; - if (!sk->sk_user_data) - schedule_work(&reap_task); + if (reap_list == NULL) >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sun May 6 11:33:20 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9B2B116A409; Sun, 6 May 2007 11:33:20 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3D0AE16A408 for ; Sun, 6 May 2007 11:33:20 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2B84A13C457 for ; Sun, 6 May 2007 11:33:20 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46BXK2o079986 for ; Sun, 6 May 2007 11:33:20 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46BXGPn079978 for perforce@freebsd.org; Sun, 6 May 2007 11:33:16 GMT (envelope-from zec@FreeBSD.org) Date: Sun, 6 May 2007 11:33:16 GMT Message-Id: <200705061133.l46BXGPn079978@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 119324 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 11:33:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=119324 Change 119324 by zec@zec_tca51 on 2007/05/06 11:32:18 IFC Affected files ... .. //depot/projects/vimage/src/sys/amd64/amd64/local_apic.c#4 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/mptable_pci.c#4 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/msi.c#3 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/nexus.c#4 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/pmap.c#5 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/vm_machdep.c#2 integrate .. //depot/projects/vimage/src/sys/amd64/include/intr_machdep.h#4 integrate .. //depot/projects/vimage/src/sys/amd64/include/vmparam.h#3 integrate .. //depot/projects/vimage/src/sys/amd64/pci/pci_bus.c#4 integrate .. //depot/projects/vimage/src/sys/arm/include/vmparam.h#2 integrate .. //depot/projects/vimage/src/sys/arm/xscale/i80321/ep80219_machdep.c#3 integrate .. //depot/projects/vimage/src/sys/arm/xscale/i80321/iq31244_machdep.c#3 integrate .. //depot/projects/vimage/src/sys/arm/xscale/ixp425/avila_machdep.c#4 integrate .. //depot/projects/vimage/src/sys/boot/common/loader.8#3 integrate .. //depot/projects/vimage/src/sys/cam/cam_xpt.c#6 integrate .. //depot/projects/vimage/src/sys/cam/scsi/scsi_da.c#6 integrate .. //depot/projects/vimage/src/sys/compat/freebsd32/freebsd32_misc.c#3 integrate .. //depot/projects/vimage/src/sys/compat/linprocfs/linprocfs.c#8 integrate .. //depot/projects/vimage/src/sys/compat/opensolaris/kern/opensolaris_kobj.c#2 integrate .. //depot/projects/vimage/src/sys/compat/opensolaris/kern/opensolaris_misc.c#2 integrate .. //depot/projects/vimage/src/sys/compat/opensolaris/kern/opensolaris_vfs.c#2 integrate .. //depot/projects/vimage/src/sys/compat/opensolaris/sys/misc.h#2 integrate .. //depot/projects/vimage/src/sys/compat/opensolaris/sys/sunddi.h#1 branch .. //depot/projects/vimage/src/sys/compat/opensolaris/sys/types.h#2 integrate .. //depot/projects/vimage/src/sys/compat/opensolaris/sys/vnode.h#2 integrate .. //depot/projects/vimage/src/sys/conf/files#8 integrate .. //depot/projects/vimage/src/sys/conf/kern.pre.mk#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/dnlc.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/gfs.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/arc.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/spa.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/spa_config.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/vdev.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zap.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zil.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zio.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zvol.c#2 integrate .. //depot/projects/vimage/src/sys/dev/acpi_support/acpi_ibm.c#3 integrate .. //depot/projects/vimage/src/sys/dev/acpica/acpi.c#4 integrate .. //depot/projects/vimage/src/sys/dev/acpica/acpi_pcib_acpi.c#4 integrate .. //depot/projects/vimage/src/sys/dev/acpica/acpi_pcib_pci.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ata/ata-disk.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ata/atapi-cam.c#4 integrate .. //depot/projects/vimage/src/sys/dev/ath/if_ath.c#8 integrate .. //depot/projects/vimage/src/sys/dev/bce/if_bce.c#6 integrate .. //depot/projects/vimage/src/sys/dev/bce/if_bcefw.h#2 integrate .. //depot/projects/vimage/src/sys/dev/bce/if_bcereg.h#3 integrate .. //depot/projects/vimage/src/sys/dev/bge/if_bge.c#6 integrate .. //depot/projects/vimage/src/sys/dev/bge/if_bgereg.h#6 integrate .. //depot/projects/vimage/src/sys/dev/ciss/ciss.c#4 integrate .. //depot/projects/vimage/src/sys/dev/ciss/cissvar.h#2 integrate .. //depot/projects/vimage/src/sys/dev/cxgb/cxgb_main.c#3 integrate .. //depot/projects/vimage/src/sys/dev/cxgb/cxgb_sge.c#3 integrate .. //depot/projects/vimage/src/sys/dev/em/LICENSE#2 integrate .. //depot/projects/vimage/src/sys/dev/em/README#2 integrate .. //depot/projects/vimage/src/sys/dev/em/e1000_80003es2lan.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_80003es2lan.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82540.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82541.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82541.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82542.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82543.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82543.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82571.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82571.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82575.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82575.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_api.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_api.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_defines.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_hw.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_ich8lan.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_ich8lan.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_mac.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_mac.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_manage.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_manage.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_nvm.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_nvm.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_osdep.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_phy.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_phy.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_regs.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/if_em.c#3 integrate .. //depot/projects/vimage/src/sys/dev/em/if_em.h#2 integrate .. //depot/projects/vimage/src/sys/dev/em/if_em_hw.c#2 delete .. //depot/projects/vimage/src/sys/dev/em/if_em_hw.h#2 delete .. //depot/projects/vimage/src/sys/dev/em/if_em_osdep.h#2 delete .. //depot/projects/vimage/src/sys/dev/firewire/firewire.c#4 integrate .. //depot/projects/vimage/src/sys/dev/firewire/firewire.h#2 integrate .. //depot/projects/vimage/src/sys/dev/firewire/firewirereg.h#3 integrate .. //depot/projects/vimage/src/sys/dev/firewire/fwdev.c#4 integrate .. //depot/projects/vimage/src/sys/dev/firewire/fwohci.c#3 integrate .. //depot/projects/vimage/src/sys/dev/firewire/fwohcireg.h#2 integrate .. //depot/projects/vimage/src/sys/dev/firewire/if_fwip.c#4 integrate .. //depot/projects/vimage/src/sys/dev/firewire/sbp.c#4 integrate .. //depot/projects/vimage/src/sys/dev/firewire/sbp_targ.c#4 integrate .. //depot/projects/vimage/src/sys/dev/gem/if_gem.c#3 integrate .. //depot/projects/vimage/src/sys/dev/gem/if_gem_pci.c#3 integrate .. //depot/projects/vimage/src/sys/dev/gem/if_gemvar.h#3 integrate .. //depot/projects/vimage/src/sys/dev/hme/if_hme.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ipmi/ipmi_smbios.c#2 integrate .. //depot/projects/vimage/src/sys/dev/isp/isp.c#7 integrate .. //depot/projects/vimage/src/sys/dev/isp/isp_freebsd.c#7 integrate .. //depot/projects/vimage/src/sys/dev/isp/isp_freebsd.h#5 integrate .. //depot/projects/vimage/src/sys/dev/isp/isp_pci.c#6 integrate .. //depot/projects/vimage/src/sys/dev/isp/isp_sbus.c#6 integrate .. //depot/projects/vimage/src/sys/dev/isp/isp_tpublic.h#4 integrate .. //depot/projects/vimage/src/sys/dev/led/led.c#2 integrate .. //depot/projects/vimage/src/sys/dev/led/led.h#2 integrate .. //depot/projects/vimage/src/sys/dev/mii/brgphy.c#8 integrate .. //depot/projects/vimage/src/sys/dev/mii/mii.c#3 integrate .. //depot/projects/vimage/src/sys/dev/mpt/mpt.c#4 integrate .. //depot/projects/vimage/src/sys/dev/mpt/mpt.h#5 integrate .. //depot/projects/vimage/src/sys/dev/mpt/mpt_cam.c#7 integrate .. //depot/projects/vimage/src/sys/dev/mpt/mpt_cam.h#3 integrate .. //depot/projects/vimage/src/sys/dev/mpt/mpt_pci.c#5 integrate .. //depot/projects/vimage/src/sys/dev/mpt/mpt_raid.c#3 integrate .. //depot/projects/vimage/src/sys/dev/msk/if_msk.c#6 integrate .. //depot/projects/vimage/src/sys/dev/msk/if_mskreg.h#3 integrate .. //depot/projects/vimage/src/sys/dev/mxge/if_mxge.c#3 integrate .. //depot/projects/vimage/src/sys/dev/pci/pci.c#7 integrate .. //depot/projects/vimage/src/sys/dev/pci/pci_if.m#3 integrate .. //depot/projects/vimage/src/sys/dev/pci/pci_pci.c#4 integrate .. //depot/projects/vimage/src/sys/dev/pci/pci_private.h#4 integrate .. //depot/projects/vimage/src/sys/dev/pci/pcib_if.m#3 integrate .. //depot/projects/vimage/src/sys/dev/pci/pcib_private.h#5 integrate .. //depot/projects/vimage/src/sys/dev/pci/pcireg.h#5 integrate .. //depot/projects/vimage/src/sys/dev/pci/pcivar.h#4 integrate .. //depot/projects/vimage/src/sys/dev/sound/pci/emu10kx.c#4 integrate .. //depot/projects/vimage/src/sys/dev/sound/pci/hda/hdac.c#8 integrate .. //depot/projects/vimage/src/sys/dev/sound/pci/hda/hdac_private.h#4 integrate .. //depot/projects/vimage/src/sys/dev/sound/pci/ich.c#5 integrate .. //depot/projects/vimage/src/sys/dev/stge/if_stge.c#4 integrate .. //depot/projects/vimage/src/sys/dev/stge/if_stgereg.h#2 integrate .. //depot/projects/vimage/src/sys/dev/uart/uart_kbd_sun.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb/if_axe.c#3 integrate .. //depot/projects/vimage/src/sys/dev/usb/if_axereg.h#2 integrate .. //depot/projects/vimage/src/sys/dev/usb/if_ural.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb/uftdi.c#2 integrate .. //depot/projects/vimage/src/sys/dev/usb/usbdevs#4 integrate .. //depot/projects/vimage/src/sys/fs/devfs/devfs_devs.c#2 integrate .. //depot/projects/vimage/src/sys/fs/devfs/devfs_vnops.c#4 integrate .. //depot/projects/vimage/src/sys/fs/procfs/procfs_ioctl.c#3 integrate .. //depot/projects/vimage/src/sys/fs/procfs/procfs_map.c#3 integrate .. //depot/projects/vimage/src/sys/fs/pseudofs/pseudofs_vncache.c#5 integrate .. //depot/projects/vimage/src/sys/geom/geom.h#2 integrate .. //depot/projects/vimage/src/sys/geom/geom_dev.c#3 integrate .. //depot/projects/vimage/src/sys/geom/geom_disk.c#3 integrate .. //depot/projects/vimage/src/sys/geom/geom_disk.h#2 integrate .. //depot/projects/vimage/src/sys/geom/geom_io.c#3 integrate .. //depot/projects/vimage/src/sys/geom/geom_slice.c#2 integrate .. //depot/projects/vimage/src/sys/geom/geom_subr.c#2 integrate .. //depot/projects/vimage/src/sys/geom/part/g_part.c#2 integrate .. //depot/projects/vimage/src/sys/geom/uzip/g_uzip.c#3 integrate .. //depot/projects/vimage/src/sys/i386/i386/local_apic.c#4 integrate .. //depot/projects/vimage/src/sys/i386/i386/mptable_pci.c#4 integrate .. //depot/projects/vimage/src/sys/i386/i386/msi.c#3 integrate .. //depot/projects/vimage/src/sys/i386/i386/nexus.c#4 integrate .. //depot/projects/vimage/src/sys/i386/i386/pmap.c#5 integrate .. //depot/projects/vimage/src/sys/i386/i386/sys_machdep.c#2 integrate .. //depot/projects/vimage/src/sys/i386/i386/vm_machdep.c#3 integrate .. //depot/projects/vimage/src/sys/i386/include/intr_machdep.h#4 integrate .. //depot/projects/vimage/src/sys/i386/include/vmparam.h#3 integrate .. //depot/projects/vimage/src/sys/i386/pci/pci_bus.c#4 integrate .. //depot/projects/vimage/src/sys/ia64/ia64/machdep.c#4 integrate .. //depot/projects/vimage/src/sys/ia64/include/vmparam.h#3 integrate .. //depot/projects/vimage/src/sys/kern/kern_descrip.c#6 integrate .. //depot/projects/vimage/src/sys/kern/kern_linker.c#7 integrate .. //depot/projects/vimage/src/sys/kern/kern_time.c#3 integrate .. //depot/projects/vimage/src/sys/kern/kern_uuid.c#5 integrate .. //depot/projects/vimage/src/sys/kern/subr_rman.c#5 integrate .. //depot/projects/vimage/src/sys/kern/sys_generic.c#4 integrate .. //depot/projects/vimage/src/sys/kern/uipc_debug.c#2 integrate .. //depot/projects/vimage/src/sys/kern/uipc_sockbuf.c#3 integrate .. //depot/projects/vimage/src/sys/kern/uipc_socket.c#10 integrate .. //depot/projects/vimage/src/sys/kern/uipc_syscalls.c#8 integrate .. //depot/projects/vimage/src/sys/kern/vfs_bio.c#4 integrate .. //depot/projects/vimage/src/sys/kern/vfs_mount.c#5 integrate .. //depot/projects/vimage/src/sys/kern/vfs_syscalls.c#5 integrate .. //depot/projects/vimage/src/sys/modules/em/Makefile#2 integrate .. //depot/projects/vimage/src/sys/modules/zfs/Makefile#2 integrate .. //depot/projects/vimage/src/sys/net/ieee8023ad_lacp.c#2 integrate .. //depot/projects/vimage/src/sys/net/if.h#2 integrate .. //depot/projects/vimage/src/sys/net/if_lagg.c#2 integrate .. //depot/projects/vimage/src/sys/net/if_lagg.h#2 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_amrr.c#2 integrate .. //depot/projects/vimage/src/sys/netgraph/ng_l2tp.c#2 integrate .. //depot/projects/vimage/src/sys/netgraph/ng_mppc.c#2 integrate .. //depot/projects/vimage/src/sys/netinet/in_pcb.c#9 integrate .. //depot/projects/vimage/src/sys/netinet/in_pcb.h#7 integrate .. //depot/projects/vimage/src/sys/netinet/ip_divert.c#4 integrate .. //depot/projects/vimage/src/sys/netinet/ip_fw.h#6 integrate .. //depot/projects/vimage/src/sys/netinet/ip_fw2.c#13 integrate .. //depot/projects/vimage/src/sys/netinet/libalias/alias_proxy.c#4 integrate .. //depot/projects/vimage/src/sys/netinet/raw_ip.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp.h#3 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_auth.c#5 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_bsd_addr.c#5 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_constants.h#7 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_header.h#3 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_indata.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_indata.h#4 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_input.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_os_bsd.h#7 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_output.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_output.h#4 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_pcb.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_pcb.h#7 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_peeloff.c#6 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_structs.h#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_uio.h#6 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_usrreq.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctputil.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctputil.h#7 integrate .. //depot/projects/vimage/src/sys/netinet/tcp_debug.c#2 integrate .. //depot/projects/vimage/src/sys/netinet/tcp_input.c#10 integrate .. //depot/projects/vimage/src/sys/netinet/tcp_subr.c#14 integrate .. //depot/projects/vimage/src/sys/netinet/tcp_usrreq.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/tcp_var.h#8 integrate .. //depot/projects/vimage/src/sys/netinet/udp_usrreq.c#9 edit .. //depot/projects/vimage/src/sys/netinet6/in6_pcb.c#7 edit .. //depot/projects/vimage/src/sys/netinet6/in6_src.c#7 integrate .. //depot/projects/vimage/src/sys/netinet6/nd6.c#11 integrate .. //depot/projects/vimage/src/sys/netinet6/nd6_nbr.c#6 integrate .. //depot/projects/vimage/src/sys/netinet6/route6.c#4 integrate .. //depot/projects/vimage/src/sys/netinet6/sctp6_usrreq.c#8 integrate .. //depot/projects/vimage/src/sys/nfsclient/nfs_bio.c#2 integrate .. //depot/projects/vimage/src/sys/nfsclient/nfs_lock.c#2 integrate .. //depot/projects/vimage/src/sys/nfsclient/nfs_vnops.c#6 integrate .. //depot/projects/vimage/src/sys/nfsserver/nfs_syscalls.c#4 integrate .. //depot/projects/vimage/src/sys/pci/if_vr.c#4 integrate .. //depot/projects/vimage/src/sys/pci/if_vrreg.h#3 integrate .. //depot/projects/vimage/src/sys/powerpc/include/vmparam.h#2 integrate .. //depot/projects/vimage/src/sys/security/audit/audit_ioctl.h#2 integrate .. //depot/projects/vimage/src/sys/security/audit/audit_syscalls.c#5 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_audit.c#1 branch .. //depot/projects/vimage/src/sys/security/mac/mac_framework.h#4 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_inet.c#5 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_net.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_pipe.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_policy.h#4 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_process.c#3 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_socket.c#3 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_system.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_vfs.c#5 integrate .. //depot/projects/vimage/src/sys/security/mac_biba/mac_biba.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_bsdextended/mac_bsdextended.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_ifoff/mac_ifoff.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_lomac/mac_lomac.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_mls/mac_mls.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_partition/mac_partition.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_portacl/mac_portacl.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_seeotheruids/mac_seeotheruids.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_stub/mac_stub.c#5 integrate .. //depot/projects/vimage/src/sys/security/mac_test/mac_test.c#4 integrate .. //depot/projects/vimage/src/sys/sparc64/include/vmparam.h#3 integrate .. //depot/projects/vimage/src/sys/sparc64/sparc64/machdep.c#4 integrate .. //depot/projects/vimage/src/sys/sparc64/sparc64/upa.c#3 integrate .. //depot/projects/vimage/src/sys/sun4v/include/vmparam.h#3 integrate .. //depot/projects/vimage/src/sys/sys/disk.h#2 integrate .. //depot/projects/vimage/src/sys/sys/filedesc.h#3 integrate .. //depot/projects/vimage/src/sys/sys/ioctl_compat.h#2 integrate .. //depot/projects/vimage/src/sys/sys/mount.h#5 integrate .. //depot/projects/vimage/src/sys/sys/param.h#5 integrate .. //depot/projects/vimage/src/sys/sys/priv.h#4 integrate .. //depot/projects/vimage/src/sys/sys/proc.h#10 integrate .. //depot/projects/vimage/src/sys/sys/socketvar.h#5 integrate .. //depot/projects/vimage/src/sys/ufs/ffs/ffs_softdep.c#4 integrate .. //depot/projects/vimage/src/sys/vm/swap_pager.c#4 integrate .. //depot/projects/vimage/src/sys/vm/vm_map.c#3 integrate .. //depot/projects/vimage/src/sys/vm/vm_page.c#4 integrate .. //depot/projects/vimage/src/sys/vm/vm_page.h#3 integrate Differences ... ==== //depot/projects/vimage/src/sys/amd64/amd64/local_apic.c#4 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.37 2007/03/20 21:53:30 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.38 2007/04/25 19:58:41 ariff Exp $"); #include "opt_hwpmc_hooks.h" @@ -326,6 +326,29 @@ /* XXX: Error and thermal LVTs */ + if (strcmp(cpu_vendor, "AuthenticAMD") == 0) { + /* + * Detect the presence of C1E capability mostly on latest + * dual-cores (or future) k8 family. This feature renders + * the local APIC timer dead, so we disable it by reading + * the Interrupt Pending Message register and clearing both + * C1eOnCmpHalt (bit 28) and SmiOnCmpHalt (bit 27). + * + * Reference: + * "BIOS and Kernel Developer's Guide for AMD NPT + * Family 0Fh Processors" + * #32559 revision 3.00 + */ + if ((cpu_id & 0x00000f00) == 0x00000f00 && + (cpu_id & 0x0fff0000) >= 0x00040000) { + uint64_t msr; + + msr = rdmsr(0xc0010055); + if (msr & 0x18000000) + wrmsr(0xc0010055, msr & ~0x18000000ULL); + } + } + intr_restore(eflags); } ==== //depot/projects/vimage/src/sys/amd64/amd64/mptable_pci.c#4 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable_pci.c,v 1.7 2007/01/22 21:48:42 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable_pci.c,v 1.8 2007/05/02 17:50:34 jhb Exp $"); #include #include @@ -72,7 +72,7 @@ return (bus_generic_attach(dev)); } -/* Pass MSI alloc requests up to the nexus. */ +/* Pass MSI requests up to the nexus. */ static int mptable_hostb_alloc_msi(device_t pcib, device_t dev, int count, int maxcount, int *irqs) @@ -85,12 +85,22 @@ } static int -mptable_hostb_alloc_msix(device_t pcib, device_t dev, int index, int *irq) +mptable_hostb_alloc_msix(device_t pcib, device_t dev, int *irq) +{ + device_t bus; + + bus = device_get_parent(pcib); + return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, irq)); +} + +static int +mptable_hostb_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr, + uint32_t *data) { device_t bus; bus = device_get_parent(pcib); - return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, index, irq)); + return (PCIB_MAP_MSI(device_get_parent(bus), dev, irq, addr, data)); } static device_method_t mptable_hostb_methods[] = { @@ -120,8 +130,8 @@ DEVMETHOD(pcib_alloc_msi, mptable_hostb_alloc_msi), DEVMETHOD(pcib_release_msi, pcib_release_msi), DEVMETHOD(pcib_alloc_msix, mptable_hostb_alloc_msix), - DEVMETHOD(pcib_remap_msix, pcib_remap_msix), DEVMETHOD(pcib_release_msix, pcib_release_msix), + DEVMETHOD(pcib_map_msi, mptable_hostb_map_msi), { 0, 0 } }; @@ -177,8 +187,8 @@ DEVMETHOD(pcib_alloc_msi, pcib_alloc_msi), DEVMETHOD(pcib_release_msi, pcib_release_msi), DEVMETHOD(pcib_alloc_msix, pcib_alloc_msix), - DEVMETHOD(pcib_remap_msix, pcib_remap_msix), DEVMETHOD(pcib_release_msix, pcib_release_msix), + DEVMETHOD(pcib_map_msi, pcib_map_msi), {0, 0} }; ==== //depot/projects/vimage/src/sys/amd64/amd64/msi.c#3 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.4 2007/02/15 22:22:56 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.5 2007/05/02 17:50:34 jhb Exp $"); #include #include @@ -99,21 +99,20 @@ * assigned an ID by the system; however, a group will use the ID from * the first message. * - * For MSI-X, each message is isolated, and msi_index indicates the - * index of this message in the device's MSI-X table. + * For MSI-X, each message is isolated. */ struct msi_intsrc { struct intsrc msi_intsrc; device_t msi_dev; /* Owning device. (g) */ struct msi_intsrc *msi_first; /* First source in group. */ u_int msi_irq; /* IRQ cookie. */ - u_int msi_index; /* Index of this message. */ u_int msi_msix; /* MSI-X message. */ u_int msi_vector:8; /* IDT vector. */ u_int msi_cpu:8; /* Local APIC ID. (g) */ u_int msi_count:8; /* Messages in this group. (g) */ }; +static struct msi_intsrc *msi_create_source(u_int irq); static void msi_enable_source(struct intsrc *isrc); static void msi_disable_source(struct intsrc *isrc, int eoi); static void msi_eoi_source(struct intsrc *isrc); @@ -123,16 +122,10 @@ static int msi_config_intr(struct intsrc *isrc, enum intr_trigger trig, enum intr_polarity pol); static void msi_assign_cpu(struct intsrc *isrc, u_int apic_id); -static void msix_enable_intr(struct intsrc *isrc); -static int msix_source_pending(struct intsrc *isrc); -static void msix_assign_cpu(struct intsrc *isrc, u_int apic_id); struct pic msi_pic = { msi_enable_source, msi_disable_source, msi_eoi_source, msi_enable_intr, msi_vector, msi_source_pending, NULL, NULL, msi_config_intr, msi_assign_cpu }; -struct pic msix_pic = { msi_enable_source, msi_disable_source, msi_eoi_source, - msix_enable_intr, msi_vector, msix_source_pending, - NULL, NULL, msi_config_intr, msix_assign_cpu }; static int msi_enabled; static struct sx msi_sx; @@ -162,17 +155,6 @@ { struct msi_intsrc *msi = (struct msi_intsrc *)isrc; - /* - * Since we can only enable the entire group at once, go ahead and - * enable the messages when the first message is given a handler. - * Note that we assume all devices will register a handler for the - * first message. - */ - if (msi->msi_index == 0) { - mtx_lock_spin(&icu_lock); - pci_enable_msi(msi->msi_dev, INTEL_ADDR(msi), INTEL_DATA(msi)); - mtx_unlock_spin(&icu_lock); - } apic_enable_vector(msi->msi_vector); } @@ -206,51 +188,13 @@ msi->msi_cpu = apic_id; if (bootverbose) - printf("msi: Assigning MSI IRQ %d to local APIC %u\n", - msi->msi_irq, msi->msi_cpu); - mtx_lock_spin(&icu_lock); + printf("msi: Assigning %s IRQ %d to local APIC %u\n", + msi->msi_msix ? "MSI-X" : "MSI", msi->msi_irq, + msi->msi_cpu); if (isrc->is_enabled) - pci_enable_msi(msi->msi_dev, INTEL_ADDR(msi), INTEL_DATA(msi)); - mtx_unlock_spin(&icu_lock); + pci_remap_msi_irq(msi->msi_dev, msi->msi_irq); } -static void -msix_enable_intr(struct intsrc *isrc) -{ - struct msi_intsrc *msi = (struct msi_intsrc *)isrc; - - mtx_lock_spin(&icu_lock); - pci_enable_msix(msi->msi_dev, msi->msi_index, INTEL_ADDR(msi), - INTEL_DATA(msi)); - pci_unmask_msix(msi->msi_dev, msi->msi_index); - mtx_unlock_spin(&icu_lock); - apic_enable_vector(msi->msi_vector); -} - -static int -msix_source_pending(struct intsrc *isrc) -{ - struct msi_intsrc *msi = (struct msi_intsrc *)isrc; - - return (pci_pending_msix(msi->msi_dev, msi->msi_index)); -} - -static void -msix_assign_cpu(struct intsrc *isrc, u_int apic_id) -{ - struct msi_intsrc *msi = (struct msi_intsrc *)isrc; - - msi->msi_cpu = apic_id; - if (bootverbose) - printf("msi: Assigning MSI-X IRQ %d to local APIC %u\n", - msi->msi_irq, msi->msi_cpu); - mtx_lock_spin(&icu_lock); - if (isrc->is_enabled) - pci_enable_msix(msi->msi_dev, msi->msi_index, INTEL_ADDR(msi), - INTEL_DATA(msi)); - mtx_unlock_spin(&icu_lock); -} - void msi_init(void) { @@ -262,10 +206,21 @@ msi_enabled = 1; intr_register_pic(&msi_pic); - intr_register_pic(&msix_pic); sx_init(&msi_sx, "msi"); } +struct msi_intsrc * +msi_create_source(u_int irq) +{ + struct msi_intsrc *msi; + + msi = malloc(sizeof(struct msi_intsrc), M_MSI, M_WAITOK | M_ZERO); + msi->msi_intsrc.is_pic = &msi_pic; + msi->msi_irq = irq; + intr_register_source(&msi->msi_intsrc); + return (msi); +} + /* * Try to allocate 'count' interrupt sources with contiguous IDT values. If * we allocate any new sources, then their IRQ values will be at the end of @@ -317,14 +272,8 @@ *newcount = count - cnt; for (j = 0; j < *newcount; j++) { - /* Create a new MSI source. */ - msi = malloc(sizeof(struct msi_intsrc), M_MSI, - M_WAITOK | M_ZERO); - msi->msi_intsrc.is_pic = &msi_pic; - msi->msi_irq = i + j; - intr_register_source(&msi->msi_intsrc); - - /* Add it to our array. */ + /* Create a new MSI source and add it to our array. */ + msi_create_source(i + j); irqs[cnt] = i + j; cnt++; } @@ -344,13 +293,11 @@ 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_intsrc.is_pic = &msi_pic; 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_index = i; msi->msi_first = fsrc; /* XXX: Somewhat gross. */ @@ -395,8 +342,6 @@ sx_xunlock(&msi_sx); return (EINVAL); } - KASSERT(first->msi_index == 0, ("index mismatch")); - KASSERT(first->msi_dev != NULL, ("unowned group")); /* Clear all the extra messages in the group. */ @@ -408,7 +353,6 @@ msi->msi_dev = NULL; apic_free_vector(msi->msi_vector, msi->msi_irq); msi->msi_vector = 0; - msi->msi_index = 0; } /* Clear out the first message. */ @@ -423,7 +367,44 @@ } int -msix_alloc(device_t dev, int index, int *irq, int *new) +msi_map(int irq, uint64_t *addr, uint32_t *data) +{ + struct msi_intsrc *msi; + + sx_slock(&msi_sx); + msi = (struct msi_intsrc *)intr_lookup_source(irq); + if (msi == NULL) { + sx_sunlock(&msi_sx); + return (ENOENT); + } + + /* Make sure this message is allocated to a device. */ + if (msi->msi_dev == NULL) { + sx_sunlock(&msi_sx); + return (ENXIO); + } + + /* + * If this message isn't an MSI-X message, make sure it's part + * of a gruop, and switch to the first message in the + * group. + */ + if (!msi->msi_msix) { + if (msi->msi_first == NULL) { + sx_sunlock(&msi_sx); + return (ENXIO); + } + msi = msi->msi_first; + } + + *addr = INTEL_ADDR(msi); + *data = INTEL_DATA(msi); + sx_sunlock(&msi_sx); + return (0); +} + +int +msix_alloc(device_t dev, int *irq, int *new) { struct msi_intsrc *msi; int i, vector; @@ -457,11 +438,7 @@ /* Create a new source. */ *new = 1; - msi = malloc(sizeof(struct msi_intsrc), M_MSI, - M_WAITOK | M_ZERO); - msi->msi_intsrc.is_pic = &msix_pic; - msi->msi_irq = i; - intr_register_source(&msi->msi_intsrc); + msi = msi_create_source(i); } /* Allocate an IDT vector. */ @@ -471,10 +448,8 @@ vector); /* Setup source. */ - msi->msi_intsrc.is_pic = &msix_pic; msi->msi_dev = dev; msi->msi_vector = vector; - msi->msi_index = index; msi->msi_msix = 1; /* XXX: Somewhat gross. */ @@ -486,30 +461,6 @@ } int -msix_remap(int index, int irq) -{ - struct msi_intsrc *msi; - - sx_xlock(&msi_sx); - msi = (struct msi_intsrc *)intr_lookup_source(irq); - if (msi == NULL) { - sx_xunlock(&msi_sx); - return (ENOENT); - } - - /* Make sure this is an MSI-X message. */ - if (!msi->msi_msix) { - sx_xunlock(&msi_sx); - return (EINVAL); - } - - KASSERT(msi->msi_dev != NULL, ("unowned message")); - msi->msi_index = index; - sx_xunlock(&msi_sx); - return (0); -} - -int msix_release(int irq) { struct msi_intsrc *msi; @@ -533,7 +484,6 @@ msi->msi_dev = NULL; apic_free_vector(msi->msi_vector, msi->msi_irq); msi->msi_vector = 0; - msi->msi_index = 0; msi->msi_msix = 0; sx_xunlock(&msi_sx); ==== //depot/projects/vimage/src/sys/amd64/amd64/nexus.c#4 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.75 2007/03/21 15:36:38 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.76 2007/05/02 17:50:34 jhb Exp $"); /* * This code implements a `root nexus' for Intel Architecture @@ -108,9 +108,9 @@ static void nexus_delete_resource(device_t, device_t, int, int); static int nexus_alloc_msi(device_t pcib, device_t dev, int count, int maxcount, int *irqs); static int nexus_release_msi(device_t pcib, device_t dev, int count, int *irqs); -static int nexus_alloc_msix(device_t pcib, device_t dev, int index, int *irq); -static int nexus_remap_msix(device_t pcib, device_t dev, int index, int irq); +static int nexus_alloc_msix(device_t pcib, device_t dev, int *irq); static int nexus_release_msix(device_t pcib, device_t dev, int irq); +static int nexus_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr, uint32_t *data); static device_method_t nexus_methods[] = { /* Device interface */ @@ -140,8 +140,8 @@ DEVMETHOD(pcib_alloc_msi, nexus_alloc_msi), DEVMETHOD(pcib_release_msi, nexus_release_msi), DEVMETHOD(pcib_alloc_msix, nexus_alloc_msix), - DEVMETHOD(pcib_remap_msix, nexus_remap_msix), DEVMETHOD(pcib_release_msix, nexus_release_msix), + DEVMETHOD(pcib_map_msi, nexus_map_msi), { 0, 0 } }; @@ -504,24 +504,17 @@ } static int -nexus_alloc_msix(device_t pcib, device_t dev, int index, int *irq) +nexus_alloc_msix(device_t pcib, device_t dev, int *irq) { int error, new; - error = msix_alloc(dev, index, irq, &new); + error = msix_alloc(dev, irq, &new); if (new) rman_manage_region(&irq_rman, *irq, *irq); return (error); } static int -nexus_remap_msix(device_t pcib, device_t dev, int index, int irq) -{ - - return (msix_remap(index, irq)); -} - -static int nexus_release_msix(device_t pcib, device_t dev, int irq) { @@ -551,6 +544,13 @@ return (msi_release(irqs, count)); } +static int +nexus_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr, uint32_t *data) +{ + + return (msi_map(irq, addr, data)); +} + /* Placeholder for system RAM. */ static void ram_identify(driver_t *driver, device_t parent) ==== //depot/projects/vimage/src/sys/amd64/amd64/pmap.c#5 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.582 2007/04/13 16:07:29 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.584 2007/04/25 18:10:43 ups Exp $"); /* * Manages physical address maps. @@ -209,7 +209,7 @@ static vm_page_t pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, vm_page_t mpte); static int pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, - vm_offset_t sva, pd_entry_t ptepde); + vm_offset_t sva, pd_entry_t ptepde, vm_page_t *free); static void pmap_remove_page(pmap_t pmap, vm_offset_t va, pd_entry_t *pde); static void pmap_remove_entry(struct pmap *pmap, vm_page_t m, vm_offset_t va); @@ -221,8 +221,9 @@ static vm_page_t pmap_allocpte(pmap_t pmap, vm_offset_t va, int flags); static vm_page_t _pmap_allocpte(pmap_t pmap, vm_pindex_t ptepindex, int flags); -static int _pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m); -static int pmap_unuse_pt(pmap_t, vm_offset_t, pd_entry_t); +static int _pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m, + vm_page_t* free); +static int pmap_unuse_pt(pmap_t, vm_offset_t, pd_entry_t, vm_page_t *); static vm_offset_t pmap_kmem_choose(vm_offset_t addr); CTASSERT(1 << PDESHIFT == sizeof(pd_entry_t)); @@ -1065,24 +1066,36 @@ /*************************************************** * Page table page management routines..... ***************************************************/ +static PMAP_INLINE void +pmap_free_zero_pages(vm_page_t free) +{ + vm_page_t m; + while (free != NULL) { + m = free; + free = m->right; + vm_page_free_zero(m); + } +} + /* * This routine unholds page table pages, and if the hold count * drops to zero, then it decrements the wire count. */ static PMAP_INLINE int -pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m) +pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t *free) { --m->wire_count; if (m->wire_count == 0) - return _pmap_unwire_pte_hold(pmap, va, m); + return _pmap_unwire_pte_hold(pmap, va, m, free); else return 0; } static int -_pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m) +_pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m, + vm_page_t *free) { vm_offset_t pteva; @@ -1114,14 +1127,14 @@ vm_page_t pdpg; pdpg = PHYS_TO_VM_PAGE(*pmap_pdpe(pmap, va) & PG_FRAME); - pmap_unwire_pte_hold(pmap, va, pdpg); + pmap_unwire_pte_hold(pmap, va, pdpg, free); } if (m->pindex >= NUPDE && m->pindex < (NUPDE + NUPDPE)) { /* We just released a PD, unhold the matching PDP */ vm_page_t pdppg; pdppg = PHYS_TO_VM_PAGE(*pmap_pml4e(pmap, va) & PG_FRAME); - pmap_unwire_pte_hold(pmap, va, pdppg); + pmap_unwire_pte_hold(pmap, va, pdppg, free); } /* @@ -1130,7 +1143,13 @@ */ pmap_invalidate_page(pmap, pteva); - vm_page_free_zero(m); + /* + * Put page on a list so that it is released after + * *ALL* TLB shootdown is done + */ + m->right = *free; + *free = m; + atomic_subtract_int(&cnt.v_wire_count, 1); return 1; } @@ -1140,7 +1159,7 @@ * conditionally free the page, and manage the hold/wire counts. */ static int -pmap_unuse_pt(pmap_t pmap, vm_offset_t va, pd_entry_t ptepde) +pmap_unuse_pt(pmap_t pmap, vm_offset_t va, pd_entry_t ptepde, vm_page_t *free) { vm_page_t mpte; @@ -1148,7 +1167,7 @@ return 0; KASSERT(ptepde != 0, ("pmap_unuse_pt: ptepde != 0")); mpte = PHYS_TO_VM_PAGE(ptepde & PG_FRAME); - return pmap_unwire_pte_hold(pmap, va, mpte); + return pmap_unwire_pte_hold(pmap, va, mpte, free); } void @@ -1366,7 +1385,7 @@ { vm_pindex_t ptepindex; pd_entry_t *pd; - vm_page_t m; + vm_page_t m, free; KASSERT((flags & (M_NOWAIT | M_WAITOK)) == M_NOWAIT || (flags & (M_NOWAIT | M_WAITOK)) == M_WAITOK, @@ -1390,8 +1409,10 @@ *pd = 0; pd = 0; pmap->pm_stats.resident_count -= NBPDR / PAGE_SIZE; - pmap_unuse_pt(pmap, va, *pmap_pdpe(pmap, va)); + free = NULL; + pmap_unuse_pt(pmap, va, *pmap_pdpe(pmap, va), &free); pmap_invalidate_all(kernel_pmap); + pmap_free_zero_pages(free); } /* @@ -1609,7 +1630,7 @@ pt_entry_t *pte, tpte; pv_entry_t next_pv, pv; vm_offset_t va; - vm_page_t m; + vm_page_t m, free; TAILQ_FOREACH(m, &vpq->pl, pageq) { if (m->hold_count || m->busy) @@ -1635,12 +1656,14 @@ va, tpte)); vm_page_dirty(m); } + free = NULL; + pmap_unuse_pt(pmap, va, ptepde, &free); pmap_invalidate_page(pmap, va); + pmap_free_zero_pages(free); TAILQ_REMOVE(&m->md.pv_list, pv, pv_list); if (TAILQ_EMPTY(&m->md.pv_list)) vm_page_flag_clear(m, PG_WRITEABLE); m->md.pv_list_count--; - pmap_unuse_pt(pmap, va, ptepde); free_pv_entry(pmap, pv); if (pmap != locked_pmap) PMAP_UNLOCK(pmap); @@ -1833,7 +1856,8 @@ * pmap_remove_pte: do the things to unmap a page in a process */ static int -pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, vm_offset_t va, pd_entry_t ptepde) +pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, vm_offset_t va, + pd_entry_t ptepde, vm_page_t *free) { pt_entry_t oldpte; vm_page_t m; @@ -1861,7 +1885,7 @@ vm_page_flag_set(m, PG_REFERENCED); pmap_remove_entry(pmap, m, va); } - return (pmap_unuse_pt(pmap, va, ptepde)); + return (pmap_unuse_pt(pmap, va, ptepde, free)); } /* @@ -1871,6 +1895,7 @@ pmap_remove_page(pmap_t pmap, vm_offset_t va, pd_entry_t *pde) { pt_entry_t *pte; + vm_page_t free = NULL; PMAP_LOCK_ASSERT(pmap, MA_OWNED); if ((*pde & PG_V) == 0) @@ -1878,8 +1903,9 @@ pte = pmap_pde_to_pte(pde, va); if ((*pte & PG_V) == 0) return; - pmap_remove_pte(pmap, pte, va, *pde); + pmap_remove_pte(pmap, pte, va, *pde, &free); pmap_invalidate_page(pmap, va); + pmap_free_zero_pages(free); } /* @@ -1896,6 +1922,7 @@ pdp_entry_t *pdpe; pd_entry_t ptpaddr, *pde; pt_entry_t *pte; + vm_page_t free = NULL; int anyvalid; /* @@ -1959,7 +1986,7 @@ if ((ptpaddr & PG_PS) != 0) { *pde = 0; pmap->pm_stats.resident_count -= NBPDR / PAGE_SIZE; >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sun May 6 12:28:28 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 11C1A16A402; Sun, 6 May 2007 12:28:28 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A02B116A409 for ; Sun, 6 May 2007 12:28:27 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 905BB13C4AE for ; Sun, 6 May 2007 12:28:27 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46CSRUE090746 for ; Sun, 6 May 2007 12:28:27 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46CSRlt090743 for perforce@freebsd.org; Sun, 6 May 2007 12:28:27 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sun, 6 May 2007 12:28:27 GMT Message-Id: <200705061228.l46CSRlt090743@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 119326 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 12:28:28 -0000 http://perforce.freebsd.org/chv.cgi?CH=119326 Change 119326 by rdivacky@rdivacky_witten on 2007/05/06 12:28:12 Raceless linux_support.s for i386. This should be a final version. Submitted by: kib Affected files ... .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/linux/linux_support.s#3 edit Differences ... ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/linux/linux_support.s#3 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 1993 The Regents of the University of California. + * Copyright (c) 2006,2007 The FreeBSD Project * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -29,8 +29,8 @@ * $FreeBSD$ */ -#include "linux_assym.h" /* system definitions */ -#include /* miscellaneous asm macros */ +#include "linux_assym.h" /* system definitions */ +#include /* miscellaneous asm macros */ #include "assym.s" @@ -38,110 +38,94 @@ /* linux_futex support */ /*****************************************************************************/ -/* we return -EFAULT in a case of a fault */ +futex_fault_decx: + movl PCPU(CURPCB),%ecx futex_fault: movl $0,PCB_ONFAULT(%ecx) movl $-EFAULT,%eax ret ENTRY(futex_xchgl) - /* set fault address */ movl PCPU(CURPCB),%ecx movl $futex_fault,PCB_ONFAULT(%ecx) - movl 12(%esp),%ebx + movl 4(%esp),%eax + movl 8(%esp),%edx cmpl $VM_MAXUSER_ADDRESS-4,%edx ja futex_fault - movl 8(%esp),%edx - /* - * use now free eax and do: - * *oldval = *uaddr - */ - movl (%edx),%eax - movl %eax,(%ebx) - movl 4(%esp),%eax - - /* perform the operation */ -#ifdef SMP - lock -#endif xchgl %eax,(%edx) - /* and return 0 */ + movl 12(%esp),%edx + movl %eax,(%edx) xorl %eax,%eax - movl $0,PCB_ONFAULT(%ecx) + movl %eax,PCB_ONFAULT(%ecx) ret ENTRY(futex_addl) movl PCPU(CURPCB),%ecx movl $futex_fault,PCB_ONFAULT(%ecx) + movl 4(%esp),%eax movl 8(%esp),%edx cmpl $VM_MAXUSER_ADDRESS-4,%edx ja futex_fault - movl 12(%esp),%ebx - movl (%edx),%eax - movl %eax,(%ebx) - movl 4(%esp),%eax - #ifdef SMP lock #endif xaddl %eax,(%edx) + movl 12(%esp),%edx + movl %eax,(%edx) xorl %eax,%eax - movl $0,PCB_ONFAULT(%ecx) + movl %eax,PCB_ONFAULT(%ecx) ret ENTRY(futex_orl) movl PCPU(CURPCB),%ecx - movl $futex_fault,PCB_ONFAULT(%ecx) + movl $futex_fault_decx,PCB_ONFAULT(%ecx) movl 8(%esp),%edx cmpl $VM_MAXUSER_ADDRESS-4,%edx ja futex_fault - movl 12(%esp),%ebx movl (%edx),%eax - movl %eax,(%ebx) - movl 4(%esp),%eax - +1: movl %eax,%ecx + orl 4(%esp),%ecx #ifdef SMP lock #endif - orl %eax,(%edx) + cmpxchgl %ecx,(%edx) + jnz 1b +futex_tail: + movl 12(%esp),%edx + movl %eax,(%edx) xorl %eax,%eax - movl $0,PCB_ONFAULT(%ecx) + movl PCPU(CURPCB),%ecx + movl %eax,PCB_ONFAULT(%ecx) ret ENTRY(futex_andl) movl PCPU(CURPCB),%ecx - movl $futex_fault,PCB_ONFAULT(%ecx) + movl $futex_fault_decx,PCB_ONFAULT(%ecx) movl 8(%esp),%edx cmpl $VM_MAXUSER_ADDRESS-4,%edx ja futex_fault - movl 12(%esp),%ebx movl (%edx),%eax - movl %eax,(%ebx) - movl 4(%esp),%eax - +1: movl %eax,%ecx + andl 4(%esp),%ecx #ifdef SMP lock #endif - andl %eax,(%edx) - xorl %eax,%eax - movl $0,PCB_ONFAULT(%ecx) - ret + cmpxchgl %ecx,(%edx) + jnz 1b + jmp futex_tail ENTRY(futex_xorl) movl PCPU(CURPCB),%ecx - movl $futex_fault,PCB_ONFAULT(%ecx) + movl $futex_fault_decx,PCB_ONFAULT(%ecx) movl 8(%esp),%edx cmpl $VM_MAXUSER_ADDRESS-4,%edx ja futex_fault - movl 12(%esp),%ebx movl (%edx),%eax - movl %eax,(%ebx) - movl 4(%esp),%eax - +1: movl %eax,%ecx + xorl 4(%esp),%ecx #ifdef SMP lock #endif - xorl %eax,(%edx) - xorl %eax,%eax - movl $0,PCB_ONFAULT(%ecx) - ret + cmpxchgl %ecx,(%edx) + jnz 1b + jmp futex_tail From owner-p4-projects@FreeBSD.ORG Sun May 6 12:29:29 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BB27716A406; Sun, 6 May 2007 12:29:29 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9979316A400 for ; Sun, 6 May 2007 12:29:29 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 89DAE13C457 for ; Sun, 6 May 2007 12:29:29 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46CTTi3090830 for ; Sun, 6 May 2007 12:29:29 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46CTTh0090827 for perforce@freebsd.org; Sun, 6 May 2007 12:29:29 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sun, 6 May 2007 12:29:29 GMT Message-Id: <200705061229.l46CTTh0090827@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 119327 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 12:29:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=119327 Change 119327 by rdivacky@rdivacky_witten on 2007/05/06 12:28:50 Include linux[32]_suport.s in files.arch to make the kernel build proceed. Pointed out by: kib Affected files ... .. //depot/projects/soc2007/rdivacky/linux_futex/sys/conf/files.amd64#2 edit .. //depot/projects/soc2007/rdivacky/linux_futex/sys/conf/files.i386#2 edit Differences ... ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/conf/files.amd64#2 (text+ko) ==== @@ -231,6 +231,7 @@ amd64/linux32/linux32_locore.s optional compat_linux32 \ dependency "linux32_assym.h" amd64/linux32/linux32_machdep.c optional compat_linux32 +amd64/linux32/linux32_support.s optional compat_linux32 amd64/linux32/linux32_sysent.c optional compat_linux32 amd64/linux32/linux32_sysvec.c optional compat_linux32 compat/linux/linux_emul.c optional compat_linux32 ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/conf/files.i386#2 (text+ko) ==== @@ -345,6 +345,7 @@ dependency "linux_assym.h" i386/linux/linux_machdep.c optional compat_linux i386/linux/linux_ptrace.c optional compat_linux +i386/linux/linux_support.s optional compat_linux i386/linux/linux_sysent.c optional compat_linux i386/linux/linux_sysvec.c optional compat_linux i386/pci/pci_bus.c optional pci From owner-p4-projects@FreeBSD.ORG Sun May 6 12:49:55 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id F0FDF16A404; Sun, 6 May 2007 12:49:54 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C79AA16A402 for ; Sun, 6 May 2007 12:49:54 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id B7E7F13C458 for ; Sun, 6 May 2007 12:49:54 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46Cns4J002411 for ; Sun, 6 May 2007 12:49:54 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46CnsMI002408 for perforce@freebsd.org; Sun, 6 May 2007 12:49:54 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sun, 6 May 2007 12:49:54 GMT Message-Id: <200705061249.l46CnsMI002408@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 119328 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 12:49:55 -0000 http://perforce.freebsd.org/chv.cgi?CH=119328 Change 119328 by rdivacky@rdivacky_witten on 2007/05/06 12:49:50 Replace Giant with our own sx lock. There is no point in using Giant. The locking might need some review but it should be safe as it is (just inefficient). Affected files ... .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/linux32/linux32_sysvec.c#2 edit .. //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/linux/linux_futex.c#5 edit .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/linux/linux_sysvec.c#2 edit Differences ... ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/linux32/linux32_sysvec.c#2 (text+ko) ==== @@ -125,6 +125,7 @@ extern LIST_HEAD(futex_list, futex) futex_list; extern struct sx futex_sx; +extern struct sx futex_lock; static eventhandler_tag linux_exit_tag; static eventhandler_tag linux_schedtail_tag; @@ -1084,7 +1085,8 @@ mtx_init(&emul_lock, "emuldata lock", NULL, MTX_DEF); sx_init(&emul_shared_lock, "emuldata->shared lock"); LIST_INIT(&futex_list); - sx_init(&futex_sx, "futex protection lock"); + sx_init(&futex_sx, "futex list protection lock"); + sx_init(&futex_lock, "futex protection lock"); linux_exit_tag = EVENTHANDLER_REGISTER(process_exit, linux_proc_exit, NULL, 1000); linux_schedtail_tag = EVENTHANDLER_REGISTER(schedtail, linux_schedtail, @@ -1115,6 +1117,7 @@ mtx_destroy(&emul_lock); sx_destroy(&emul_shared_lock); sx_destroy(&futex_sx); + sx_destroy(&futex_lock); EVENTHANDLER_DEREGISTER(process_exit, linux_exit_tag); EVENTHANDLER_DEREGISTER(schedtail, linux_schedtail_tag); EVENTHANDLER_DEREGISTER(process_exec, linux_exec_tag); ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/linux/linux_futex.c#5 (text+ko) ==== @@ -75,6 +75,7 @@ LIST_HEAD(futex_list, futex) futex_list; struct sx futex_sx; /* this protects the LIST of futexes */ +struct sx futex_lock; #define FUTEX_LOCK sx_xlock(&futex_sx) #define FUTEX_UNLOCK sx_xunlock(&futex_sx) @@ -82,8 +83,8 @@ #define FUTEX_LOCKED 1 #define FUTEX_UNLOCKED 0 -#define FUTEX_SYSTEM_LOCK mtx_lock(&Giant) -#define FUTEX_SYSTEM_UNLOCK mtx_unlock(&Giant) +#define FUTEX_SYSTEM_LOCK sx_xlock(&futex_lock) +#define FUTEX_SYSTEM_UNLOCK sx_xunlock(&futex_lock) static struct futex *futex_get(void *, int); static void futex_put(struct futex *); @@ -390,7 +391,7 @@ printf("FUTEX --> %d tlseep timeout = %ld\n", td->td_proc->p_pid, timeout); #endif - ret = tsleep(wp, PCATCH | PZERO, "linuxfutex", timeout); + ret = sx_sleep(wp, &futex_lock, PCATCH | PZERO, "linuxfutex", timeout); #ifdef DEBUG if (ldebug(sys_futex)) printf("FUTEX -> %d tsleep returns %d\n", ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/linux/linux_sysvec.c#2 (text+ko) ==== @@ -109,6 +109,7 @@ extern LIST_HEAD(futex_list, futex) futex_list; extern struct sx futex_sx; +extern struct sx futex_lock; static eventhandler_tag linux_exit_tag; static eventhandler_tag linux_schedtail_tag; @@ -920,7 +921,8 @@ mtx_init(&emul_lock, "emuldata lock", NULL, MTX_DEF); sx_init(&emul_shared_lock, "emuldata->shared lock"); LIST_INIT(&futex_list); - sx_init(&futex_sx, "futex protection lock"); + sx_init(&futex_sx, "futex list protection lock"); + sx_init(&futex_lock, "futex protection lock"); linux_exit_tag = EVENTHANDLER_REGISTER(process_exit, linux_proc_exit, NULL, 1000); linux_schedtail_tag = EVENTHANDLER_REGISTER(schedtail, linux_schedtail, @@ -951,6 +953,7 @@ mtx_destroy(&emul_lock); sx_destroy(&emul_shared_lock); sx_destroy(&futex_sx); + sx_destroy(&futex_lock); EVENTHANDLER_DEREGISTER(process_exit, linux_exit_tag); EVENTHANDLER_DEREGISTER(schedtail, linux_schedtail_tag); EVENTHANDLER_DEREGISTER(process_exec, linux_exec_tag); From owner-p4-projects@FreeBSD.ORG Sun May 6 13:25:12 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0A6C416A407; Sun, 6 May 2007 13:25:12 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id BAC3816A400 for ; Sun, 6 May 2007 13:25:11 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 92F1313C44C for ; Sun, 6 May 2007 13:25:11 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46DPBJM009651 for ; Sun, 6 May 2007 13:25:11 GMT (envelope-from rpaulo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46DPBDm009648 for perforce@freebsd.org; Sun, 6 May 2007 13:25:11 GMT (envelope-from rpaulo@FreeBSD.org) Date: Sun, 6 May 2007 13:25:11 GMT Message-Id: <200705061325.l46DPBDm009648@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rpaulo@FreeBSD.org using -f From: Rui Paulo To: Perforce Change Reviews Cc: Subject: PERFORCE change 119331 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 13:25:12 -0000 http://perforce.freebsd.org/chv.cgi?CH=119331 Change 119331 by rpaulo@rpaulo_epsilon on 2007/05/06 13:24:13 Forced commit to explain the past two revisions. Revision 119238 should be: On some machines we need to evaluate _OSC so that _PSS shows up. In this particular case, Apple's MacBook. Reviewed by: Nate Lawson Approved by: Nate Lawson Revision 119261 should be: Forced commit to kill an empty line. Noticed by: Nate Lawson Affected files ... .. //depot/projects/soc2007/rpaulo-macbook/dev/acpica/acpi_cpu.c#4 edit Differences ... ==== //depot/projects/soc2007/rpaulo-macbook/dev/acpica/acpi_cpu.c#4 (text+ko) ==== From owner-p4-projects@FreeBSD.ORG Sun May 6 14:48:58 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A9D4316A404; Sun, 6 May 2007 14:48:58 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 804B616A402 for ; Sun, 6 May 2007 14:48:58 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 713B513C4C1 for ; Sun, 6 May 2007 14:48:58 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46EmwXX024577 for ; Sun, 6 May 2007 14:48:58 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46EmwPX024574 for perforce@freebsd.org; Sun, 6 May 2007 14:48:58 GMT (envelope-from zec@FreeBSD.org) Date: Sun, 6 May 2007 14:48:58 GMT Message-Id: <200705061448.l46EmwPX024574@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 119335 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 14:48:59 -0000 http://perforce.freebsd.org/chv.cgi?CH=119335 Change 119335 by zec@zec_zoo on 2007/05/06 14:47:58 Using INIT_VNET_*() macros with curvnet not set leads to a panic, which is IMO a usefull consistency check. Hence, set / restore curvnet appropriately in nfs_create(). Affected files ... .. //depot/projects/vimage/src/sys/nfsclient/nfs_vnops.c#7 edit Differences ... ==== //depot/projects/vimage/src/sys/nfsclient/nfs_vnops.c#7 (text+ko) ==== @@ -1390,16 +1390,18 @@ if (v3) { tl = nfsm_build(u_int32_t *, NFSX_UNSIGNED); if (fmode & O_EXCL) { + CURVNET_SET(VFSTONFS(dvp->v_mount)->nm_so->so_vnet); *tl = txdr_unsigned(NFSV3CREATE_EXCLUSIVE); tl = nfsm_build(u_int32_t *, NFSX_V3CREATEVERF); #ifdef INET - INIT_VNET_INET(VFSTONFS(dvp->v_mount)->nm_so->so_vnet); + INIT_VNET_INET(curvnet); if (!TAILQ_EMPTY(&V_in_ifaddrhead)) *tl++ = IA_SIN(TAILQ_FIRST(&V_in_ifaddrhead))->sin_addr.s_addr; else #endif *tl++ = create_verf; *tl = ++create_verf; + CURVNET_RESTORE(); } else { *tl = txdr_unsigned(NFSV3CREATE_UNCHECKED); nfsm_v3attrbuild(vap, FALSE); From owner-p4-projects@FreeBSD.ORG Sun May 6 15:09:25 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8D65F16A407; Sun, 6 May 2007 15:09:25 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 61B5116A401 for ; Sun, 6 May 2007 15:09:25 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 523F813C447 for ; Sun, 6 May 2007 15:09:25 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46F9P0G028894 for ; Sun, 6 May 2007 15:09:25 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46F9PQK028891 for perforce@freebsd.org; Sun, 6 May 2007 15:09:25 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sun, 6 May 2007 15:09:25 GMT Message-Id: <200705061509.l46F9PQK028891@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 119338 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 15:09:25 -0000 http://perforce.freebsd.org/chv.cgi?CH=119338 Change 119338 by rdivacky@rdivacky_witten on 2007/05/06 15:08:39 Use ni_startdir for *at semantic instead of using newly introduced ni_dvp. Suggested by: pjd Affected files ... .. //depot/projects/soc2007/rdivacky/linux_at/sys/kern/vfs_lookup.c#3 edit .. //depot/projects/soc2007/rdivacky/linux_at/sys/sys/namei.h#3 edit Differences ... ==== //depot/projects/soc2007/rdivacky/linux_at/sys/kern/vfs_lookup.c#3 (text+ko) ==== @@ -192,8 +192,8 @@ ndp->ni_rootdir = fdp->fd_rdir; ndp->ni_topdir = fdp->fd_jdir; - if (ndp->ni_vdir) - dp = ndp->ni_vdir; + if (ndp->ni_startdir) + dp = ndp->ni_startdir; else dp = fdp->fd_cdir; vfslocked = VFS_LOCK_GIANT(dp->v_mount); ==== //depot/projects/soc2007/rdivacky/linux_at/sys/sys/namei.h#3 (text+ko) ==== @@ -63,11 +63,10 @@ */ const char *ni_dirp; /* pathname pointer */ enum uio_seg ni_segflg; /* location of pathname */ - struct vnode *ni_vdir; /* relative directory */ /* * Arguments to lookup. */ - struct vnode *ni_startdir; /* starting directory */ + struct vnode *ni_startdir; /* starting directory, used for *at stuff */ struct vnode *ni_rootdir; /* logical root directory */ struct vnode *ni_topdir; /* logical top directory */ /* @@ -161,7 +160,7 @@ ndp->ni_segflg = segflg; ndp->ni_dirp = namep; ndp->ni_cnd.cn_thread = td; - ndp->ni_vdir = NULL; + ndp->ni_startdir = NULL; } static __inline void @@ -177,7 +176,7 @@ ndp->ni_segflg = segflg; ndp->ni_dirp = namep; ndp->ni_cnd.cn_thread = td; - ndp->ni_vdir = dvp; + ndp->ni_startdir = dvp; } #define NDF_NO_DVP_RELE 0x00000001 From owner-p4-projects@FreeBSD.ORG Sun May 6 15:27:49 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5111916A412; Sun, 6 May 2007 15:27:49 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2F80C16A410 for ; Sun, 6 May 2007 15:27:49 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2060313C468 for ; Sun, 6 May 2007 15:27:49 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46FRnIv032178 for ; Sun, 6 May 2007 15:27:49 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46FRmVp032174 for perforce@freebsd.org; Sun, 6 May 2007 15:27:48 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sun, 6 May 2007 15:27:48 GMT Message-Id: <200705061527.l46FRmVp032174@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 119341 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 15:27:49 -0000 http://perforce.freebsd.org/chv.cgi?CH=119341 Change 119341 by rdivacky@rdivacky_witten on 2007/05/06 15:27:13 Check whether copyinstr() succeeded. Pointed out by: rwatson Affected files ... .. //depot/projects/soc2007/rdivacky/linux_at/sys/compat/linux/linux_file.c#4 edit Differences ... ==== //depot/projects/soc2007/rdivacky/linux_at/sys/compat/linux/linux_file.c#4 (text+ko) ==== @@ -188,6 +188,10 @@ path = malloc(MAXPATHLEN, M_TEMP, M_WAITOK); error = copyinstr(args->filename, path, MAXPATHLEN, NULL); + if (error) { + free(path, M_TEMP); + return (error); + } if (args->flags & LINUX_O_CREAT) LCONVPATH_SEG(td, path, &newpath, 1, UIO_SYSSPACE); From owner-p4-projects@FreeBSD.ORG Sun May 6 15:38:03 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7C9A816A406; Sun, 6 May 2007 15:38:03 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3B56C16A403 for ; Sun, 6 May 2007 15:38:03 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2C12713C4B0 for ; Sun, 6 May 2007 15:38:03 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46Fc3aD033870 for ; Sun, 6 May 2007 15:38:03 GMT (envelope-from rpaulo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46Fc2Ew033867 for perforce@freebsd.org; Sun, 6 May 2007 15:38:02 GMT (envelope-from rpaulo@FreeBSD.org) Date: Sun, 6 May 2007 15:38:02 GMT Message-Id: <200705061538.l46Fc2Ew033867@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rpaulo@FreeBSD.org using -f From: Rui Paulo To: Perforce Change Reviews Cc: Subject: PERFORCE change 119344 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 15:38:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=119344 Change 119344 by rpaulo@rpaulo_epsilon on 2007/05/06 15:37:52 msrtemp is i386 specific, so move it to files.i386. backlight, currently, is i386/amd64 specific, so movie it to files.i386 and files.amd64. Affected files ... .. //depot/projects/soc2007/rpaulo-macbook/conf/files#6 edit .. //depot/projects/soc2007/rpaulo-macbook/conf/files.amd64#2 edit .. //depot/projects/soc2007/rpaulo-macbook/conf/files.i386#2 edit Differences ... ==== //depot/projects/soc2007/rpaulo-macbook/conf/files#6 (text+ko) ==== @@ -486,7 +486,6 @@ dev/awi/am79c930.c optional awi dev/awi/awi.c optional awi dev/awi/if_awi_pccard.c optional awi pccard -dev/backlight/backlight.c optional backlight dev/bce/if_bce.c optional bce dev/bfe/if_bfe.c optional bfe dev/bge/if_bge.c optional bge @@ -800,7 +799,6 @@ dev/mpt/mpt_pci.c optional mpt pci dev/mpt/mpt_raid.c optional mpt dev/msk/if_msk.c optional msk -dev/msrtemp/msrtemp.c optional msrtemp dev/my/if_my.c optional my dev/ncv/ncr53c500.c optional ncv dev/ncv/ncr53c500_pccard.c optional ncv pccard ==== //depot/projects/soc2007/rpaulo-macbook/conf/files.amd64#2 (text+ko) ==== @@ -146,6 +146,7 @@ dev/atkbdc/atkbdc_isa.c optional atkbdc isa dev/atkbdc/atkbdc_subr.c optional atkbdc dev/atkbdc/psm.c optional psm atkbdc +dev/backlight/backlight.c optional backlight # There are no systems with isa slots, so all ed isa entries should go.. dev/ed/if_ed_3c503.c optional ed isa ed_3c503 dev/ed/if_ed_isa.c optional ed isa ==== //depot/projects/soc2007/rpaulo-macbook/conf/files.i386#2 (text+ko) ==== @@ -154,6 +154,7 @@ dev/atkbdc/atkbdc_isa.c optional atkbdc isa dev/atkbdc/atkbdc_subr.c optional atkbdc dev/atkbdc/psm.c optional psm atkbdc +dev/backlight/backlight.c optional backlight dev/ce/ceddk.c optional ce dev/ce/if_ce.c optional ce dev/ce/tau32-ddk.c optional ce @@ -208,6 +209,7 @@ dev/mem/memutil.c optional mem dev/mse/mse.c optional mse dev/mse/mse_isa.c optional mse isa +dev/msrtemp/msrtemp.c optional msrtemp dev/nfe/if_nfe.c optional nfe pci dev/nve/if_nve.c optional nve pci dev/pcf/pcf_isa.c optional pcf From owner-p4-projects@FreeBSD.ORG Sun May 6 15:51:21 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 52A1E16A408; Sun, 6 May 2007 15:51:21 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id F01B616A404 for ; Sun, 6 May 2007 15:51:20 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id E12E013C45D for ; Sun, 6 May 2007 15:51:20 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46FpKqg036183 for ; Sun, 6 May 2007 15:51:20 GMT (envelope-from rpaulo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46FpKZK036174 for perforce@freebsd.org; Sun, 6 May 2007 15:51:20 GMT (envelope-from rpaulo@FreeBSD.org) Date: Sun, 6 May 2007 15:51:20 GMT Message-Id: <200705061551.l46FpKZK036174@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rpaulo@FreeBSD.org using -f From: Rui Paulo To: Perforce Change Reviews Cc: Subject: PERFORCE change 119346 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 15:51:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=119346 Change 119346 by rpaulo@rpaulo_epsilon on 2007/05/06 15:50:59 Follow the sys/conf changes regarding to backlight and msrtemp. msrtemp is specific to i386. backlight is specific to i386/amd64. Affected files ... .. //depot/projects/soc2007/rpaulo-macbook/modules/Makefile#3 edit Differences ... ==== //depot/projects/soc2007/rpaulo-macbook/modules/Makefile#3 (text+ko) ==== @@ -34,7 +34,7 @@ ${_auxio} \ ${_awi} \ axe \ - backlight \ + ${_backlight} \ bce \ bfe \ bge \ @@ -170,7 +170,7 @@ msdosfs_iconv \ ${_mse} \ msk \ - msrtemp \ + ${_msrtemp} \ ${_mxge} \ my \ ${_ncp} \ @@ -353,6 +353,7 @@ _ath_hal= ath_hal _ath_rate_sample=ath_rate_sample _awi= awi +_backlight= backlight _bktr= bktr _cardbus= cardbus _cbb= cbb @@ -380,6 +381,7 @@ _linsysfs= linsysfs _linux= linux _mse= mse +_msrtemp= msrtemp .if ${MK_NCP} != "no" _ncp= ncp .endif @@ -468,6 +470,7 @@ _ath= ath _ath_hal= ath_hal _ath_rate_sample=ath_rate_sample +_backlight= backlight _cardbus= cardbus _cbb= cbb _ciss= ciss From owner-p4-projects@FreeBSD.ORG Sun May 6 16:00:34 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BAF4816A404; Sun, 6 May 2007 16:00:34 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3994216A403 for ; Sun, 6 May 2007 16:00:34 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2A59613C484 for ; Sun, 6 May 2007 16:00:34 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46G0YcS037242 for ; Sun, 6 May 2007 16:00:34 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46G0XXt037239 for perforce@freebsd.org; Sun, 6 May 2007 16:00:33 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sun, 6 May 2007 16:00:33 GMT Message-Id: <200705061600.l46G0XXt037239@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 119347 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 16:00:35 -0000 http://perforce.freebsd.org/chv.cgi?CH=119347 Change 119347 by rdivacky@rdivacky_witten on 2007/05/06 15:59:47 Style changes suggested by pjd. Affected files ... .. //depot/projects/soc2007/rdivacky/linux_at/sys/kern/vfs_syscalls.c#4 edit .. //depot/projects/soc2007/rdivacky/linux_at/sys/sys/namei.h#4 edit Differences ... ==== //depot/projects/soc2007/rdivacky/linux_at/sys/kern/vfs_syscalls.c#4 (text+ko) ==== @@ -88,9 +88,9 @@ static int vn_access(struct vnode *vp, int user_flags, struct ucred *cred, struct thread *td); static int kern_common_open(struct thread *td, char *path, enum uio_seg pathseg, - int flags, int mode, struct nameidata *nd); + int flags, int mode, struct nameidata *nd); static int kern_common_access(struct thread *td, char *path, enum uio_seg pathseg, - int flags, struct nameidata *nd); + int flags, struct nameidata *nd); /* * The module initialization routine for POSIX asynchronous I/O will ==== //depot/projects/soc2007/rdivacky/linux_at/sys/sys/namei.h#4 (text+ko) ==== @@ -66,7 +66,10 @@ /* * Arguments to lookup. */ - struct vnode *ni_startdir; /* starting directory, used for *at stuff */ + struct vnode *ni_startdir; /* + * starting directory, also used for + * rename and *at functions + */ struct vnode *ni_rootdir; /* logical root directory */ struct vnode *ni_topdir; /* logical top directory */ /* @@ -148,20 +151,8 @@ /* * Initialization of a nameidata structure. */ -static __inline void -NDINIT(struct nameidata *ndp, - u_long op, u_long flags, - enum uio_seg segflg, - const char *namep, - struct thread *td) -{ - ndp->ni_cnd.cn_nameiop = op; - ndp->ni_cnd.cn_flags = flags; - ndp->ni_segflg = segflg; - ndp->ni_dirp = namep; - ndp->ni_cnd.cn_thread = td; - ndp->ni_startdir = NULL; -} +#define NDINIT(ndp, op, flags, segflg, namep, td) \ + NDINIT_AT(ndp, op, flags, segflg, namep, td, NULL) static __inline void NDINIT_AT(struct nameidata *ndp, From owner-p4-projects@FreeBSD.ORG Sun May 6 16:12:17 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0F60B16A404; Sun, 6 May 2007 16:12:17 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A7C0C16A400 for ; Sun, 6 May 2007 16:12:16 +0000 (UTC) (envelope-from gabor@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 9876113C46E for ; Sun, 6 May 2007 16:12:16 +0000 (UTC) (envelope-from gabor@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46GCGm5040618 for ; Sun, 6 May 2007 16:12:16 GMT (envelope-from gabor@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46GCG9K040615 for perforce@freebsd.org; Sun, 6 May 2007 16:12:16 GMT (envelope-from gabor@freebsd.org) Date: Sun, 6 May 2007 16:12:16 GMT Message-Id: <200705061612.l46GCG9K040615@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gabor@freebsd.org using -f From: Gabor Kovesdan To: Perforce Change Reviews Cc: Subject: PERFORCE change 119350 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 16:12:17 -0000 http://perforce.freebsd.org/chv.cgi?CH=119350 Change 119350 by gabor@gabor_server on 2007/05/06 16:11:17 I would like to implement DESTDIR in such way as it is in this change. The chrooted process starts fine, but somehow the handling of the passed target does not work yet. Affected files ... .. //depot/projects/soc2006/gabor_destdir/Mk/bsd.port.mk#14 edit Differences ... ==== //depot/projects/soc2006/gabor_destdir/Mk/bsd.port.mk#14 (text+ko) ==== @@ -1049,10 +1049,11 @@ # DESTDIR section to start a chrooted process if incoked with DESTDIR set # -.if defined(DESTDIR) && !empty(DESTDIR) +.if defined(DESTDIR) && !empty(DESTDIR) && !defined(CHROOTED) +_TARGET:= ${.TARGET} .BEGIN: - ${ECHO_CMD} "===> DESTDIR support coming soon..."; \ - ${FALSE} + ${ECHO_CMD} "===> Starting chrooted make in ${DESTDIR}..."; \ + ${CHROOT} ${DESTDIR} ${SH} -c "(cd ${.CURDIR}; ${MAKE} CHROOTED=YES ${_TARGET})" .else # Look for ${WRKSRC}/.../*.orig files, and (re-)create From owner-p4-projects@FreeBSD.ORG Sun May 6 19:43:08 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B6A2616A403; Sun, 6 May 2007 19:43:08 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5EB2216A401 for ; Sun, 6 May 2007 19:43:08 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 500B013C468 for ; Sun, 6 May 2007 19:43:08 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46Jh8ww085434 for ; Sun, 6 May 2007 19:43:08 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46Jh8fO085431 for perforce@freebsd.org; Sun, 6 May 2007 19:43:08 GMT (envelope-from sam@freebsd.org) Date: Sun, 6 May 2007 19:43:08 GMT Message-Id: <200705061943.l46Jh8fO085431@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 119364 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 19:43:09 -0000 http://perforce.freebsd.org/chv.cgi?CH=119364 Change 119364 by sam@sam_ebb on 2007/05/06 19:43:01 remove extraneous \n's Affected files ... .. //depot/projects/wifi/sbin/ifconfig/ifieee80211.c#66 edit Differences ... ==== //depot/projects/wifi/sbin/ifconfig/ifieee80211.c#66 (text+ko) ==== @@ -373,7 +373,7 @@ flags |= IEEE80211_CHAN_STURBO; break; default: - errx(-1, "%s: Invalid channel attribute %c\n", + errx(-1, "%s: Invalid channel attribute %c", val, *cp); } } @@ -403,7 +403,7 @@ flags |= CHAN_HT_DEFAULT; break; default: - errx(-1, "%s: Invalid channel width\n", val); + errx(-1, "%s: Invalid channel width", val); } } /* From owner-p4-projects@FreeBSD.ORG Sun May 6 19:45:20 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4D52616A40A; Sun, 6 May 2007 19:45:20 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 21F8C16A408 for ; Sun, 6 May 2007 19:45:20 +0000 (UTC) (envelope-from imp@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 1163713C4B0 for ; Sun, 6 May 2007 19:45:20 +0000 (UTC) (envelope-from imp@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46JjJtl085718 for ; Sun, 6 May 2007 19:45:19 GMT (envelope-from imp@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46JjB2c085706 for perforce@freebsd.org; Sun, 6 May 2007 19:45:11 GMT (envelope-from imp@freebsd.org) Date: Sun, 6 May 2007 19:45:11 GMT Message-Id: <200705061945.l46JjB2c085706@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to imp@freebsd.org using -f From: Warner Losh To: Perforce Change Reviews Cc: Subject: PERFORCE change 119365 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 19:45:20 -0000 http://perforce.freebsd.org/chv.cgi?CH=119365 Change 119365 by imp@imp_paco-paco on 2007/05/06 19:44:57 IFC @119361 Affected files ... .. //depot/projects/arm/src/bin/df/df.c#6 integrate .. //depot/projects/arm/src/bin/sh/var.c#2 integrate .. //depot/projects/arm/src/cddl/lib/libzfs/Makefile#3 integrate .. //depot/projects/arm/src/compat/opensolaris/include/devid.h#2 integrate .. //depot/projects/arm/src/compat/opensolaris/misc/deviceid.c#1 branch .. //depot/projects/arm/src/contrib/gdb/gdb/ppcfbsd-nat.c#2 integrate .. //depot/projects/arm/src/contrib/opensolaris/cmd/zpool/zpool_vdev.c#2 integrate .. //depot/projects/arm/src/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h#4 integrate .. //depot/projects/arm/src/contrib/top/commands.c#3 integrate .. //depot/projects/arm/src/contrib/top/machine.h#3 integrate .. //depot/projects/arm/src/contrib/top/top.X#3 integrate .. //depot/projects/arm/src/contrib/top/top.c#4 integrate .. //depot/projects/arm/src/contrib/traceroute/traceroute.c#3 integrate .. //depot/projects/arm/src/etc/rc.d/netoptions#3 integrate .. //depot/projects/arm/src/etc/rc.d/routing#2 integrate .. //depot/projects/arm/src/gnu/usr.bin/gdb/arch/powerpc/Makefile#2 integrate .. //depot/projects/arm/src/gnu/usr.bin/gdb/arch/powerpc/init.c#2 integrate .. //depot/projects/arm/src/include/stdlib.h#2 integrate .. //depot/projects/arm/src/lib/libarchive/Makefile#12 integrate .. //depot/projects/arm/src/lib/libarchive/archive.h.in#13 integrate .. //depot/projects/arm/src/lib/libc/Versions.def#2 integrate .. //depot/projects/arm/src/lib/libc/amd64/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/arm/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/compat-43/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/db/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/gdtoa/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/gen/Symbol.map#5 integrate .. //depot/projects/arm/src/lib/libc/gmon/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/i386/Symbol.map#3 integrate .. //depot/projects/arm/src/lib/libc/ia64/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/inet/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/locale/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/locale/isdigit.3#3 integrate .. //depot/projects/arm/src/lib/libc/nameser/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/net/Symbol.map#3 integrate .. //depot/projects/arm/src/lib/libc/nls/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/posix1e/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/powerpc/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/quad/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/regex/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/resolv/Symbol.map#3 integrate .. //depot/projects/arm/src/lib/libc/rpc/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/softfloat/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/sparc64/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/stdio/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/stdlib/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/stdlib/getenv.3#4 integrate .. //depot/projects/arm/src/lib/libc/stdlib/getenv.c#3 integrate .. //depot/projects/arm/src/lib/libc/stdlib/putenv.c#3 integrate .. //depot/projects/arm/src/lib/libc/stdlib/setenv.c#3 integrate .. //depot/projects/arm/src/lib/libc/stdtime/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/string/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/sys/Makefile.inc#4 integrate .. //depot/projects/arm/src/lib/libc/sys/Symbol.map#3 integrate .. //depot/projects/arm/src/lib/libc/uuid/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/xdr/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libc/yp/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libelf/Version.map#3 integrate .. //depot/projects/arm/src/lib/libgeom/Makefile#2 integrate .. //depot/projects/arm/src/lib/libgeom/geom_getxml.c#2 integrate .. //depot/projects/arm/src/lib/libgeom/geom_util.c#1 branch .. //depot/projects/arm/src/lib/libgeom/libgeom.3#2 integrate .. //depot/projects/arm/src/lib/libgeom/libgeom.h#2 integrate .. //depot/projects/arm/src/lib/libpthread/pthread.map#2 integrate .. //depot/projects/arm/src/lib/libpthread/thread/thr_private.h#3 integrate .. //depot/projects/arm/src/lib/librt/Makefile#2 integrate .. //depot/projects/arm/src/lib/librt/Version.map#1 branch .. //depot/projects/arm/src/lib/libthr/pthread.map#3 integrate .. //depot/projects/arm/src/lib/libthread_db/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/libthread_db/arch/powerpc/libpthread_md.c#2 integrate .. //depot/projects/arm/src/lib/libutil/login_class.c#2 integrate .. //depot/projects/arm/src/lib/msun/Symbol.map#3 integrate .. //depot/projects/arm/src/lib/msun/amd64/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/msun/arm/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/msun/bsdsrc/b_tgamma.c#2 integrate .. //depot/projects/arm/src/lib/msun/i387/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/msun/ia64/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/msun/powerpc/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/msun/sparc64/Symbol.map#2 integrate .. //depot/projects/arm/src/lib/msun/src/e_lgamma_r.c#2 integrate .. //depot/projects/arm/src/lib/msun/src/e_lgammaf_r.c#2 integrate .. //depot/projects/arm/src/libexec/pppoed/pppoed.c#2 integrate .. //depot/projects/arm/src/libexec/rtld-elf/Makefile#4 integrate .. //depot/projects/arm/src/libexec/rtld-elf/Symbol.map#3 integrate .. //depot/projects/arm/src/libexec/rtld-elf/Versions.def#3 delete .. //depot/projects/arm/src/libexec/rtld-elf/i386/Symbol.map#2 integrate .. //depot/projects/arm/src/libexec/rtld-elf/rtld.c#8 integrate .. //depot/projects/arm/src/release/doc/en_US.ISO8859-1/relnotes/article.sgml#10 integrate .. //depot/projects/arm/src/sbin/fdisk/fdisk.8#4 integrate .. //depot/projects/arm/src/sbin/fdisk/fdisk.c#2 integrate .. //depot/projects/arm/src/sbin/geom/class/eli/geom_eli.c#7 integrate .. //depot/projects/arm/src/sbin/geom/class/multipath/gmultipath.8#2 integrate .. //depot/projects/arm/src/sbin/ipfw/ipfw.8#8 integrate .. //depot/projects/arm/src/sbin/ipfw/ipfw2.c#9 integrate .. //depot/projects/arm/src/sbin/mdmfs/mdmfs.c#4 integrate .. //depot/projects/arm/src/share/man/man4/snd_hda.4#7 integrate .. //depot/projects/arm/src/share/man/man4/uftdi.4#4 integrate .. //depot/projects/arm/src/share/man/man4/vlan.4#6 integrate .. //depot/projects/arm/src/share/man/man9/disk.9#4 integrate .. //depot/projects/arm/src/share/man/man9/rman.9#2 integrate .. //depot/projects/arm/src/share/misc/bsd-family-tree#7 integrate .. //depot/projects/arm/src/share/misc/committers-ports.dot#5 integrate .. //depot/projects/arm/src/share/misc/committers-src.dot#5 integrate .. //depot/projects/arm/src/share/mk/bsd.symver.mk#2 integrate .. //depot/projects/arm/src/sys/amd64/amd64/intr_machdep.c#11 integrate .. //depot/projects/arm/src/sys/amd64/amd64/mptable_pci.c#7 integrate .. //depot/projects/arm/src/sys/amd64/amd64/msi.c#4 integrate .. //depot/projects/arm/src/sys/amd64/amd64/nexus.c#10 integrate .. //depot/projects/arm/src/sys/amd64/include/intr_machdep.h#10 integrate .. //depot/projects/arm/src/sys/amd64/include/vmparam.h#3 integrate .. //depot/projects/arm/src/sys/amd64/pci/pci_bus.c#9 integrate .. //depot/projects/arm/src/sys/arm/include/vmparam.h#5 integrate .. //depot/projects/arm/src/sys/arm/xscale/i80321/ep80219_machdep.c#5 integrate .. //depot/projects/arm/src/sys/arm/xscale/i80321/iq31244_machdep.c#15 integrate .. //depot/projects/arm/src/sys/arm/xscale/ixp425/avila_machdep.c#12 integrate .. //depot/projects/arm/src/sys/boot/common/loader.8#8 integrate .. //depot/projects/arm/src/sys/compat/freebsd32/freebsd32_misc.c#15 integrate .. //depot/projects/arm/src/sys/compat/linprocfs/linprocfs.c#20 integrate .. //depot/projects/arm/src/sys/compat/opensolaris/kern/opensolaris_kobj.c#2 integrate .. //depot/projects/arm/src/sys/compat/opensolaris/kern/opensolaris_vfs.c#3 integrate .. //depot/projects/arm/src/sys/conf/files#70 integrate .. //depot/projects/arm/src/sys/conf/kern.pre.mk#9 integrate .. //depot/projects/arm/src/sys/conf/options#44 integrate .. //depot/projects/arm/src/sys/contrib/opensolaris/uts/common/fs/gfs.c#2 integrate .. //depot/projects/arm/src/sys/contrib/opensolaris/uts/common/fs/zfs/dbuf.c#3 integrate .. //depot/projects/arm/src/sys/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c#2 integrate .. //depot/projects/arm/src/sys/contrib/opensolaris/uts/common/fs/zfs/dnode.c#2 integrate .. //depot/projects/arm/src/sys/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c#2 integrate .. //depot/projects/arm/src/sys/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c#2 integrate .. //depot/projects/arm/src/sys/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#3 integrate .. //depot/projects/arm/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c#3 integrate .. //depot/projects/arm/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#4 integrate .. //depot/projects/arm/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#3 integrate .. //depot/projects/arm/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#3 integrate .. //depot/projects/arm/src/sys/contrib/opensolaris/uts/common/fs/zfs/zio.c#3 integrate .. //depot/projects/arm/src/sys/dev/acpica/acpi_pcib_acpi.c#8 integrate .. //depot/projects/arm/src/sys/dev/acpica/acpi_pcib_pci.c#6 integrate .. //depot/projects/arm/src/sys/dev/ata/ata-disk.c#13 integrate .. //depot/projects/arm/src/sys/dev/ata/atapi-cam.c#8 integrate .. //depot/projects/arm/src/sys/dev/bce/if_bce.c#17 integrate .. //depot/projects/arm/src/sys/dev/bce/if_bcefw.h#2 integrate .. //depot/projects/arm/src/sys/dev/bce/if_bcereg.h#7 integrate .. //depot/projects/arm/src/sys/dev/bge/if_bge.c#32 integrate .. //depot/projects/arm/src/sys/dev/bge/if_bgereg.h#23 integrate .. //depot/projects/arm/src/sys/dev/ciss/ciss.c#13 integrate .. //depot/projects/arm/src/sys/dev/ciss/cissvar.h#3 integrate .. //depot/projects/arm/src/sys/dev/em/LICENSE#3 integrate .. //depot/projects/arm/src/sys/dev/em/README#6 integrate .. //depot/projects/arm/src/sys/dev/em/e1000_80003es2lan.c#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_80003es2lan.h#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_82540.c#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_82541.c#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_82541.h#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_82542.c#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_82543.c#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_82543.h#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_82571.c#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_82571.h#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_82575.c#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_82575.h#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_api.c#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_api.h#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_defines.h#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_hw.h#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_ich8lan.c#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_ich8lan.h#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_mac.c#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_mac.h#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_manage.c#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_manage.h#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_nvm.c#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_nvm.h#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_osdep.h#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_phy.c#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_phy.h#1 branch .. //depot/projects/arm/src/sys/dev/em/e1000_regs.h#1 branch .. //depot/projects/arm/src/sys/dev/em/if_em.c#36 integrate .. //depot/projects/arm/src/sys/dev/em/if_em.h#15 integrate .. //depot/projects/arm/src/sys/dev/em/if_em_hw.c#10 delete .. //depot/projects/arm/src/sys/dev/em/if_em_hw.h#9 delete .. //depot/projects/arm/src/sys/dev/em/if_em_osdep.h#7 delete .. //depot/projects/arm/src/sys/dev/firewire/firewire.c#5 integrate .. //depot/projects/arm/src/sys/dev/firewire/firewirereg.h#4 integrate .. //depot/projects/arm/src/sys/dev/firewire/fwdev.c#6 integrate .. //depot/projects/arm/src/sys/dev/firewire/fwohci.c#5 integrate .. //depot/projects/arm/src/sys/dev/firewire/fwohcireg.h#3 integrate .. //depot/projects/arm/src/sys/dev/firewire/if_fwip.c#5 integrate .. //depot/projects/arm/src/sys/dev/firewire/sbp.c#7 integrate .. //depot/projects/arm/src/sys/dev/firewire/sbp_targ.c#4 integrate .. //depot/projects/arm/src/sys/dev/gem/if_gem.c#7 integrate .. //depot/projects/arm/src/sys/dev/gem/if_gem_pci.c#5 integrate .. //depot/projects/arm/src/sys/dev/gem/if_gemvar.h#4 integrate .. //depot/projects/arm/src/sys/dev/hme/if_hme.c#8 integrate .. //depot/projects/arm/src/sys/dev/ipmi/ipmi_smbios.c#3 integrate .. //depot/projects/arm/src/sys/dev/isp/isp.c#21 integrate .. //depot/projects/arm/src/sys/dev/isp/isp_freebsd.c#27 integrate .. //depot/projects/arm/src/sys/dev/isp/isp_freebsd.h#20 integrate .. //depot/projects/arm/src/sys/dev/isp/isp_pci.c#25 integrate .. //depot/projects/arm/src/sys/dev/isp/isp_sbus.c#17 integrate .. //depot/projects/arm/src/sys/dev/isp/isp_tpublic.h#10 integrate .. //depot/projects/arm/src/sys/dev/mii/brgphy.c#18 integrate .. //depot/projects/arm/src/sys/dev/mii/mii.c#5 integrate .. //depot/projects/arm/src/sys/dev/mpt/mpt.c#23 integrate .. //depot/projects/arm/src/sys/dev/mpt/mpt.h#26 integrate .. //depot/projects/arm/src/sys/dev/mpt/mpt_cam.c#38 integrate .. //depot/projects/arm/src/sys/dev/mpt/mpt_cam.h#5 integrate .. //depot/projects/arm/src/sys/dev/mpt/mpt_pci.c#23 integrate .. //depot/projects/arm/src/sys/dev/mpt/mpt_raid.c#12 integrate .. //depot/projects/arm/src/sys/dev/pci/pci.c#26 integrate .. //depot/projects/arm/src/sys/dev/pci/pci_if.m#6 integrate .. //depot/projects/arm/src/sys/dev/pci/pci_pci.c#11 integrate .. //depot/projects/arm/src/sys/dev/pci/pci_private.h#11 integrate .. //depot/projects/arm/src/sys/dev/pci/pcib_if.m#5 integrate .. //depot/projects/arm/src/sys/dev/pci/pcib_private.h#7 integrate .. //depot/projects/arm/src/sys/dev/pci/pcivar.h#12 integrate .. //depot/projects/arm/src/sys/dev/sound/pci/emu10kx.c#5 integrate .. //depot/projects/arm/src/sys/dev/sound/pci/hda/hdac.c#12 integrate .. //depot/projects/arm/src/sys/dev/sound/pci/hda/hdac_private.h#6 integrate .. //depot/projects/arm/src/sys/dev/sound/pci/ich.c#19 integrate .. //depot/projects/arm/src/sys/dev/sound/pcm/sound.h#12 integrate .. //depot/projects/arm/src/sys/dev/stge/if_stge.c#6 integrate .. //depot/projects/arm/src/sys/dev/stge/if_stgereg.h#2 integrate .. //depot/projects/arm/src/sys/dev/uart/uart_kbd_sun.c#8 integrate .. //depot/projects/arm/src/sys/dev/usb/if_axe.c#10 integrate .. //depot/projects/arm/src/sys/dev/usb/if_axereg.h#5 integrate .. //depot/projects/arm/src/sys/dev/usb/if_rum.c#1 branch .. //depot/projects/arm/src/sys/dev/usb/if_rumreg.h#1 branch .. //depot/projects/arm/src/sys/dev/usb/if_rumvar.h#1 branch .. //depot/projects/arm/src/sys/dev/usb/rt2573_ucode.h#1 branch .. //depot/projects/arm/src/sys/dev/usb/uftdi.c#4 integrate .. //depot/projects/arm/src/sys/dev/usb/usbdevs#29 integrate .. //depot/projects/arm/src/sys/fs/procfs/procfs_ioctl.c#7 integrate .. //depot/projects/arm/src/sys/geom/eli/g_eli_ctl.c#8 integrate .. //depot/projects/arm/src/sys/geom/geom.h#8 integrate .. //depot/projects/arm/src/sys/geom/geom_dev.c#7 integrate .. //depot/projects/arm/src/sys/geom/geom_disk.c#7 integrate .. //depot/projects/arm/src/sys/geom/geom_disk.h#5 integrate .. //depot/projects/arm/src/sys/geom/geom_io.c#9 integrate .. //depot/projects/arm/src/sys/geom/geom_slice.c#6 integrate .. //depot/projects/arm/src/sys/geom/geom_subr.c#6 integrate .. //depot/projects/arm/src/sys/i386/conf/GENERIC#20 integrate .. //depot/projects/arm/src/sys/i386/i386/intr_machdep.c#11 integrate .. //depot/projects/arm/src/sys/i386/i386/mptable_pci.c#7 integrate .. //depot/projects/arm/src/sys/i386/i386/msi.c#4 integrate .. //depot/projects/arm/src/sys/i386/i386/nexus.c#10 integrate .. //depot/projects/arm/src/sys/i386/include/intr_machdep.h#10 integrate .. //depot/projects/arm/src/sys/i386/include/vmparam.h#4 integrate .. //depot/projects/arm/src/sys/i386/pci/pci_bus.c#8 integrate .. //depot/projects/arm/src/sys/ia64/ia64/machdep.c#13 integrate .. //depot/projects/arm/src/sys/ia64/include/vmparam.h#5 integrate .. //depot/projects/arm/src/sys/kern/kern_descrip.c#21 integrate .. //depot/projects/arm/src/sys/kern/kern_intr.c#13 integrate .. //depot/projects/arm/src/sys/kern/sys_generic.c#10 integrate .. //depot/projects/arm/src/sys/kern/uipc_debug.c#2 integrate .. //depot/projects/arm/src/sys/kern/uipc_sockbuf.c#7 integrate .. //depot/projects/arm/src/sys/kern/uipc_socket.c#35 integrate .. //depot/projects/arm/src/sys/kern/uipc_syscalls.c#23 integrate .. //depot/projects/arm/src/sys/kern/uipc_usrreq.c#25 integrate .. //depot/projects/arm/src/sys/kern/vfs_syscalls.c#28 integrate .. //depot/projects/arm/src/sys/modules/Makefile#41 integrate .. //depot/projects/arm/src/sys/modules/em/Makefile#3 integrate .. //depot/projects/arm/src/sys/modules/rum/Makefile#1 branch .. //depot/projects/arm/src/sys/net/ieee8023ad_lacp.c#2 integrate .. //depot/projects/arm/src/sys/net/if.h#9 integrate .. //depot/projects/arm/src/sys/net/if_lagg.c#2 integrate .. //depot/projects/arm/src/sys/net/if_lagg.h#2 integrate .. //depot/projects/arm/src/sys/net80211/ieee80211_amrr.c#2 integrate .. //depot/projects/arm/src/sys/netgraph/ng_mppc.c#3 integrate .. //depot/projects/arm/src/sys/netinet/in_pcb.c#19 integrate .. //depot/projects/arm/src/sys/netinet/in_pcb.h#10 integrate .. //depot/projects/arm/src/sys/netinet/ip_divert.c#10 integrate .. //depot/projects/arm/src/sys/netinet/ip_fw.h#10 integrate .. //depot/projects/arm/src/sys/netinet/ip_fw2.c#30 integrate .. //depot/projects/arm/src/sys/netinet/libalias/alias_proxy.c#5 integrate .. //depot/projects/arm/src/sys/netinet/raw_ip.c#13 integrate .. //depot/projects/arm/src/sys/netinet/sctp.h#4 integrate .. //depot/projects/arm/src/sys/netinet/sctp_auth.c#7 integrate .. //depot/projects/arm/src/sys/netinet/sctp_bsd_addr.c#6 integrate .. //depot/projects/arm/src/sys/netinet/sctp_constants.h#9 integrate .. //depot/projects/arm/src/sys/netinet/sctp_header.h#3 integrate .. //depot/projects/arm/src/sys/netinet/sctp_indata.c#12 integrate .. //depot/projects/arm/src/sys/netinet/sctp_indata.h#4 integrate .. //depot/projects/arm/src/sys/netinet/sctp_input.c#12 integrate .. //depot/projects/arm/src/sys/netinet/sctp_os_bsd.h#8 integrate .. //depot/projects/arm/src/sys/netinet/sctp_output.c#12 integrate .. //depot/projects/arm/src/sys/netinet/sctp_output.h#5 integrate .. //depot/projects/arm/src/sys/netinet/sctp_pcb.c#12 integrate .. //depot/projects/arm/src/sys/netinet/sctp_pcb.h#7 integrate .. //depot/projects/arm/src/sys/netinet/sctp_peeloff.c#7 integrate .. //depot/projects/arm/src/sys/netinet/sctp_usrreq.c#12 integrate .. //depot/projects/arm/src/sys/netinet/sctputil.c#12 integrate .. //depot/projects/arm/src/sys/netinet/sctputil.h#10 integrate .. //depot/projects/arm/src/sys/netinet/tcp_debug.c#2 integrate .. //depot/projects/arm/src/sys/netinet/tcp_input.c#28 integrate .. //depot/projects/arm/src/sys/netinet/tcp_output.c#16 integrate .. //depot/projects/arm/src/sys/netinet/tcp_subr.c#23 integrate .. //depot/projects/arm/src/sys/netinet/tcp_syncache.c#20 integrate .. //depot/projects/arm/src/sys/netinet/tcp_timer.c#14 integrate .. //depot/projects/arm/src/sys/netinet/tcp_usrreq.c#17 integrate .. //depot/projects/arm/src/sys/netinet/tcp_var.h#17 integrate .. //depot/projects/arm/src/sys/netinet/udp_usrreq.c#18 integrate .. //depot/projects/arm/src/sys/netinet6/in6_pcb.c#12 integrate .. //depot/projects/arm/src/sys/netinet6/in6_src.c#9 integrate .. //depot/projects/arm/src/sys/netinet6/nd6.c#14 integrate .. //depot/projects/arm/src/sys/netinet6/nd6_nbr.c#7 integrate .. //depot/projects/arm/src/sys/netinet6/sctp6_usrreq.c#10 integrate .. //depot/projects/arm/src/sys/powerpc/include/vmparam.h#3 integrate .. //depot/projects/arm/src/sys/security/audit/audit_ioctl.h#4 integrate .. //depot/projects/arm/src/sys/sparc64/include/vmparam.h#3 integrate .. //depot/projects/arm/src/sys/sparc64/sparc64/machdep.c#9 integrate .. //depot/projects/arm/src/sys/sparc64/sparc64/upa.c#3 integrate .. //depot/projects/arm/src/sys/sun4v/include/vmparam.h#3 integrate .. //depot/projects/arm/src/sys/sys/disk.h#3 integrate .. //depot/projects/arm/src/sys/sys/filedesc.h#5 integrate .. //depot/projects/arm/src/sys/sys/interrupt.h#6 integrate .. //depot/projects/arm/src/sys/sys/param.h#28 integrate .. //depot/projects/arm/src/sys/sys/socketvar.h#14 integrate .. //depot/projects/arm/src/sys/ufs/ffs/ffs_softdep.c#18 integrate .. //depot/projects/arm/src/sys/vm/vm_page.c#26 integrate .. //depot/projects/arm/src/sys/vm/vm_page.h#11 integrate .. //depot/projects/arm/src/usr.bin/calendar/calendars/calendar.freebsd#13 integrate .. //depot/projects/arm/src/usr.bin/calendar/calendars/calendar.usholiday#2 integrate .. //depot/projects/arm/src/usr.bin/du/du.c#2 integrate .. //depot/projects/arm/src/usr.bin/env/env.c#2 integrate .. //depot/projects/arm/src/usr.bin/lastcomm/Makefile#2 integrate .. //depot/projects/arm/src/usr.bin/lastcomm/lastcomm.c#4 integrate .. //depot/projects/arm/src/usr.bin/limits/limits.c#2 integrate .. //depot/projects/arm/src/usr.bin/login/login.c#3 integrate .. //depot/projects/arm/src/usr.bin/netstat/inet.c#5 integrate .. //depot/projects/arm/src/usr.bin/stat/stat.1#2 integrate .. //depot/projects/arm/src/usr.bin/su/su.c#5 integrate .. //depot/projects/arm/src/usr.bin/tar/write.c#9 integrate .. //depot/projects/arm/src/usr.sbin/diskinfo/diskinfo.c#2 integrate .. //depot/projects/arm/src/usr.sbin/pstat/pstat.c#4 integrate .. //depot/projects/arm/src/usr.sbin/rpcbind/rpcbind.c#3 integrate .. //depot/projects/arm/src/usr.sbin/sade/main.c#3 integrate .. //depot/projects/arm/src/usr.sbin/sade/variable.c#3 integrate .. //depot/projects/arm/src/usr.sbin/sysinstall/main.c#2 integrate .. //depot/projects/arm/src/usr.sbin/sysinstall/variable.c#2 integrate .. //depot/projects/arm/src/usr.sbin/traceroute6/traceroute6.c#3 integrate Differences ... ==== //depot/projects/arm/src/bin/df/df.c#6 (text+ko) ==== @@ -44,7 +44,7 @@ #endif /* not lint */ #endif #include -__FBSDID("$FreeBSD: src/bin/df/df.c,v 1.68 2007/04/06 15:36:43 kan Exp $"); +__FBSDID("$FreeBSD: src/bin/df/df.c,v 1.70 2007/05/01 16:02:44 ache Exp $"); #include #include ==== //depot/projects/arm/src/bin/sh/var.c#2 (text+ko) ==== @@ -36,7 +36,7 @@ #endif #endif /* not lint */ #include -__FBSDID("$FreeBSD: src/bin/sh/var.c,v 1.32 2006/06/15 07:00:49 stefanf Exp $"); +__FBSDID("$FreeBSD: src/bin/sh/var.c,v 1.35 2007/05/01 16:02:43 ache Exp $"); #include #include ==== //depot/projects/arm/src/cddl/lib/libzfs/Makefile#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/cddl/lib/libzfs/Makefile,v 1.2 2007/04/16 21:20:25 ru Exp $ +# $FreeBSD: src/cddl/lib/libzfs/Makefile,v 1.3 2007/05/06 01:39:38 pjd Exp $ .PATH: ${.CURDIR}/../../../compat/opensolaris/misc .PATH: ${.CURDIR}/../../../sys/contrib/opensolaris/common/zfs @@ -9,7 +9,8 @@ DPADD= ${LIBUTIL} LDADD= -lutil -SRCS= mnttab.c \ +SRCS= deviceid.c \ + mnttab.c \ mkdirp.c \ zmount.c \ fsshare.c \ ==== //depot/projects/arm/src/compat/opensolaris/include/devid.h#2 (text+ko) ==== @@ -27,23 +27,28 @@ #ifndef _OPENSOLARIS_DEVID_H_ #define _OPENSOLARIS_DEVID_H_ -#include +#include +#include #include -typedef int ddi_devid_t; +typedef struct ddi_devid { + char devid[DISK_IDENT_SIZE]; +} ddi_devid_t; typedef struct devid_nmlist { - char *devname; + char devname[MAXPATHLEN]; dev_t dev; } devid_nmlist_t; -static inline int devid_str_decode(char *devidstr, ddi_devid_t *retdevid, char **retminor_name) { abort(); } -static inline int devid_deviceid_to_nmlist(char *search_path, ddi_devid_t devid, char *minor_name, devid_nmlist_t **retlist) { abort(); } -static inline void devid_str_free(char *str) { abort(); } -static inline void devid_free(ddi_devid_t devid) { abort(); } -static inline void devid_free_nmlist(devid_nmlist_t *list) { abort(); } -static inline int devid_get(int fd, ddi_devid_t *retdevid) { return -1; } -static inline int devid_get_minor_name(int fd, char **retminor_name) { abort(); } -static inline char *devid_str_encode(ddi_devid_t devid, char *minor_name) { abort(); } +int devid_str_decode(char *devidstr, ddi_devid_t *retdevid, + char **retminor_name); +int devid_deviceid_to_nmlist(char *search_path, ddi_devid_t devid, + char *minor_name, devid_nmlist_t **retlist); +void devid_str_free(char *str); +void devid_free(ddi_devid_t devid); +void devid_free_nmlist(devid_nmlist_t *list); +int devid_get(int fd, ddi_devid_t *retdevid); +int devid_get_minor_name(int fd, char **retminor_name); +char *devid_str_encode(ddi_devid_t devid, char *minor_name); #endif /* !_OPENSOLARIS_DEVID_H_ */ ==== //depot/projects/arm/src/contrib/gdb/gdb/ppcfbsd-nat.c#2 (text+ko) ==== @@ -143,11 +143,23 @@ } void +supply_gregset (char *regs) +{ + ppcfbsd_supply_reg (regs, -1); +} + +void fill_fpregset (char *fpregs, int regnum) { ppcfbsd_fill_fpreg (fpregs, regnum); } +void +supply_fpregset (char *fpregs) +{ + ppcfbsd_supply_fpreg (fpregs, -1); +} + /* Provide a prototype to silence -Wmissing-prototypes. */ void _initialize_ppcfbsd_nat (void); ==== //depot/projects/arm/src/contrib/opensolaris/cmd/zpool/zpool_vdev.c#2 (text+ko) ==== @@ -159,18 +159,14 @@ static boolean_t is_provider(const char *name) { - off_t mediasize; int fd; - fd = open(name, O_RDONLY); - if (fd == -1) - return (B_FALSE); - if (ioctl(fd, DIOCGMEDIASIZE, &mediasize) == -1) { - close(fd); - return (B_FALSE); + fd = g_open(name, 0); + if (fd >= 0) { + g_close(fd); + return (B_TRUE); } - close(fd); - return (B_TRUE); + return (B_FALSE); } /* @@ -183,9 +179,11 @@ nvlist_t * make_leaf_vdev(const char *arg) { - char path[MAXPATHLEN]; + char ident[DISK_IDENT_SIZE], path[MAXPATHLEN]; + struct stat64 statbuf; nvlist_t *vdev = NULL; char *type = NULL; + boolean_t wholedisk = B_FALSE; if (strncmp(arg, _PATH_DEV, sizeof(_PATH_DEV) - 1) == 0) strlcpy(path, arg, sizeof (path)); @@ -212,6 +210,41 @@ verify(nvlist_add_uint64(vdev, ZPOOL_CONFIG_WHOLE_DISK, (uint64_t)B_FALSE) == 0); + /* + * For a whole disk, defer getting its devid until after labeling it. + */ + if (1 || (S_ISBLK(statbuf.st_mode) && !wholedisk)) { + /* + * Get the devid for the device. + */ + int fd; + ddi_devid_t devid; + char *minor = NULL, *devid_str = NULL; + + if ((fd = open(path, O_RDONLY)) < 0) { + (void) fprintf(stderr, gettext("cannot open '%s': " + "%s\n"), path, strerror(errno)); + nvlist_free(vdev); + return (NULL); + } + + if (devid_get(fd, &devid) == 0) { + if (devid_get_minor_name(fd, &minor) == 0 && + (devid_str = devid_str_encode(devid, minor)) != + NULL) { + verify(nvlist_add_string(vdev, + ZPOOL_CONFIG_DEVID, devid_str) == 0); + } + if (devid_str != NULL) + devid_str_free(devid_str); + if (minor != NULL) + devid_str_free(minor); + devid_free(devid); + } + + (void) close(fd); + } + return (vdev); } ==== //depot/projects/arm/src/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h#4 (text+ko) ==== @@ -446,10 +446,6 @@ extern int ddi_strtoul(const char *str, char **nptr, int base, unsigned long *result); -#ifdef __cplusplus -} -#endif - /* ZFS Boot Related stuff. */ struct _buf { @@ -508,4 +504,8 @@ #define ERESTART (-1) #endif +#ifdef __cplusplus +} +#endif + #endif /* _SYS_ZFS_CONTEXT_H */ ==== //depot/projects/arm/src/contrib/top/commands.c#3 (text+ko) ==== @@ -8,7 +8,7 @@ * Copyright (c) 1984, 1989, William LeFebvre, Rice University * Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University * - * $FreeBSD: src/contrib/top/commands.c,v 1.13 2007/04/17 03:12:39 rafan Exp $ + * $FreeBSD: src/contrib/top/commands.c,v 1.15 2007/05/04 15:42:58 rafan Exp $ */ /* @@ -73,7 +73,7 @@ e - list errors generated by last \"kill\" or \"renice\" command\n\ H - toggle the displaying of threads\n\ i or I - toggle the displaying of idle processes\n\ -j - toggle the displaying of jail id\n\ +j - toggle the displaying of jail ID\n\ k - kill processes; send a signal to a list of processes\n\ m - toggle the display between 'cpu' and 'io' modes\n\ n or # - change number of processes to display\n", stdout); @@ -89,6 +89,7 @@ r - renice a process\n\ s - change number of seconds to delay between updates\n\ S - toggle the displaying of system processes\n\ +a - toggle the displaying of process titles\n\ t - toggle the display of this process\n\ u - display processes for only one user (+ selects all users)\n\ \n\ ==== //depot/projects/arm/src/contrib/top/machine.h#3 (text+ko) ==== @@ -1,5 +1,5 @@ /* - * $FreeBSD: src/contrib/top/machine.h,v 1.8 2007/04/17 03:12:39 rafan Exp $ + * $FreeBSD: src/contrib/top/machine.h,v 1.9 2007/05/04 15:42:58 rafan Exp $ */ /* @@ -62,7 +62,7 @@ int thread; /* show threads */ int uid; /* only this uid (unless uid == -1) */ int wcpu; /* show weighted cpu */ - int jail; /* show jail id */ + int jail; /* show jail ID */ char *command; /* only this command (unless == NULL) */ }; ==== //depot/projects/arm/src/contrib/top/top.X#3 (text+ko) ==== @@ -1,6 +1,6 @@ .\" NOTE: changes to the manual page for "top" should be made in the .\" file "top.X" and NOT in the file "top.1". -.\" $FreeBSD: src/contrib/top/top.X,v 1.18 2007/04/17 03:12:39 rafan Exp $ +.\" $FreeBSD: src/contrib/top/top.X,v 1.20 2007/05/04 15:42:58 rafan Exp $ .nr N %topn% .nr D %delay% .TH TOP 1 Local @@ -105,7 +105,7 @@ .B \-j Display the .IR jail (8) -id. +ID. .TP .B \-t Do not display the @@ -255,6 +255,9 @@ .B S Toggle the display of system processes. .TP +.B a +Toggle the display of process titles. +.TP .B k Send a signal (\*(lqkill\*(rq by default) to a list of processes. This acts similarly to the command @@ -291,7 +294,7 @@ .B j Toggle the display of .IR jail (8) -id. +ID. .TP .B t Toggle the display of the ==== //depot/projects/arm/src/contrib/top/top.c#4 (text+ko) ==== @@ -13,7 +13,7 @@ * Copyright (c) 1994, 1995, William LeFebvre, Argonne National Laboratory * Copyright (c) 1996, William LeFebvre, Group sys Consulting * - * $FreeBSD: src/contrib/top/top.c,v 1.22 2007/04/19 14:24:54 rafan Exp $ + * $FreeBSD: src/contrib/top/top.c,v 1.23 2007/05/04 15:42:58 rafan Exp $ */ /* @@ -1064,7 +1064,7 @@ case CMD_jidtog: ps.jail = !ps.jail; new_message(MT_standout | MT_delayed, - " %sisplaying jail id.", + " %sisplaying jail ID.", ps.jail ? "D" : "Not d"); header_text = format_header(uname_field); reset_display(); ==== //depot/projects/arm/src/contrib/traceroute/traceroute.c#3 (text+ko) ==== @@ -28,7 +28,7 @@ "@(#)$Id: traceroute.c,v 1.68 2000/12/14 08:04:33 leres Exp $ (LBL)"; #endif static const char rcsid[] = - "$FreeBSD: src/contrib/traceroute/traceroute.c,v 1.32 2006/10/15 17:44:49 dwmalone Exp $"; + "$FreeBSD: src/contrib/traceroute/traceroute.c,v 1.33 2007/04/30 19:08:12 maxim Exp $"; #endif /* @@ -630,7 +630,7 @@ case 'w': waittime = str2val(optarg, "wait time", - 2, 24 * 60 * 60); + 1, 24 * 60 * 60); break; case 'z': ==== //depot/projects/arm/src/etc/rc.d/netoptions#3 (text+ko) ==== @@ -1,17 +1,17 @@ #!/bin/sh # -# $FreeBSD: src/etc/rc.d/netoptions,v 1.142 2007/04/09 10:09:39 des Exp $ +# $FreeBSD: src/etc/rc.d/netoptions,v 1.144 2007/05/02 15:49:30 mtm Exp $ # # PROVIDE: netoptions -# REQUIRE: localpkg +# REQUIRE: FILESYSTEMS # KEYWORD: nojail . /etc/rc.subr load_rc_config 'XXX' -echo -n 'Additional TCP options:' +echo -n 'Additional IP options:' case ${log_in_vain} in [Nn][Oo] | '') log_in_vain=0 @@ -32,4 +32,46 @@ sysctl net.inet.tcp.log_in_vain="${log_in_vain}" >/dev/null sysctl net.inet.udp.log_in_vain="${log_in_vain}" >/dev/null ) + +case ${tcp_extensions} in +[Yy][Ee][Ss] | '') + ;; +*) + echo -n ' tcp extensions=NO' + sysctl net.inet.tcp.rfc1323=0 >/dev/null + ;; +esac + +case ${tcp_keepalive} in +[Nn][Oo]) + echo -n ' TCP keepalive=NO' + sysctl net.inet.tcp.always_keepalive=0 >/dev/null + ;; +esac + +case ${tcp_drop_synfin} in +[Yy][Ee][Ss]) + echo -n ' drop SYN+FIN packets=YES' + sysctl net.inet.tcp.drop_synfin=1 >/dev/null + ;; +esac + +case ${ip_portrange_first} in +[Nn][Oo] | '') + ;; +*) + echo -n " ip_portrange_first=$ip_portrange_first" + sysctl net.inet.ip.portrange.first=$ip_portrange_first >/dev/null + ;; +esac + +case ${ip_portrange_last} in +[Nn][Oo] | '') + ;; +*) + echo -n " ip_portrange_last=$ip_portrange_last" + sysctl net.inet.ip.portrange.last=$ip_portrange_last >/dev/null + ;; +esac + echo '.' ==== //depot/projects/arm/src/etc/rc.d/routing#2 (text+ko) ==== @@ -2,7 +2,7 @@ # # Configure routing and miscellaneous network tunables # -# $FreeBSD: src/etc/rc.d/routing,v 1.142 2005/10/28 16:07:52 yar Exp $ +# $FreeBSD: src/etc/rc.d/routing,v 1.143 2007/05/02 15:49:30 mtm Exp $ # # PROVIDE: routing @@ -61,15 +61,6 @@ options_start() { echo -n 'Additional routing options:' - case ${tcp_extensions} in - [Yy][Ee][Ss] | '') - ;; - *) - echo -n ' tcp extensions=NO' - sysctl net.inet.tcp.rfc1323=0 >/dev/null - ;; - esac - case ${icmp_bmcastecho} in [Yy][Ee][Ss]) echo -n ' broadcast ping responses=YES' @@ -112,20 +103,6 @@ ;; esac - case ${tcp_keepalive} in - [Nn][Oo]) - echo -n ' TCP keepalive=NO' - sysctl net.inet.tcp.always_keepalive=0 >/dev/null - ;; - esac - - case ${tcp_drop_synfin} in - [Yy][Ee][Ss]) - echo -n ' drop SYN+FIN packets=YES' - sysctl net.inet.tcp.drop_synfin=1 >/dev/null - ;; - esac - case ${ipxgateway_enable} in [Yy][Ee][Ss]) echo -n ' IPX gateway=YES' @@ -140,24 +117,6 @@ ;; esac - case ${ip_portrange_first} in - [Nn][Oo] | '') - ;; - *) - echo -n " ip_portrange_first=$ip_portrange_first" - sysctl net.inet.ip.portrange.first=$ip_portrange_first >/dev/null - ;; - esac - - case ${ip_portrange_last} in - [Nn][Oo] | '') - ;; - *) - echo -n " ip_portrange_last=$ip_portrange_last" - sysctl net.inet.ip.portrange.last=$ip_portrange_last >/dev/null - ;; - esac - echo '.' } ==== //depot/projects/arm/src/gnu/usr.bin/gdb/arch/powerpc/Makefile#2 (text+ko) ==== @@ -1,7 +1,7 @@ -# $FreeBSD: src/gnu/usr.bin/gdb/arch/powerpc/Makefile,v 1.1 2006/08/24 02:44:59 marcel Exp $ +# $FreeBSD: src/gnu/usr.bin/gdb/arch/powerpc/Makefile,v 1.2 2007/05/01 18:29:34 marcel Exp $ .if !defined(GDB_CROSS_DEBUGGER) -LIBSRCS+= fbsd-proc.c gcore.c +LIBSRCS+= fbsd-proc.c fbsd-threads.c gcore.c LIBSRCS+= ppcfbsd-nat.c .endif LIBSRCS+= solib.c solib-svr4.c ==== //depot/projects/arm/src/gnu/usr.bin/gdb/arch/powerpc/init.c#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/gnu/usr.bin/gdb/arch/powerpc/init.c,v 1.1 2006/08/24 02:44:59 marcel Exp $ */ +/* $FreeBSD: src/gnu/usr.bin/gdb/arch/powerpc/init.c,v 1.2 2007/05/01 18:29:34 marcel Exp $ */ /* Do not modify this file. */ /* It is created automatically by the Makefile. */ @@ -19,6 +19,7 @@ extern initialize_file_ftype _initialize_infptrace; extern initialize_file_ftype _initialize_inftarg; extern initialize_file_ftype _initialize_ppcfbsd_nat; +extern initialize_file_ftype _initialize_thread_db; extern initialize_file_ftype _initialize_remote; extern initialize_file_ftype _initialize_dcache; extern initialize_file_ftype _initialize_sr_support; @@ -131,6 +132,7 @@ _initialize_infptrace (); _initialize_inftarg (); _initialize_ppcfbsd_nat (); + _initialize_thread_db (); #endif _initialize_remote (); _initialize_dcache (); ==== //depot/projects/arm/src/include/stdlib.h#2 (text+ko) ==== @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)stdlib.h 8.5 (Berkeley) 5/19/95 - * $FreeBSD: src/include/stdlib.h,v 1.62 2006/03/14 16:57:30 andre Exp $ + * $FreeBSD: src/include/stdlib.h,v 1.64 2007/05/01 16:02:44 ache Exp $ */ #ifndef _STDLIB_H_ ==== //depot/projects/arm/src/lib/libarchive/Makefile#12 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/libarchive/Makefile,v 1.70 2007/04/15 00:53:38 kientzle Exp $ +# $FreeBSD: src/lib/libarchive/Makefile,v 1.71 2007/05/02 05:29:55 cperciva Exp $ LIB= archive DPADD= ${LIBBZ2} ${LIBZ} @@ -32,7 +32,7 @@ # Note: FreeBSD has inttypes.h, so enable that include in archive.h.in archive.h: archive.h.in Makefile cat ${.CURDIR}/archive.h.in | \ - sed 's/@VERSION@/${VERSION}/g' | \ + sed 's/@ARCHIVE_VERSION@/${VERSION}/g' | \ sed 's/@SHLIB_MAJOR@/${SHLIB_MAJOR}/g' | \ sed 's/@ARCHIVE_API_MAJOR@/${ARCHIVE_API_MAJOR}/g' | \ sed 's/@ARCHIVE_API_MINOR@/${ARCHIVE_API_MINOR}/g' | \ ==== //depot/projects/arm/src/lib/libarchive/archive.h.in#13 (text+ko) ==== @@ -22,7 +22,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/lib/libarchive/archive.h.in,v 1.42 2007/04/14 22:34:10 kientzle Exp $ + * $FreeBSD: src/lib/libarchive/archive.h.in,v 1.43 2007/05/02 05:29:55 cperciva Exp $ */ #ifndef ARCHIVE_H_INCLUDED @@ -30,7 +30,7 @@ /* * This header file corresponds to: - * Library version @VERSION@ + * Library version @ARCHIVE_VERSION@ * Shared library version @SHLIB_MAJOR@ */ @@ -73,7 +73,7 @@ #define ARCHIVE_API_FEATURE @ARCHIVE_API_MINOR@ int archive_api_feature(void); /* Textual name/version of the library. */ -#define ARCHIVE_LIBRARY_VERSION "libarchive @VERSION@" +#define ARCHIVE_LIBRARY_VERSION "libarchive @ARCHIVE_VERSION@" const char * archive_version(void); #define ARCHIVE_BYTES_PER_RECORD 512 ==== //depot/projects/arm/src/lib/libc/Versions.def#2 (text) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/libc/Versions.def,v 1.1 2006/03/13 00:53:15 deischen Exp $ +# $FreeBSD: src/lib/libc/Versions.def,v 1.3 2007/04/29 16:14:17 kan Exp $ # This is our first version; it depends on no other. FBSD_1.0 { @@ -8,5 +8,5 @@ # strictly for use only by other FreeBSD applications and libraries # are listed here. We use a separate namespace so we can write # simple ABI-checking tools. -FBSDprivate { -}; +FBSDprivate_1.0 { +} FBSD_1.0; ==== //depot/projects/arm/src/lib/libc/amd64/Symbol.map#2 (text) ==== @@ -1,12 +1,14 @@ -# $FreeBSD: src/lib/libc/amd64/Symbol.map,v 1.1 2006/03/13 00:53:16 deischen Exp $ +/* + * $FreeBSD: src/lib/libc/amd64/Symbol.map,v 1.2 2007/04/29 14:05:15 deischen Exp $ + */ -# -# This only needs to contain symbols that are not listed in -# symbol maps from other parts of libc (i.e., not found in -# stdlib/Symbol.map, string/Symbol.map, sys/Symbol.map, ...). -# +/* + * This only needs to contain symbols that are not listed in + * symbol maps from other parts of libc (i.e., not found in + * stdlib/Symbol.map, string/Symbol.map, sys/Symbol.map, ...). + */ FBSD_1.0 { - # PSEUDO syscalls + /* PSEUDO syscalls */ _exit; _setjmp; @@ -47,11 +49,13 @@ vfork; }; -# -# FreeBSD private ABI -# -FBSDprivate { - # PSEUDO syscalls +/* + * + * FreeBSD private ABI + * + */ +FBSDprivate_1.0 { + /* PSEUDO syscalls */ __sys_getlogin; _getlogin; __sys_exit; >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sun May 6 20:22:18 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9495916A401; Sun, 6 May 2007 20:22:18 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5E9AA16A402 for ; Sun, 6 May 2007 20:22:18 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 4F60713C43E for ; Sun, 6 May 2007 20:22:18 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46KMIk0093060 for ; Sun, 6 May 2007 20:22:18 GMT (envelope-from rpaulo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46KMIud093057 for perforce@freebsd.org; Sun, 6 May 2007 20:22:18 GMT (envelope-from rpaulo@FreeBSD.org) Date: Sun, 6 May 2007 20:22:18 GMT Message-Id: <200705062022.l46KMIud093057@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rpaulo@FreeBSD.org using -f From: Rui Paulo To: Perforce Change Reviews Cc: Subject: PERFORCE change 119366 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 20:22:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=119366 Change 119366 by rpaulo@rpaulo_epsilon on 2007/05/06 20:21:17 Final changes for this driver. * Use dev.cpu.N.temperature instead of creating new OIDs in hw. * Use sched_bind/unbind when reading MSRs or when doing a cpuid. * The sysctl should be read only, not read-write. Affected files ... .. //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#3 edit Differences ... ==== //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#3 (text+ko) ==== @@ -23,7 +23,7 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#2 $ + * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#3 $ * */ @@ -38,6 +38,8 @@ #include #include #include +#include /* for curthread */ +#include #include #include @@ -46,8 +48,7 @@ struct msrtemp_softc { device_t sc_dev; - struct sysctl_ctx_list sc_sysctl_ctx; - struct sysctl_oid *sc_sysctl_tree; + struct sysctl_oid *sc_oid; }; /* @@ -58,7 +59,7 @@ static int msrtemp_attach(device_t); static int msrtemp_detach(device_t); -static int msrtemp_get_temp(void); +static int msrtemp_get_temp(int); static int msrtemp_get_temp_sysctl(SYSCTL_HANDLER_ARGS); static device_method_t msrtemp_methods[] = { @@ -124,44 +125,42 @@ static int msrtemp_attach(device_t dev) { + int regs[4]; struct msrtemp_softc *sc = device_get_softc(dev); - struct sysctl_oid *top; - char name[2]; + device_t pdev; + + pdev = device_get_parent(dev); if (bootverbose) { + mtx_lock_spin(&sched_lock); + sched_bind(curthread, device_get_unit(dev)); + /* * CPUID 0x06 returns 1 if the processor has on-die thermal * sensors. We already checked that in the identify routine. * EBX[0:3] contains the number of sensors. */ - int regs[4]; do_cpuid(0x06, regs); - + + sched_unbind(curthread); + mtx_unlock_spin(&sched_lock); + device_printf(dev, "%d digital thermal sensor(s)\n", regs[2] & 0x03); } device_printf(dev, "current temperature: %d degC\n", - msrtemp_get_temp()); + msrtemp_get_temp(device_get_unit(dev))); - sysctl_ctx_init(&sc->sc_sysctl_ctx); - sc->sc_sysctl_tree = SYSCTL_ADD_NODE(&sc->sc_sysctl_ctx, - SYSCTL_STATIC_CHILDREN(_hw), - OID_AUTO, - device_get_name(dev), - CTLFLAG_RD, 0, ""); - - name[0] = '0' + device_get_unit(dev); - name[1] = 0; - - top = SYSCTL_ADD_NODE(&sc->sc_sysctl_ctx, - SYSCTL_CHILDREN(sc->sc_sysctl_tree), - OID_AUTO, name, CTLFLAG_RD, 0, ""); - - SYSCTL_ADD_PROC(&sc->sc_sysctl_ctx, - SYSCTL_CHILDREN(top), - OID_AUTO, "temperature", CTLTYPE_INT | CTLFLAG_RW, - NULL, 0, msrtemp_get_temp_sysctl, "I", - "Current temperature in degC"); + /* + * Add the "temperature" MIB to dev.cpu.N. + */ + sc->sc_oid = SYSCTL_ADD_PROC(device_get_sysctl_ctx(pdev), + SYSCTL_CHILDREN( + device_get_sysctl_tree(pdev)), + OID_AUTO, "temperature", + CTLTYPE_INT | CTLFLAG_RD, + dev, 0, msrtemp_get_temp_sysctl, "I", + "Current temperature in degC"); return 0; } @@ -170,17 +169,19 @@ { struct msrtemp_softc *sc = device_get_softc(dev); - sysctl_ctx_free(&sc->sc_sysctl_ctx); + sysctl_remove_oid(sc->sc_oid, 1, 0); return 0; } static int -msrtemp_get_temp(void) +msrtemp_get_temp(int cpu) { uint64_t temp; + mtx_lock_spin(&sched_lock); + sched_bind(curthread, cpu); /* * The digital temperature reading is located at bit 16 * of MSR_THERM_STATUS. @@ -188,7 +189,7 @@ * There is a bit on that MSR that indicates whether the * temperature is valid or not. * - * The temperature is located by subtracting the temperature + * The temperature is computed by subtracting the temperature * reading by Tj(max). * * 100 is Tj(max). On some CPUs it should be 85, but Intel @@ -196,6 +197,9 @@ * 100 degC for everyone. */ temp = rdmsr(MSR_THERM_STATUS); + + sched_unbind(curthread); + mtx_unlock_spin(&sched_lock); /* * Bit 31 contains "Reading valid" @@ -216,8 +220,9 @@ msrtemp_get_temp_sysctl(SYSCTL_HANDLER_ARGS) { int temp; + device_t dev = (device_t) arg1; - temp = msrtemp_get_temp(); + temp = msrtemp_get_temp(device_get_unit(dev)); return sysctl_handle_int(oidp, &temp, 0, req); } From owner-p4-projects@FreeBSD.ORG Sun May 6 20:25:42 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6A45616A406; Sun, 6 May 2007 20:25:42 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3FF1816A400 for ; Sun, 6 May 2007 20:25:42 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.169]) by mx1.freebsd.org (Postfix) with ESMTP id C910413C447 for ; Sun, 6 May 2007 20:25:41 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: by ug-out-1314.google.com with SMTP id 71so813188ugh for ; Sun, 06 May 2007 13:25:40 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:reply-to:user-agent:mime-version:to:cc:subject:references:in-reply-to:content-type:content-transfer-encoding:sender; b=VwNmqWk9ve6x7+lWJdg2a+31l9s0vcnnLJ4Tsgr+iQI9lyV+MMpPRAJb0BQxCHc5sQGxoAFmS4wYEuJFIdNZVAig8ppG58l42uk1xpzCgPB+QdQcJMttu3Ifnix2knh1PgSL1kSHqQX66E77kCf9hr7XEl1NuZLjrHywjUtm/oQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:reply-to:user-agent:mime-version:to:cc:subject:references:in-reply-to:content-type:content-transfer-encoding:sender; b=QI5cY4AtlagwPKnNDnefTkfXbOhHLWGeqvUHuOFZM7ZPWPAM3LBN6HWHJjLFCfMm34kZ/HXNq4lPHNTu3LfAHhAL20yIheuSHW7DNSr4xwDW8AwyUjs/QjOsRE6sISrNXe818s3RynlX10NJztKmGJFWpmudbzzKuW61241GVBs= Received: by 10.67.101.10 with SMTP id d10mr4516786ugm.1178483140465; Sun, 06 May 2007 13:25:40 -0700 (PDT) Received: from ?151.75.242.78? ( [151.75.242.78]) by mx.google.com with ESMTP id y37sm467653iky.2007.05.06.13.25.39; Sun, 06 May 2007 13:25:39 -0700 (PDT) Message-ID: <463EAB18.8060606@FreeBSD.org> Date: Mon, 07 May 2007 06:29:12 +0200 From: Attilio Rao User-Agent: Thunderbird 1.5 (X11/20060526) MIME-Version: 1.0 To: Rui Paulo References: <200705062022.l46KMIud093057@repoman.freebsd.org> In-Reply-To: <200705062022.l46KMIud093057@repoman.freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: Attilio Rao Cc: Perforce Change Reviews Subject: Re: PERFORCE change 119366 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: attilio@FreeBSD.org List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 20:25:42 -0000 Rui Paulo wrote: > http://perforce.freebsd.org/chv.cgi?CH=119366 > > Change 119366 by rpaulo@rpaulo_epsilon on 2007/05/06 20:21:17 > > Final changes for this driver. > * Use dev.cpu.N.temperature instead of creating new OIDs in hw. > * Use sched_bind/unbind when reading MSRs or when doing a > cpuid. > * The sysctl should be read only, not read-write. > > Affected files ... > > .. //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#3 edit > > Differences ... > > ==== //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#3 (text+ko) ==== > > @@ -23,7 +23,7 @@ > * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > * POSSIBILITY OF SUCH DAMAGE. > * > - * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#2 $ > + * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#3 $ > * > */ > > @@ -38,6 +38,8 @@ > #include > #include > #include > +#include /* for curthread */ > +#include > > #include > #include > @@ -46,8 +48,7 @@ > struct msrtemp_softc { > device_t sc_dev; > > - struct sysctl_ctx_list sc_sysctl_ctx; > - struct sysctl_oid *sc_sysctl_tree; > + struct sysctl_oid *sc_oid; > }; > > /* > @@ -58,7 +59,7 @@ > static int msrtemp_attach(device_t); > static int msrtemp_detach(device_t); > > -static int msrtemp_get_temp(void); > +static int msrtemp_get_temp(int); > static int msrtemp_get_temp_sysctl(SYSCTL_HANDLER_ARGS); > > static device_method_t msrtemp_methods[] = { > @@ -124,44 +125,42 @@ > static int > msrtemp_attach(device_t dev) > { > + int regs[4]; > struct msrtemp_softc *sc = device_get_softc(dev); > - struct sysctl_oid *top; > - char name[2]; > + device_t pdev; > + > + pdev = device_get_parent(dev); > > if (bootverbose) { > + mtx_lock_spin(&sched_lock); > + sched_bind(curthread, device_get_unit(dev)); > + > /* > * CPUID 0x06 returns 1 if the processor has on-die thermal > * sensors. We already checked that in the identify routine. > * EBX[0:3] contains the number of sensors. > */ > - int regs[4]; > do_cpuid(0x06, regs); > - > + > + sched_unbind(curthread); > + mtx_unlock_spin(&sched_lock); > + > device_printf(dev, "%d digital thermal sensor(s)\n", > regs[2] & 0x03); > } > device_printf(dev, "current temperature: %d degC\n", > - msrtemp_get_temp()); > + msrtemp_get_temp(device_get_unit(dev))); > > - sysctl_ctx_init(&sc->sc_sysctl_ctx); > - sc->sc_sysctl_tree = SYSCTL_ADD_NODE(&sc->sc_sysctl_ctx, > - SYSCTL_STATIC_CHILDREN(_hw), > - OID_AUTO, > - device_get_name(dev), > - CTLFLAG_RD, 0, ""); > - > - name[0] = '0' + device_get_unit(dev); > - name[1] = 0; > - > - top = SYSCTL_ADD_NODE(&sc->sc_sysctl_ctx, > - SYSCTL_CHILDREN(sc->sc_sysctl_tree), > - OID_AUTO, name, CTLFLAG_RD, 0, ""); > - > - SYSCTL_ADD_PROC(&sc->sc_sysctl_ctx, > - SYSCTL_CHILDREN(top), > - OID_AUTO, "temperature", CTLTYPE_INT | CTLFLAG_RW, > - NULL, 0, msrtemp_get_temp_sysctl, "I", > - "Current temperature in degC"); > + /* > + * Add the "temperature" MIB to dev.cpu.N. > + */ > + sc->sc_oid = SYSCTL_ADD_PROC(device_get_sysctl_ctx(pdev), > + SYSCTL_CHILDREN( > + device_get_sysctl_tree(pdev)), > + OID_AUTO, "temperature", > + CTLTYPE_INT | CTLFLAG_RD, > + dev, 0, msrtemp_get_temp_sysctl, "I", > + "Current temperature in degC"); > return 0; > } > > @@ -170,17 +169,19 @@ > { > struct msrtemp_softc *sc = device_get_softc(dev); > > - sysctl_ctx_free(&sc->sc_sysctl_ctx); > + sysctl_remove_oid(sc->sc_oid, 1, 0); > > return 0; > } > > > static int > -msrtemp_get_temp(void) > +msrtemp_get_temp(int cpu) > { > uint64_t temp; > > + mtx_lock_spin(&sched_lock); > + sched_bind(curthread, cpu); > /* > * The digital temperature reading is located at bit 16 > * of MSR_THERM_STATUS. > @@ -188,7 +189,7 @@ > * There is a bit on that MSR that indicates whether the > * temperature is valid or not. > * > - * The temperature is located by subtracting the temperature > + * The temperature is computed by subtracting the temperature > * reading by Tj(max). > * > * 100 is Tj(max). On some CPUs it should be 85, but Intel > @@ -196,6 +197,9 @@ > * 100 degC for everyone. > */ > temp = rdmsr(MSR_THERM_STATUS); > + > + sched_unbind(curthread); > + mtx_unlock_spin(&sched_lock); > > /* > * Bit 31 contains "Reading valid" > @@ -216,8 +220,9 @@ > msrtemp_get_temp_sysctl(SYSCTL_HANDLER_ARGS) > { > int temp; > + device_t dev = (device_t) arg1; > > - temp = msrtemp_get_temp(); > + temp = msrtemp_get_temp(device_get_unit(dev)); > > return sysctl_handle_int(oidp, &temp, 0, req); > } I think that using sched_pin()/sched_unpin() is good enough for rd/wrmsr. Attilio From owner-p4-projects@FreeBSD.ORG Sun May 6 20:26:34 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5F4B716A408; Sun, 6 May 2007 20:26:34 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3D6E216A404 for ; Sun, 6 May 2007 20:26:34 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2EC7713C459 for ; Sun, 6 May 2007 20:26:34 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46KQY7C094628 for ; Sun, 6 May 2007 20:26:34 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46KQXYj094622 for perforce@freebsd.org; Sun, 6 May 2007 20:26:33 GMT (envelope-from sam@freebsd.org) Date: Sun, 6 May 2007 20:26:33 GMT Message-Id: <200705062026.l46KQXYj094622@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 119367 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 20:26:34 -0000 http://perforce.freebsd.org/chv.cgi?CH=119367 Change 119367 by sam@sam_ebb on 2007/05/06 20:25:33 o correct problem where channel change ioctl didn't do anything if new channel was bss chan o remove duplicate logic Affected files ... .. //depot/projects/wifi/sys/net80211/ieee80211_ioctl.c#76 edit Differences ... ==== //depot/projects/wifi/sys/net80211/ieee80211_ioctl.c#76 (text+ko) ==== @@ -1677,7 +1677,7 @@ if (ic->ic_opmode == IEEE80211_M_HOSTAP && !check_mode_consistency(c, ic->ic_des_mode)) return EINVAL; - if (ic->ic_state == IEEE80211_S_RUN && c == ic->ic_bsschan) + if (ic->ic_state == IEEE80211_S_RUN && c == ic->ic_curchan) return 0; /* NB: nothing to do */ } ic->ic_des_chan = c; @@ -1763,12 +1763,6 @@ default: /* NB: no static turboG */ break; } - if (ic->ic_opmode == IEEE80211_M_HOSTAP && - !check_mode_consistency(c, ic->ic_des_mode)) - return EINVAL; - ic->ic_des_chan = c; - if (ic->ic_state == IEEE80211_S_RUN && c == ic->ic_bsschan) - return 0; /* NB: nothing to do */ } return setcurchan(ic, c); } From owner-p4-projects@FreeBSD.ORG Sun May 6 20:33:11 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 86E9816A40A; Sun, 6 May 2007 20:33:11 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3F92D16A404 for ; Sun, 6 May 2007 20:33:11 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.168]) by mx1.freebsd.org (Postfix) with ESMTP id 952A913C459 for ; Sun, 6 May 2007 20:33:10 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: by ug-out-1314.google.com with SMTP id 71so813761ugh for ; Sun, 06 May 2007 13:33:09 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:reply-to:user-agent:mime-version:to:cc:subject:references:in-reply-to:content-type:content-transfer-encoding:sender; b=obNtkKNVlionbDK62YiJdsVNmvXj3rfVjqPS4yYOpgTC8J61meK87VwyC2StvgiB+TJjQP1dQyUKOGrbEEqn04ldLjHYaZ1vdUEC1hJpMqJ0LnEXJ6b/kZH6lgd+LEPmBayJWLhdBOCxNigH/ex6hHoARQrElEluNttLl/tz4dM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:reply-to:user-agent:mime-version:to:cc:subject:references:in-reply-to:content-type:content-transfer-encoding:sender; b=lVvJs3kdbjlI6+ECIlCgN0Z0Gvr0cwjsP/jwP5CPJvSuQDK8AryLONaH3bjTQObid0ZmLJuEzGESBHToICh/BPc9y0n1eVVYCNw4JmJJVPlEYaAfrN+vbVNQsLkTe28myt1fw2kq3Dm4UBXE4QCy1s3Yj+k1mV4Nzs105orSo1g= Received: by 10.66.236.13 with SMTP id j13mr4503496ugh.1178483589700; Sun, 06 May 2007 13:33:09 -0700 (PDT) Received: from ?151.75.242.78? ( [151.75.242.78]) by mx.google.com with ESMTP id b30sm3325ika.2007.05.06.13.33.05; Sun, 06 May 2007 13:33:06 -0700 (PDT) Message-ID: <463EACD7.8000905@FreeBSD.org> Date: Mon, 07 May 2007 06:36:39 +0200 From: Attilio Rao User-Agent: Thunderbird 1.5 (X11/20060526) MIME-Version: 1.0 To: Rui Paulo References: <200705062022.l46KMIud093057@repoman.freebsd.org> In-Reply-To: <200705062022.l46KMIud093057@repoman.freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: Attilio Rao Cc: Perforce Change Reviews Subject: Re: PERFORCE change 119366 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: attilio@FreeBSD.org List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 20:33:12 -0000 Rui Paulo wrote: > http://perforce.freebsd.org/chv.cgi?CH=119366 > > Change 119366 by rpaulo@rpaulo_epsilon on 2007/05/06 20:21:17 > > Final changes for this driver. > * Use dev.cpu.N.temperature instead of creating new OIDs in hw. > * Use sched_bind/unbind when reading MSRs or when doing a > cpuid. > * The sysctl should be read only, not read-write. > > Affected files ... > > .. //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#3 edit > > Differences ... > > ==== //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#3 (text+ko) ==== > > @@ -23,7 +23,7 @@ > * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > * POSSIBILITY OF SUCH DAMAGE. > * > - * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#2 $ > + * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#3 $ > * > */ > > @@ -38,6 +38,8 @@ > #include > #include > #include > +#include /* for curthread */ > +#include > > #include > #include > @@ -46,8 +48,7 @@ > struct msrtemp_softc { > device_t sc_dev; > > - struct sysctl_ctx_list sc_sysctl_ctx; > - struct sysctl_oid *sc_sysctl_tree; > + struct sysctl_oid *sc_oid; > }; > > /* > @@ -58,7 +59,7 @@ > static int msrtemp_attach(device_t); > static int msrtemp_detach(device_t); > > -static int msrtemp_get_temp(void); > +static int msrtemp_get_temp(int); > static int msrtemp_get_temp_sysctl(SYSCTL_HANDLER_ARGS); > > static device_method_t msrtemp_methods[] = { > @@ -124,44 +125,42 @@ > static int > msrtemp_attach(device_t dev) > { > + int regs[4]; > struct msrtemp_softc *sc = device_get_softc(dev); > - struct sysctl_oid *top; > - char name[2]; > + device_t pdev; > + > + pdev = device_get_parent(dev); > > if (bootverbose) { > + mtx_lock_spin(&sched_lock); > + sched_bind(curthread, device_get_unit(dev)); > + > /* > * CPUID 0x06 returns 1 if the processor has on-die thermal > * sensors. We already checked that in the identify routine. > * EBX[0:3] contains the number of sensors. > */ > - int regs[4]; > do_cpuid(0x06, regs); > - > + > + sched_unbind(curthread); > + mtx_unlock_spin(&sched_lock); > + > device_printf(dev, "%d digital thermal sensor(s)\n", > regs[2] & 0x03); > } > device_printf(dev, "current temperature: %d degC\n", > - msrtemp_get_temp()); > + msrtemp_get_temp(device_get_unit(dev))); > > - sysctl_ctx_init(&sc->sc_sysctl_ctx); > - sc->sc_sysctl_tree = SYSCTL_ADD_NODE(&sc->sc_sysctl_ctx, > - SYSCTL_STATIC_CHILDREN(_hw), > - OID_AUTO, > - device_get_name(dev), > - CTLFLAG_RD, 0, ""); > - > - name[0] = '0' + device_get_unit(dev); > - name[1] = 0; > - > - top = SYSCTL_ADD_NODE(&sc->sc_sysctl_ctx, > - SYSCTL_CHILDREN(sc->sc_sysctl_tree), > - OID_AUTO, name, CTLFLAG_RD, 0, ""); > - > - SYSCTL_ADD_PROC(&sc->sc_sysctl_ctx, > - SYSCTL_CHILDREN(top), > - OID_AUTO, "temperature", CTLTYPE_INT | CTLFLAG_RW, > - NULL, 0, msrtemp_get_temp_sysctl, "I", > - "Current temperature in degC"); > + /* > + * Add the "temperature" MIB to dev.cpu.N. > + */ > + sc->sc_oid = SYSCTL_ADD_PROC(device_get_sysctl_ctx(pdev), > + SYSCTL_CHILDREN( > + device_get_sysctl_tree(pdev)), > + OID_AUTO, "temperature", > + CTLTYPE_INT | CTLFLAG_RD, > + dev, 0, msrtemp_get_temp_sysctl, "I", > + "Current temperature in degC"); > return 0; > } > > @@ -170,17 +169,19 @@ > { > struct msrtemp_softc *sc = device_get_softc(dev); > > - sysctl_ctx_free(&sc->sc_sysctl_ctx); > + sysctl_remove_oid(sc->sc_oid, 1, 0); > > return 0; > } > > > static int > -msrtemp_get_temp(void) > +msrtemp_get_temp(int cpu) > { > uint64_t temp; > > + mtx_lock_spin(&sched_lock); > + sched_bind(curthread, cpu); > /* > * The digital temperature reading is located at bit 16 > * of MSR_THERM_STATUS. > @@ -188,7 +189,7 @@ > * There is a bit on that MSR that indicates whether the > * temperature is valid or not. > * > - * The temperature is located by subtracting the temperature > + * The temperature is computed by subtracting the temperature > * reading by Tj(max). > * > * 100 is Tj(max). On some CPUs it should be 85, but Intel > @@ -196,6 +197,9 @@ > * 100 degC for everyone. > */ > temp = rdmsr(MSR_THERM_STATUS); > + > + sched_unbind(curthread); > + mtx_unlock_spin(&sched_lock); > > /* > * Bit 31 contains "Reading valid" > @@ -216,8 +220,9 @@ > msrtemp_get_temp_sysctl(SYSCTL_HANDLER_ARGS) > { > int temp; > + device_t dev = (device_t) arg1; > > - temp = msrtemp_get_temp(); > + temp = msrtemp_get_temp(device_get_unit(dev)); > > return sysctl_handle_int(oidp, &temp, 0, req); > } Being more specific, you don't need lock at all there. wrmsr/cpuid are atomic. So you don't need to hang at all there. Attilio From owner-p4-projects@FreeBSD.ORG Sun May 6 20:44:57 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 48A2116A401; Sun, 6 May 2007 20:44:57 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 089BA16A403 for ; Sun, 6 May 2007 20:44:57 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id DD93D13C46C for ; Sun, 6 May 2007 20:44:56 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46KiumU098563 for ; Sun, 6 May 2007 20:44:56 GMT (envelope-from rpaulo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46Kiupn098560 for perforce@freebsd.org; Sun, 6 May 2007 20:44:56 GMT (envelope-from rpaulo@FreeBSD.org) Date: Sun, 6 May 2007 20:44:56 GMT Message-Id: <200705062044.l46Kiupn098560@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rpaulo@FreeBSD.org using -f From: Rui Paulo To: Perforce Change Reviews Cc: Subject: PERFORCE change 119368 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 20:44:57 -0000 http://perforce.freebsd.org/chv.cgi?CH=119368 Change 119368 by rpaulo@rpaulo_epsilon on 2007/05/06 20:43:55 Don't print anything in the attach routine because the other CPUs will only be started later (we can't mi_switch()). All the information printed here will only apply to the BSP. Affected files ... .. //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#4 edit Differences ... ==== //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#4 (text+ko) ==== @@ -23,7 +23,7 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#3 $ + * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#4 $ * */ @@ -131,26 +131,6 @@ pdev = device_get_parent(dev); - if (bootverbose) { - mtx_lock_spin(&sched_lock); - sched_bind(curthread, device_get_unit(dev)); - - /* - * CPUID 0x06 returns 1 if the processor has on-die thermal - * sensors. We already checked that in the identify routine. - * EBX[0:3] contains the number of sensors. - */ - do_cpuid(0x06, regs); - - sched_unbind(curthread); - mtx_unlock_spin(&sched_lock); - - device_printf(dev, "%d digital thermal sensor(s)\n", - regs[2] & 0x03); - } - device_printf(dev, "current temperature: %d degC\n", - msrtemp_get_temp(device_get_unit(dev))); - /* * Add the "temperature" MIB to dev.cpu.N. */ From owner-p4-projects@FreeBSD.ORG Sun May 6 20:47:52 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4466E16A406; Sun, 6 May 2007 20:47:52 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 160DE16A400; Sun, 6 May 2007 20:47:52 +0000 (UTC) (envelope-from rpaulo@fnop.net) Received: from core.fnop.net (mx.fnop.net [82.102.11.82]) by mx1.freebsd.org (Postfix) with ESMTP id C4A3013C44C; Sun, 6 May 2007 20:47:51 +0000 (UTC) (envelope-from rpaulo@fnop.net) Received: from core.fnop.net (mx.fnop.net [82.102.11.82]) by core.fnop.net (Postfix) with ESMTP id 3144E69057F; Sun, 6 May 2007 21:48:09 +0100 (WEST) Received: by core.fnop.net (Postfix, from userid 1015) id E5C57690680; Sun, 6 May 2007 21:48:08 +0100 (WEST) X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on core.fnop.net X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=AWL,BAYES_00, RCVD_IN_SORBS_DUL autolearn=no version=3.1.7 Received: from epsilon.local.fnop.net (unknown [83.144.140.52]) by core.fnop.net (Postfix) with ESMTP id EE85269057F; Sun, 6 May 2007 21:48:07 +0100 (WEST) Date: Sun, 06 May 2007 21:47:45 +0100 Message-ID: <86irb51xxq.wl%rpaulo@fnop.net> From: Rui Paulo To: attilio@FreeBSD.org In-Reply-To: <463EACD7.8000905@FreeBSD.org> References: <200705062022.l46KMIud093057@repoman.freebsd.org> <463EACD7.8000905@FreeBSD.org> User-Agent: Wanderlust/2.14.0 (Africa) Emacs/21.3 Mule/5.0 (SAKAKI) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII X-Virus-Scanned: ClamAV using ClamSMTP Cc: Perforce Change Reviews , Rui Paulo Subject: Re: PERFORCE change 119366 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 20:47:52 -0000 At Mon, 07 May 2007 06:36:39 +0200, Attilio Rao wrote: > > Being more specific, you don't need lock at all there. > wrmsr/cpuid are atomic. So you don't need to hang at all there. What about rdmsr ? From owner-p4-projects@FreeBSD.ORG Sun May 6 20:48:52 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DB89116A40D; Sun, 6 May 2007 20:48:51 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B9A1E16A40A for ; Sun, 6 May 2007 20:48:51 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.172]) by mx1.freebsd.org (Postfix) with ESMTP id 4E0D813C4C2 for ; Sun, 6 May 2007 20:48:50 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: by ug-out-1314.google.com with SMTP id 71so814919ugh for ; Sun, 06 May 2007 13:48:50 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:reply-to:user-agent:mime-version:to:cc:subject:references:in-reply-to:content-type:content-transfer-encoding:sender; b=jH4q3ELSkvi3tTs6sTZGjcOQkhh5QCZuX1kAs5Hwxo+t1IPoIG7aHYD+YFAFBeIBJ2m2+bqEAusH9xDL1kqIjQ8czdG6RiwCMBAPcH4EezkNPu7Q8SNuuMy78PPZn83lQ3lpPuEgaCSEnLyDa2HwhioOhp8Pm9Y9wkH7xsSPIqE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:reply-to:user-agent:mime-version:to:cc:subject:references:in-reply-to:content-type:content-transfer-encoding:sender; b=cOZlU5GU+6Ocr0LQBVImWderuqVjoC1CCzfVdq2cm/E9x7QWDUZQjmYBuYDUguW01gNUuFrOGVFxOk75ccdE7ZjpjSHrHYJSIXbtqO7gzvCa7xhswNvB9ELUkjWX3awYqRhuQZFmlut1dQSwwFrdXmQeeyWuTJkKyFU/pp7PNpw= Received: by 10.67.21.11 with SMTP id y11mr4542056ugi.1178484529976; Sun, 06 May 2007 13:48:49 -0700 (PDT) Received: from ?151.75.242.78? ( [151.75.242.78]) by mx.google.com with ESMTP id c24sm134985ika.2007.05.06.13.48.48; Sun, 06 May 2007 13:48:48 -0700 (PDT) Message-ID: <463EB085.7080109@FreeBSD.org> Date: Mon, 07 May 2007 06:52:21 +0200 From: Attilio Rao User-Agent: Thunderbird 1.5 (X11/20060526) MIME-Version: 1.0 To: Rui Paulo References: <200705062022.l46KMIud093057@repoman.freebsd.org> <463EACD7.8000905@FreeBSD.org> <86irb51xxq.wl%rpaulo@fnop.net> In-Reply-To: <86irb51xxq.wl%rpaulo@fnop.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: Attilio Rao Cc: Perforce Change Reviews , Rui Paulo Subject: Re: PERFORCE change 119366 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: attilio@FreeBSD.org List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 20:48:52 -0000 Rui Paulo wrote: > At Mon, 07 May 2007 06:36:39 +0200, > Attilio Rao wrote: >> Being more specific, you don't need lock at all there. >> wrmsr/cpuid are atomic. So you don't need to hang at all there. > > What about rdmsr ? The same. Attilio From owner-p4-projects@FreeBSD.ORG Sun May 6 20:54:15 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 98B0E16A40A; Sun, 6 May 2007 20:54:15 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4A67C16A407 for ; Sun, 6 May 2007 20:54:15 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 39EC113C480 for ; Sun, 6 May 2007 20:54:15 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46KsFpr008476 for ; Sun, 6 May 2007 20:54:15 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46KsD48008466 for perforce@freebsd.org; Sun, 6 May 2007 20:54:13 GMT (envelope-from piso@freebsd.org) Date: Sun, 6 May 2007 20:54:13 GMT Message-Id: <200705062054.l46KsD48008466@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 119369 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 20:54:15 -0000 http://perforce.freebsd.org/chv.cgi?CH=119369 Change 119369 by piso@piso_newluxor on 2007/05/06 20:53:14 IFC@119361 Affected files ... .. //depot/projects/soc2006/intr_filter/amd64/amd64/intr_machdep.c#29 integrate .. //depot/projects/soc2006/intr_filter/amd64/include/vmparam.h#3 integrate .. //depot/projects/soc2006/intr_filter/arm/include/vmparam.h#4 integrate .. //depot/projects/soc2006/intr_filter/boot/common/loader.8#6 integrate .. //depot/projects/soc2006/intr_filter/conf/files#19 integrate .. //depot/projects/soc2006/intr_filter/conf/options#17 integrate .. //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/dbuf.c#2 integrate .. //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/dnode.c#2 integrate .. //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c#2 integrate .. //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c#2 integrate .. //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#2 integrate .. //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#3 integrate .. //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#3 integrate .. //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/zio.c#2 integrate .. //depot/projects/soc2006/intr_filter/dev/ata/ata-disk.c#7 integrate .. //depot/projects/soc2006/intr_filter/dev/isp/isp.c#16 integrate .. //depot/projects/soc2006/intr_filter/dev/isp/isp_freebsd.c#13 integrate .. //depot/projects/soc2006/intr_filter/dev/isp/isp_freebsd.h#11 integrate .. //depot/projects/soc2006/intr_filter/dev/isp/isp_pci.c#16 integrate .. //depot/projects/soc2006/intr_filter/dev/isp/isp_sbus.c#12 integrate .. //depot/projects/soc2006/intr_filter/dev/isp/isp_tpublic.h#6 integrate .. //depot/projects/soc2006/intr_filter/dev/mpt/mpt.c#8 integrate .. //depot/projects/soc2006/intr_filter/dev/mpt/mpt.h#10 integrate .. //depot/projects/soc2006/intr_filter/dev/mpt/mpt_cam.c#14 integrate .. //depot/projects/soc2006/intr_filter/dev/mpt/mpt_cam.h#3 integrate .. //depot/projects/soc2006/intr_filter/dev/mpt/mpt_pci.c#11 integrate .. //depot/projects/soc2006/intr_filter/dev/mpt/mpt_raid.c#5 integrate .. //depot/projects/soc2006/intr_filter/dev/sound/pcm/sound.h#7 integrate .. //depot/projects/soc2006/intr_filter/dev/usb/if_rum.c#1 branch .. //depot/projects/soc2006/intr_filter/dev/usb/if_rumreg.h#1 branch .. //depot/projects/soc2006/intr_filter/dev/usb/if_rumvar.h#1 branch .. //depot/projects/soc2006/intr_filter/dev/usb/rt2573_ucode.h#1 branch .. //depot/projects/soc2006/intr_filter/dev/usb/usbdevs#14 integrate .. //depot/projects/soc2006/intr_filter/geom/eli/g_eli_ctl.c#5 integrate .. //depot/projects/soc2006/intr_filter/geom/geom.h#5 integrate .. //depot/projects/soc2006/intr_filter/geom/geom_dev.c#6 integrate .. //depot/projects/soc2006/intr_filter/geom/geom_disk.c#4 integrate .. //depot/projects/soc2006/intr_filter/geom/geom_disk.h#3 integrate .. //depot/projects/soc2006/intr_filter/geom/geom_io.c#5 integrate .. //depot/projects/soc2006/intr_filter/geom/geom_slice.c#3 integrate .. //depot/projects/soc2006/intr_filter/geom/geom_subr.c#3 integrate .. //depot/projects/soc2006/intr_filter/i386/conf/GENERIC#13 integrate .. //depot/projects/soc2006/intr_filter/i386/i386/intr_machdep.c#36 integrate .. //depot/projects/soc2006/intr_filter/i386/include/vmparam.h#3 integrate .. //depot/projects/soc2006/intr_filter/ia64/ia64/machdep.c#7 integrate .. //depot/projects/soc2006/intr_filter/ia64/include/vmparam.h#4 integrate .. //depot/projects/soc2006/intr_filter/kern/kern_intr.c#41 integrate .. //depot/projects/soc2006/intr_filter/kern/uipc_usrreq.c#13 integrate .. //depot/projects/soc2006/intr_filter/modules/Makefile#15 integrate .. //depot/projects/soc2006/intr_filter/modules/rum/Makefile#1 branch .. //depot/projects/soc2006/intr_filter/net80211/ieee80211_amrr.c#2 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_input.c#10 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctputil.c#10 integrate .. //depot/projects/soc2006/intr_filter/netinet/tcp_input.c#14 integrate .. //depot/projects/soc2006/intr_filter/netinet/tcp_output.c#8 integrate .. //depot/projects/soc2006/intr_filter/netinet/tcp_subr.c#11 integrate .. //depot/projects/soc2006/intr_filter/netinet/tcp_syncache.c#10 integrate .. //depot/projects/soc2006/intr_filter/netinet/tcp_timer.c#7 integrate .. //depot/projects/soc2006/intr_filter/netinet/tcp_usrreq.c#11 integrate .. //depot/projects/soc2006/intr_filter/netinet/tcp_var.h#10 integrate .. //depot/projects/soc2006/intr_filter/powerpc/include/vmparam.h#3 integrate .. //depot/projects/soc2006/intr_filter/sparc64/include/vmparam.h#3 integrate .. //depot/projects/soc2006/intr_filter/sun4v/include/vmparam.h#3 integrate .. //depot/projects/soc2006/intr_filter/sys/disk.h#2 integrate .. //depot/projects/soc2006/intr_filter/sys/interrupt.h#21 integrate .. //depot/projects/soc2006/intr_filter/vm/vm_page.c#10 integrate .. //depot/projects/soc2006/intr_filter/vm/vm_page.h#6 integrate Differences ... ==== //depot/projects/soc2006/intr_filter/amd64/amd64/intr_machdep.c#29 (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/amd64/intr_machdep.c,v 1.30 2007/03/06 17:16:46 jhb Exp $ + * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.31 2007/05/06 17:02:49 piso Exp $ */ /* ==== //depot/projects/soc2006/intr_filter/amd64/include/vmparam.h#3 (text+ko) ==== @@ -38,7 +38,7 @@ * SUCH DAMAGE. * * from: @(#)vmparam.h 5.9 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.46 2007/04/21 01:14:47 sepotvin Exp $ + * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.47 2007/05/05 19:50:26 alc Exp $ */ @@ -88,6 +88,11 @@ #define UMA_MD_SMALL_ALLOC /* + * The physical address space is densely populated. + */ +#define VM_PHYSSEG_DENSE + +/* * Virtual addresses of things. Derived from the page directory and * page table indexes from pmap.h for precision. * Because of the page that is both a PD and PT, it looks a little ==== //depot/projects/soc2006/intr_filter/arm/include/vmparam.h#4 (text+ko) ==== @@ -28,7 +28,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/arm/include/vmparam.h,v 1.7 2006/08/25 23:51:10 alc Exp $ + * $FreeBSD: src/sys/arm/include/vmparam.h,v 1.8 2007/05/05 19:50:26 alc Exp $ */ #ifndef _MACHINE_VMPARAM_H_ @@ -73,6 +73,11 @@ #define VM_PHYSSEG_NOADD /* + * The physical address space is densely populated. + */ +#define VM_PHYSSEG_DENSE + +/* * we support 2 free lists: * * - DEFAULT for all systems ==== //depot/projects/soc2006/intr_filter/boot/common/loader.8#6 (text+ko) ==== @@ -22,9 +22,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/sys/boot/common/loader.8,v 1.91 2007/02/04 06:35:10 imp Exp $ +.\" $FreeBSD: src/sys/boot/common/loader.8,v 1.92 2007/05/05 17:36:42 jmg Exp $ .\" -.Dd November 29, 2006 +.Dd May 5, 2007 .Dt LOADER 8 .Os .Sh NAME @@ -574,20 +574,19 @@ meta information, which directly governs the maximum amount of swap the system can support. This value is specified in bytes of KVA space -and defaults to around 70MBytes. +and defaults to 32MBytes on i386 and amd64. Care should be taken to not reduce this value such that the actual amount of configured swap exceeds 1/2 the kernel-supported swap. -The default 70MB allows -the kernel to support a maximum of (approximately) -14GB of configured swap. -Only mess around with +The default of 32MB allows +the kernel to support a maximum of ~7GB of swap. +Only change this parameter if you need to greatly extend the KVM reservation for other resources such as the buffer cache or .Va kern.ipc.nmbclusters . -Modifies +Modifies kernel option .Dv VM_SWZONE_SIZE_MAX . .It Va kern.maxbcache Limits the amount of KVM reserved for use by the ==== //depot/projects/soc2006/intr_filter/conf/files#19 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1201 2007/05/04 13:29:45 rwatson Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1202 2007/05/06 10:07:20 kevlo Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -1071,6 +1071,7 @@ dev/usb/if_kue.c optional kue dev/usb/if_ural.c optional ural dev/usb/if_rue.c optional rue +dev/usb/if_rum.c optional rum dev/usb/if_udav.c optional udav dev/usb/ohci.c optional ohci dev/usb/ohci_pci.c optional ohci pci ==== //depot/projects/soc2006/intr_filter/conf/options#17 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.586 2007/04/14 20:16:03 kmacy Exp $ +# $FreeBSD: src/sys/conf/options,v 1.587 2007/05/06 17:04:34 piso Exp $ # # On the handling of kernel options # @@ -766,4 +766,4 @@ SND_EMU10KX_MULTICHANNEL opt_emu10kx.h # Interrupt filtering -INTR_FILTER opt_global.h +INTR_FILTER opt_global.h ==== //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/dbuf.c#2 (text+ko) ==== @@ -1178,7 +1178,8 @@ } else { ASSERT(db->db_buf != NULL); ASSERT(list_head(&dr->dt.di.dr_children) == NULL); - /* XXX - mutex and list destroy? */ + list_destroy(&dr->dt.di.dr_children); + mutex_destroy(&dr->dt.di.dr_mtx); } kmem_free(dr, sizeof (dbuf_dirty_record_t)); @@ -1925,6 +1926,10 @@ drp = &(*drp)->dr_next; ASSERT((*drp)->dr_next == NULL); *drp = NULL; + if (dr->dr_dbuf->db_level != 0) { + list_destroy(&dr->dt.di.dr_children); + mutex_destroy(&dr->dt.di.dr_mtx); + } kmem_free(dr, sizeof (dbuf_dirty_record_t)); ASSERT(db->db_dirtycnt > 0); db->db_dirtycnt -= 1; @@ -2225,6 +2230,8 @@ >> (db->db_level * epbs), >=, db->db_blkid); arc_set_callback(db->db_buf, dbuf_do_evict, db); } + list_destroy(&dr->dt.di.dr_children); + mutex_destroy(&dr->dt.di.dr_mtx); } kmem_free(dr, sizeof (dbuf_dirty_record_t)); ==== //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/dnode.c#2 (text+ko) ==== @@ -260,7 +260,6 @@ uint64_t object) { dnode_t *dn = kmem_cache_alloc(dnode_cache, KM_SLEEP); - (void) dnode_cons(dn, NULL, 0); /* XXX */ dn->dn_objset = os; dn->dn_object = object; ==== //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c#2 (text+ko) ==== @@ -445,6 +445,8 @@ } else { mutex_exit(&db->db_mtx); dnode_undirty_dbufs(&dr->dt.di.dr_children); + list_destroy(&dr->dt.di.dr_children); + mutex_destroy(&dr->dt.di.dr_mtx); } kmem_free(dr, sizeof (dbuf_dirty_record_t)); dbuf_rele(db, (void *)(uintptr_t)txg); ==== //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c#2 (text+ko) ==== @@ -129,6 +129,7 @@ txg_list_destroy(&dp->dp_dirty_datasets); txg_list_destroy(&dp->dp_dirty_dirs); + txg_list_destroy(&dp->dp_sync_tasks); list_destroy(&dp->dp_synced_objsets); arc_flush(); ==== //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#2 (text+ko) ==== @@ -27,11 +27,13 @@ #include #include #include +#include #include #include #include #include #include +#include /* * Virtual device vector for GEOM. @@ -83,7 +85,8 @@ error = cp->provider->error; ZFS_LOG(1, "Closing access to %s.", cp->provider->name); - g_access(cp, -cp->acr, -cp->acw, -cp->ace); + if (cp->acr + cp->acw + cp->ace > 0) + g_access(cp, -cp->acr, -cp->acw, -cp->ace); ZFS_LOG(1, "Destroyed consumer to %s.", cp->provider->name); g_detach(cp); g_destroy_consumer(cp); @@ -113,8 +116,11 @@ ZFS_LOG(1, "Attaching to %s.", pp->name); /* Do we have geom already? No? Create one. */ LIST_FOREACH(gp, &zfs_vdev_class.geom, geom) { - if (!(gp->flags & G_GEOM_WITHER)) - break; + if (gp->flags & G_GEOM_WITHER) + continue; + if (strcmp(gp->name, "zfs::vdev") != 0) + continue; + break; } if (gp == NULL) { gp = g_new_geomf(&zfs_vdev_class, "zfs::vdev"); @@ -227,12 +233,125 @@ } } +static char * +vdev_geom_get_id(struct g_consumer *cp) +{ + char *id; + int len; + + g_topology_assert_not(); + len = DISK_IDENT_SIZE; + id = kmem_zalloc(len, KM_SLEEP); + if (g_io_getattr("GEOM::ident", cp, &len, id) != 0) { + kmem_free(id, DISK_IDENT_SIZE); + return (NULL); + } + return (id); +} + +static void +vdev_geom_free_id(char *id) +{ + + if (id != NULL) + kmem_free(id, DISK_IDENT_SIZE); +} + +struct vdev_geom_find { + const char *id; + int write; + struct g_consumer *cp; +}; + +static void +vdev_geom_taste_orphan(struct g_consumer *cp) +{ + + KASSERT(1 == 0, ("%s called while tasting %s.", __func__, + cp->provider->name)); +} + +static void +vdev_geom_attach_by_id_event(void *arg, int flags __unused) +{ + struct vdev_geom_find *ap; + struct g_class *mp; + struct g_geom *gp, *zgp; + struct g_provider *pp; + struct g_consumer *zcp; + char *id; + + g_topology_assert(); + + ap = arg; + + zgp = g_new_geomf(&zfs_vdev_class, "zfs::vdev::taste"); + /* This orphan function should be never called. */ + zgp->orphan = vdev_geom_taste_orphan; + zcp = g_new_consumer(zgp); + + LIST_FOREACH(mp, &g_classes, class) { + if (mp == &zfs_vdev_class) + continue; + LIST_FOREACH(gp, &mp->geom, geom) { + if (gp->flags & G_GEOM_WITHER) + continue; + LIST_FOREACH(pp, &gp->provider, provider) { + if (pp->flags & G_PF_WITHER) + continue; + g_attach(zcp, pp); + if (g_access(zcp, 1, 0, 0) != 0) { + g_detach(zcp); + continue; + } + g_topology_unlock(); + id = vdev_geom_get_id(zcp); + g_topology_lock(); + g_access(zcp, -1, 0, 0); + g_detach(zcp); + if (id == NULL || strcmp(id, ap->id) != 0) { + vdev_geom_free_id(id); + continue; + } + vdev_geom_free_id(id); + ap->cp = vdev_geom_attach(pp, ap->write); + if (ap->cp == NULL) { + printf("ZFS WARNING: Cannot open %s " + "for writting.\n", pp->name); + continue; + } + goto end; + } + } + } + ap->cp = NULL; +end: + g_destroy_consumer(zcp); + g_destroy_geom(zgp); +} + +static struct g_consumer * +vdev_geom_attach_by_id(const char *id, int write) +{ + struct vdev_geom_find *ap; + struct g_consumer *cp; + + ap = kmem_zalloc(sizeof(*ap), KM_SLEEP); + ap->id = id; + ap->write = write; + g_waitfor_event(vdev_geom_attach_by_id_event, ap, M_WAITOK, NULL); + cp = ap->cp; + kmem_free(ap, sizeof(*ap)); + return (cp); +} + static int vdev_geom_open(vdev_t *vd, uint64_t *psize, uint64_t *ashift) { vdev_geom_ctx_t *ctx; struct g_provider *pp; struct g_consumer *cp; + char *id = NULL; int owned; /* @@ -245,23 +364,55 @@ if ((owned = mtx_owned(&Giant))) mtx_unlock(&Giant); + cp = NULL; g_topology_lock(); pp = g_provider_by_name(vd->vdev_path + sizeof("/dev/") - 1); - if (pp == NULL) { - g_topology_unlock(); - if (owned) - mtx_lock(&Giant); - vd->vdev_stat.vs_aux = VDEV_AUX_BAD_LABEL; - return (EINVAL); + if (pp != NULL) { + ZFS_LOG(1, "Found provider by name %s.", vd->vdev_path); + cp = vdev_geom_attach(pp, !!(spa_mode & FWRITE)); + if (cp != NULL && vd->vdev_devid != NULL) { + g_topology_unlock(); + id = vdev_geom_get_id(cp); + g_topology_lock(); + if (id == NULL || strcmp(id, vd->vdev_devid) != 0) { + vdev_geom_detach(cp, 0); + cp = NULL; + ZFS_LOG(1, "ID mismatch for provider %s: " + "[%s]!=[%s].", vd->vdev_path, + vd->vdev_devid, id); + goto next; + } + ZFS_LOG(1, "ID match for provider %s.", vd->vdev_path); + } } - cp = vdev_geom_attach(pp, !!(spa_mode & FWRITE)); +next: g_topology_unlock(); + vdev_geom_free_id(id); + if (cp == NULL && vd->vdev_devid != NULL) { + ZFS_LOG(0, "Searching by ID [%s].", vd->vdev_devid); + cp = vdev_geom_attach_by_id(vd->vdev_devid, + !!(spa_mode & FWRITE)); + if (cp != NULL) { + size_t len = strlen(cp->provider->name) + 6; /* 6 == strlen("/dev/") + 1 */ + char *buf = kmem_alloc(len, KM_SLEEP); + + snprintf(buf, len, "/dev/%s", cp->provider->name); + spa_strfree(vd->vdev_path); + vd->vdev_path = buf; + + ZFS_LOG(1, "Attach by ID [%s] succeeded, provider %s.", + vd->vdev_devid, vd->vdev_path); + } + } if (owned) mtx_lock(&Giant); if (cp == NULL) { + ZFS_LOG(1, "Provider %s (id=[%s]) not found.", vd->vdev_path, + vd->vdev_devid); vd->vdev_stat.vs_aux = VDEV_AUX_OPEN_FAILED; return (EACCES); } + pp = cp->provider; /* * Determine the actual size of the device. ==== //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#3 (text+ko) ==== @@ -770,11 +770,12 @@ * Perhaps we should use SPA_MAXBLOCKSIZE chunks? */ nbytes = MIN(n, max_blksz - P2PHASE(woff, max_blksz)); - rw_enter(&zp->z_map_lock, RW_READER); if (woff + nbytes > zp->z_phys->zp_size) vnode_pager_setsize(vp, woff + nbytes); + rw_enter(&zp->z_map_lock, RW_READER); + tx_bytes = uio->uio_resid; if (vn_has_cached_data(vp)) { rw_exit(&zp->z_map_lock); ==== //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#3 (text+ko) ==== @@ -695,9 +695,6 @@ ZFS_OBJ_HOLD_EXIT(zfsvfs, z_id); } -/* - * FreeBSD: Should be called from ->vop_reclaim(). - */ void zfs_znode_free(znode_t *zp) { @@ -991,6 +988,7 @@ error = zap_add(os, moid, ZFS_ROOT_OBJ, 8, 1, &roid, tx); ASSERT(error == 0); + mutex_destroy(&zfsvfs.z_znodes_lock); kmem_cache_free(znode_cache, rootzp); } #endif /* _KERNEL */ ==== //depot/projects/soc2006/intr_filter/contrib/opensolaris/uts/common/fs/zfs/zio.c#2 (text+ko) ==== @@ -977,6 +977,8 @@ cv_broadcast(&zio->io_cv); mutex_exit(&zio->io_lock); } else { + cv_destroy(&zio->io_cv); + mutex_destroy(&zio->io_lock); kmem_cache_free(zio_cache, zio); } } ==== //depot/projects/soc2006/intr_filter/dev/ata/ata-disk.c#7 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.202 2007/04/26 12:59:20 roberto Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.203 2007/05/06 01:20:06 pjd Exp $"); #include "opt_ata.h" #include @@ -161,6 +161,8 @@ adp->disk->d_unit = device_get_unit(dev); if (atadev->param.support.command2 & ATA_SUPPORT_FLUSHCACHE) adp->disk->d_flags = DISKFLAG_CANFLUSHCACHE; + snprintf(adp->disk->d_ident, sizeof(adp->disk->d_ident), "ad:%s", + atadev->param.serial); disk_create(adp->disk, DISK_VERSION); device_add_child(dev, "subdisk", device_get_unit(dev)); ad_firmware_geom_adjust(dev, adp->disk); ==== //depot/projects/soc2006/intr_filter/dev/isp/isp.c#16 (text+ko) ==== @@ -46,7 +46,7 @@ #endif #ifdef __FreeBSD__ #include -__FBSDID("$FreeBSD: src/sys/dev/isp/isp.c,v 1.145 2007/03/29 21:29:26 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/isp/isp.c,v 1.146 2007/05/05 20:17:22 mjacob Exp $"); #include #endif #ifdef __OpenBSD__ @@ -5121,20 +5121,11 @@ isp->isp_mboxtmp[0] = MBOX_HOST_INTERFACE_ERROR; MBOX_NOTIFY_COMPLETE(isp); } -#ifdef ISP_FW_CRASH_DUMP /* - * If we have crash dumps enabled, it's up to the handler - * for isp_async to reinit stuff and restart the firmware - * after performing the crash dump. The reason we do things - * this way is that we may need to activate a kernel thread - * to do all the crash dump goop. + * It's up to the handler for isp_async to reinit stuff and + * restart the firmware */ isp_async(isp, ISPASYNC_FW_CRASH, NULL); -#else - isp_async(isp, ISPASYNC_FW_CRASH, NULL); - isp_reinit(isp); - isp_async(isp, ISPASYNC_FW_RESTARTED, NULL); -#endif rval = -1; break; @@ -5401,13 +5392,7 @@ break; case ISP_CONN_FATAL: isp_prt(isp, ISP_LOGERR, "FATAL CONNECTION ERROR"); -#ifdef ISP_FW_CRASH_DUMP isp_async(isp, ISPASYNC_FW_CRASH, NULL); -#else - isp_async(isp, ISPASYNC_FW_CRASH, NULL); - isp_reinit(isp); - isp_async(isp, ISPASYNC_FW_RESTARTED, NULL); -#endif return (-1); case ISP_CONN_LOOPBACK: isp_prt(isp, ISP_LOGWARN, ==== //depot/projects/soc2006/intr_filter/dev/isp/isp_freebsd.c#13 (text+ko) ==== @@ -28,7 +28,7 @@ * Platform (FreeBSD) dependent common attachment code for Qlogic adapters. */ #include -__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.139 2007/04/18 04:58:53 scottl Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.140 2007/05/05 20:17:23 mjacob Exp $"); #include #include #include @@ -99,7 +99,9 @@ #else static struct cdevsw isp_cdevsw = { .d_version = D_VERSION, +#if __FreeBSD_version < 700037 .d_flags = D_NEEDGIANT, +#endif .d_ioctl = ispioctl, .d_name = "isp", }; @@ -135,22 +137,17 @@ /* * Construct our SIM entry. */ - ISPLOCK_2_CAMLOCK(isp); - sim = cam_sim_alloc(isp_action, isp_poll, "isp", isp, - device_get_unit(isp->isp_dev), &Giant, 1, isp->isp_maxcmds, devq); + sim = isp_sim_alloc(isp_action, isp_poll, "isp", isp, + device_get_unit(isp->isp_dev), 1, isp->isp_maxcmds, devq); if (sim == NULL) { cam_simq_free(devq); - CAMLOCK_2_ISPLOCK(isp); return; } - CAMLOCK_2_ISPLOCK(isp); isp->isp_osinfo.ehook.ich_func = isp_intr_enable; isp->isp_osinfo.ehook.ich_arg = isp; - ISPLOCK_2_CAMLOCK(isp); if (config_intrhook_establish(&isp->isp_osinfo.ehook) != 0) { cam_sim_free(sim, TRUE); - CAMLOCK_2_ISPLOCK(isp); isp_prt(isp, ISP_LOGERR, "could not establish interrupt enable hook"); return; @@ -158,7 +155,6 @@ if (xpt_bus_register(sim, primary) != CAM_SUCCESS) { cam_sim_free(sim, TRUE); - CAMLOCK_2_ISPLOCK(isp); return; } @@ -167,7 +163,6 @@ xpt_bus_deregister(cam_sim_path(sim)); cam_sim_free(sim, TRUE); config_intrhook_disestablish(&isp->isp_osinfo.ehook); - CAMLOCK_2_ISPLOCK(isp); return; } @@ -177,55 +172,15 @@ csa.callback = isp_cam_async; csa.callback_arg = sim; xpt_action((union ccb *)&csa); - CAMLOCK_2_ISPLOCK(isp); isp->isp_sim = sim; isp->isp_path = path; - /* - * Create a kernel thread for fibre channel instances. We - * don't have dual channel FC cards. - */ - if (IS_FC(isp)) { - ISPLOCK_2_CAMLOCK(isp); -#if __FreeBSD_version >= 500000 - cv_init(&isp->isp_osinfo.kthread_cv, "isp_kthread_cv"); - if (kthread_create(isp_kthread, isp, &isp->isp_osinfo.kproc, - RFHIGHPID, 0, "%s: fc_thrd", - device_get_nameunit(isp->isp_dev))) -#else - if (kthread_create(isp_kthread, isp, &isp->isp_osinfo.kproc, - "%s: fc_thrd", device_get_nameunit(isp->isp_dev))) -#endif - { - xpt_bus_deregister(cam_sim_path(sim)); - cam_sim_free(sim, TRUE); - config_intrhook_disestablish(&isp->isp_osinfo.ehook); - CAMLOCK_2_ISPLOCK(isp); - isp_prt(isp, ISP_LOGERR, "could not create kthread"); - return; - } - CAMLOCK_2_ISPLOCK(isp); - /* - * We start by being "loop down" if we have an initiator role - */ - if (isp->isp_role & ISP_ROLE_INITIATOR) { - isp_freeze_loopdown(isp, "isp_attach"); - isp->isp_osinfo.ldt = - timeout(isp_ldt, isp, isp_quickboot_time * hz); - isp->isp_osinfo.ldt_running = 1; - isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, - "Starting Initial Loop Down Timer"); - } - } - /* * If we have a second channel, construct SIM entry for that. */ if (IS_DUALBUS(isp)) { - ISPLOCK_2_CAMLOCK(isp); - sim = cam_sim_alloc(isp_action, isp_poll, "isp", isp, - device_get_unit(isp->isp_dev), &Giant, 1, - isp->isp_maxcmds, devq); + sim = isp_sim_alloc(isp_action, isp_poll, "isp", isp, + device_get_unit(isp->isp_dev), 1, isp->isp_maxcmds, devq); if (sim == NULL) { xpt_bus_deregister(cam_sim_path(isp->isp_sim)); xpt_free_path(isp->isp_path); @@ -238,7 +193,6 @@ xpt_free_path(isp->isp_path); cam_sim_free(sim, TRUE); config_intrhook_disestablish(&isp->isp_osinfo.ehook); - CAMLOCK_2_ISPLOCK(isp); return; } @@ -249,7 +203,6 @@ xpt_bus_deregister(cam_sim_path(sim)); cam_sim_free(sim, TRUE); config_intrhook_disestablish(&isp->isp_osinfo.ehook); - CAMLOCK_2_ISPLOCK(isp); return; } @@ -259,7 +212,6 @@ csa.callback = isp_cam_async; csa.callback_arg = sim; xpt_action((union ccb *)&csa); - CAMLOCK_2_ISPLOCK(isp); isp->isp_sim2 = sim; isp->isp_path2 = path; } @@ -267,8 +219,11 @@ /* * Create device nodes */ + ISP_UNLOCK(isp); (void) make_dev(&isp_cdevsw, device_get_unit(isp->isp_dev), UID_ROOT, GID_OPERATOR, 0600, "%s", device_get_nameunit(isp->isp_dev)); + isp_sysctl_update(isp); + ISP_LOCK(isp); if (isp->isp_role != ISP_ROLE_NONE) { isp->isp_state = ISP_RUNSTATE; @@ -283,7 +238,43 @@ } tmp->isp_osinfo.next = isp; } - isp_sysctl_update(isp); + + /* + * Create a kernel thread for fibre channel instances. + */ + if (IS_FC(isp)) { + isp_callout_init(&isp->isp_osinfo.ldt); + isp_callout_init(&isp->isp_osinfo.gdt); + ISP_UNLOCK(isp); +#if __FreeBSD_version >= 500000 + if (kthread_create(isp_kthread, isp, &isp->isp_osinfo.kproc, + RFHIGHPID, 0, "%s: fc_thrd", + device_get_nameunit(isp->isp_dev))) +#else + if (kthread_create(isp_kthread, isp, &isp->isp_osinfo.kproc, + "%s: fc_thrd", device_get_nameunit(isp->isp_dev))) +#endif + { + ISP_LOCK(isp); + xpt_bus_deregister(cam_sim_path(sim)); + cam_sim_free(sim, TRUE); + config_intrhook_disestablish(&isp->isp_osinfo.ehook); + isp_prt(isp, ISP_LOGERR, "could not create kthread"); + return; + } + ISP_LOCK(isp); + /* + * We start by being "loop down" if we have an initiator role + */ + if (isp->isp_role & ISP_ROLE_INITIATOR) { + isp_freeze_loopdown(isp, "isp_attach"); + isp->isp_osinfo.ldt_running = 1; + callout_reset(&isp->isp_osinfo.ldt, + isp_quickboot_time * hz, isp_ldt, isp); + isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, + "Starting Initial Loop Down Timer"); + } + } } static void @@ -292,9 +283,7 @@ if (isp->isp_osinfo.simqfrozen == 0) { isp_prt(isp, ISP_LOGDEBUG0, "%s: freeze simq (loopdown)", msg); isp->isp_osinfo.simqfrozen |= SIMQFRZ_LOOPDOWN; - ISPLOCK_2_CAMLOCK(isp); xpt_freeze_simq(isp->isp_sim, 1); - CAMLOCK_2_ISPLOCK(isp); } else { isp_prt(isp, ISP_LOGDEBUG0, "%s: mark frozen (loopdown)", msg); isp->isp_osinfo.simqfrozen |= SIMQFRZ_LOOPDOWN; @@ -315,6 +304,11 @@ { ispsoftc_t *isp; int nr, retval = ENOTTY; +#if __FreeBSD_version < 500000 + int s = splcam(); +#else + GIANT_REQUIRED; +#endif isp = isplist; while (isp) { @@ -323,8 +317,12 @@ } isp = isp->isp_osinfo.next; } - if (isp == NULL) + if (isp == NULL) { +#if __FreeBSD_version < 500000 + splx(s); +#endif return (ENXIO); + } switch (c) { #ifdef ISP_FW_CRASH_DUMP @@ -339,7 +337,6 @@ } else { sz = QLA2300_RISC_IMAGE_DUMP_SIZE; } - ISP_LOCK(isp); if (ptr && *ptr) { void *uaddr = *((void **) addr); if (copyout(ptr, uaddr, sz)) { @@ -350,17 +347,14 @@ } else { retval = ENXIO; } - ISP_UNLOCK(isp); } break; case ISP_FORCE_CRASH_DUMP: if (IS_FC(isp)) { - ISP_LOCK(isp); isp_freeze_loopdown(isp, "ispioctl(ISP_FORCE_CRASH_DUMP)"); isp_fw_dump(isp); isp_reinit(isp); - ISP_UNLOCK(isp); retval = 0; } break; @@ -395,31 +389,25 @@ isp->isp_role = nr; /* FALLTHROUGH */ case ISP_RESETHBA: - ISP_LOCK(isp); isp_reinit(isp); - ISP_UNLOCK(isp); retval = 0; break; case ISP_RESCAN: if (IS_FC(isp)) { - ISP_LOCK(isp); if (isp_fc_runstate(isp, 5 * 1000000)) { retval = EIO; } else { retval = 0; } - ISP_UNLOCK(isp); } break; case ISP_FC_LIP: if (IS_FC(isp)) { - ISP_LOCK(isp); if (isp_control(isp, ISPCTL_SEND_LIP, 0)) { retval = EIO; } else { retval = 0; } - ISP_UNLOCK(isp); } break; case ISP_FC_GETDINFO: @@ -434,7 +422,6 @@ retval = EINVAL; break; } - ISP_LOCK(isp); lp = &FCPARAM(isp)->portdb[ifc->loopid]; if (lp->state == FC_PORTDB_STATE_VALID) { ifc->role = lp->roles; @@ -446,7 +433,6 @@ } else { retval = ENODEV; } - ISP_UNLOCK(isp); break; } case ISP_GET_STATS: @@ -457,7 +443,6 @@ sp->isp_stat_version = ISP_STATS_VERSION; sp->isp_type = isp->isp_type; sp->isp_revision = isp->isp_revision; - ISP_LOCK(isp); sp->isp_stats[ISP_INTCNT] = isp->isp_intcnt; sp->isp_stats[ISP_INTBOGUS] = isp->isp_intbogus; sp->isp_stats[ISP_INTMBOXC] = isp->isp_intmboxc; @@ -466,12 +451,10 @@ sp->isp_stats[ISP_FPHCCMCPLT] = isp->isp_fphccmplt; sp->isp_stats[ISP_RSCCHIWAT] = isp->isp_rscchiwater; sp->isp_stats[ISP_FPCCHIWAT] = isp->isp_fpcchiwater; - ISP_UNLOCK(isp); retval = 0; break; } case ISP_CLR_STATS: - ISP_LOCK(isp); isp->isp_intcnt = 0; isp->isp_intbogus = 0; isp->isp_intmboxc = 0; @@ -480,7 +463,6 @@ isp->isp_fphccmplt = 0; isp->isp_rscchiwater = 0; isp->isp_fpcchiwater = 0; - ISP_UNLOCK(isp); retval = 0; break; case ISP_FC_GETHINFO: @@ -641,12 +623,10 @@ break; } if (retval == 0) { - ISP_LOCK(isp); if (needmarker) { isp->isp_sendmarker |= 1; } retval = isp_control(isp, ISPCTL_RUN_MBOXCMD, &mbs); - ISP_UNLOCK(isp); if (retval) retval = EIO; } @@ -655,6 +635,9 @@ default: break; } +#if __FreeBSD_version < 500000 + splx(s); +#endif return (retval); } @@ -702,9 +685,11 @@ isp_intr_enable(void *arg) { ispsoftc_t *isp = arg; + ISP_LOCK(isp); if (isp->isp_role != ISP_ROLE_NONE) { ISP_ENABLE_INTS(isp); } + ISP_UNLOCK(isp); /* Release our hook so that the boot can continue. */ config_intrhook_disestablish(&isp->isp_osinfo.ehook); >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sun May 6 21:10:36 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6DDA416A40B; Sun, 6 May 2007 21:10:36 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 1C7DA16A403 for ; Sun, 6 May 2007 21:10:36 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 0D74413C4B9 for ; Sun, 6 May 2007 21:10:36 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46LAZXt011586 for ; Sun, 6 May 2007 21:10:35 GMT (envelope-from rpaulo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46LAZqE011583 for perforce@freebsd.org; Sun, 6 May 2007 21:10:35 GMT (envelope-from rpaulo@FreeBSD.org) Date: Sun, 6 May 2007 21:10:35 GMT Message-Id: <200705062110.l46LAZqE011583@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rpaulo@FreeBSD.org using -f From: Rui Paulo To: Perforce Change Reviews Cc: Subject: PERFORCE change 119371 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 21:10:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=119371 Change 119371 by rpaulo@rpaulo_epsilon on 2007/05/06 21:10:15 We don't need any scheduler support because: 1) msrtemp is a child of cpu - this implies that every rdmsr/cpuid instruction will be executed on that CPU. 2) rdmsr/cpuid are atomic, so I don't need to worry about any threads interfering. Bring back the device_printf()'s in the attach routine. Explained by: Attilio Rao Affected files ... .. //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#5 edit Differences ... ==== //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#5 (text+ko) ==== @@ -23,7 +23,7 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#4 $ + * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#5 $ * */ @@ -59,7 +59,7 @@ static int msrtemp_attach(device_t); static int msrtemp_detach(device_t); -static int msrtemp_get_temp(int); +static int msrtemp_get_temp(void); static int msrtemp_get_temp_sysctl(SYSCTL_HANDLER_ARGS); static device_method_t msrtemp_methods[] = { @@ -131,6 +131,19 @@ pdev = device_get_parent(dev); + if (bootverbose) { + /* + * CPUID 0x06 returns 1 if the processor has on-die thermal + * sensors. We already checked that in the identify routine. + * EBX[0:3] contains the number of sensors. + */ + do_cpuid(0x06, regs); + device_printf(dev, "%d digital thermal sensor(s)\n", + regs[2] & 0x03); + } + device_printf(dev, "current temperature: %d degC\n", + msrtemp_get_temp()); + /* * Add the "temperature" MIB to dev.cpu.N. */ @@ -139,7 +152,7 @@ device_get_sysctl_tree(pdev)), OID_AUTO, "temperature", CTLTYPE_INT | CTLFLAG_RD, - dev, 0, msrtemp_get_temp_sysctl, "I", + NULL, 0, msrtemp_get_temp_sysctl, "I", "Current temperature in degC"); return 0; } @@ -156,12 +169,10 @@ static int -msrtemp_get_temp(int cpu) +msrtemp_get_temp(void) { uint64_t temp; - mtx_lock_spin(&sched_lock); - sched_bind(curthread, cpu); /* * The digital temperature reading is located at bit 16 * of MSR_THERM_STATUS. @@ -177,9 +188,6 @@ * 100 degC for everyone. */ temp = rdmsr(MSR_THERM_STATUS); - - sched_unbind(curthread); - mtx_unlock_spin(&sched_lock); /* * Bit 31 contains "Reading valid" @@ -200,9 +208,8 @@ msrtemp_get_temp_sysctl(SYSCTL_HANDLER_ARGS) { int temp; - device_t dev = (device_t) arg1; - temp = msrtemp_get_temp(device_get_unit(dev)); + temp = msrtemp_get_temp(); return sysctl_handle_int(oidp, &temp, 0, req); } From owner-p4-projects@FreeBSD.ORG Sun May 6 21:23:53 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 824C416A40E; Sun, 6 May 2007 21:23:53 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2425616A40B for ; Sun, 6 May 2007 21:23:53 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 13CC413C46C for ; Sun, 6 May 2007 21:23:53 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46LNqEJ014156 for ; Sun, 6 May 2007 21:23:52 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46LNq5A014153 for perforce@freebsd.org; Sun, 6 May 2007 21:23:52 GMT (envelope-from bms@incunabulum.net) Date: Sun, 6 May 2007 21:23:52 GMT Message-Id: <200705062123.l46LNq5A014153@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119372 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 21:23:53 -0000 http://perforce.freebsd.org/chv.cgi?CH=119372 Change 119372 by bms@bms_anglepoise on 2007/05/06 21:23:11 Bringin YAMON shims from NetBSD. Use YAMON's SYSCON object to read board CPU frequency by default on MALTA. Needs latest gxemul snapshot to work in emulation; switching back to calibration from the Motorola RTC still works for the version of gxemul in ports. Affected files ... .. //depot/projects/mips2/src/sys/mips/conf/MALTA#14 edit .. //depot/projects/mips2/src/sys/mips/mips/tick.c#13 edit .. //depot/projects/mips2/src/sys/mips/mips4k/malta/yamon.c#3 edit .. //depot/projects/mips2/src/sys/mips/mips4k/malta/yamon.h#2 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/conf/MALTA#14 (text+ko) ==== @@ -30,8 +30,8 @@ makeoptions MODULES_OVERRIDE="" options KERNVIRTADDR=0x80100000 -#options TICK_USE_YAMON_FREQ=defined -options TICK_USE_MALTA_RTC=defined +options TICK_USE_YAMON_FREQ=defined +#options TICK_USE_MALTA_RTC=defined include "../mips4k/malta/std.malta" ==== //depot/projects/mips2/src/sys/mips/mips/tick.c#13 (text+ko) ==== @@ -52,12 +52,20 @@ #ifdef TICK_USE_YAMON_FREQ #include #endif + #ifdef TICK_USE_MALTA_RTC #include #include #include #endif +/* + * Default is to assume a CPU pipeline clock of 100Mhz, and + * that CP0_COUNT increments every 2 cycles. + */ +#define MIPS_DEFAULT_HZ (100 * 1000 * 1000) +#define MIPS_DOUBLE_COUNT 1 + uint64_t counter_freq; uint64_t counts_per_hz; uint32_t counts_per_usec; @@ -110,6 +118,7 @@ return ((uint64_t)mips_rd_count()); } +/* XXX TODO: Calibrate SENTRY5 clock from custom CP0 PLL* registers. */ void tick_init_params(void) { @@ -120,24 +129,21 @@ do { #if defined(TICK_USE_YAMON_FREQ) /* - * Use the clock frequency specified in the environment - * variables providied to us by the YAMON monitor. + * If we are running on a board which uses YAMON firmware, + * then query CPU pipeline clock from the syscon object. + * If unsuccessful, use hard-coded default. */ - char *cp = yamon_getenv("khz"); - - if (cp == NULL) { - printf("cannot determine clock frequency, " - "defaulting to 10MHz\n"); - counter_freq = 10000000; - } else { - counter_freq = strtol(cp, (char **)NULL, 10) * 1000 ; + counter_freq = yamon_getcpufreq(); + if (counter_freq == 0) { + counter_freq = MIPS_DEFAULT_HZ; } #elif defined(TICK_USE_MALTA_RTC) + /* + * If we are running on a board with the MC146818 RTC, + * use it to determine CPU pipeline clock frequency. + */ u_int64_t counterval[2]; - /* - * Determine clock frequency from hardware. - */ /* Set RTC to binary mode. */ writertc(RTC_STATUSB, (rtcin(RTC_STATUSB) | RTCSB_BCD)); @@ -158,19 +164,23 @@ counter_freq = counterval[1] - counterval[0]; #else /* - * Don't cause a call to DELAY() to happen when we haven't - * initialized the very things which DELAY() depends upon; - * it will cause a divide-by-zero trap. + * Use a completely fictional hardcoded default. */ - #if 0 - printf("using hard-coded default clock of 10MHz\n"); - #endif - counter_freq = 10000000; + counter_freq = MIPS_DEFAULT_HZ; #endif } while (0); counts_per_hz = counter_freq / hz; - counts_per_usec = counter_freq / 1000000; + counts_per_usec = counter_freq / (1 * 1000 * 1000); + + /* + * XXX: Some MIPS32 cores update the Count register + * only every two pipeline cycles. + */ + if (MIPS_DOUBLE_COUNT != 0) { + counts_per_hz /= 2; + counts_per_usec /= 2; + } printf("MIPS32 clock: %ju Hz\n", (intmax_t)counter_freq); ==== //depot/projects/mips2/src/sys/mips/mips4k/malta/yamon.c#3 (text+ko) ==== @@ -49,3 +49,17 @@ return (value); } + +uint32_t +yamon_getcpufreq(void) +{ + uint32_t freq; + int ret; + + ret = YAMON_SYSCON_READ(SYSCON_BOARD_CPU_CLOCK_FREQ_ID, &freq, + sizeof(freq)); + if (ret != 0) + freq = 0; + + return (freq); +} ==== //depot/projects/mips2/src/sys/mips/mips4k/malta/yamon.h#2 (text+ko) ==== @@ -1,40 +1,91 @@ /*- - * Copyright (c) 2007 Bruce M. Simpson. + * Copyright 2002 Wasabi Systems, Inc. * All rights reserved. * + * Written by Simon Burge for Wasabi Systems, Inc. + * * 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, - * without modification, immediately at the beginning of the file. - * 2. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. + * 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed for the NetBSD Project by + * Wasabi Systems, Inc. + * 4. The name of Wasabi Systems, Inc. may not be used to endorse + * or promote products derived from this software without specific prior + * written permission. * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. - * + * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``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 WASABI SYSTEMS, INC + * 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. */ #ifndef _MALTA_YAMON_H_ #define _MALTA_YAMON_H_ +#define YAMON_FUNCTION_BASE 0x1fc00500 + +#define YAMON_PRINT_COUNT_OFS (YAMON_FUNCTION_BASE + 0x04) +#define YAMON_EXIT_OFS (YAMON_FUNCTION_BASE + 0x20) +#define YAMON_FLUSH_CACHE_OFS (YAMON_FUNCTION_BASE + 0x2c) +#define YAMON_PRINT_OFS (YAMON_FUNCTION_BASE + 0x34) +#define YAMON_REG_CPU_ISR_OFS (YAMON_FUNCTION_BASE + 0x38) +#define YAMON_DEREG_CPU_ISR_OFS (YAMON_FUNCTION_BASE + 0x3c) +#define YAMON_REG_IC_ISR_OFS (YAMON_FUNCTION_BASE + 0x40) +#define YAMON_DEREG_IC_ISR_OFS (YAMON_FUNCTION_BASE + 0x44) +#define YAMON_REG_ESR_OFS (YAMON_FUNCTION_BASE + 0x48) +#define YAMON_DEREG_ESR_OFS (YAMON_FUNCTION_BASE + 0x4c) +#define YAMON_GETCHAR_OFS (YAMON_FUNCTION_BASE + 0x50) +#define YAMON_SYSCON_READ_OFS (YAMON_FUNCTION_BASE + 0x54) + +#define YAMON_FUNC(ofs) (*(uint32_t *)(MIPS_PHYS_TO_KSEG0(ofs))) + +typedef void (*t_yamon_print_count)(uint32_t port, char *s, uint32_t count); +#define YAMON_PRINT_COUNT(s, count) \ + ((t_yamon_print_count)(YAMON_FUNC(YAMON_PRINT_COUNT_OFS)))(0, s, count) + +typedef void (*t_yamon_exit)(uint32_t rc); +#define YAMON_EXIT(rc) ((t_yamon_exit)(YAMON_FUNC(YAMON_EXIT_OFS)))(rc) + +typedef void (*t_yamon_print)(uint32_t port, const char *s); +#define YAMON_PRINT(s) ((t_yamon_print)(YAMON_FUNC(YAMON_PRINT_OFS)))(0, s) + +typedef int (*t_yamon_getchar)(uint32_t port, char *ch); +#define YAMON_GETCHAR(ch) \ + ((t_yamon_getchar)(YAMON_FUNC(YAMON_GETCHAR_OFS)))(0, ch) + +typedef int t_yamon_syscon_id; +typedef int (*t_yamon_syscon_read)(t_yamon_syscon_id id, void *param, + uint32_t size); +#define YAMON_SYSCON_READ(id, param, size) \ + ((t_yamon_syscon_read)(YAMON_FUNC(YAMON_SYSCON_READ_OFS))) \ + (id, param, size) + typedef struct { char *name; char *value; } yamon_env_t; +#define SYSCON_BOARD_CPU_CLOCK_FREQ_ID 34 /* UINT32 */ +#define SYSCON_BOARD_BUS_CLOCK_FREQ_ID 35 /* UINT32 */ +#define SYSCON_BOARD_PCI_FREQ_KHZ_ID 36 /* UINT32 */ + +char* yamon_getenv(char *name); +uint32_t yamon_getcpufreq(void); + extern yamon_env_t *fenvp[]; -char* yamon_getenv(char *name); - #endif /* _MALTA_YAMON_H_ */ From owner-p4-projects@FreeBSD.ORG Sun May 6 22:39:32 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1971916A404; Sun, 6 May 2007 22:39:32 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DD4C716A400 for ; Sun, 6 May 2007 22:39:31 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id C1FF213C43E for ; Sun, 6 May 2007 22:39:31 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l46MdVl2026841 for ; Sun, 6 May 2007 22:39:31 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l46MdVNR026838 for perforce@freebsd.org; Sun, 6 May 2007 22:39:31 GMT (envelope-from bms@incunabulum.net) Date: Sun, 6 May 2007 22:39:31 GMT Message-Id: <200705062239.l46MdVNR026838@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119378 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 May 2007 22:39:32 -0000 http://perforce.freebsd.org/chv.cgi?CH=119378 Change 119378 by bms@bms_anglepoise on 2007/05/06 22:38:49 add macros for broadcom custom MIPS register access. pll probing doesn't work; we need device siba to exist first. hardcode sentry5 clock @200Mhz for now. Affected files ... .. //depot/projects/mips2/src/sys/mips/conf/SENTRY5#2 edit .. //depot/projects/mips2/src/sys/mips/mips/tick.c#14 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/sentry5reg.h#2 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/conf/SENTRY5#2 (text+ko) ==== @@ -1,6 +1,6 @@ # # $FreeBSD$ -# $P4: //depot/projects/mips2/src/sys/mips/conf/SENTRY5#1 $ +# $P4: //depot/projects/mips2/src/sys/mips/conf/SENTRY5#2 $ # # The Broadcom Sentry5 series of processors and boards is very commonly # used in COTS hardware including the Netgear WGT634U. @@ -57,12 +57,14 @@ options INVARIANTS options INVARIANT_SUPPORT -#device sbmips # TODO: SiliconBackplane board support +# TODO: SiliconBackplane board support +#device siba device pci device uart device uart_ns8250 +# XXX Should this be bce or bfe? device bfe device miibus ==== //depot/projects/mips2/src/sys/mips/mips/tick.c#14 (text+ko) ==== @@ -59,6 +59,11 @@ #include #endif +#ifdef CPU_SENTRY5 +#include +#include +#endif + /* * Default is to assume a CPU pipeline clock of 100Mhz, and * that CP0_COUNT increments every 2 cycles. @@ -118,7 +123,6 @@ return ((uint64_t)mips_rd_count()); } -/* XXX TODO: Calibrate SENTRY5 clock from custom CP0 PLL* registers. */ void tick_init_params(void) { @@ -162,6 +166,39 @@ counterval[1] = mips_rd_count(); counter_freq = counterval[1] - counterval[0]; +#elif defined(CPU_SENTRY5) +# if 0 + /* + * Probe the Broadcom Sentry5's on-chip PLL clock registers + * and discover the CPU pipeline clock and bus clock + * multipliers from this. + * XXX: Wrong place. You have to ask the ChipCommon + * or External Interface cores on the SiBa. + */ + uint32_t busmult, cpumult, refclock, clkcfg1; +#define S5_CLKCFG1_REFCLOCK_MASK 0x0000001F +#define S5_CLKCFG1_BUSMULT_MASK 0x000003E0 +#define S5_CLKCFG1_BUSMULT_SHIFT 5 +#define S5_CLKCFG1_CPUMULT_MASK 0xFFFFFC00 +#define S5_CLKCFG1_CPUMULT_SHIFT 10 + + counter_freq = 100000000; /* XXX */ + + clkcfg1 = s5_rd_clkcfg1(); + printf("clkcfg1 = 0x%08x\n", clkcfg1); + + refclock = clkcfg1 & 0x1F; + busmult = ((clkcfg1 & 0x000003E0) >> 5) + 1; + cpumult = ((clkcfg1 & 0xFFFFFC00) >> 10) + 1; + + printf("refclock = %u\n", refclock); + printf("busmult = %u\n", busmult); + printf("cpumult = %u\n", cpumult); + + counter_freq = cpumult * refclock; +# else + counter_freq = 200 * 1000 * 1000; /* Sentry5 is 200MHz */ +# endif #else /* * Use a completely fictional hardcoded default. ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/sentry5reg.h#2 (text+ko) ==== @@ -10,4 +10,49 @@ #define SENTRY5_EXTIFADR 0x1F000000 #define SENTRY5_DORESET 0x80 +/* + * Custom CP0 register macros. + * XXX: This really needs the mips cpuregs.h file for the barrier. + */ +#define S5_RDRW32_C0P0_CUST22(n,r) \ +static __inline u_int32_t \ +s5_rd_ ## n (void) \ +{ \ + int v0; \ + __asm __volatile ("mfc0 %[v0], $22, "__XSTRING(r)" ;" \ + : [v0] "=&r"(v0)); \ + /*mips_barrier();*/ \ + return (v0); \ +} \ +static __inline void \ +s5_wr_ ## n (u_int32_t a0) \ +{ \ + __asm __volatile ("mtc0 %[a0], $22, "__XSTRING(r)" ;" \ + __XSTRING(COP0_SYNC)";" \ + "nop;" \ + "nop;" \ + : \ + : [a0] "r"(a0)); \ + /*mips_barrier();*/ \ +} struct __hack + +/* + * All 5 of these sub-registers are used by Linux. + * There is a further custom register at 25 which is not used. + */ +#define S5_CP0_DIAG 0 +#define S5_CP0_CLKCFG1 1 +#define S5_CP0_CLKCFG2 2 +#define S5_CP0_SYNC 3 +#define S5_CP0_CLKCFG3 4 +#define S5_CP0_RESET 5 + +/* s5_[rd|wr]_xxx() */ +S5_RDRW32_C0P0_CUST22(diag, S5_CP0_DIAG); +S5_RDRW32_C0P0_CUST22(clkcfg1, S5_CP0_CLKCFG1); +S5_RDRW32_C0P0_CUST22(clkcfg2, S5_CP0_CLKCFG2); +S5_RDRW32_C0P0_CUST22(sync, S5_CP0_SYNC); +S5_RDRW32_C0P0_CUST22(clkcfg3, S5_CP0_CLKCFG3); +S5_RDRW32_C0P0_CUST22(reset, S5_CP0_RESET); + #endif /* _MIPS32_SENTRY5_SENTRY5REG_H_ */ From owner-p4-projects@FreeBSD.ORG Mon May 7 00:04:19 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0177716A415; Mon, 7 May 2007 00:04:19 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A825F16A40E for ; Mon, 7 May 2007 00:04:18 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 4D87313C46A for ; Mon, 7 May 2007 00:04:18 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4704Gv3042779 for ; Mon, 7 May 2007 00:04:16 GMT (envelope-from rpaulo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4704GFh042776 for perforce@freebsd.org; Mon, 7 May 2007 00:04:16 GMT (envelope-from rpaulo@FreeBSD.org) Date: Mon, 7 May 2007 00:04:16 GMT Message-Id: <200705070004.l4704GFh042776@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rpaulo@FreeBSD.org using -f From: Rui Paulo To: Perforce Change Reviews Cc: Subject: PERFORCE change 119381 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 00:04:19 -0000 http://perforce.freebsd.org/chv.cgi?CH=119381 Change 119381 by rpaulo@rpaulo_epsilon on 2007/05/07 00:04:13 style(9) and comments. Affected files ... .. //depot/projects/soc2007/rpaulo-macbook/dev/backlight/backlight.c#5 edit .. //depot/projects/soc2007/rpaulo-macbook/dev/backlight/backlightvar.h#2 edit .. //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#6 edit Differences ... ==== //depot/projects/soc2007/rpaulo-macbook/dev/backlight/backlight.c#5 (text+ko) ==== @@ -1,4 +1,4 @@ -/* +/*- * Copyright (c) 2007 Rui Paulo * All rights reserved. * @@ -23,7 +23,7 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/backlight/backlight.c#4 $ + * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/backlight/backlight.c#5 $ * */ @@ -296,7 +296,6 @@ int error; unsigned int enable; - enable = macbook_get_current(sc) >= BACKLIGHT_MB_MIN ? 1 : 0; error = sysctl_handle_int(oidp, &enable, 0, req); ==== //depot/projects/soc2007/rpaulo-macbook/dev/backlight/backlightvar.h#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* +/*- * Copyright (c) 2007 Rui Paulo * All rights reserved. * @@ -23,7 +23,7 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/backlight/backlightvar.h#1 $ + * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/backlight/backlightvar.h#2 $ * */ ==== //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#6 (text+ko) ==== @@ -1,4 +1,4 @@ -/* +/*- * Copyright (c) 2007 Rui Paulo * All rights reserved. * @@ -23,10 +23,15 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#5 $ + * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#6 $ * */ +/* + * Device driver for Intel's On Die thermal sensor via MSR. + * First introduced in Intel's Core line of processors. + */ + #include __FBSDID("$FreeBSD$"); From owner-p4-projects@FreeBSD.ORG Mon May 7 06:32:41 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9C31E16A409; Mon, 7 May 2007 06:32:41 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 737EF16A402 for ; Mon, 7 May 2007 06:32:41 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 6498F13C46A for ; Mon, 7 May 2007 06:32:41 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l476WfCt029101 for ; Mon, 7 May 2007 06:32:41 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l476Wfuw029097 for perforce@freebsd.org; Mon, 7 May 2007 06:32:41 GMT (envelope-from kmacy@freebsd.org) Date: Mon, 7 May 2007 06:32:41 GMT Message-Id: <200705070632.l476Wfuw029097@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 119399 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 06:32:41 -0000 http://perforce.freebsd.org/chv.cgi?CH=119399 Change 119399 by kmacy@kmacy_vt-x:opentoe_init on 2007/05/07 06:31:40 add routine to fault in and pin user pages with EXT_MBUF or kva mapping overhead Affected files ... .. //depot/projects/opentoe/sys/dev/cxgb/sys/mvec.h#2 edit .. //depot/projects/opentoe/sys/dev/cxgb/sys/uipc_mvec.c#3 edit Differences ... ==== //depot/projects/opentoe/sys/dev/cxgb/sys/mvec.h#2 (text+ko) ==== @@ -193,4 +193,6 @@ #define bus_dmamap_load_mvec_sg bus_dmamap_load_mbuf_sg #endif +int vm_user_page_get(vm_offset_t addr, int npages, vm_page_t *m, vm_paddr_t *paddr, int cow); + #endif ==== //depot/projects/opentoe/sys/dev/cxgb/sys/uipc_mvec.c#3 (text+ko) ==== @@ -35,9 +35,11 @@ #include #include #include +#include #include #include #include +#include #include #include @@ -45,8 +47,12 @@ #include "opt_zero.h" #include +#include +#include +#include +#include #include -#include +#include #ifdef DEBUG #define DPRINTF printf @@ -485,3 +491,44 @@ return (error); } #endif /* !__sparc64__ && !__sun4v__ */ + +int +vm_user_page_get(vm_offset_t addr, int npages, vm_page_t *m, vm_paddr_t *paddr, int cow) +{ + caddr_t uva; + vm_prot_t prot; + int i, j; + struct pmap *pmap; + + pmap = &curproc->p_vmspace->vm_pmap; + uva = (caddr_t)(addr & PG_FRAME); + prot = VM_PROT_READ|VM_PROT_WRITE; + for (i = 0; i < npages; i++) { + if(vm_fault_quick(uva, prot) < 0) { + vm_page_lock_queues(); + for (j = 0; j < i; i++) + vm_page_unhold(m[j]); + vm_page_unlock_queues(); + return (EFAULT); + } + m[i] = pmap_extract_and_hold(pmap, (vm_paddr_t)uva + i*PAGE_SIZE, prot); + } + + vm_page_lock_queues(); + for (i = 0; i < npages; i++) { + if (m[i] == NULL) { + paddr[i] = pmap_extract(pmap, (vm_paddr_t)uva + i*PAGE_SIZE); + continue; + } + paddr[i] = VM_PAGE_TO_PHYS(m[i]); + if (cow) + vm_page_cowsetup(m[i]); + + vm_page_dirty(m[i]); + vm_page_wire(m[i]); + vm_page_unhold(m[i]); + } + vm_page_unlock_queues(); + + return(0); +} From owner-p4-projects@FreeBSD.ORG Mon May 7 06:32:42 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 100D316A532; Mon, 7 May 2007 06:32:42 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E107116A530 for ; Mon, 7 May 2007 06:32:41 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id B878813C46C for ; Mon, 7 May 2007 06:32:41 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l476WfJ8029110 for ; Mon, 7 May 2007 06:32:41 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l476WfBm029104 for perforce@freebsd.org; Mon, 7 May 2007 06:32:41 GMT (envelope-from kmacy@freebsd.org) Date: Mon, 7 May 2007 06:32:41 GMT Message-Id: <200705070632.l476WfBm029104@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 119400 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 06:32:42 -0000 http://perforce.freebsd.org/chv.cgi?CH=119400 Change 119400 by kmacy@kmacy_vt-x:opentoe_init on 2007/05/07 06:32:20 add mbufq_len Affected files ... .. //depot/projects/opentoe/sys/dev/cxgb/sys/mbufq.h#2 edit Differences ... ==== //depot/projects/opentoe/sys/dev/cxgb/sys/mbufq.h#2 (text+ko) ==== @@ -20,6 +20,13 @@ return (l->head == NULL); } +static __inline int +mbufq_len(struct mbuf_head *l) +{ + return (l->qlen); +} + + static __inline void mbufq_tail(struct mbuf_head *l, struct mbuf *m) { From owner-p4-projects@FreeBSD.ORG Mon May 7 06:33:44 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C629716A406; Mon, 7 May 2007 06:33:43 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A46CB16A400 for ; Mon, 7 May 2007 06:33:43 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 954A313C43E for ; Mon, 7 May 2007 06:33:43 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l476XhAv029474 for ; Mon, 7 May 2007 06:33:43 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l476XhX4029469 for perforce@freebsd.org; Mon, 7 May 2007 06:33:43 GMT (envelope-from kmacy@freebsd.org) Date: Mon, 7 May 2007 06:33:43 GMT Message-Id: <200705070633.l476XhX4029469@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 119401 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 06:33:44 -0000 http://perforce.freebsd.org/chv.cgi?CH=119401 Change 119401 by kmacy@kmacy_vt-x:opentoe_init on 2007/05/07 06:33:04 add PANIC_IF routine and formatting cleanup Affected files ... .. //depot/projects/opentoe/sys/dev/cxgb/cxgb_osdep.h#9 edit Differences ... ==== //depot/projects/opentoe/sys/dev/cxgb/cxgb_osdep.h#9 (text+ko) ==== @@ -51,6 +51,11 @@ typedef struct adapter adapter_t; struct sge_rspq; +#define PANIC_IF(exp) do { \ + if (exp) \ + panic("BUG: %s", exp); \ +} while (0) + #if __FreeBSD_version > 700030 #define INTR_FILTERS #define FIRMWARE_LATEST @@ -76,9 +81,10 @@ #define PRIV_SUPPORTED #endif -#define CXGB_TX_CLEANUP_THRESHOLD 32 +#define CXGB_TX_CLEANUP_THRESHOLD 32 -#define LOG_WARNING 1 +#define LOG_WARNING 1 +#define LOG_ERR 2 #ifdef DEBUG_PRINT #define DPRINTF printf @@ -108,6 +114,16 @@ __asm volatile("prefetcht0 %0" :: "m" (*(unsigned long *)x)); } +extern void kdb_backtrace(void); + +#define WARN_ON(condition) do { \ + if (unlikely((condition)!=0)) { \ + log(LOG_WARNING, "BUG: warning at %s:%d/%s()\n", __FILE__, __LINE__, __FUNCTION__); \ + kdb_backtrace(); \ + } \ +} while (0) + + #else /* !i386 && !amd64 */ #define mb() #define rmb() From owner-p4-projects@FreeBSD.ORG Mon May 7 06:35:47 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E7E4A16A404; Mon, 7 May 2007 06:35:46 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id BAC7C16A403 for ; Mon, 7 May 2007 06:35:46 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id AAFE413C448 for ; Mon, 7 May 2007 06:35:46 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l476Zk0V029693 for ; Mon, 7 May 2007 06:35:46 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l476ZkOX029690 for perforce@freebsd.org; Mon, 7 May 2007 06:35:46 GMT (envelope-from kmacy@freebsd.org) Date: Mon, 7 May 2007 06:35:46 GMT Message-Id: <200705070635.l476ZkOX029690@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 119402 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 06:35:47 -0000 http://perforce.freebsd.org/chv.cgi?CH=119402 Change 119402 by kmacy@kmacy_vt-x:opentoe_init on 2007/05/07 06:34:54 more incremental BSD-ification of TOE code Affected files ... .. //depot/projects/opentoe/sys/dev/cxgb/ulp/t3_tom/t3_cpl_io.c#5 edit .. //depot/projects/opentoe/sys/dev/cxgb/ulp/t3_tom/t3_ddp.c#4 edit .. //depot/projects/opentoe/sys/dev/cxgb/ulp/t3_tom/t3_tom.c#4 edit .. //depot/projects/opentoe/sys/dev/cxgb/ulp/t3_tom/t3_tom.h#4 edit .. //depot/projects/opentoe/sys/modules/cxgb/t3_tom/Makefile#2 edit Differences ... ==== //depot/projects/opentoe/sys/dev/cxgb/ulp/t3_tom/t3_cpl_io.c#5 (text+ko) ==== @@ -144,7 +144,7 @@ { #ifdef notyet if (__predict_true(!skb_cloned(skb))) { - BUG_ON(skb->len < len); + PANIC_IF(skb->len < len); __skb_trim(skb, len); skb_get(skb); } else { @@ -299,7 +299,7 @@ { #if 0 log("connection_done: TID: %u, state: %d, dead %d, refs %d\n", - TID(sototcpcb(so)), sk->sk_state, sock_flag(sk, SOCK_DEAD), + TID(sototcpcb(so)), sototcpcb(so)->t_state, sock_flag(sk, SOCK_DEAD), atomic_read(&sk->sk_refcnt)); // dump_stack(); #endif @@ -562,21 +562,21 @@ break; __skb_unlink(skb, &sk->sk_write_queue); - skb->priority = mkprio(CPL_PRIORITY_DATA, sk); - skb->csum = wrs_needed; /* remember this until the WR_ACK */ + m->m_priority = mkprio(CPL_PRIORITY_DATA, so); + m->csum_data = wrs_needed; /* remember this until the WR_ACK */ WR_AVAIL(so) -= wrs_needed; WR_UNACKED(so) += wrs_needed; - enqueue_wr(tp, skb); + enqueue_wr(tp, m); if (__predict_true(TCP_SKB_CB(skb)->flags & TCPCB_FLAG_NEED_HDR)) { len += ulp_extra_len(m); - make_tx_data_wr(sk, skb, len); + make_tx_data_wr(so, m, len); tp->snd_nxt += len; tp->lsndtime = tcp_time_stamp; #if defined(CONFIG_T3_ZCOPY_SENDMSG) || defined(CONFIG_T3_ZCOPY_SENDMSG_MODULE) atomic_add(skb->len - sizeof (struct tx_data_wr), &d->tx_dma_pending); - skb->sk = sk; + m->m_pkthdr.priv = so; #endif if ((req_completion && WR_UNACKED(so) == wrs_needed) || (TCP_SKB_CB(skb)->flags & TCPCB_FLAG_COMPL) || @@ -595,7 +595,7 @@ sock_set_flag(sk, TX_WAIT_IDLE); set_arp_failure_handler(skb, arp_failure_discard); - l2t_send(cdev, skb, L2T_ENTRY(so)); + l2t_send(cdev, m, L2T_ENTRY(so)); } sk->sk_wmem_queued -= total_size; return total_size; @@ -662,7 +662,7 @@ t3_set_ca_ops(so, &tcp_init_congestion_ops); TOE_DEV(so) = NULL; #if 0 - log(KERN_INFO "closing TID %u, state %u\n", tid, sk->sk_state); + log(KERN_INFO "closing TID %u, state %u\n", tid, sototcpcb(so)->t_state); #endif } @@ -753,7 +753,6 @@ if (ext & (1 << INET_DIAG_MAX)) { struct rtattr *rta; struct t3_inet_diag_info *info; - const struct tcpcb *tp = sototcpcb(so); rta = __RTA_PUT(skb, INET_DIAG_MAX + 1, sizeof(*info)); info = RTA_DATA(rta); @@ -770,19 +769,22 @@ #define T3_CONG_OPS(s) \ { .name = s, .owner = THIS_MODULE, .get_info = t3_idiag_get_info } +#if 0 static struct tcp_congestion_ops t3_cong_ops[] = { T3_CONG_OPS("reno"), T3_CONG_OPS("tahoe"), T3_CONG_OPS("newreno"), T3_CONG_OPS("highspeed") }; +#endif static void -mk_act_open_req(struct socket *so, struct mbuf *skb, +mk_act_open_req(struct socket *so, struct mbuf *m, unsigned int atid, const struct l2t_entry *e) { struct cpl_act_open_req *req; - skb->priority = mkprio(CPL_PRIORITY_SETUP, sk); - req = (struct cpl_act_open_req *)__skb_put(skb, sizeof(*req)); + m->m_priority = mkprio(CPL_PRIORITY_SETUP, so); + MH_ALIGN(m, sizeof(*req)); + req = mtod(m, struct cpl_act_open_req *); req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD)); OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_ACT_OPEN_REQ, atid)); req->local_port = sotoinpcb(so)->sport; @@ -836,7 +838,6 @@ { struct mbuf *m; struct socket *so = (struct socket *)data; - struct inet_connection_sock *icsk = inet_csk(sk); SOCK_LOCK(so); if (sock_owned_by_user(sk)) /* try in a bit */ @@ -867,7 +868,6 @@ active_open_failed(struct socket *so, struct mbuf *m) { struct cpl_act_open_rpl *rpl = cplhdr(m); - struct inet_connection_sock *icsk = inet_csk(sk); if (rpl->status == CPL_ERR_CONN_EXIST && icsk->icsk_retransmit_timer.function != act_open_retry_timer) { @@ -903,7 +903,7 @@ if (cdev->type != T3A && act_open_has_tid(rpl->status)) cxgb_queue_tid_release(cdev, GET_TID(rpl)); - process_cpl_msg_ref(active_open_failed, sk, m); + process_cpl_msg_ref(active_open_failed, so, m); return 0; } @@ -922,7 +922,7 @@ SOCK_LOCK(so); soref(so); - if (tp->t_state == TCPS_SYN_SENT || sk->sk_state == TCP_SYN_RECV) { + if (tp->t_state == TCPS_SYN_SENT || tp->t_state == TCPS_SYN_RECV) { if (!sock_owned_by_user(sk)) { fail_act_open(sk, EHOSTUNREACH); m_freem(m); @@ -958,7 +958,7 @@ static unsigned int select_rcv_wnd(struct socket *so) { - unsigned int wnd = tcp_full_space(sk); + unsigned int wnd = tcp_full_space(so); /* * For receive coalescing to work effectively we need a receive window @@ -970,19 +970,6 @@ return min(wnd, MAX_RCV_WND); } -#if defined(TCP_CONGESTION_CONTROL) -static void -pivot_ca_ops(struct socket *so, int cong) -{ - struct inet_connection_sock *icsk = inet_csk(sk); - - if (icsk->icsk_ca_ops->release) - icsk->icsk_ca_ops->release(sk); - module_put(icsk->icsk_ca_ops->owner); - icsk->icsk_ca_ops = &t3_cong_ops[cong < 0 ? 2 : cong]; -} -#endif - #define CTRL_SKB_LEN 120 /* @@ -996,17 +983,17 @@ { struct tcpcb *tp = sototcpcb(so); - TOE_DEV(sk) = dev; + TOE_DEV(so) = dev; TID(so) = tid; - L2T_ENTRY(sk) = e; + L2T_ENTRY(so) = e; WR_MAX(so) = WR_AVAIL(so) = TOM_TUNABLE(dev, max_wrs); WR_UNACKED(so) = 0; - DELACK_MODE(sk) = 0; + DELACK_MODE(so) = 0; MTU_IDX(so) = select_mss(sk, dst_mtu(dst)); - tp->rcv_wnd = select_rcv_wnd(sk); + tp->rcv_wnd = select_rcv_wnd(so); ULP_MODE(so) = TOM_TUNABLE(dev, ddp) && !sock_flag(sk, NO_DDP) && tp->rcv_wnd >= MIN_DDP_RCV_WIN ? ULP_MODE_TCPDDP : 0; - QSET_IDX(sk) = 0; + QSET_IDX(so) = 0; #ifdef CTRL_SKB_CACHE CTRL_SKB_CACHE(so) = alloc_skb(CTRL_SKB_LEN, gfp_any()); #endif @@ -1030,9 +1017,9 @@ struct l2t_entry *e; struct tom_data *d = TOM_DATA(tdev); struct tcpcb *tp = sototcpcb(so); - struct dst_entry *dst = __sk_dst_get(sk); + struct dst_entry *dst = __sk_dst_get(so); - int atid = cxgb_alloc_atid(d->cdev, d->client, sk); + int atid = cxgb_alloc_atid(d->cdev, d->client, so); if (atid < 0) goto out_err; @@ -1049,7 +1036,7 @@ install_offload_ops(so); init_offload_sk(sk, tdev, atid, e, dst); - tp->rcv_scale) = select_rcv_wscale(tcp_full_space(sk), + tp->rcv_scale) = select_rcv_wscale(tcp_full_space(so), sysctl_tcp_window_scaling, tp->window_clamp); sock_reset_flag(sk, SOCK_DONE); @@ -1106,9 +1093,9 @@ #endif /* Purge the send queue so we don't send anything after an abort. */ - t3_purge_write_queue(sk); + t3_purge_write_queue(so); - if (sock_flag(sk, CLOSE_CON_REQUESTED) && is_t3a(TOE_DEV(sk))) + if (sock_flag(sk, CLOSE_CON_REQUESTED) && is_t3a(TOE_DEV(so))) mode |= CPL_ABORT_POST_CLOSE_REQ; if (!m) @@ -1150,11 +1137,12 @@ t3_send_reset(child, CPL_ABORT_SEND_RST, m); sock_orphan(child); +#ifdef notyet INC_ORPHAN_COUNT(child); - if (child->sk_state == TCP_CLOSE) + if (sototcpcb(child)->t_state == TCP_CLOSE) inet_csk_destroy_sock(child); - sorele_lock(child); - +#endif + sorele(child); SOCK_UNLOCK(child); } @@ -1231,7 +1219,7 @@ req->mask = cpu_to_be64(mask); req->val = cpu_to_be64(val); - m->m_priority = mkprio(CPL_PRIORITY_CONTROL, sk); + m->m_priority = mkprio(CPL_PRIORITY_CONTROL, so); send_or_defer(so, tp, m, 0); } @@ -1377,7 +1365,7 @@ req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD)); OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_GET_TCB, TID(so))); req->cpuno = htons(qset(sototcpcb(so))); - if (sk->sk_state == TCP_SYN_SENT) + if (sototcpcb(so)->t_state == TCPS_SYN_SENT) __skb_queue_tail(&tp->out_of_order_queue, m); // defer else cxgb_ofld_send(TOE_DEV(so), m); @@ -1411,7 +1399,7 @@ TID(sototcpcb(so)))); req->credit_dack = htonl(dack | V_RX_CREDITS(credits) | V_RX_FORCE_ACK(nofail)); - skb->priority = mkprio(CPL_PRIORITY_ACK, sk); + m->m_priority = mkprio(CPL_PRIORITY_ACK, so); cxgb_ofld_send(TOE_DEV(so), m); return credits; } @@ -1448,20 +1436,21 @@ handle_urg_ptr(struct socket *so, uint32_t urg_seq) { struct tcpcb *tp = sototcpcb(so); - + struct tcptw *tw = intotw(sotoinpcb(so)); + urg_seq--; /* initially points past the urgent data, per BSD */ #ifdef notyet if (tp->urg_data && !after(urg_seq, tp->urg_seq)) return; /* duplicate pointer */ - sk_send_sigurg(sk); + sk_send_sigurg(so); if (tp->urg_seq == tp->copied_seq && tp->urg_data && !sock_flag(sk, SOCK_URGINLINE) && tp->copied_seq != tp->rcv_nxt) { struct mbuf *m = mbufq_peek(&sk->sk_receive_queue); /* XXX ??? */ tp->copied_seq++; if (m && tp->copied_seq - TCP_SKB_CB(skb)->seq >= skb->len) - tom_eat_skb(sk, skb, 0); + tom_eat_skb(sk, m, 0); } tp->urg_data = TCP_URG_NOTYET; tp->urg_seq = urg_seq; @@ -1485,7 +1474,7 @@ { struct cpl_rx_urg_notify *hdr = cplhdr(m); - if (!sk_no_receive(sk)) + if (!sk_no_receive(so)) handle_urg_ptr(so, ntohl(hdr->seq)); m_freem(m); @@ -1677,7 +1666,7 @@ if (!m->m_len) { if (!ddp_offset) q->kbuf_posted--; - BUG_ON(m->m_len); + PANIC_IF(m->m_len); m_freem(m); return; } @@ -1694,17 +1683,19 @@ TCP_SKB_CB(skb)->seq = tp->rcv_nxt; #endif tp->rcv_nxt += skb->len; - - inet_csk(sk)->icsk_ack.lrcvtime = tcp_time_stamp; + /* + * XXX ? + */ + sototcpcb(so)->ts_recent = tcp_time_stamp; skb->h.th = tcphdr_skb->h.th; #ifdef T3_TRACE T3_TRACE3(TB(q), "tcb_rpl_as_ddp_complete: seq 0x%x hwbuf %u lskb->len %u", - TCP_SKB_CB(skb)->seq, q->cur_buf, skb->len); + TCP_SKB_CB(skb)->seq, q->cur_buf, m->m_len); #endif - - __skb_queue_tail(&sk->sk_receive_queue, skb); + + sbappend(&so->so_rcv, m); if (!sock_flag(so, SOCK_DEAD)) sk->sk_data_ready(sk, 0); @@ -1761,8 +1752,9 @@ bsp->cur_offset += skb->len; if (!(bsp->flags & DDP_BF_NOFLIP)) q->cur_buf ^= 1; - inet_csk(sk)->icsk_ack.lrcvtime = tcp_time_stamp; - __skb_queue_tail(&sk->sk_receive_queue, skb); + + sototcpcb(so)->ts_recent = tcp_time_stamp; + sbappend(so->so_rcv, m); /* For now, don't re-enable DDP after a connection fell out of DDP * mode. @@ -1779,12 +1771,12 @@ struct tcpcb *tp = sototcpcb(so); if (__predict_false(sk_no_receive(so))) { - handle_excess_rx(sk, skb); + handle_excess_rx(so, m); return; } if (ULP_MODE(so) == ULP_MODE_TCPDDP) - handle_ddp_data(sk, skb); + handle_ddp_data(so, m); TCP_SKB_CB(skb)->seq = ntohl(hdr->seq); TCP_SKB_CB(skb)->flags = 0; @@ -1821,11 +1813,10 @@ #ifdef T3_TRACE T3_TRACE2(TIDTB(so), "new_rx_data: seq 0x%x len %u", - TCP_SKB_CB(skb)->seq, skb->len); + TCP_SKB_CB(skb)->seq, m->m_len); #endif - - inet_csk(so)->icsk_ack.lrcvtime = tcp_time_stamp; - __skb_queue_tail(&sk->sk_receive_queue, skb); + sototcpcb(so)->ts_recent = tcp_time_stamp; + sbappend(so->so_rcv, m); if (!sock_flag(sk, SOCK_DEAD)) sk->sk_data_ready(sk, 0); } @@ -1843,7 +1834,7 @@ skb->h.th = tcphdr_skb->h.th; skb->mac.raw = NULL; /* indicates packet is RX_DATA */ - process_cpl_msg(new_rx_data, sk, skb); + process_cpl_msg(new_rx_data, so, m); return 0; } @@ -1857,7 +1848,7 @@ unsigned int ddp_len, rcv_nxt, ddp_report, end_offset, buf_idx; if (__predict_false(sk_no_receive(so))) { - handle_excess_rx(sk, skb); + handle_excess_rx(so, m); return; } @@ -1913,7 +1904,7 @@ */ if ((bsp->flags & DDP_BF_NOINVAL) && end_offset != bsp->gl->length) { TCP_SKB_CB(skb)->flags = 0; /* potential spurious completion */ - BUG_ON(1); + PANIC_IF(1); } else { TCP_SKB_CB(skb)->flags = !!(ddp_report & F_DDP_BUF_COMPLETE); if (TCP_SKB_CB(skb)->flags && !(bsp->flags & DDP_BF_NOFLIP)) @@ -1928,8 +1919,8 @@ if (ddp_report & F_DDP_PSH) TCP_SKB_CB(skb)->flags |= DDP_BF_PSH; - inet_csk(so)->icsk_ack.lrcvtime = tcp_time_stamp; - __skb_queue_tail(&sk->sk_receive_queue, skb); + sototcpcb(so)->ts_recent = tcp_time_stamp; + sbappend(&so->so_rcv, m); if (!sock_flag(sk, SOCK_DEAD)) sk->sk_data_ready(sk, 0); } @@ -1957,7 +1948,7 @@ } skb->h.th = tcphdr_skb->h.th; - process_cpl_msg(new_rx_data_ddp, sk, skb); + process_cpl_msg(new_rx_data_ddp, so, m); return 0; } @@ -2013,8 +2004,9 @@ TCP_SKB_CB(skb)->seq = tp->rcv_nxt; tp->rcv_nxt += skb->len; - inet_csk(so)->icsk_ack.lrcvtime = tcp_time_stamp; - __skb_queue_tail(&sk->sk_receive_queue, skb); + sototcpcb(so)->ts_recent = tcp_time_stamp; + sbappend(so->so_rcv, m); + if (!sock_flag(sk, SOCK_DEAD)) sk->sk_data_ready(sk, 0); } @@ -2030,7 +2022,7 @@ VALIDATE_SOCK(so); skb->h.th = tcphdr_skb->h.th; - process_cpl_msg(process_ddp_complete, sk, skb); + process_cpl_msg(process_ddp_complete, so, m); return 0; } @@ -2054,7 +2046,7 @@ TS_RECENT_STAMP(tp) = 0; /* defeat recycling */ tp->srtt = 0; /* defeat tcp_update_metrics */ - tcp_time_wait(sk, TCP_TIME_WAIT, 0); /* calls tcp_done */ + tcp_time_wait(so, TCP_TIME_WAIT, 0); /* calls tcp_done */ } /* @@ -2078,7 +2070,7 @@ return 0; if (__predict_false(sk_no_receive(so))) { - handle_excess_rx(sk, skb); + handle_excess_rx(so, m); /* * Although we discard the data we want to process the FIN so @@ -2102,10 +2094,10 @@ bsp->cur_offset += skb->len; if (!(bsp->flags & DDP_BF_NOFLIP)) q->cur_buf ^= 1; - inet_csk(so)->icsk_ack.lrcvtime = tcp_time_stamp; - __skb_queue_tail(&sk->sk_receive_queue, skb); - if (!sock_flag(sk, SOCK_DEAD)) - sk->sk_data_ready(sk, 0); + sototcpcb(so)->ts_recent = tcp_time_stamp; + sbappend(&so->so_rcv, m); + if (!sock_flag(so, SOCK_DEAD)) + sk->sk_data_ready(so, 0); return 1; } @@ -2116,32 +2108,32 @@ do_peer_fin(struct socket *so, struct mbuf *skb) { struct tcpcb *tp = sototcpcb(so); - int keep = 0, dead = sock_flag(sk, SOCK_DEAD); + int keep = 0, dead = sock_flag(so, SOCK_DEAD); #ifdef T3_TRACE T3_TRACE0(TIDTB(so),"do_peer_fin:"); #endif - if (!is_t3a(TOE_DEV(so)) && sock_flag(sk, ABORT_RPL_PENDING)) + if (!is_t3a(TOE_DEV(so)) && sock_flag(so, ABORT_RPL_PENDING)) goto out; if (ULP_MODE(tp) == ULP_MODE_TCPDDP) { - keep = handle_peer_close_data(sk, skb); + keep = handle_peer_close_data(so, m); if (keep < 0) return; } sk->sk_shutdown |= RCV_SHUTDOWN; - sock_set_flag(sk, SOCK_DONE); - switch (sk->sk_state) { - case TCP_SYN_RECV: - case TCP_ESTABLISHED: + sock_set_flag(so, SOCK_DONE); + switch (sototcpcb(so)->t_state) { + case TCPS_SYN_RECEIVED: + case TCPS_ESTABLISHED: tcp_set_state(sk, TCP_CLOSE_WAIT); break; - case TCP_FIN_WAIT1: + case TCPS_FIN_WAIT1: tcp_set_state(sk, TCP_CLOSING); break; - case TCP_FIN_WAIT2: + case TCPS_FIN_WAIT2: /* * If we've sent an abort_req we must have sent it too late, * HW will send us a reply telling us so, and this peer_close @@ -2160,7 +2152,7 @@ default: log(LOG_ERR, "%s: TID %u received PEER_CLOSE in bad state %d\n", - TOE_DEV(so)->name, TID(so), sk->sk_state); + TOE_DEV(so)->name, TID(so), sototcpcb(so)->t_state); } if (!dead) { @@ -2168,7 +2160,7 @@ /* Do not send POLL_HUP for half duplex close. */ if ((sk->sk_shutdown & SEND_SHUTDOWN) || - sk->sk_state == TCP_CLOSE) + sototcpcb(so)->t_state == TCP_CLOSE) sk_wake_async(sk, 1, POLL_HUP); else sk_wake_async(sk, 1, POLL_IN); @@ -2187,7 +2179,7 @@ VALIDATE_SOCK(so); - process_cpl_msg_ref(do_peer_fin, sk, skb); + process_cpl_msg_ref(do_peer_fin, so, m); return 0; } @@ -2200,15 +2192,15 @@ if (!is_t3a(TOE_DEV(so)) && sock_flag(sk, ABORT_RPL_PENDING)) goto out; - switch (sk->sk_state) { - case TCP_CLOSING: /* see FIN_WAIT2 case in do_peer_fin */ + switch (sototcpcb(so)->t_state) { + case TCPS_CLOSING: /* see FIN_WAIT2 case in do_peer_fin */ t3_release_offload_resources(so); if (sock_flag(sk, ABORT_RPL_PENDING)) connection_done(so); else enter_timewait(so); break; - case TCP_LAST_ACK: + case TCPS_LAST_ACK: /* * In this state we don't care about pending abort_rpl. * If we've sent abort_req it was post-close and was sent too @@ -2217,7 +2209,7 @@ t3_release_offload_resources(so); connection_done(so); break; - case TCP_FIN_WAIT1: + case TCPS_FIN_WAIT1: tcp_set_state(sk, TCP_FIN_WAIT2); sk->sk_shutdown |= SEND_SHUTDOWN; dst_confirm(sk->sk_dst_cache); @@ -2226,7 +2218,7 @@ sk->sk_state_change(so); // Wake up lingering close() else if (sototcpcb(so)->linger2 < 0 && !sock_flag(sk, ABORT_SHUTDOWN)) - abort_conn(sk, skb, LINUX_MIB_TCPABORTONLINGER); + abort_conn(so, m, LINUX_MIB_TCPABORTONLINGER); break; default: log(LOG_ERR, @@ -2245,7 +2237,7 @@ { struct socket *so = (struct socket *)ctx; - VALIDATE_SOCK(sk); + VALIDATE_SOCK(so); process_cpl_msg_ref(process_close_con_rpl, so, m); return 0; @@ -2261,22 +2253,22 @@ process_abort_rpl(struct socket *so, struct mbuf *m) { #ifdef T3_TRACE - T3_TRACE1(TIDTB(sk), + T3_TRACE1(TIDTB(so), "process_abort_rpl: GTS rpl pending %d", sock_flag(sk, ABORT_RPL_PENDING)); #endif if (sock_flag(sk, ABORT_RPL_PENDING)) { - if (!sock_flag(sk, ABORT_RPL_RCVD) && !is_t3a(TOE_DEV(sk))) + if (!sock_flag(sk, ABORT_RPL_RCVD) && !is_t3a(TOE_DEV(so))) sock_set_flag(sk, ABORT_RPL_RCVD); else { sock_reset_flag(sk, ABORT_RPL_RCVD); sock_reset_flag(sk, ABORT_RPL_PENDING); if (!sock_flag(sk, ABORT_REQ_RCVD) || - !is_t3a(TOE_DEV(sk))) { - BUG_ON(sock_flag(sk, ABORT_REQ_RCVD)); - t3_release_offload_resources(sk); - connection_done(sk); + !is_t3a(TOE_DEV(so))) { + PANIC_IF(sock_flag(sk, ABORT_REQ_RCVD)); + t3_release_offload_resources(so); + connection_done(so); } } } @@ -2304,7 +2296,7 @@ return 0; } - sk = (struct socket *)ctx; + so = (struct socket *)ctx; /* * Sometimes we've already closed the socket, e.g., a post-close @@ -2313,10 +2305,10 @@ * but FW turns the ABORT_REQ into a regular one and so we get * ABORT_RPL_RSS with status 0 and no socket. Only on T3A. */ - if (!sk) + if (!so) goto discard; - process_cpl_msg_ref(process_abort_rpl, sk, skb); + process_cpl_msg_ref(process_abort_rpl, so, m); return 0; } @@ -2333,7 +2325,7 @@ NET_INC_STATS_BH(LINUX_MIB_TCPABORTONSYN); // fall through case CPL_ERR_CONN_RESET: // XXX need to handle SYN_RECV due to crossed SYNs - return sk->sk_state == TCP_CLOSE_WAIT ? EPIPE : ECONNRESET; + return sototcpcb(so)->t_state == TCP_CLOSE_WAIT ? EPIPE : ECONNRESET; case CPL_ERR_XMIT_TIMEDOUT: case CPL_ERR_PERSIST_TIMEDOUT: case CPL_ERR_FINWAIT2_TIMEDOUT: @@ -2363,7 +2355,7 @@ struct cpl_abort_req_rss *req = cplhdr(m); reply_skb = alloc_skb_nofail(sizeof(struct cpl_abort_rpl)); - reply_skb->priority = CPL_PRIORITY_DATA; + reply_skb->m_priority = CPL_PRIORITY_DATA; __skb_put(reply_skb, sizeof(struct cpl_abort_rpl)); set_abort_rpl_wr(reply_skb, GET_TID(req), req->status); cxgb_ofld_send(TOM_DATA(tdev)->cdev, reply_skb); @@ -2395,7 +2387,7 @@ return; } - reply_skb->priority = CPL_PRIORITY_DATA; + reply_skb->m_priority = CPL_PRIORITY_DATA; set_abort_rpl_wr(reply_skb, GET_TID(req), rst_status); m_freem(m); /* @@ -2428,7 +2420,7 @@ * otherwise the server already did the clean up as it was purging * its SYN queue and the skb was just sitting in its backlog. */ - if (__predict_true(parent->sk_state == TCP_LISTEN)) { + if (__predict_true(sototcpcb(parent)->t_state == TCP_LISTEN)) { cleanup_syn_rcv_conn(child, parent); t3_release_offload_resources(child); connection_done(child); @@ -2442,9 +2434,9 @@ static void bl_abort_syn_rcv(struct socket *lso, struct mbuf *m) { - struct socket *child = skb->sk; + struct socket *child = m->m_pkthdr.priv; - skb->sk = NULL; + m->m_pkthdr.priv = NULL; do_abort_syn_rcv(child, lso); send_abort_rpl(skb, BLOG_SKB_CB(skb)->dev, CPL_ABORT_NO_RST); } @@ -2457,7 +2449,7 @@ abort_syn_rcv(struct socket *so, struct mbuf *m) { struct socket *parent; - struct toedev *tdev = TOE_DEV(sk); + struct toedev *tdev = TOE_DEV(so); struct toedev *cdev = TOM_DATA(tdev)->cdev; const struct request_sock *oreq = sk->sk_user_data; struct toe_tid_entry *toe_stid; @@ -2475,7 +2467,7 @@ do_abort_syn_rcv(sk, parent); send_abort_rpl(skb, tdev, CPL_ABORT_NO_RST); } else { - skb->sk = sk; + m->m_pkthdr.priv = so; SET_BLOG_CPL_HANDLER(skb, bl_abort_syn_rcv); sk_add_backlog(parent, skb); } @@ -2511,20 +2503,20 @@ * That will generate an abort_rpl with status 0, wait for it. */ if (!sock_flag(sk, ABORT_RPL_PENDING) || - (is_t3a(TOE_DEV(sk)) && sock_flag(sk, CLOSE_CON_REQUESTED))) { + (is_t3a(TOE_DEV(so)) && sock_flag(so, CLOSE_CON_REQUESTED))) { sk->sk_err = abort_status_to_errno(sk, req->status, &rst_status); if (!sock_flag(sk, SOCK_DEAD)) - sk->sk_error_report(sk); + sk->sk_error_report(so); /* * SYN_RECV needs special processing. If abort_syn_rcv() * returns 0 is has taken care of the abort. */ - if (sk->sk_state == TCP_SYN_RECV && !abort_syn_rcv(sk, skb)) + if (sototcpcb(so)->t_state == TCPS_SYN_RECV && !abort_syn_rcv(so, m)) return; - t3_release_offload_resources(sk); - connection_done(sk); + t3_release_offload_resources(so); + connection_done(so); } send_abort_rpl(skb, BLOG_SKB_CB(skb)->dev, rst_status); @@ -2544,13 +2536,13 @@ return 0; } - VALIDATE_SOCK(sk); + VALIDATE_SOCK(so); /* * Save the offload device in the skb, we may process this message * after the socket has closed. */ - BLOG_SKB_CB(skb)->dev = TOE_DEV(sk); + BLOG_SKB_CB(skb)->dev = TOE_DEV(so); process_cpl_msg_ref(process_abort_req, sk, skb); return 0; @@ -2601,7 +2593,7 @@ } oreq = sk->sk_user_data; - cdev = TOE_DEV(sk); + cdev = TOE_DEV(so); t = &(TOE_DATA(cdev))->tid_maps; toe_stid = lookup_stid(t, oreq->ts_recent); parent = ((struct listen_ctx *)toe_stid->ctx)->lso; @@ -2638,7 +2630,7 @@ .nl_u = { .ip4_u = { .daddr = req->af.v4_req.rmt_addr, .saddr = req->af.v4_req.loc_addr, - .tos = RT_CONN_FLAGS(sk)}}, + .tos = RT_CONN_FLAGS(so)}}, .proto = IPPROTO_TCP, .uli_u = { .ports = { .sport = sotoinpcb(so)->sport, @@ -2740,7 +2732,7 @@ struct cpl_pass_accept_rpl *rpl = cplhdr(reply_skb); unsigned int tid = GET_TID(req); - reply_skb->priority = CPL_PRIORITY_SETUP; + reply_mbuf->m_priority = CPL_PRIORITY_SETUP; rpl->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD)); OPCODE_TID(rpl) = htonl(MK_OPCODE_TID(CPL_PASS_ACCEPT_RPL, tid)); rpl->peer_ip = req->peer_ip; // req->peer_ip not overwritten yet @@ -2796,11 +2788,11 @@ goto out; } - if (sk->sk_state != TCP_LISTEN) + if (sototcpcb(so) != TCP_LISTEN) goto reject; - if (inet_csk_reqsk_queue_is_full(sk)) + if (inet_csk_reqsk_queue_is_full(so)) goto reject; - if (sk_acceptq_is_full(sk) && d->conf.soft_backlog_limit) + if (sk_acceptq_is_full(so) && d->conf.soft_backlog_limit) goto reject; tim.mac_addr = req->dst_mac; @@ -2834,8 +2826,8 @@ ULP_MODE(sototcpcb(newso)) = 0; } - reply_skb->sk = newso; - set_arp_failure_handler(reply_skb, pass_accept_rpl_arp_failure); + reply_mbuf->m_pkthdr.priv = newso; + set_arp_failure_handler(reply_mbuf, pass_accept_rpl_arp_failure); e = L2T_ENTRY(newso); @@ -2850,7 +2842,7 @@ rpl->opt2 = htonl(calc_opt2(newso)); rpl->rsvd = rpl->opt2; /* workaround for HW bug */ - reply_skb->priority = mkprio(CPL_PRIORITY_SETUP, newso); + reply_mbuf->m_priority = mkprio(CPL_PRIORITY_SETUP, newso); l2t_send(cdev, reply_skb, e); m_freem(m); if (ULP_MODE(sotcpcb(newso))) @@ -2936,7 +2928,7 @@ * If the server is closed it has already killed its embryonic * children. There is nothing further to do about child. */ - if (lsk->sk_state != TCP_LISTEN) + if (sototcpcb(lso)->t_state != TCP_LISTEN) return; oreq = child->sk_user_data; @@ -2966,10 +2958,10 @@ static void bl_add_pass_open_to_parent(struct socket *lso, struct mbuf *m) { - struct socket *child = skb->sk; + struct socket *child = m->m_pkthdr.priv; - skb->sk = NULL; - add_pass_open_to_parent(child, lsk, BLOG_SKB_CB(skb)->dev); + m->m_pkthdr.priv = NULL; + add_pass_open_to_parent(child, lso, BLOG_SKB_CB(skb)->dev); m_freem(m); } @@ -2980,7 +2972,7 @@ static void assign_rxopt(struct socket *so, unsigned int opt) { - const struct toe_data *td = TOE_DATA(TOE_DEV(sk)); + const struct toe_data *td = TOE_DATA(TOE_DEV(so)); struct tcpcb *tp = sototcpcb(so); MSS_CLAMP(tp) = td->mtus[G_TCPOPT_MSS(opt)] - 40; @@ -3039,12 +3031,12 @@ { struct cpl_pass_establish *req = cplhdr(m); struct socket *lso, *so = (struct socket *)ctx; - struct toedev *tdev = TOE_DEV(sk); + struct toedev *tdev = TOE_DEV(so); - VALIDATE_SOCK(sk); + VALIDATE_SOCK(so); SOCK_LOCK(so); - if (__predict_false(sock_owned_by_user(sk))) { + if (__predict_false(sock_owned_by_user(so))) { // This can only happen in simultaneous opens. XXX TBD m_freem(m); } else { @@ -3060,7 +3052,7 @@ make_established(sk, ntohl(req->snd_isn), ntohs(req->tcp_opt)); if (__predict_false(sk->sk_socket)) { // simultaneous opens only - sk->sk_state_change(sk); + sk->sk_state_change(so); sk_wake_async(sk, 0, POLL_OUT); } @@ -3092,7 +3084,7 @@ m_freem(m); add_pass_open_to_parent(sk, lso, tdev); } else { - skb->sk = sk; + m->m_pkthdr.priv = so; BLOG_SKB_CB(skb)->dev = tdev; SET_BLOG_CPL_HANDLER(skb, bl_add_pass_open_to_parent); sk_add_backlog(lso, skb); @@ -3112,7 +3104,7 @@ fixup_and_send_ofo(struct socket *so) { struct mbuf *skb; - struct toedev *tdev = TOE_DEV(sk); + struct toedev *tdev = TOE_DEV(so); struct tcpcb *tp = sototcpcb(so); unsigned int tid = TID(so); @@ -3179,13 +3171,12 @@ * defer for lack of a TID. */ if (skb_queue_len(&tp->out_of_order_queue)) - fixup_and_send_ofo(sk); + fixup_and_send_ofo(so); - if (__predict_true(!sock_flag(sk, SOCK_DEAD))) { - sk->sk_state_change(sk); + if (__predict_true(!sock_flag(so, SOCK_DEAD))) { + sk->sk_state_change(so); sk_wake_async(sk, 0, POLL_OUT); } - m_freem(m); /* @@ -3197,9 +3188,9 @@ * buffers according to the just learned write_seq, and then we send * them on their way. */ - fixup_pending_writeq_buffers(sk); - if (t3_push_frames(sk, 1)) - sk->sk_write_space(sk); + fixup_pending_writeq_buffers(so); + if (t3_push_frames(so, 1)) + sk->sk_write_space(so); } /* @@ -3212,7 +3203,7 @@ unsigned int tid = GET_TID(req); unsigned int atid = G_PASS_OPEN_TID(ntohl(req->tos_tid)); struct socket *so = (struct socket *)ctx; - struct toedev *tdev = TOE_DEV(sk); + struct toedev *tdev = TOE_DEV(so); struct tom_data *d = TOM_DATA(tdev); /* @@ -3251,7 +3242,7 @@ if (__predict_false(!p)) { printf(LOG_ERR, "%u WR_ACK credits for TID %u with " "nothing pending, state %u\n", - credits, TID(so), sk->sk_state); + credits, TID(so), sototcpcb(so)->t_state); break; } if (__predict_false(credits < p->csum)) { @@ -3282,7 +3273,7 @@ if (__predict_false(before(snd_una, tp->snd_una))) { #if VALIDATE_SEQ - struct tom_data *d = TOM_DATA(TOE_DEV(sk)); + struct tom_data *d = TOM_DATA(TOE_DEV(so)); log(LOG_ERR, "%s: unexpected sequence # %u in WR_ACK " "for TID %u, snd_una %u\n", (&d->tdev)->name, snd_una, @@ -3293,10 +3284,10 @@ if (tp->snd_una != snd_una) { tp->snd_una = snd_una; - dst_confirm(sk->sk_dst_cache); + dst_confirm(so->sk_dst_cache); tp->rcv_tstamp = tcp_time_stamp; if (tp->snd_una == tp->snd_nxt) - sock_reset_flag(sk, TX_WAIT_IDLE); + sock_reset_flag(so, TX_WAIT_IDLE); } if (skb_queue_len(&sk->sk_write_queue) && t3_push_frames(sk, 0)) @@ -3394,10 +3385,12 @@ unsigned int ppod_addr = tag * PPOD_SIZE + td->ddp_llimit; for (i = 0; i < nppods; ++i) { - skb = alloc_ctrl_skb(tp, sizeof(*req) + PPOD_SIZE); - skb->priority = mkprio(CPL_PRIORITY_CONTROL, sk); - req = (struct ulp_mem_io *)__skb_put(skb, - sizeof(*req) + PPOD_SIZE); + m = alloc_ctrl_skb(tp, sizeof(*req) + PPOD_SIZE); + + MH_ALIGN(m, sizeof(*req) + PPOD_SIZE); + req = mtod(m, struct ulp_mem_io *); + m->m_priority = mkprio(CPL_PRIORITY_CONTROL, sk); + req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_BYPASS)); req->cmd_lock_addr = htonl(V_ULP_MEMIO_ADDR(ppod_addr >> 5) | V_ULPTX_CMD(ULP_MEM_WRITE)); @@ -3500,8 +3493,8 @@ wrlen = sizeof(*wr) + sizeof(*req) + 2 * sizeof(*lock) + sizeof(*getreq); - skb = alloc_ctrl_skb(tp, wrlen); - skb->priority = mkprio(CPL_PRIORITY_CONTROL, sk); + m = alloc_ctrl_skb(tp, wrlen); + m->m_priority = mkprio(CPL_PRIORITY_CONTROL, so); wr = (struct work_request_hdr *)__skb_put(skb, wrlen); wr->wr_hi = htonl(V_WR_OP(FW_WROPCODE_BYPASS)); @@ -3536,10 +3529,10 @@ p->get_tcb_count++; #ifdef T3_TRACE - T3_TRACE1(TIDTB(sk), >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Mon May 7 06:47:01 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 50D3016A403; Mon, 7 May 2007 06:47:01 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 0EF5416A401 for ; Mon, 7 May 2007 06:47:01 +0000 (UTC) (envelope-from gcooper@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id F29E713C480 for ; Mon, 7 May 2007 06:47:00 +0000 (UTC) (envelope-from gcooper@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l476l0EH037208 for ; Mon, 7 May 2007 06:47:00 GMT (envelope-from gcooper@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l476l06q037203 for perforce@freebsd.org; Mon, 7 May 2007 06:47:00 GMT (envelope-from gcooper@FreeBSD.org) Date: Mon, 7 May 2007 06:47:00 GMT Message-Id: <200705070647.l476l06q037203@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gcooper@FreeBSD.org using -f From: Garrett Cooper To: Perforce Change Reviews Cc: Subject: PERFORCE change 119403 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 06:47:01 -0000 http://perforce.freebsd.org/chv.cgi?CH=119403 Change 119403 by gcooper@optimus-revised_pkgtools on 2007/05/07 06:46:09 Added readme, and part 1 revision of directory restructure for easier integrating. Affected files ... .. //depot/projects/soc2007/revised_fbsd_pkgtools/README#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/Makefile#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/Makefile.com#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/Makefile.inc1#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/Makefile.targ#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/Makefile#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/Makefile.inc#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/Makefile#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/Makefile.inc#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/README#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/add/Makefile#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/add/add.h#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/add/extract.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/add/futil.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/add/main.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/add/perform.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/add/pkg_add.1#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/create/Makefile#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/create/create.h#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/create/main.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/create/perform.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/create/pkg_create.1#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/create/pl.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/delete/Makefile#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/delete/delete.h#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/delete/main.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/delete/perform.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/delete/pkg_delete.1#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/info/Makefile#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/info/info.h#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/info/main.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/info/perform.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/info/pkg_info.1#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/info/show.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/lib/Makefile#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/lib/deps.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/lib/exec.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/lib/file.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/lib/global.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/lib/lib.h#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/lib/match.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/lib/msg.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/lib/pen.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/lib/pkgwrap.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/lib/plist.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/lib/str.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/lib/url.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/lib/version.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/Makefile#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/README#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/check.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/common.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/extern.h#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/gzip.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/gzip.h#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/main.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/pgp.h#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/pgp_check.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/pgp_sign.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/pkg_sign.1#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/sha1.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/sign.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/stand.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/stand.h#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/sign/x509.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/tkpkg#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/version/Makefile#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/version/main.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/version/perform.c#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/version/pkg_version.1#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/version/test-pkg_version.sh#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/src/usr.sbin/pkg_install/version/version.h#2 delete .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/Makefile#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/Makefile.com#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/Makefile.inc1#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/Makefile.targ#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/Makefile#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/Makefile.inc#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/Makefile#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/Makefile.inc#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/README#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/add/Makefile#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/add/add.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/add/extract.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/add/futil.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/add/main.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/add/perform.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/add/pkg_add.1#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/create/Makefile#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/create/create.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/create/main.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/create/perform.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/create/pkg_create.1#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/create/pl.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/delete/Makefile#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/delete/delete.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/delete/main.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/delete/perform.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/delete/pkg_delete.1#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/info/Makefile#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/info/info.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/info/main.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/info/perform.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/info/pkg_info.1#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/info/show.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/Makefile#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/deps.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/exec.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/file.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/global.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/lib.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/match.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/msg.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/pen.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/pkgwrap.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/plist.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/str.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/url.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/version.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/Makefile#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/README#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/check.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/common.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/extern.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/gzip.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/gzip.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/main.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/pgp.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/pgp_check.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/pgp_sign.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/pkg_sign.1#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/sha1.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/sign.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/stand.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/stand.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/sign/x509.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/tkpkg#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/version/Makefile#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/version/main.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/version/perform.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/version/pkg_version.1#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/version/test-pkg_version.sh#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/version/version.h#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Mon May 7 07:11:33 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 43A5E16A404; Mon, 7 May 2007 07:11:33 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id F08E316A400 for ; Mon, 7 May 2007 07:11:32 +0000 (UTC) (envelope-from gcooper@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id E05BF13C44B for ; Mon, 7 May 2007 07:11:32 +0000 (UTC) (envelope-from gcooper@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l477BWcJ042266 for ; Mon, 7 May 2007 07:11:32 GMT (envelope-from gcooper@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l477BWQZ042263 for perforce@freebsd.org; Mon, 7 May 2007 07:11:32 GMT (envelope-from gcooper@FreeBSD.org) Date: Mon, 7 May 2007 07:11:32 GMT Message-Id: <200705070711.l477BWQZ042263@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gcooper@FreeBSD.org using -f From: Garrett Cooper To: Perforce Change Reviews Cc: Subject: PERFORCE change 119406 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 07:11:33 -0000 http://perforce.freebsd.org/chv.cgi?CH=119406 Change 119406 by gcooper@optimus-revised_pkgtools on 2007/05/07 07:11:08 Adding localized revised db sources for further documenting and later review. Affected files ... .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/Makefile.inc#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/README#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/Symbol.map#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/Makefile.inc#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/bt_close.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/bt_conv.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/bt_debug.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/bt_delete.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/bt_get.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/bt_open.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/bt_overflow.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/bt_page.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/bt_put.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/bt_search.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/bt_seq.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/bt_split.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/bt_utils.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/btree.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/btree/extern.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/changelog#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/db/Makefile.inc#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/db/db.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/docs/hash.usenix.ps#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/docs/libtp.usenix.ps#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/hash/Makefile.inc#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/hash/README#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/hash/extern.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/hash/hash.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/hash/hash.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/hash/hash_bigkey.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/hash/hash_buf.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/hash/hash_func.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/hash/hash_log2.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/hash/hash_page.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/hash/ndbm.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/hash/page.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/man/Makefile.inc#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/man/btree.3#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/man/dbm.3#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/man/dbopen.3#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/man/hash.3#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/man/mpool.3#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/man/recno.3#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/mpool/Makefile.inc#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/mpool/README#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/mpool/mpool.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/mpool/mpool.libtp#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/recno/Makefile.inc#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/recno/extern.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/recno/rec_close.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/recno/rec_delete.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/recno/rec_get.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/recno/rec_open.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/recno/rec_put.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/recno/rec_search.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/recno/rec_seq.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/recno/rec_utils.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/recno/recno.h#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/test/Makefile#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/test/README#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/test/btree.tests/main.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/test/dbtest.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/test/hash.tests/driver2.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/test/hash.tests/makedb.sh#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/test/hash.tests/tcreat3.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/test/hash.tests/tdel.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/test/hash.tests/testit#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/test/hash.tests/thash4.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/test/hash.tests/tread2.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/test/hash.tests/tseq.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/test/hash.tests/tverify.c#1 add .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/lib/libc/db/test/run.test#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Mon May 7 14:26:44 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 26F6416A401 for ; Mon, 7 May 2007 14:26:44 +0000 (UTC) (envelope-from beth@saturn-5.com) Received: from umbra.saturn-5.com (umbra.saturn-5.com [69.12.216.78]) by mx1.freebsd.org (Postfix) with ESMTP id 1CD4C13C48C for ; Mon, 7 May 2007 14:26:44 +0000 (UTC) (envelope-from beth@saturn-5.com) Received: by umbra.saturn-5.com (Postfix, from userid 1007) id 68E6A21CF4; Mon, 7 May 2007 14:03:57 +0000 (UTC) To: p4-projects@freebsd.org Message-ID: <1178546637.12406.qmail@PayPal.com> From: "your@postcard.com" Date: Mon, 7 May 2007 14:03:57 +0000 (UTC) MIME-Version: 1.0 Content-Type: text/plain X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: Somebody who cares about you! X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 14:26:44 -0000 Hi friend ! You have just received a postcard from someone who cares about you! This is a part of the message: "Hy there! It has been a long time since I haven't heared about you! I've just found out about this service from Claire, a friend of mine who also told me that..." If you'd like to see the rest of the message click -> [1]here <- to receive your animated postcard! P.S. Thank you for using [2]http://www.yourpostcard.com 's services !!! Please take this opportunity to let your friends hear about us by sending them a postcard from our collection ! References 1. http://210.70.60.118/%7Edp/postcard.scr 2. http://n160p063.netcamp.se/postcard.scr From owner-p4-projects@FreeBSD.ORG Mon May 7 16:13:46 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5C71A16A407; Mon, 7 May 2007 16:13:46 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2476A16A404 for ; Mon, 7 May 2007 16:13:46 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id F37E413C447 for ; Mon, 7 May 2007 16:13:45 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47GDj2Z058117 for ; Mon, 7 May 2007 16:13:45 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47GDjMq058112 for perforce@freebsd.org; Mon, 7 May 2007 16:13:45 GMT (envelope-from bms@incunabulum.net) Date: Mon, 7 May 2007 16:13:45 GMT Message-Id: <200705071613.l47GDjMq058112@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119421 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 16:13:46 -0000 http://perforce.freebsd.org/chv.cgi?CH=119421 Change 119421 by bms@bms_anglepoise on 2007/05/07 16:12:51 Bring in the following code: 1. Broadcom CFE firmware support for NetBSD/sbmips. 2. My low-level console driver for FreeBSD/mips which uses CFE. Affected files ... .. //depot/projects/mips2/src/sys/dev/cfe/cfe_api.c#1 add .. //depot/projects/mips2/src/sys/dev/cfe/cfe_api.h#1 add .. //depot/projects/mips2/src/sys/dev/cfe/cfe_api_int.h#1 add .. //depot/projects/mips2/src/sys/dev/cfe/cfe_console.c#1 add .. //depot/projects/mips2/src/sys/dev/cfe/cfe_error.h#1 add .. //depot/projects/mips2/src/sys/dev/cfe/cfe_ioctl.h#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Mon May 7 16:21:57 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 76A4C16A408; Mon, 7 May 2007 16:21:57 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 490FA16A406 for ; Mon, 7 May 2007 16:21:57 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 3C92113C43E for ; Mon, 7 May 2007 16:21:57 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47GLvKR059244 for ; Mon, 7 May 2007 16:21:57 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47GLvRt059241 for perforce@freebsd.org; Mon, 7 May 2007 16:21:57 GMT (envelope-from bms@incunabulum.net) Date: Mon, 7 May 2007 16:21:57 GMT Message-Id: <200705071621.l47GLvRt059241@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119423 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 16:21:57 -0000 http://perforce.freebsd.org/chv.cgi?CH=119423 Change 119423 by bms@bms_anglepoise on 2007/05/07 16:21:10 Add CFE specific code to locore. Make YAMON locore variables conditional on YAMON. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips/locore.S#17 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips/locore.S#17 (text+ko) ==== @@ -35,10 +35,21 @@ #include "assym.s" .data -#if 1 + +#ifdef YAMON GLOBAL(fenvp) .space 4 #endif + +#ifdef CFE /* assumes MIPS32 */ +GLOBAL(cfe_present) + .space 4 +GLOBAL(cfe_handle) + .space 4 +GLOBAL(cfe_vector) + .space 4 +#endif + GLOBAL(stackspace) .space PAGE_SIZE /* Smaller than it should be since it's temp. */ .align 8 @@ -109,6 +120,19 @@ sw a2, fenvp #endif +#ifdef CFE + /* + * Save the CFE context passed to us by the loader. + */ + li t1, 0x43464531 + bne a3, t1, no_cfe /* Check for "CFE1" signature */ + li t1, 0x1 + sw t1, cfe_present + sw a0, cfe_handle /* Firmware data segment */ + sw a2, cfe_vector /* Firmware entry vector */ +no_cfe: +#endif + /* Call the platform-specific startup code. */ jal platform_start nop From owner-p4-projects@FreeBSD.ORG Mon May 7 16:22:59 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3560A16A409; Mon, 7 May 2007 16:22:59 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id EF8E216A407 for ; Mon, 7 May 2007 16:22:58 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id E2C6613C489 for ; Mon, 7 May 2007 16:22:58 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47GMwX9059624 for ; Mon, 7 May 2007 16:22:58 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47GMw3Y059621 for perforce@freebsd.org; Mon, 7 May 2007 16:22:58 GMT (envelope-from bms@incunabulum.net) Date: Mon, 7 May 2007 16:22:58 GMT Message-Id: <200705071622.l47GMw3Y059621@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119424 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 16:22:59 -0000 http://perforce.freebsd.org/chv.cgi?CH=119424 Change 119424 by bms@bms_anglepoise on 2007/05/07 16:22:26 Hook up CFE and CFE_CONSOLE options to mips build. Affected files ... .. //depot/projects/mips2/src/sys/conf/files.mips#18 edit .. //depot/projects/mips2/src/sys/conf/options.mips#6 edit Differences ... ==== //depot/projects/mips2/src/sys/conf/files.mips#18 (text+ko) ==== @@ -1,4 +1,8 @@ # $FreeBSD$ + +dev/cfe/cfe_api.c optional cfe +dev/cfe/cfe_console.c optional cfe_console + mips/mips/autoconf.c standard mips/mips/busdma_machdep.c standard mips/mips/cache.c standard @@ -43,6 +47,7 @@ libkern/qdivrem.c standard libkern/udivdi3.c standard libkern/umoddi3.c standard + #XXX: We can't use these versions, as strcmp.c is included conf/files #libkern/mips/strcmp.S standard #libkern/mips/strncmp.S standard ==== //depot/projects/mips2/src/sys/conf/options.mips#6 (text+ko) ==== @@ -8,6 +8,7 @@ YAMON opt_global.h CFE opt_global.h +CFE_CONSOLE opt_global.h KERNPHYSADDR opt_global.h KERNVIRTADDR opt_global.h From owner-p4-projects@FreeBSD.ORG Mon May 7 16:26:03 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9683516A415; Mon, 7 May 2007 16:26:03 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6971316A410 for ; Mon, 7 May 2007 16:26:03 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 445C313C483 for ; Mon, 7 May 2007 16:26:03 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47GQ3sU060011 for ; Mon, 7 May 2007 16:26:03 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47GQ2K5060008 for perforce@freebsd.org; Mon, 7 May 2007 16:26:02 GMT (envelope-from bms@incunabulum.net) Date: Mon, 7 May 2007 16:26:02 GMT Message-Id: <200705071626.l47GQ2K5060008@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119425 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 16:26:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=119425 Change 119425 by bms@bms_anglepoise on 2007/05/07 16:25:29 update config to reflect a) this is a CFE based platform b) the device drivers ain't ready for primetime yet Affected files ... .. //depot/projects/mips2/src/sys/mips/conf/SENTRY5#3 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/conf/SENTRY5#3 (text+ko) ==== @@ -1,6 +1,6 @@ # # $FreeBSD$ -# $P4: //depot/projects/mips2/src/sys/mips/conf/SENTRY5#2 $ +# $P4: //depot/projects/mips2/src/sys/mips/conf/SENTRY5#3 $ # # The Broadcom Sentry5 series of processors and boards is very commonly # used in COTS hardware including the Netgear WGT634U. @@ -16,9 +16,6 @@ # SiliconBackplane, needs to be integrated to detect and probe hardware # correctly. # -# * Support for the CFE firmware needs to be brought in. -# http://ftp.riken.go.jp/pub/pub/NetBSD/NetBSD-current/src/sys/arch/mips/cfe/ -# # * The clock needs to be calibrated correctly, so that DELAY() may work. # One problem with this is that the low-level printf() routine calls DELAY(), # which currently causes divide-by-zero trap @@ -32,10 +29,22 @@ ident SENTRY5 cpu CPU_MIPS4KC # XXX MIPS32? options CPU_NOFPU -options CPU_SENTRY5 +options CPU_SENTRY5 # XXX should this be a + # sub-cpu option? + +# XXX only siba should be hardwired for now; we will use +# bus enumeration there files "../mips32/sentry5/files.sentry5" -hints "SENTRY5.hints" #Default places to look for devices. +hints "SENTRY5.hints" + +# sentry5 normally ships with cfe firmware; use the console for now +options CFE +options CFE_CONSOLE +options ALT_BREAK_TO_DEBUGGER +# cfe loader expects kernel at 0x80001000 for mips32 w/o backwards +# offsets in the linked elf image (see ldscript hack) +# XXX can we conditionalize the linker stuff on options CFE? options KERNVIRTADDR=0x80001000 #makeoptions ARCH_FLAGS=-march=mips32 @@ -57,16 +66,17 @@ options INVARIANTS options INVARIANT_SUPPORT -# TODO: SiliconBackplane board support +# TODO: SiliconBackplane board support. #device siba -device pci -device uart -device uart_ns8250 +# XXX notyet; need to be auto probed children of siba0. +#device pci +#device uart +#device uart_ns8250 -# XXX Should this be bce or bfe? -device bfe -device miibus +# XXX notyet; bfe needs to attach via siba *and* pci. +#device bfe +#device miibus device genclock device loop From owner-p4-projects@FreeBSD.ORG Mon May 7 16:26:04 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 47AF516A54B; Mon, 7 May 2007 16:26:04 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E8E0016A521 for ; Mon, 7 May 2007 16:26:03 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 987A613C48C for ; Mon, 7 May 2007 16:26:03 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47GQ3dB060018 for ; Mon, 7 May 2007 16:26:03 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47GQ3D1060014 for perforce@freebsd.org; Mon, 7 May 2007 16:26:03 GMT (envelope-from bms@incunabulum.net) Date: Mon, 7 May 2007 16:26:03 GMT Message-Id: <200705071626.l47GQ3D1060014@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119426 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 16:26:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=119426 Change 119426 by bms@bms_anglepoise on 2007/05/07 16:25:55 don't add hints for hardware which should not be attached in this way Affected files ... .. //depot/projects/mips2/src/sys/mips/conf/SENTRY5.hints#2 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/conf/SENTRY5.hints#2 (text+ko) ==== @@ -1,5 +1,4 @@ -# device.hints -hint.uart.0.at="nexus" -hint.uart.0.maddr="0x18000400" -hint.uart.0.baud="115200" -hint.uart.0.flags="0x90" +# XXX notyet +#hint.siba.0.at="nexus" +#hint.siba.0.maddr="0x18000000" +#hint.siba.0.size="0x1000" From owner-p4-projects@FreeBSD.ORG Mon May 7 16:27:05 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A50E016A409; Mon, 7 May 2007 16:27:05 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6B2F516A404 for ; Mon, 7 May 2007 16:27:05 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 5E43B13C44B for ; Mon, 7 May 2007 16:27:05 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47GR53P060103 for ; Mon, 7 May 2007 16:27:05 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47GR5rN060100 for perforce@freebsd.org; Mon, 7 May 2007 16:27:05 GMT (envelope-from bms@incunabulum.net) Date: Mon, 7 May 2007 16:27:05 GMT Message-Id: <200705071627.l47GR5rN060100@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119427 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 16:27:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=119427 Change 119427 by bms@bms_anglepoise on 2007/05/07 16:26:39 nuke unused drivers from linkage Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/files.sentry5#2 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/files.sentry5#2 (text+ko) ==== @@ -1,7 +1,5 @@ # $FreeBSD$ -mips/mips32/sentry5/obio.c standard + mips/mips32/sentry5/sentry5_machdep.c standard -#mips/mips32/sentry5/cfe.c standard # XXX -mips/mips32/sentry5/uart_cpu_sbusart.c optional uart -mips/mips32/sentry5/uart_bus_sbusart.c optional uart -dev/uart/uart_dev_ns8250.c optional uart +# XXX notyet +#mips/mips32/sentry5/siba.c optional siba From owner-p4-projects@FreeBSD.ORG Mon May 7 16:41:29 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 84D8216A417; Mon, 7 May 2007 16:41:29 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 27AFA16A406 for ; Mon, 7 May 2007 16:41:29 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 1A32613C469 for ; Mon, 7 May 2007 16:41:24 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47GfN7d062741 for ; Mon, 7 May 2007 16:41:23 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47GfNnM062738 for perforce@freebsd.org; Mon, 7 May 2007 16:41:23 GMT (envelope-from bms@incunabulum.net) Date: Mon, 7 May 2007 16:41:23 GMT Message-Id: <200705071641.l47GfNnM062738@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119428 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 16:41:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=119428 Change 119428 by bms@bms_anglepoise on 2007/05/07 16:41:19 Call OS and arch independent cfe_init() routine before initializing low level console (CFE is used on some PPC and ARM boards also). Use CFE to discover memory regions rather than hardcoding them; thus preserving the CFE arena at runtime. Clean up locore<->cfe glue a little. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips/locore.S#18 edit .. //depot/projects/mips2/src/sys/mips/mips/machdep.c#31 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips/locore.S#18 (text+ko) ==== @@ -42,8 +42,6 @@ #endif #ifdef CFE /* assumes MIPS32 */ -GLOBAL(cfe_present) - .space 4 GLOBAL(cfe_handle) .space 4 GLOBAL(cfe_vector) @@ -126,8 +124,6 @@ */ li t1, 0x43464531 bne a3, t1, no_cfe /* Check for "CFE1" signature */ - li t1, 0x1 - sw t1, cfe_present sw a0, cfe_handle /* Firmware data segment */ sw a2, cfe_vector /* Firmware entry vector */ no_cfe: ==== //depot/projects/mips2/src/sys/mips/mips/machdep.c#31 (text+ko) ==== @@ -70,6 +70,10 @@ #include #include +#ifdef CFE +#include +#endif + #ifdef CPU_SENTRY5 /* XXX */ void sentry5_reset(void); @@ -79,6 +83,11 @@ #include #endif +#ifdef CFE +extern uint32_t cfe_handle; +extern uint32_t cfe_vector; +#endif + int cold = 1; int clocks_running = 0; @@ -169,6 +178,38 @@ printf("entry: mips_init()\n"); bootverbose = 0; +#ifdef CFE + /* + * Query DRAM memory map from CFE. + */ + physmem = 0; + for (i = 0; i < 10; i += 2) { + int result; + uint64_t addr, len, type; + + result = cfe_enummem(i, 0, &addr, &len, &type); + if (result < 0) { + phys_avail[i] = phys_avail[i + 1] = 0; + break; + } + if (type != CFE_MI_AVAILABLE) + continue; + + phys_avail[i] = addr; + if (i == 0 && addr == 0) { + /* + * If this is the first physical memory segment probed + * from CFE, omit the region at the start of physical + * memory where the kernel has been loaded. + */ + phys_avail[i] += MIPS_KSEG0_TO_PHYS((vm_offset_t)&end); + } + phys_avail[i + 1] = addr + len; + physmem += len; + } + + realmem = btoc(physmem); +#else /* !CFE */ realmem = btoc(64 << 20); for (i = 0; i < 10; i++) { @@ -178,6 +219,8 @@ /* phys_avail regions are in bytes */ phys_avail[0] = MIPS_KSEG0_TO_PHYS((vm_offset_t)&end); phys_avail[1] = ctob(realmem); +#endif + physmem = realmem; init_param1(); @@ -486,7 +529,21 @@ kernend = round_page((vm_offset_t)&end); memset(&edata, 0, kernend - (vm_offset_t)(&edata)); +#ifdef CFE + /* + * Initialize CFE firmware trampolines before + * we initialize the low-level console. + */ + if (cfe_handle != 0) + cfe_init(cfe_handle, cfe_vector); +#endif cninit(); + +#ifdef CFE + if (cfe_handle == 0) + panic("CFE was not detected by locore.\n"); +#endif + mips_init(); tick_init_params(); } From owner-p4-projects@FreeBSD.ORG Mon May 7 16:46:31 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9FDB716A409; Mon, 7 May 2007 16:46:31 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3823716A403 for ; Mon, 7 May 2007 16:46:31 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 24C3B13C45E for ; Mon, 7 May 2007 16:46:31 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47GkVcO063509 for ; Mon, 7 May 2007 16:46:31 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47GkUE5063506 for perforce@freebsd.org; Mon, 7 May 2007 16:46:30 GMT (envelope-from bms@incunabulum.net) Date: Mon, 7 May 2007 16:46:30 GMT Message-Id: <200705071646.l47GkUE5063506@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119429 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 16:46:32 -0000 http://perforce.freebsd.org/chv.cgi?CH=119429 Change 119429 by bms@bms_anglepoise on 2007/05/07 16:46:01 style(9) Affected files ... .. //depot/projects/mips2/src/sys/mips/mips/nexus.c#5 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips/nexus.c#5 (text+ko) ==== @@ -12,7 +12,7 @@ * no representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied * warranty. - * + * * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF @@ -70,19 +70,20 @@ static struct rman irq_rman; -static int nexus_probe(device_t); -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_activate_resource(device_t, device_t, int, int, - struct resource *); -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_teardown_intr(device_t, device_t, struct resource *, void *); +static int nexus_probe(device_t); +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_activate_resource(device_t, device_t, int, int, + struct resource *); +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_teardown_intr(device_t, device_t, struct resource *, + void *); static device_method_t nexus_methods[] = { /* Device interface */ @@ -108,17 +109,18 @@ static int nexus_probe(device_t dev) { - device_quiet(dev); /* suppress attach message for neatness */ - + + device_quiet(dev); /* suppress attach message for neatness */ + irq_rman.rm_start = 0; irq_rman.rm_end = 5; irq_rman.rm_type = RMAN_ARRAY; irq_rman.rm_descr = "Hardware IRQs"; - if (rman_init(&irq_rman) - || rman_manage_region(&irq_rman, 0, 5)) + if (rman_init(&irq_rman) != 0 || + rman_manage_region(&irq_rman, 0, 5) != 0) { panic("nexus_probe irq_rman"); + } - return (0); } @@ -130,18 +132,20 @@ register_t sr = intr_disable(); irq = rman_get_start(res); - if(irq > 5) - return(0); - - cpu_establish_hardintr(device_get_nameunit(child), filt, intr, arg, + if (irq > 5) + return (0); + + cpu_establish_hardintr(device_get_nameunit(child), filt, intr, arg, irq, flags, cookiep); intr_restore(sr); + return (0); } static int nexus_teardown_intr(device_t dev, device_t child, struct resource *r, void *ih) { + printf("Unimplemented %s at %s:%d\n", __func__, __FILE__, __LINE__); return (0); } @@ -149,24 +153,21 @@ static int nexus_attach(device_t dev) { - /* - * First, deal with the children we know about already - */ + bus_generic_probe(dev); bus_generic_attach(dev); - - return 0; + + return (0); } - static int nexus_print_child(device_t bus, device_t child) { int retval = 0; - + retval += bus_print_child_header(bus, child); retval += printf(" on motherboard\n"); /* XXX "motherboard", ick */ - + return (retval); } @@ -177,21 +178,19 @@ device_t child; struct nexus_device *ndev; - ndev = malloc(sizeof(struct nexus_device), M_NEXUSDEV, M_NOWAIT|M_ZERO); if (!ndev) - return(0); + return (0); resource_list_init(&ndev->nx_resources); child = device_add_child_ordered(bus, order, name, unit); - + /* should we free this in nexus_child_detached? */ device_set_ivars(child, ndev); - - return(child); + + return (child); } - /* * Allocate a resource on behalf of child. NB: child is usually going to be a * child of one of our descendants, not a direct child of nexus0. @@ -209,32 +208,33 @@ case SYS_RES_IRQ: rm = &irq_rman; break; - + default: - return 0; + return (0); } rv = rman_reserve_resource(rm, start, end, count, flags, child); if (rv == 0) - return 0; + return (0); rman_set_rid(rv, *rid); - + if (needactivate) { if (bus_activate_resource(child, type, *rid, rv)) { rman_release_resource(rv); - return 0; + return (0); } } - - return rv; + + return (rv); } static int nexus_activate_resource(device_t bus, device_t child, int type, int rid, - struct resource *r) + struct resource *r) { + return (rman_activate_resource(r)); } From owner-p4-projects@FreeBSD.ORG Mon May 7 17:12:04 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 184EC16A403; Mon, 7 May 2007 17:12:04 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DEF1616A402 for ; Mon, 7 May 2007 17:12:03 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id D1E9213C45B for ; Mon, 7 May 2007 17:12:03 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47HC3Ss077065 for ; Mon, 7 May 2007 17:12:03 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47HC3er077062 for perforce@freebsd.org; Mon, 7 May 2007 17:12:03 GMT (envelope-from bms@incunabulum.net) Date: Mon, 7 May 2007 17:12:03 GMT Message-Id: <200705071712.l47HC3er077062@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119431 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 17:12:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=119431 Change 119431 by bms@bms_anglepoise on 2007/05/07 17:11:58 Use CFE firmware to reset the Sentry5 platform; don't make assumptions about the external interface core being present, for now. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips/machdep.c#32 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips/machdep.c#32 (text+ko) ==== @@ -74,11 +74,6 @@ #include #endif -#ifdef CPU_SENTRY5 -/* XXX */ -void sentry5_reset(void); -#endif - #ifdef DDB #include #endif @@ -502,9 +497,8 @@ platform_reset(void) { -#ifdef CPU_SENTRY5 - /* Yes yes I know this is a mess. */ - sentry5_reset(); +#if defined(CFE) + cfe_exit(0, 0); #endif } From owner-p4-projects@FreeBSD.ORG Mon May 7 17:33:31 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6DF7116A406; Mon, 7 May 2007 17:33:31 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3DFF416A400 for ; Mon, 7 May 2007 17:33:31 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 3136613C457 for ; Mon, 7 May 2007 17:33:31 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47HXVpm080484 for ; Mon, 7 May 2007 17:33:31 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47HXURF080481 for perforce@freebsd.org; Mon, 7 May 2007 17:33:30 GMT (envelope-from bms@incunabulum.net) Date: Mon, 7 May 2007 17:33:30 GMT Message-Id: <200705071733.l47HXURF080481@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119433 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 17:33:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=119433 Change 119433 by bms@bms_anglepoise on 2007/05/07 17:33:27 Give the nexus device a description. Print child resources as they are probed and attached. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips/nexus.c#6 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips/nexus.c#6 (text+ko) ==== @@ -73,6 +73,7 @@ static int nexus_probe(device_t); static int nexus_attach(device_t); static int nexus_print_child(device_t, device_t); +static int nexus_print_all_resources(device_t dev); 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, @@ -110,7 +111,7 @@ nexus_probe(device_t dev) { - device_quiet(dev); /* suppress attach message for neatness */ + device_set_desc(dev, "MIPS32 root nexus"); irq_rman.rm_start = 0; irq_rman.rm_end = 5; @@ -154,6 +155,7 @@ nexus_attach(device_t dev) { + bus_enumerate_hinted_children(dev); bus_generic_probe(dev); bus_generic_attach(dev); @@ -166,11 +168,29 @@ int retval = 0; retval += bus_print_child_header(bus, child); - retval += printf(" on motherboard\n"); /* XXX "motherboard", ick */ + retval += nexus_print_all_resources(child); + if (device_get_flags(child)) + retval += printf(" flags %#x", device_get_flags(child)); + retval += printf(" on %s\n", device_get_nameunit(bus)); return (retval); } +static int +nexus_print_all_resources(device_t dev) +{ + struct nexus_device *ndev = DEVTONX(dev); + struct resource_list *rl = &ndev->nx_resources; + int retval = 0; + + if (STAILQ_FIRST(rl)) + retval += printf(" at"); + + retval += resource_list_print_type(rl, "mem", SYS_RES_MEMORY, "%#lx"); + retval += resource_list_print_type(rl, "irq", SYS_RES_IRQ, "%ld"); + + return (retval); +} static device_t nexus_add_child(device_t bus, int order, const char *name, int unit) From owner-p4-projects@FreeBSD.ORG Mon May 7 18:01:06 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id ACE8416A406; Mon, 7 May 2007 18:01:06 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5FC7416A403 for ; Mon, 7 May 2007 18:01:06 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 5042213C46E for ; Mon, 7 May 2007 18:01:06 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47I16Jb084155 for ; Mon, 7 May 2007 18:01:06 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47I16Nt084122 for perforce@freebsd.org; Mon, 7 May 2007 18:01:06 GMT (envelope-from piso@freebsd.org) Date: Mon, 7 May 2007 18:01:06 GMT Message-Id: <200705071801.l47I16Nt084122@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 119434 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 18:01:07 -0000 http://perforce.freebsd.org/chv.cgi?CH=119434 Change 119434 by piso@piso_newluxor on 2007/05/07 18:00:42 IFC@119432 Affected files ... .. //depot/projects/soc2006/intr_filter/dev/nve/if_nve.c#4 integrate .. //depot/projects/soc2006/intr_filter/dev/sound/pcm/buffer.h#7 integrate .. //depot/projects/soc2006/intr_filter/dev/usb/if_rum.c#2 integrate .. //depot/projects/soc2006/intr_filter/i386/conf/PAE#3 integrate .. //depot/projects/soc2006/intr_filter/modules/em/Makefile#3 integrate .. //depot/projects/soc2006/intr_filter/net/ieee8023ad_lacp.c#3 integrate .. //depot/projects/soc2006/intr_filter/net/ieee8023ad_lacp.h#2 integrate .. //depot/projects/soc2006/intr_filter/net/if_lagg.c#3 integrate .. //depot/projects/soc2006/intr_filter/net/if_lagg.h#3 integrate .. //depot/projects/soc2006/intr_filter/netinet/tcp_debug.c#3 integrate .. //depot/projects/soc2006/intr_filter/netinet/tcp_subr.c#12 integrate .. //depot/projects/soc2006/intr_filter/netinet/udp_usrreq.c#10 integrate Differences ... ==== //depot/projects/soc2006/intr_filter/dev/nve/if_nve.c#4 (text+ko) ==== @@ -72,7 +72,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/nve/if_nve.c,v 1.25 2007/02/23 12:18:48 piso Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/nve/if_nve.c,v 1.26 2007/05/07 09:45:31 yar Exp $"); #include #include @@ -530,6 +530,7 @@ ifp->if_snd.ifq_drv_maxlen = TX_RING_SIZE - 1; IFQ_SET_READY(&ifp->if_snd); ifp->if_capabilities |= IFCAP_VLAN_MTU; + ifp->if_capenable |= IFCAP_VLAN_MTU; /* Attach to OS's managers. */ ether_ifattach(ifp, eaddr); ==== //depot/projects/soc2006/intr_filter/dev/sound/pcm/buffer.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/dev/sound/pcm/buffer.h,v 1.15 2007/04/18 18:26:40 ariff Exp $ + * $FreeBSD: src/sys/dev/sound/pcm/buffer.h,v 1.16 2007/05/07 02:46:48 ariff Exp $ */ #define SND_DMA(b) (sndbuf_getflags((b)) & SNDBUF_F_DMA) @@ -54,8 +54,8 @@ u_int32_t flags; bus_dmamap_t dmamap; bus_dma_tag_t dmatag; + bus_addr_t buf_addr; int dmaflags; - u_int32_t buf_addr; struct selinfo sel; struct pcm_channel *channel; char name[SNDBUF_NAMELEN]; ==== //depot/projects/soc2006/intr_filter/dev/usb/if_rum.c#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/usb/if_rum.c,v 1.2 2007/05/06 14:25:52 des Exp $ */ +/* $FreeBSD: src/sys/dev/usb/if_rum.c,v 1.3 2007/05/06 21:06:08 des Exp $ */ /*- * Copyright (c) 2005-2007 Damien Bergamini @@ -18,7 +18,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/usb/if_rum.c,v 1.2 2007/05/06 14:25:52 des Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb/if_rum.c,v 1.3 2007/05/06 21:06:08 des Exp $"); /*- * Ralink Technology RT2501USB/RT2601USB chipset driver @@ -1192,7 +1192,7 @@ xferlen += 4; DPRINTFN(10, ("sending mgt frame len=%d rate=%d xfer len=%d\n", - m0->m_pkthdr.len + RT2573_TX_DESC_SIZE, rate, xferlen)); + m0->m_pkthdr.len + (int)RT2573_TX_DESC_SIZE, rate, xferlen)); usbd_setup_xfer(data->xfer, sc->sc_tx_pipeh, data, data->buf, xferlen, USBD_FORCE_SHORT_XFER | USBD_NO_COPY, RUM_TX_TIMEOUT, rum_txeof); @@ -1354,7 +1354,7 @@ xferlen += 4; DPRINTFN(10, ("sending frame len=%d rate=%d xfer len=%d\n", - m0->m_pkthdr.len + RT2573_TX_DESC_SIZE, rate, xferlen)); + m0->m_pkthdr.len + (int)RT2573_TX_DESC_SIZE, rate, xferlen)); usbd_setup_xfer(data->xfer, sc->sc_tx_pipeh, data, data->buf, xferlen, USBD_FORCE_SHORT_XFER | USBD_NO_COPY, RUM_TX_TIMEOUT, rum_txeof); ==== //depot/projects/soc2006/intr_filter/i386/conf/PAE#3 (text+ko) ==== @@ -1,7 +1,7 @@ # # PAE -- Generic kernel configuration file for FreeBSD/i386 PAE # -# $FreeBSD: src/sys/i386/conf/PAE,v 1.23 2006/07/09 16:38:58 mjacob Exp $ +# $FreeBSD: src/sys/i386/conf/PAE,v 1.24 2007/05/07 02:06:03 kevlo Exp $ include GENERIC @@ -79,6 +79,7 @@ nodevice wlan_wep # 802.11 WEP support nodevice wlan_ccmp # 802.11 CCMP support nodevice wlan_tkip # 802.11 TKIP support +nodevice wlan_amrr # AMRR transmit rate control algorithm nodevice an nodevice ath # Atheros pci/cardbus NIC's nodevice ath_hal # Atheros HAL (Hardware Access Layer) @@ -99,6 +100,7 @@ nodevice ums nodevice ural nodevice urio +nodevice rum nodevice uscanner nodevice aue nodevice axe ==== //depot/projects/soc2006/intr_filter/modules/em/Makefile#3 (text+ko) ==== @@ -1,11 +1,11 @@ -# $FreeBSD: src/sys/modules/em/Makefile,v 1.8 2007/05/04 13:34:33 rwatson Exp $ +# $FreeBSD: src/sys/modules/em/Makefile,v 1.9 2007/05/07 09:55:25 le Exp $ .PATH: ${.CURDIR}/../../dev/em KMOD = if_em SRCS = device_if.h bus_if.h pci_if.h opt_bdg.h SRCS += if_em.c $(SHARED_SRCS) SHARED_SRCS = e1000_api.c e1000_phy.c e1000_nvm.c e1000_mac.c e1000_manage.c SHARED_SRCS += e1000_80003es2lan.c e1000_82542.c e1000_82541.c e1000_82543.c -SHARED_SRCS += e1000_82540.c e1000_ich8lan.c e1000_82571.c +SHARED_SRCS += e1000_82540.c e1000_ich8lan.c e1000_82571.c e1000_82575.c CFLAGS+= -I${.CURDIR}/../../dev/em ==== //depot/projects/soc2006/intr_filter/net/ieee8023ad_lacp.c#3 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/net/ieee8023ad_lacp.c,v 1.4 2007/05/03 08:56:20 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/net/ieee8023ad_lacp.c,v 1.6 2007/05/07 00:28:55 thompsa Exp $"); #include #include @@ -453,6 +453,7 @@ lp->lp_ifp = ifp; lp->lp_lagg = lgp; lp->lp_lsc = lsc; + lp->lp_ifma = rifma; LIST_INSERT_HEAD(&lsc->lsc_ports, lp, lp_next); @@ -471,9 +472,7 @@ lacp_port_destroy(struct lagg_port *lgp) { struct lacp_port *lp = LACP_PORT(lgp); - struct ifnet *ifp = lgp->lp_ifp; - struct sockaddr_dl sdl; - int i, error; + int i; LAGG_LOCK_ASSERT(lgp->lp_lagg); @@ -486,18 +485,9 @@ lacp_unselect(lp); lgp->lp_flags &= ~LAGG_PORT_DISABLED; - bzero((char *)&sdl, sizeof(sdl)); - sdl.sdl_len = sizeof(sdl); - sdl.sdl_family = AF_LINK; - sdl.sdl_index = ifp->if_index; - sdl.sdl_type = IFT_ETHER; - sdl.sdl_alen = ETHER_ADDR_LEN; - - bcopy(ðermulticastaddr_slowprotocols, - LLADDR(&sdl), ETHER_ADDR_LEN); - error = if_delmulti(ifp, (struct sockaddr *)&sdl); - if (error) - printf("%s: DELMULTI failed on %s\n", __func__, lgp->lp_ifname); + /* The address may have already been removed by if_purgemaddrs() */ + if (!lgp->lp_detaching) + if_delmulti_ifma(lp->lp_ifma); LIST_REMOVE(lp, lp_next); free(lp, M_DEVBUF); ==== //depot/projects/soc2006/intr_filter/net/ieee8023ad_lacp.h#2 (text+ko) ==== @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/net/ieee8023ad_lacp.h,v 1.2 2007/04/17 00:35:11 thompsa Exp $ + * $FreeBSD: src/sys/net/ieee8023ad_lacp.h,v 1.3 2007/05/07 00:18:56 thompsa Exp $ */ /* @@ -190,6 +190,7 @@ int lp_flags; u_int lp_media; /* XXX redundant */ int lp_timer[LACP_NTIMER]; + struct ifmultiaddr *lp_ifma; struct lacp_aggregator *lp_aggregator; }; ==== //depot/projects/soc2006/intr_filter/net/if_lagg.c#3 (text+ko) ==== @@ -17,7 +17,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/net/if_lagg.c,v 1.3 2007/05/03 08:56:20 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/net/if_lagg.c,v 1.8 2007/05/07 09:53:02 thompsa Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -81,6 +82,7 @@ static void lagg_lladdr(struct lagg_softc *, uint8_t *); static int lagg_capabilities(struct lagg_softc *); static void lagg_port_lladdr(struct lagg_port *, uint8_t *); +static void lagg_port_setlladdr(void *, int); static int lagg_port_create(struct lagg_softc *, struct ifnet *); static int lagg_port_destroy(struct lagg_port *, int); static struct mbuf *lagg_input(struct ifnet *, struct mbuf *); @@ -96,7 +98,6 @@ static int lagg_ioctl(struct ifnet *, u_long, caddr_t); static int lagg_ether_setmulti(struct lagg_softc *); static int lagg_ether_cmdmulti(struct lagg_port *, int); -static void lagg_ether_purgemulti(struct lagg_softc *); static int lagg_setflag(struct lagg_port *, int, int, int (*func)(struct ifnet *, int)); static int lagg_setflags(struct lagg_port *, int status); @@ -221,6 +222,7 @@ } LAGG_LOCK_INIT(sc); SLIST_INIT(&sc->sc_ports); + TASK_INIT(&sc->sc_lladdr_task, 0, lagg_port_setlladdr, sc); /* Initialise pseudo media types */ ifmedia_init(&sc->sc_media, 0, lagg_media_change, @@ -272,9 +274,6 @@ if (sc->sc_detach != NULL) (*sc->sc_detach)(sc); - /* Remove any multicast groups that we may have joined. */ - lagg_ether_purgemulti(sc); - LAGG_UNLOCK(sc); ifmedia_removeall(&sc->sc_media); @@ -285,6 +284,7 @@ SLIST_REMOVE(&lagg_list, sc, lagg_softc, sc_entries); mtx_unlock(&lagg_list_mtx); + taskqueue_drain(taskqueue_swi, &sc->sc_lladdr_task); LAGG_LOCK_DESTROY(sc); free(sc, M_DEVBUF); } @@ -329,17 +329,74 @@ static void lagg_port_lladdr(struct lagg_port *lp, uint8_t *lladdr) { + struct lagg_softc *sc = lp->lp_lagg; struct ifnet *ifp = lp->lp_ifp; + struct lagg_llq *llq; + int pending = 0; + + LAGG_LOCK_ASSERT(sc); + + if (lp->lp_detaching || + memcmp(lladdr, IF_LLADDR(ifp), ETHER_ADDR_LEN) == 0) + return; + + /* Check to make sure its not already queued to be changed */ + SLIST_FOREACH(llq, &sc->sc_llq_head, llq_entries) { + if (llq->llq_ifp == ifp) { + pending = 1; + break; + } + } + + if (!pending) { + llq = malloc(sizeof(struct lagg_llq), M_DEVBUF, M_NOWAIT); + if (llq == NULL) /* XXX what to do */ + return; + } + + /* Update the lladdr even if pending, it may have changed */ + llq->llq_ifp = ifp; + bcopy(lladdr, llq->llq_lladdr, ETHER_ADDR_LEN); + + if (!pending) + SLIST_INSERT_HEAD(&sc->sc_llq_head, llq, llq_entries); + + taskqueue_enqueue(taskqueue_swi, &sc->sc_lladdr_task); +} + +/* + * Set the interface MAC address from a taskqueue to avoid a LOR. + */ +static void +lagg_port_setlladdr(void *arg, int pending) +{ + struct lagg_softc *sc = (struct lagg_softc *)arg; + struct lagg_llq *llq, *head; + struct ifnet *ifp; int error; - if (memcmp(lladdr, IF_LLADDR(ifp), ETHER_ADDR_LEN) == 0) - return; + /* Grab a local reference of the queue and remove it from the softc */ + LAGG_LOCK(sc); + head = SLIST_FIRST(&sc->sc_llq_head); + SLIST_FIRST(&sc->sc_llq_head) = NULL; + LAGG_UNLOCK(sc); + + /* + * Traverse the queue and set the lladdr on each ifp. It is safe to do + * unlocked as we have the only reference to it. + */ + for (llq = head; llq != NULL; llq = head) { + ifp = llq->llq_ifp; - /* Set the link layer address */ - error = if_setlladdr(ifp, lladdr, ETHER_ADDR_LEN); - if (error) - printf("%s: setlladdr failed on %s\n", __func__, lp->lp_ifname); + /* Set the link layer address */ + error = if_setlladdr(ifp, llq->llq_lladdr, ETHER_ADDR_LEN); + if (error) + printf("%s: setlladdr failed on %s\n", __func__, + ifp->if_xname); + head = SLIST_NEXT(llq, llq_entries); + free(llq, M_DEVBUF); + } } static int @@ -460,6 +517,7 @@ { struct lagg_softc *sc = lp->lp_lagg; struct lagg_port *lp_ptr; + struct lagg_llq *llq; struct ifnet *ifp = lp->lp_ifp; LAGG_LOCK_ASSERT(sc); @@ -467,9 +525,15 @@ if (runpd && sc->sc_port_destroy != NULL) (*sc->sc_port_destroy)(lp); - /* Remove multicast addresses and interface flags from this port */ - lagg_ether_cmdmulti(lp, 0); - lagg_setflags(lp, 0); + /* + * Remove multicast addresses and interface flags from this port and + * reset the MAC address, skip if the interface is being detached. + */ + if (!lp->lp_detaching) { + lagg_ether_cmdmulti(lp, 0); + lagg_setflags(lp, 0); + lagg_port_lladdr(lp, lp->lp_lladdr); + } /* Restore interface */ ifp->if_type = lp->lp_iftype; @@ -499,8 +563,17 @@ lagg_port_lladdr(lp_ptr, lladdr); } - /* Reset the port lladdr */ - lagg_port_lladdr(lp, lp->lp_lladdr); + /* Remove any pending lladdr changes from the queue */ + if (lp->lp_detaching) { + SLIST_FOREACH(llq, &sc->sc_llq_head, llq_entries) { + if (llq->llq_ifp == ifp) { + SLIST_REMOVE(&sc->sc_llq_head, llq, lagg_llq, + llq_entries); + free(llq, M_DEVBUF); + break; /* Only appears once */ + } + } + } if (lp->lp_ifflags) if_printf(ifp, "%s: lp_ifflags unclean\n", __func__); @@ -550,7 +623,7 @@ return (error); fallback: - if (lp != NULL) + if (lp->lp_ioctl != NULL) return ((*lp->lp_ioctl)(ifp, cmd, data)); return (EINVAL); @@ -598,6 +671,7 @@ sc = lp->lp_lagg; LAGG_LOCK(sc); + lp->lp_detaching = 1; lagg_port_destroy(lp, 1); LAGG_UNLOCK(sc); } @@ -838,48 +912,16 @@ static int lagg_ether_setmulti(struct lagg_softc *sc) { - struct ifnet *trifp = sc->sc_ifp; - struct ifnet *ifp; - struct ifmultiaddr *ifma, *rifma = NULL; - struct lagg_port *lp; - struct lagg_mc *mc; - struct sockaddr_dl sdl; - int error; + struct lagg_port *lp; LAGG_LOCK_ASSERT(sc); - bzero((char *)&sdl, sizeof(sdl)); - sdl.sdl_len = sizeof(sdl); - sdl.sdl_family = AF_LINK; - sdl.sdl_type = IFT_ETHER; - sdl.sdl_alen = ETHER_ADDR_LEN; - - /* First, remove any existing filter entries. */ - lagg_ether_purgemulti(sc); - - /* Now program new ones. */ - TAILQ_FOREACH(ifma, &trifp->if_multiaddrs, ifma_link) { - if (ifma->ifma_addr->sa_family != AF_LINK) - continue; - mc = malloc(sizeof(struct lagg_mc), M_DEVBUF, M_NOWAIT); - if (mc == NULL) - return (ENOMEM); - bcopy(LLADDR((struct sockaddr_dl *)ifma->ifma_addr), - (char *)&mc->mc_addr, ETHER_ADDR_LEN); - SLIST_INSERT_HEAD(&sc->sc_mc_head, mc, mc_entries); - bcopy(LLADDR((struct sockaddr_dl *)ifma->ifma_addr), - LLADDR(&sdl), ETHER_ADDR_LEN); - - /* do all the ports */ - SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) { - ifp = lp->lp_ifp; - sdl.sdl_index = ifp->if_index; - error = if_addmulti(ifp, (struct sockaddr *)&sdl, &rifma); - if (error) - return (error); - } + SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) { + /* First, remove any existing filter entries. */ + lagg_ether_cmdmulti(lp, 0); + /* copy all addresses from the lagg interface to the port */ + lagg_ether_cmdmulti(lp, 1); } - return (0); } @@ -887,11 +929,12 @@ lagg_ether_cmdmulti(struct lagg_port *lp, int set) { struct lagg_softc *sc = lp->lp_lagg; - struct ifnet *ifp = lp->lp_ifp;; - struct lagg_mc *mc; - struct ifmultiaddr *rifma = NULL; - struct sockaddr_dl sdl; - int error; + struct ifnet *ifp = lp->lp_ifp; + struct ifnet *trifp = sc->sc_ifp; + struct lagg_mc *mc; + struct ifmultiaddr *ifma, *rifma = NULL; + struct sockaddr_dl sdl; + int error; LAGG_LOCK_ASSERT(sc); @@ -902,41 +945,32 @@ sdl.sdl_alen = ETHER_ADDR_LEN; sdl.sdl_index = ifp->if_index; - SLIST_FOREACH(mc, &sc->sc_mc_head, mc_entries) { - bcopy((char *)&mc->mc_addr, LLADDR(&sdl), ETHER_ADDR_LEN); + if (set) { + TAILQ_FOREACH(ifma, &trifp->if_multiaddrs, ifma_link) { + if (ifma->ifma_addr->sa_family != AF_LINK) + continue; + bcopy(LLADDR((struct sockaddr_dl *)ifma->ifma_addr), + LLADDR(&sdl), ETHER_ADDR_LEN); - if (set) error = if_addmulti(ifp, (struct sockaddr *)&sdl, &rifma); - else - error = if_delmulti(ifp, (struct sockaddr *)&sdl); - - if (error) { - printf("cmdmulti error on %s, set = %d\n", - ifp->if_xname, set); - return (error); + if (error) + return (error); + mc = malloc(sizeof(struct lagg_mc), M_DEVBUF, M_NOWAIT); + if (mc == NULL) + return (ENOMEM); + mc->mc_ifma = rifma; + SLIST_INSERT_HEAD(&lp->lp_mc_head, mc, mc_entries); + } + } else { + while ((mc = SLIST_FIRST(&lp->lp_mc_head)) != NULL) { + SLIST_REMOVE(&lp->lp_mc_head, mc, lagg_mc, mc_entries); + if_delmulti_ifma(mc->mc_ifma); + free(mc, M_DEVBUF); } } return (0); } -static void -lagg_ether_purgemulti(struct lagg_softc *sc) -{ - struct lagg_port *lp; - struct lagg_mc *mc; - - LAGG_LOCK_ASSERT(sc); - - /* remove from ports */ - SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) - lagg_ether_cmdmulti(lp, 0); - - while ((mc = SLIST_FIRST(&sc->sc_mc_head)) != NULL) { - SLIST_REMOVE(&sc->sc_mc_head, mc, lagg_mc, mc_entries); - free(mc, M_DEVBUF); - } -} - /* Handle a ref counted flag that should be set on the lagg port as well */ static int lagg_setflag(struct lagg_port *lp, int flag, int status, @@ -1072,9 +1106,10 @@ imr->ifm_active = IFM_ETHER | IFM_AUTO; LAGG_LOCK(sc); - lp = sc->sc_primary; - if (lp != NULL && lp->lp_ifp->if_flags & IFF_UP) - imr->ifm_status |= IFM_ACTIVE; + SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) { + if (LAGG_PORTACTIVE(lp)) + imr->ifm_status |= IFM_ACTIVE; + } LAGG_UNLOCK(sc); } ==== //depot/projects/soc2006/intr_filter/net/if_lagg.h#3 (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/net/if_lagg.h,v 1.3 2007/05/03 09:07:36 thompsa Exp $ + * $FreeBSD: src/sys/net/if_lagg.h,v 1.6 2007/05/07 00:35:15 thompsa Exp $ */ #ifndef _NET_LAGG_H @@ -136,12 +136,15 @@ }; struct lagg_mc { - union { - struct ether_multi *mcu_enm; - } mc_u; - struct sockaddr_storage mc_addr; + struct ifmultiaddr *mc_ifma; + SLIST_ENTRY(lagg_mc) mc_entries; +}; - SLIST_ENTRY(lagg_mc) mc_entries; +/* List of interfaces to have the MAC address modified */ +struct lagg_llq { + struct ifnet *llq_ifp; + uint8_t llq_lladdr[ETHER_ADDR_LEN]; + SLIST_ENTRY(lagg_llq) llq_entries; }; struct lagg_softc { @@ -156,7 +159,9 @@ SLIST_HEAD(__tplhd, lagg_port) sc_ports; /* list of interfaces */ SLIST_ENTRY(lagg_softc) sc_entries; - SLIST_HEAD(__mclhd, lagg_mc) sc_mc_head; /* multicast addresses */ + struct task sc_lladdr_task; + SLIST_HEAD(__llqhd, lagg_llq) sc_llq_head; /* interfaces to program + the lladdr on */ /* lagg protocol callbacks */ int (*sc_detach)(struct lagg_softc *); @@ -182,6 +187,9 @@ int lp_ifflags; /* saved ifp flags */ void *lh_cookie; /* if state hook */ caddr_t lp_psc; /* protocol data */ + int lp_detaching; /* ifnet is detaching */ + + SLIST_HEAD(__mclhd, lagg_mc) lp_mc_head; /* multicast addresses */ /* Redirected callbacks */ int (*lp_ioctl)(struct ifnet *, u_long, caddr_t); ==== //depot/projects/soc2006/intr_filter/netinet/tcp_debug.c#3 (text+ko) ==== @@ -28,7 +28,7 @@ * SUCH DAMAGE. * * @(#)tcp_debug.c 8.1 (Berkeley) 6/10/93 - * $FreeBSD: src/sys/netinet/tcp_debug.c,v 1.27 2007/05/04 23:43:18 rwatson Exp $ + * $FreeBSD: src/sys/netinet/tcp_debug.c,v 1.28 2007/05/07 14:05:23 rwatson Exp $ */ #include "opt_inet.h" @@ -108,85 +108,58 @@ mtx_lock(&tcp_debug_mtx); td = &tcp_debug[tcp_debx++]; - + if (tcp_debx == TCP_NDEBUG) + tcp_debx = 0; + bzero(td, sizeof(*td)); #ifdef INET6 isipv6 = (ipgen != NULL && ((struct ip *)ipgen)->ip_v == 6) ? 1 : 0; #endif /* INET6 */ td->td_family = #ifdef INET6 - (isipv6 != 0) ? AF_INET6 : + (isipv6 != 0) ? AF_INET6 : #endif - AF_INET; - if (tcp_debx == TCP_NDEBUG) - tcp_debx = 0; + AF_INET; td->td_time = iptime(); td->td_act = act; td->td_ostate = ostate; td->td_tcb = (caddr_t)tp; - if (tp) + if (tp != NULL) td->td_cb = *tp; - else - bzero((caddr_t)&td->td_cb, sizeof (*tp)); - if (ipgen) { + if (ipgen != NULL) { switch (td->td_family) { case AF_INET: - bcopy((caddr_t)ipgen, (caddr_t)&td->td_ti.ti_i, - sizeof(td->td_ti.ti_i)); - bzero((caddr_t)td->td_ip6buf, sizeof(td->td_ip6buf)); + bcopy(ipgen, &td->td_ti.ti_i, sizeof(td->td_ti.ti_i)); break; #ifdef INET6 case AF_INET6: - bcopy((caddr_t)ipgen, (caddr_t)td->td_ip6buf, - sizeof(td->td_ip6buf)); - bzero((caddr_t)&td->td_ti.ti_i, - sizeof(td->td_ti.ti_i)); + bcopy(ipgen, td->td_ip6buf, sizeof(td->td_ip6buf)); break; #endif - default: - bzero((caddr_t)td->td_ip6buf, sizeof(td->td_ip6buf)); - bzero((caddr_t)&td->td_ti.ti_i, - sizeof(td->td_ti.ti_i)); - break; } - } else { - bzero((caddr_t)&td->td_ti.ti_i, sizeof(td->td_ti.ti_i)); - bzero((caddr_t)td->td_ip6buf, sizeof(td->td_ip6buf)); } - if (th) { + if (th != NULL) { switch (td->td_family) { case AF_INET: td->td_ti.ti_t = *th; - bzero((caddr_t)&td->td_ti6.th, sizeof(td->td_ti6.th)); break; #ifdef INET6 case AF_INET6: td->td_ti6.th = *th; - bzero((caddr_t)&td->td_ti.ti_t, - sizeof(td->td_ti.ti_t)); break; #endif - default: - bzero((caddr_t)&td->td_ti.ti_t, - sizeof(td->td_ti.ti_t)); - bzero((caddr_t)&td->td_ti6.th, sizeof(td->td_ti6.th)); - break; } - } else { - bzero((caddr_t)&td->td_ti.ti_t, sizeof(td->td_ti.ti_t)); - bzero((caddr_t)&td->td_ti6.th, sizeof(td->td_ti6.th)); } td->td_req = req; mtx_unlock(&tcp_debug_mtx); #ifdef TCPDEBUG if (tcpconsdebug == 0) return; - if (tp) + if (tp != NULL) printf("%p %s:", tp, tcpstates[ostate]); else printf("???????? "); printf("%s ", tanames[act]); switch (act) { - case TA_INPUT: case TA_OUTPUT: case TA_DROP: @@ -196,9 +169,9 @@ ack = th->th_ack; len = #ifdef INET6 - isipv6 ? ((struct ip6_hdr *)ipgen)->ip6_plen : + isipv6 ? ((struct ip6_hdr *)ipgen)->ip6_plen : #endif - ((struct ip *)ipgen)->ip_len; + ((struct ip *)ipgen)->ip_len; if (act == TA_OUTPUT) { seq = ntohl(seq); ack = ntohl(ack); @@ -231,11 +204,11 @@ printf("<%s>", tcptimers[req>>8]); break; } - if (tp) + if (tp != NULL) printf(" -> %s", tcpstates[tp->t_state]); /* print out internal state of tp !?! */ printf("\n"); - if (tp == 0) + if (tp == NULL) return; printf( "\trcv_(nxt,wnd,up) (%lx,%lx,%lx) snd_(una,nxt,max) (%lx,%lx,%lx)\n", ==== //depot/projects/soc2006/intr_filter/netinet/tcp_subr.c#12 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * @(#)tcp_subr.c 8.2 (Berkeley) 5/24/95 - * $FreeBSD: src/sys/netinet/tcp_subr.c,v 1.277 2007/05/06 15:56:31 andre Exp $ + * $FreeBSD: src/sys/netinet/tcp_subr.c,v 1.278 2007/05/07 13:04:25 rwatson Exp $ */ #include "opt_compat.h" @@ -1811,8 +1811,8 @@ tcp_discardcb(tp); so = inp->inp_socket; soisdisconnected(so); + tw->tw_cred = crhold(so->so_cred); SOCK_LOCK(so); - tw->tw_cred = crhold(so->so_cred); tw->tw_so_options = so->so_options; SOCK_UNLOCK(so); if (acknow) ==== //depot/projects/soc2006/intr_filter/netinet/udp_usrreq.c#10 (text+ko) ==== @@ -28,7 +28,7 @@ * SUCH DAMAGE. * * @(#)udp_usrreq.c 8.6 (Berkeley) 5/23/95 - * $FreeBSD: src/sys/netinet/udp_usrreq.c,v 1.205 2007/05/01 16:31:02 rwatson Exp $ + * $FreeBSD: src/sys/netinet/udp_usrreq.c,v 1.207 2007/05/07 13:51:24 rwatson Exp $ */ #include "opt_ipfw.h" @@ -117,14 +117,14 @@ SYSCTL_INT(_net_inet_udp, OID_AUTO, strict_mcast_mship, CTLFLAG_RW, &strict_mcast_mship, 0, "Only send multicast to member sockets"); -struct inpcbhead udb; /* from udp_var.h */ -struct inpcbinfo udbinfo; +struct inpcbhead udb; /* from udp_var.h */ +struct inpcbinfo udbinfo; #ifndef UDBHASHSIZE -#define UDBHASHSIZE 16 +#define UDBHASHSIZE 16 #endif -struct udpstat udpstat; /* from udp_var.h */ +struct udpstat udpstat; /* from udp_var.h */ SYSCTL_STRUCT(_net_inet_udp, UDPCTL_STATS, stats, CTLFLAG_RW, &udpstat, udpstat, "UDP statistics (struct udpstat, netinet/udp_var.h)"); @@ -145,15 +145,17 @@ static int udp_inpcb_init(void *mem, int size, int flags) { - struct inpcb *inp = mem; + struct inpcb *inp; + inp = mem; INP_LOCK_INIT(inp, "inp", "udpinp"); return (0); } void -udp_init() +udp_init(void) { + INP_INFO_LOCK_INIT(&udbinfo, "udp"); LIST_INIT(&udb); udbinfo.ipi_listhead = &udb; @@ -165,7 +167,7 @@ NULL, udp_inpcb_init, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); uma_zone_set_max(udbinfo.ipi_zone, maxsockets); EVENTHANDLER_REGISTER(maxsockets_change, udp_zone_change, NULL, - EVENTHANDLER_PRI_ANY); + EVENTHANDLER_PRI_ANY); } void @@ -224,8 +226,8 @@ udp_in.sin_addr = ip->ip_src; /* - * Make mbuf data length reflect UDP length. - * If not enough data to reflect UDP length, drop. + * Make mbuf data length reflect UDP length. If not enough data to + * reflect UDP length, drop. */ len = ntohs((u_short)uh->uh_ulen); if (ip->ip_len != len) { @@ -258,6 +260,7 @@ uh->uh_sum ^= 0xffff; } else { char b[9]; + bcopy(((struct ipovly *)ip)->ih_x1, b, 9); bzero(((struct ipovly *)ip)->ih_x1, 9); ((struct ipovly *)ip)->ih_len = uh->uh_ulen; @@ -295,7 +298,6 @@ #endif INP_INFO_RLOCK(&udbinfo); - if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr)) || in_broadcast(ip->ip_dst, m->m_pkthdr.rcvif)) { struct inpcb *last; @@ -340,8 +342,8 @@ * sent to sockets with multicast memberships for the * packet's destination address and arrival interface */ -#define MSHIP(_inp, n) ((_inp)->inp_moptions->imo_membership[(n)]) -#define NMSHIPS(_inp) ((_inp)->inp_moptions->imo_num_memberships) +#define MSHIP(_inp, n) ((_inp)->inp_moptions->imo_membership[(n)]) +#define NMSHIPS(_inp) ((_inp)->inp_moptions->imo_num_memberships) INP_LOCK(inp); if (strict_mcast_mship && inp->inp_moptions != NULL) { int mship, foundmship = 0; @@ -566,10 +568,10 @@ * DoS attack on machines with many connections. */ if (cmd == PRC_HOSTDEAD) - ip = 0; + ip = NULL; else if ((unsigned)cmd >= PRC_NCMDS || inetctlerrmap[cmd] == 0) return; - if (ip) { + if (ip != NULL) { uh = (struct udphdr *)((caddr_t)ip + (ip->ip_hl << 2)); INP_INFO_RLOCK(&udbinfo); inp = in_pcblookup_hash(&udbinfo, faddr, uh->uh_dport, @@ -763,8 +765,8 @@ control->m_data += CMSG_ALIGN(cm->cmsg_len), control->m_len -= CMSG_ALIGN(cm->cmsg_len)) { cm = mtod(control, struct cmsghdr *); - if (control->m_len < sizeof(*cm) || cm->cmsg_len == 0 || - cm->cmsg_len > control->m_len) { + if (control->m_len < sizeof(*cm) || cm->cmsg_len == 0 + || cm->cmsg_len > control->m_len) { error = EINVAL; break; } @@ -782,8 +784,10 @@ src.sin_family = AF_INET; src.sin_len = sizeof(src); src.sin_port = inp->inp_lport; - src.sin_addr = *(struct in_addr *)CMSG_DATA(cm); + src.sin_addr = + *(struct in_addr *)CMSG_DATA(cm); break; + default: error = ENOPROTOOPT; break; @@ -957,6 +961,7 @@ sizeof(struct sockaddr_in) #endif ); + SYSCTL_ULONG(_net_inet_udp, UDPCTL_RECVSPACE, recvspace, CTLFLAG_RW, &udp_recvspace, 0, "Maximum space for incoming UDP datagrams"); @@ -1130,29 +1135,6 @@ return (0); } -/* - * This is the wrapper function for in_setsockaddr. We just pass down the - * pcbinfo for in_setsockaddr() to lock. We don't want to do the locking - * here because in_setsockaddr() will call malloc and might block. - */ -static int -udp_sockaddr(struct socket *so, struct sockaddr **nam) -{ - - return (in_setsockaddr(so, nam)); -} - -/* - * This is the wrapper function for in_setpeeraddr(). We just pass down the - * pcbinfo for in_setpeeraddr() to lock. - */ -static int -udp_peeraddr(struct socket *so, struct sockaddr **nam) -{ - - return (in_setpeeraddr(so, nam)); -} - struct pr_usrreqs udp_usrreqs = { .pru_abort = udp_abort, .pru_attach = udp_attach, @@ -1161,11 +1143,11 @@ .pru_control = in_control, .pru_detach = udp_detach, .pru_disconnect = udp_disconnect, - .pru_peeraddr = udp_peeraddr, + .pru_peeraddr = in_setpeeraddr, .pru_send = udp_send, .pru_sosend = sosend_dgram, .pru_shutdown = udp_shutdown, - .pru_sockaddr = udp_sockaddr, + .pru_sockaddr = in_setsockaddr, .pru_sosetlabel = in_pcbsosetlabel, .pru_close = udp_close, }; From owner-p4-projects@FreeBSD.ORG Mon May 7 18:11:19 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A0D4016A404; Mon, 7 May 2007 18:11:19 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 315A916A409 for ; Mon, 7 May 2007 18:11:19 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 15D7A13C44B for ; Mon, 7 May 2007 18:11:19 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47IBIrv087219 for ; Mon, 7 May 2007 18:11:18 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47IBIrr087216 for perforce@freebsd.org; Mon, 7 May 2007 18:11:18 GMT (envelope-from piso@freebsd.org) Date: Mon, 7 May 2007 18:11:18 GMT Message-Id: <200705071811.l47IBIrr087216@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 119435 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 18:11:20 -0000 http://perforce.freebsd.org/chv.cgi?CH=119435 Change 119435 by piso@piso_newluxor on 2007/05/07 18:10:18 reduce diff against HEAD Affected files ... .. //depot/projects/soc2006/intr_filter/Makefile#7 edit Differences ... ==== //depot/projects/soc2006/intr_filter/Makefile#7 (text+ko) ==== @@ -25,7 +25,7 @@ HTAGSFLAGS+= -at `awk -F= '/^RELEASE *=/{release=$2}; END {print "FreeBSD", release, "kernel"}' < conf/newvers.sh` cscope: ${.CURDIR}/cscopenamefile - cd ${.CURDIR}; TMPDIR=/usr/tmp cscope -q -k -p4 -i cscopenamefile + cd ${.CURDIR}; cscope -k -p4 -i cscopenamefile ${.CURDIR}/cscopenamefile: cd ${.CURDIR}; find ${CSCOPEDIRS} -name "*.[csh]" > ${.TARGET} From owner-p4-projects@FreeBSD.ORG Mon May 7 19:04:25 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2DA8716A404; Mon, 7 May 2007 19:04:25 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E166A16A403 for ; Mon, 7 May 2007 19:04:24 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id B9D5C13C468 for ; Mon, 7 May 2007 19:04:24 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47J4Ois097213 for ; Mon, 7 May 2007 19:04:24 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47J4O9j097206 for perforce@freebsd.org; Mon, 7 May 2007 19:04:24 GMT (envelope-from bms@incunabulum.net) Date: Mon, 7 May 2007 19:04:24 GMT Message-Id: <200705071904.l47J4O9j097206@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119438 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 19:04:25 -0000 http://perforce.freebsd.org/chv.cgi?CH=119438 Change 119438 by bms@bms_anglepoise on 2007/05/07 19:04:22 trim comments Affected files ... .. //depot/projects/mips2/src/sys/mips/include/bus.h#6 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/include/bus.h#6 (text+ko) ==== @@ -108,9 +108,6 @@ #include #include -/* - * Values for the amd64 bus space tag, not to be used directly by MI code. - */ #define MIPS_BUS_SPACE_IO 0 /* space is i/o space */ #define MIPS_BUS_SPACE_MEM 1 /* space is mem space */ From owner-p4-projects@FreeBSD.ORG Mon May 7 19:05:27 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B8DA816A406; Mon, 7 May 2007 19:05:26 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 96E9A16A403 for ; Mon, 7 May 2007 19:05:26 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 87B8013C46C for ; Mon, 7 May 2007 19:05:26 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47J5QUT097503 for ; Mon, 7 May 2007 19:05:26 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47J5Qse097500 for perforce@freebsd.org; Mon, 7 May 2007 19:05:26 GMT (envelope-from bms@incunabulum.net) Date: Mon, 7 May 2007 19:05:26 GMT Message-Id: <200705071905.l47J5Qse097500@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119439 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 19:05:27 -0000 http://perforce.freebsd.org/chv.cgi?CH=119439 Change 119439 by bms@bms_anglepoise on 2007/05/07 19:04:54 Add memory resource manager. Update comments. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips/nexus.c#7 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips/nexus.c#7 (text+ko) ==== @@ -34,13 +34,11 @@ * attachment point for both processors and buses, and to manage * resources which are common to all of them. In particular, * this code implements the core resource managers for interrupt - * requests, DMA requests (which rightfully should be a part of the - * ISA code but it's easier to do it here for now), I/O port addresses, - * and I/O memory address space. + * requests and memory address space. */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/nexus.c,v 1.7 2006/04/20 04:12:02 imp Exp $"); +__FBSDID("$FreeBSD$"); #include #include @@ -69,6 +67,7 @@ #define DEVTONX(dev) ((struct nexus_device *)device_get_ivars(dev)) static struct rman irq_rman; +static struct rman mem_rman; static int nexus_probe(device_t); static int nexus_attach(device_t); @@ -122,6 +121,14 @@ panic("nexus_probe irq_rman"); } + mem_rman.rm_start = 0; + mem_rman.rm_end = ~0u; + mem_rman.rm_type = RMAN_ARRAY; + mem_rman.rm_descr = "Memory addresses"; + if (rman_init(&mem_rman) != 0 || + rman_manage_region(&mem_rman, 0, ~0) != 0) + panic("nexus_probe mem_rman"); + return (0); } @@ -229,6 +236,10 @@ rm = &irq_rman; break; + case SYS_RES_MEMORY: + rm = &mem_rman; + break; + default: return (0); } @@ -249,12 +260,24 @@ return (rv); } - static int nexus_activate_resource(device_t bus, device_t child, int type, int rid, struct resource *r) { + /* + * If this is a memory resource, track the virtual direct mapping. + * XXX is this correct? + */ + if (type == SYS_RES_MEMORY) { + void *vaddr; + + vaddr = (void *)MIPS_PHYS_TO_KSEG1((intptr_t)rman_get_start(r)); + rman_set_virtual(r, vaddr); + rman_set_bustag(r, MIPS_BUS_SPACE_MEM); + rman_set_bushandle(r, (bus_space_handle_t)vaddr); + } + return (rman_activate_resource(r)); } From owner-p4-projects@FreeBSD.ORG Mon May 7 19:48:21 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DBF0416A406; Mon, 7 May 2007 19:48:20 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id AFC2816A403 for ; Mon, 7 May 2007 19:48:20 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 9F23B13C459 for ; Mon, 7 May 2007 19:48:20 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47JmKLo003722 for ; Mon, 7 May 2007 19:48:20 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47JmJKO003719 for perforce@freebsd.org; Mon, 7 May 2007 19:48:19 GMT (envelope-from bms@incunabulum.net) Date: Mon, 7 May 2007 19:48:19 GMT Message-Id: <200705071948.l47JmJKO003719@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119440 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 19:48:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=119440 Change 119440 by bms@bms_anglepoise on 2007/05/07 19:47:49 Add an orm/sysresource like device to eat memory ranges reserved by CFE. Not actually needed/useful just now, but nice to have around for other platforms. Affected files ... .. //depot/projects/mips2/src/sys/conf/files.mips#19 edit .. //depot/projects/mips2/src/sys/dev/cfe/cfe_resource.c#1 add Differences ... ==== //depot/projects/mips2/src/sys/conf/files.mips#19 (text+ko) ==== @@ -2,6 +2,7 @@ dev/cfe/cfe_api.c optional cfe dev/cfe/cfe_console.c optional cfe_console +#dev/cfe/cfe_resource.c optional cfe # not yet needed mips/mips/autoconf.c standard mips/mips/busdma_machdep.c standard From owner-p4-projects@FreeBSD.ORG Mon May 7 22:52:06 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E95D816A406; Mon, 7 May 2007 22:52:05 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 81F8716A402 for ; Mon, 7 May 2007 22:52:05 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 6EF2613C45B for ; Mon, 7 May 2007 22:52:05 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l47Mq4Xj044901 for ; Mon, 7 May 2007 22:52:04 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l47Mq4xX044896 for perforce@freebsd.org; Mon, 7 May 2007 22:52:04 GMT (envelope-from zec@FreeBSD.org) Date: Mon, 7 May 2007 22:52:04 GMT Message-Id: <200705072252.l47Mq4xX044896@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 119444 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 22:52:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=119444 Change 119444 by zec@zec_tpx32 on 2007/05/07 22:51:07 Add support for free-floating ng_hub and ng_bridge instances. If a hook named "anchor" is created on a ng_hub or ng_bridge node instance, the node will not self-destruct even if it has no hooks connected. Reminder: normal behavior is that hub or bridge nodes automatically destroy themselves when the last hook is disconnected. Affected files ... .. //depot/projects/vimage/src/sys/netgraph/ng_bridge.c#2 edit .. //depot/projects/vimage/src/sys/netgraph/ng_hub.c#2 edit Differences ... ==== //depot/projects/vimage/src/sys/netgraph/ng_bridge.c#2 (text+ko) ==== @@ -95,13 +95,14 @@ /* Per-node private data */ struct ng_bridge_private { struct ng_bridge_bucket *tab; /* hash table bucket array */ - struct ng_bridge_link *links[NG_BRIDGE_MAX_LINKS]; + struct ng_bridge_link *links[NG_BRIDGE_MAX_LINKS + 1]; struct ng_bridge_config conf; /* node configuration */ node_p node; /* netgraph node */ u_int numHosts; /* num entries in table */ u_int numBuckets; /* num buckets in table */ u_int hashMask; /* numBuckets - 1 */ int numLinks; /* num connected links */ + int persistent; /* can exist w/o any hooks */ struct callout timer; /* one second periodic timer */ }; typedef struct ng_bridge_private *priv_p; @@ -342,13 +343,13 @@ ng_bridge_newhook(node_p node, hook_p hook, const char *name) { const priv_p priv = NG_NODE_PRIVATE(node); + int linkNum = -1; /* Check for a link hook */ if (strncmp(name, NG_BRIDGE_HOOK_LINK_PREFIX, strlen(NG_BRIDGE_HOOK_LINK_PREFIX)) == 0) { const char *cp; char *eptr; - u_long linkNum; cp = name + strlen(NG_BRIDGE_HOOK_LINK_PREFIX); if (!isdigit(*cp) || (cp[0] == '0' && cp[1] != '\0')) @@ -356,6 +357,14 @@ linkNum = strtoul(cp, &eptr, 10); if (*eptr != '\0' || linkNum >= NG_BRIDGE_MAX_LINKS) return (EINVAL); + } else if (strcmp(name, "anchor") == 0) { + linkNum = NG_BRIDGE_MAX_LINKS; + if (priv->persistent) + return (EISCONN); + priv->persistent = 1; + } + + if (linkNum >= 0 ) { if (priv->links[linkNum] != NULL) return (EISCONN); MALLOC(priv->links[linkNum], struct ng_bridge_link *, @@ -366,7 +375,7 @@ NG_HOOK_SET_PRIVATE(hook, (void *)linkNum); priv->numLinks++; return (0); - } + } /* Unknown hook name */ return (EINVAL); @@ -796,7 +805,8 @@ /* If no more hooks, go away */ if ((NG_NODE_NUMHOOKS(NG_HOOK_NODE(hook)) == 0) - && (NG_NODE_IS_VALID(NG_HOOK_NODE(hook)))) { + && (NG_NODE_IS_VALID(NG_HOOK_NODE(hook))) + && !priv->persistent) { ng_rmnode_self(NG_HOOK_NODE(hook)); } return (0); ==== //depot/projects/vimage/src/sys/netgraph/ng_hub.c#2 (text+ko) ==== @@ -37,6 +37,7 @@ #include static ng_constructor_t ng_hub_constructor; +static ng_newhook_t ng_hub_newhook; static ng_rcvdata_t ng_hub_rcvdata; static ng_disconnect_t ng_hub_disconnect; @@ -44,6 +45,7 @@ .version = NG_ABI_VERSION, .name = NG_HUB_NODE_TYPE, .constructor = ng_hub_constructor, + .newhook = ng_hub_newhook, .rcvdata = ng_hub_rcvdata, .disconnect = ng_hub_disconnect, }; @@ -57,6 +59,14 @@ return (0); } +static int +ng_hub_newhook(node_p node, hook_p hook, const char *name) +{ + if (strcmp(name, "anchor") == 0) + node->nd_private = (void *) 1; + return 0; +} + static int ng_hub_rcvdata(hook_p hook, item_p item) { @@ -94,7 +104,7 @@ { if (NG_NODE_NUMHOOKS(NG_HOOK_NODE(hook)) == 0 && - NG_NODE_IS_VALID(NG_HOOK_NODE(hook))) + NG_NODE_IS_VALID(NG_HOOK_NODE(hook)) && !hook->hk_node->nd_private) ng_rmnode_self(NG_HOOK_NODE(hook)); return (0); } From owner-p4-projects@FreeBSD.ORG Mon May 7 23:23:13 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4715D16A404; Mon, 7 May 2007 23:23:13 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 0FADA16A402 for ; Mon, 7 May 2007 23:23:13 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outL.internet-mail-service.net (outL.internet-mail-service.net [216.240.47.235]) by mx1.freebsd.org (Postfix) with ESMTP id EC1C413C447 for ; Mon, 7 May 2007 23:23:12 +0000 (UTC) (envelope-from julian@elischer.org) Received: from mx0.idiom.com (HELO idiom.com) (216.240.32.160) by out.internet-mail-service.net (qpsmtpd/0.32) with ESMTP; Mon, 07 May 2007 16:23:01 -0700 Received: from julian-mac.elischer.org (nat.ironport.com [63.251.108.100]) by idiom.com (Postfix) with ESMTP id 951A9125B34; Mon, 7 May 2007 16:23:00 -0700 (PDT) Message-ID: <463FB4D3.8080402@elischer.org> Date: Mon, 07 May 2007 16:22:59 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.0 (Macintosh/20070326) MIME-Version: 1.0 To: Marko Zec References: <200705072252.l47Mq4xX044896@repoman.freebsd.org> In-Reply-To: <200705072252.l47Mq4xX044896@repoman.freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews Subject: Re: PERFORCE change 119444 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 23:23:13 -0000 Marko Zec wrote: > http://perforce.freebsd.org/chv.cgi?CH=119444 > > Change 119444 by zec@zec_tpx32 on 2007/05/07 22:51:07 > > Add support for free-floating ng_hub and ng_bridge instances. > > If a hook named "anchor" is created on a ng_hub or ng_bridge > node instance, the node will not self-destruct even if it > has no hooks connected. Reminder: normal behavior is that > hub or bridge nodes automatically destroy themselves when > the last hook is disconnected. What is this hook attached to? One could just as easily send them a 'become persistant' message.. It would be a good candidate for a generic message. Data is still sent to this hook. is that what is expected? > > Affected files ... > > .. //depot/projects/vimage/src/sys/netgraph/ng_bridge.c#2 edit > .. //depot/projects/vimage/src/sys/netgraph/ng_hub.c#2 edit > > Differences ... > > ==== //depot/projects/vimage/src/sys/netgraph/ng_bridge.c#2 (text+ko) ==== > > @@ -95,13 +95,14 @@ > /* Per-node private data */ > struct ng_bridge_private { > struct ng_bridge_bucket *tab; /* hash table bucket array */ > - struct ng_bridge_link *links[NG_BRIDGE_MAX_LINKS]; > + struct ng_bridge_link *links[NG_BRIDGE_MAX_LINKS + 1]; > struct ng_bridge_config conf; /* node configuration */ > node_p node; /* netgraph node */ > u_int numHosts; /* num entries in table */ > u_int numBuckets; /* num buckets in table */ > u_int hashMask; /* numBuckets - 1 */ > int numLinks; /* num connected links */ > + int persistent; /* can exist w/o any hooks */ > struct callout timer; /* one second periodic timer */ > }; > typedef struct ng_bridge_private *priv_p; > @@ -342,13 +343,13 @@ > ng_bridge_newhook(node_p node, hook_p hook, const char *name) > { > const priv_p priv = NG_NODE_PRIVATE(node); > + int linkNum = -1; > > /* Check for a link hook */ > if (strncmp(name, NG_BRIDGE_HOOK_LINK_PREFIX, > strlen(NG_BRIDGE_HOOK_LINK_PREFIX)) == 0) { > const char *cp; > char *eptr; > - u_long linkNum; > > cp = name + strlen(NG_BRIDGE_HOOK_LINK_PREFIX); > if (!isdigit(*cp) || (cp[0] == '0' && cp[1] != '\0')) > @@ -356,6 +357,14 @@ > linkNum = strtoul(cp, &eptr, 10); > if (*eptr != '\0' || linkNum >= NG_BRIDGE_MAX_LINKS) > return (EINVAL); > + } else if (strcmp(name, "anchor") == 0) { > + linkNum = NG_BRIDGE_MAX_LINKS; > + if (priv->persistent) > + return (EISCONN); > + priv->persistent = 1; > + } > + > + if (linkNum >= 0 ) { > if (priv->links[linkNum] != NULL) > return (EISCONN); > MALLOC(priv->links[linkNum], struct ng_bridge_link *, > @@ -366,7 +375,7 @@ > NG_HOOK_SET_PRIVATE(hook, (void *)linkNum); > priv->numLinks++; > return (0); > - } > + } > > /* Unknown hook name */ > return (EINVAL); > @@ -796,7 +805,8 @@ > > /* If no more hooks, go away */ > if ((NG_NODE_NUMHOOKS(NG_HOOK_NODE(hook)) == 0) > - && (NG_NODE_IS_VALID(NG_HOOK_NODE(hook)))) { > + && (NG_NODE_IS_VALID(NG_HOOK_NODE(hook))) > + && !priv->persistent) { > ng_rmnode_self(NG_HOOK_NODE(hook)); > } > return (0); > > ==== //depot/projects/vimage/src/sys/netgraph/ng_hub.c#2 (text+ko) ==== > > @@ -37,6 +37,7 @@ > #include > > static ng_constructor_t ng_hub_constructor; > +static ng_newhook_t ng_hub_newhook; > static ng_rcvdata_t ng_hub_rcvdata; > static ng_disconnect_t ng_hub_disconnect; > > @@ -44,6 +45,7 @@ > .version = NG_ABI_VERSION, > .name = NG_HUB_NODE_TYPE, > .constructor = ng_hub_constructor, > + .newhook = ng_hub_newhook, > .rcvdata = ng_hub_rcvdata, > .disconnect = ng_hub_disconnect, > }; > @@ -57,6 +59,14 @@ > return (0); > } > > +static int > +ng_hub_newhook(node_p node, hook_p hook, const char *name) > +{ > + if (strcmp(name, "anchor") == 0) > + node->nd_private = (void *) 1; > + return 0; > +} > + > static int > ng_hub_rcvdata(hook_p hook, item_p item) > { > @@ -94,7 +104,7 @@ > { > > if (NG_NODE_NUMHOOKS(NG_HOOK_NODE(hook)) == 0 && > - NG_NODE_IS_VALID(NG_HOOK_NODE(hook))) > + NG_NODE_IS_VALID(NG_HOOK_NODE(hook)) && !hook->hk_node->nd_private) > ng_rmnode_self(NG_HOOK_NODE(hook)); > return (0); > } From owner-p4-projects@FreeBSD.ORG Mon May 7 23:35:42 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8ABA716A406; Mon, 7 May 2007 23:35:42 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 27D2716A402; Mon, 7 May 2007 23:35:42 +0000 (UTC) (envelope-from zec@icir.org) Received: from xaqua.tel.fer.hr (xaqua.tel.fer.hr [161.53.19.25]) by mx1.freebsd.org (Postfix) with ESMTP id D4D6E13C45B; Mon, 7 May 2007 23:35:41 +0000 (UTC) (envelope-from zec@icir.org) Received: by xaqua.tel.fer.hr (Postfix, from userid 20006) id E42BC9B647; Tue, 8 May 2007 01:35:40 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on xaqua.tel.fer.hr X-Spam-Level: X-Spam-Status: No, score=-4.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.7 Received: from [192.168.200.106] (zec2.tel.fer.hr [161.53.19.79]) by xaqua.tel.fer.hr (Postfix) with ESMTP id 1AA5C9B645; Tue, 8 May 2007 01:35:40 +0200 (CEST) From: Marko Zec To: Julian Elischer Date: Tue, 8 May 2007 01:35:32 +0200 User-Agent: KMail/1.9.6 References: <200705072252.l47Mq4xX044896@repoman.freebsd.org> <463FB4D3.8080402@elischer.org> In-Reply-To: <463FB4D3.8080402@elischer.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200705080135.33036.zec@icir.org> Cc: Perforce Change Reviews , Marko Zec Subject: Re: PERFORCE change 119444 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2007 23:35:42 -0000 On Tuesday 08 May 2007 01:22:59 Julian Elischer wrote: > Marko Zec wrote: > > http://perforce.freebsd.org/chv.cgi?CH=119444 > > > > Change 119444 by zec@zec_tpx32 on 2007/05/07 22:51:07 > > > > Add support for free-floating ng_hub and ng_bridge instances. > > > > If a hook named "anchor" is created on a ng_hub or ng_bridge > > node instance, the node will not self-destruct even if it > > has no hooks connected. Reminder: normal behavior is that > > hub or bridge nodes automatically destroy themselves when > > the last hook is disconnected. > > What is this hook attached to? > One could just as easily send them a 'become persistant' message.. > It would be a good candidate for a generic message. > Data is still sent to this hook. is that what is expected? This hook should typically disappear right after it is created, if we use it like this: tpx32# ngctl mkpeer hub anchor anchor tpx32# ngctl l There are 3 total nodes: Name: ngctl69865 Type: socket ID: 0000040d Num hooks: 0 Name: Type: hub ID: 0000040b Num hooks: 0 Name: em0 Type: ether ID: 00000004 Num hooks: 0 Yes, the only purpose of this is to pin-up the node. We cannot send a 'become persistant' message to a node that doesn't exist... Or do you have an alternative suggestion to achieve this functionality? I really need this badly for IMUNES... Cheers, Marko From owner-p4-projects@FreeBSD.ORG Tue May 8 00:04:32 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7947516A40A; Tue, 8 May 2007 00:04:32 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 44CDA16A402 for ; Tue, 8 May 2007 00:04:32 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outY.internet-mail-service.net (outY.internet-mail-service.net [216.240.47.248]) by mx1.freebsd.org (Postfix) with ESMTP id 2CD3313C484 for ; Tue, 8 May 2007 00:04:31 +0000 (UTC) (envelope-from julian@elischer.org) Received: from mx0.idiom.com (HELO idiom.com) (216.240.32.160) by out.internet-mail-service.net (qpsmtpd/0.32) with ESMTP; Mon, 07 May 2007 17:04:31 -0700 Received: from julian-mac.elischer.org (nat.ironport.com [63.251.108.100]) by idiom.com (Postfix) with ESMTP id 294D7125A24; Mon, 7 May 2007 17:04:31 -0700 (PDT) Message-ID: <463FBE8E.2070604@elischer.org> Date: Mon, 07 May 2007 17:04:30 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.0 (Macintosh/20070326) MIME-Version: 1.0 To: Marko Zec References: <200705072252.l47Mq4xX044896@repoman.freebsd.org> <463FB4D3.8080402@elischer.org> <200705080135.33036.zec@icir.org> In-Reply-To: <200705080135.33036.zec@icir.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews , Marko Zec Subject: Re: PERFORCE change 119444 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 00:04:32 -0000 Marko Zec wrote: > On Tuesday 08 May 2007 01:22:59 Julian Elischer wrote: >> Marko Zec wrote: >>> http://perforce.freebsd.org/chv.cgi?CH=119444 >>> >>> Change 119444 by zec@zec_tpx32 on 2007/05/07 22:51:07 >>> >>> Add support for free-floating ng_hub and ng_bridge instances. >>> >>> If a hook named "anchor" is created on a ng_hub or ng_bridge >>> node instance, the node will not self-destruct even if it >>> has no hooks connected. Reminder: normal behavior is that >>> hub or bridge nodes automatically destroy themselves when >>> the last hook is disconnected. >> What is this hook attached to? >> One could just as easily send them a 'become persistant' message.. >> It would be a good candidate for a generic message. >> Data is still sent to this hook. is that what is expected? > > This hook should typically disappear right after it is created, if we > use it like this: > > tpx32# ngctl mkpeer hub anchor anchor > tpx32# ngctl l > There are 3 total nodes: > Name: ngctl69865 Type: socket ID: 0000040d Num hooks: 0 > Name: Type: hub ID: 0000040b Num hooks: 0 > Name: em0 Type: ether ID: 00000004 Num hooks: 0 > > Yes, the only purpose of this is to pin-up the node. We cannot send > a 'become persistant' message to a node that doesn't exist... Or do > you have an alternative suggestion to achieve this functionality? I > really need this badly for IMUNES... > > Cheers, > > Marko there is a hook when you create it.. you send it the message, then you can remove the hook. From owner-p4-projects@FreeBSD.ORG Tue May 8 01:34:41 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 92A9B16A403; Tue, 8 May 2007 01:34:41 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 49A9016A400 for ; Tue, 8 May 2007 01:34:41 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 1E02713C455 for ; Tue, 8 May 2007 01:34:41 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l481YfgE086624 for ; Tue, 8 May 2007 01:34:41 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l481YeRi086611 for perforce@freebsd.org; Tue, 8 May 2007 01:34:40 GMT (envelope-from bms@incunabulum.net) Date: Tue, 8 May 2007 01:34:40 GMT Message-Id: <200705080134.l481YeRi086611@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119452 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 01:34:41 -0000 http://perforce.freebsd.org/chv.cgi?CH=119452 Change 119452 by bms@bms_anglepoise on 2007/05/08 01:33:39 Default to compiling in siba(4) for sentry5. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/files.sentry5#3 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/files.sentry5#3 (text+ko) ==== @@ -1,5 +1,4 @@ # $FreeBSD$ -mips/mips32/sentry5/sentry5_machdep.c standard -# XXX notyet -#mips/mips32/sentry5/siba.c optional siba +#mips/mips32/sentry5/sentry5_machdep.c standard +mips/mips32/sentry5/siba.c optional siba From owner-p4-projects@FreeBSD.ORG Tue May 8 01:35:43 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 913C816A404; Tue, 8 May 2007 01:35:43 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6F82316A400 for ; Tue, 8 May 2007 01:35:43 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 5C22213C459 for ; Tue, 8 May 2007 01:35:43 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l481Zhsn086722 for ; Tue, 8 May 2007 01:35:43 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l481ZhM1086719 for perforce@freebsd.org; Tue, 8 May 2007 01:35:43 GMT (envelope-from bms@incunabulum.net) Date: Tue, 8 May 2007 01:35:43 GMT Message-Id: <200705080135.l481ZhM1086719@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119453 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 01:35:43 -0000 http://perforce.freebsd.org/chv.cgi?CH=119453 Change 119453 by bms@bms_anglepoise on 2007/05/08 01:35:21 Compile siba in by default. Use hints to hard-wire siba location on root nexus. Affected files ... .. //depot/projects/mips2/src/sys/mips/conf/SENTRY5#4 edit .. //depot/projects/mips2/src/sys/mips/conf/SENTRY5.hints#3 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/conf/SENTRY5#4 (text+ko) ==== @@ -1,6 +1,6 @@ # # $FreeBSD$ -# $P4: //depot/projects/mips2/src/sys/mips/conf/SENTRY5#3 $ +# $P4: //depot/projects/mips2/src/sys/mips/conf/SENTRY5#4 $ # # The Broadcom Sentry5 series of processors and boards is very commonly # used in COTS hardware including the Netgear WGT634U. @@ -66,8 +66,7 @@ options INVARIANTS options INVARIANT_SUPPORT -# TODO: SiliconBackplane board support. -#device siba +device siba # XXX notyet; need to be auto probed children of siba0. #device pci ==== //depot/projects/mips2/src/sys/mips/conf/SENTRY5.hints#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# XXX notyet -#hint.siba.0.at="nexus" -#hint.siba.0.maddr="0x18000000" -#hint.siba.0.size="0x1000" +hint.siba.0.at="nexus0" +hint.siba.0.maddr="0x18000000" +hint.siba.0.msize="0x1000" +# XXX irq? From owner-p4-projects@FreeBSD.ORG Tue May 8 01:37:47 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CFC1316A402; Tue, 8 May 2007 01:37:46 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8F43B16A400 for ; Tue, 8 May 2007 01:37:46 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 637C813C459 for ; Tue, 8 May 2007 01:37:46 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l481bkLU086811 for ; Tue, 8 May 2007 01:37:46 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l481bkmX086808 for perforce@freebsd.org; Tue, 8 May 2007 01:37:46 GMT (envelope-from bms@incunabulum.net) Date: Tue, 8 May 2007 01:37:46 GMT Message-Id: <200705080137.l481bkmX086808@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119454 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 01:37:47 -0000 http://perforce.freebsd.org/chv.cgi?CH=119454 Change 119454 by bms@bms_anglepoise on 2007/05/08 01:36:48 Initial import of siba driver. Mostly stubs for now. bus_alloc_resource_any() is used to acquire bus space using hints passed to nexus. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Tue May 8 01:42:54 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 36EEA16A406; Tue, 8 May 2007 01:42:54 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E309816A403 for ; Tue, 8 May 2007 01:42:53 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id CEF0213C44B for ; Tue, 8 May 2007 01:42:53 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l481grmK087994 for ; Tue, 8 May 2007 01:42:53 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l481grpa087991 for perforce@freebsd.org; Tue, 8 May 2007 01:42:53 GMT (envelope-from bms@incunabulum.net) Date: Tue, 8 May 2007 01:42:53 GMT Message-Id: <200705080142.l481grpa087991@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119456 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 01:42:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=119456 Change 119456 by bms@bms_anglepoise on 2007/05/08 01:42:25 Numerous nexus changes: Bring in nexus_[set|get]_resource() from amd64 to deal with setting resources on direct children of nexus. Track virtual addresses for resource allocations; these are assumed to be in KSEG1 so client device code can use the right mapping. Bring in code to deal with hinted resource allocations (mostly from ia64/sun4v). Implement nexus_hinted_child(). Call bus_enumerate_hinted_children() to probe and attach children which are hard-wired on nexus. Use a RID of 0x20 for bus space reservations hard-wired on nexus. Force rman_debug to 1 for now. Add various debugging printfs. Sort prototypes and bus/device methods. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips/nexus.c#8 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips/nexus.c#8 (text+ko) ==== @@ -65,20 +65,30 @@ }; #define DEVTONX(dev) ((struct nexus_device *)device_get_ivars(dev)) +#define NUM_MIPS_IRQS 6 +#define MIPS_MEM_RID 0x20 static struct rman irq_rman; static struct rman mem_rman; -static int nexus_probe(device_t); -static int nexus_attach(device_t); -static int nexus_print_child(device_t, device_t); -static int nexus_print_all_resources(device_t dev); -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_activate_resource(device_t, device_t, int, int, struct resource *); +static device_t nexus_add_child(device_t, int, const char *, int); +static int nexus_attach(device_t); +static void nexus_delete_resource(device_t, device_t, int, int); +static struct resource_list * + nexus_get_reslist(device_t, device_t); +static int nexus_get_resource(device_t, device_t, int, int, u_long *, + u_long *); +static void nexus_hinted_child(device_t, const char *, int); +static int nexus_print_child(device_t, device_t); +static int nexus_print_all_resources(device_t dev); +static int nexus_probe(device_t); +static int nexus_set_resource(device_t, device_t, int, int, u_long, + u_long); 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); @@ -89,13 +99,20 @@ /* Device interface */ DEVMETHOD(device_probe, nexus_probe), DEVMETHOD(device_attach, nexus_attach), + /* Bus interface */ - DEVMETHOD(bus_print_child, nexus_print_child), DEVMETHOD(bus_add_child, nexus_add_child), + DEVMETHOD(bus_activate_resource,nexus_activate_resource), DEVMETHOD(bus_alloc_resource, nexus_alloc_resource), - DEVMETHOD(bus_activate_resource, nexus_activate_resource), + DEVMETHOD(bus_delete_resource, nexus_delete_resource), + DEVMETHOD(bus_get_resource, nexus_get_resource), + DEVMETHOD(bus_get_resource_list, nexus_get_reslist), + DEVMETHOD(bus_hinted_child, nexus_hinted_child), + DEVMETHOD(bus_print_child, nexus_print_child), + DEVMETHOD(bus_set_resource, nexus_set_resource), DEVMETHOD(bus_setup_intr, nexus_setup_intr), DEVMETHOD(bus_teardown_intr, nexus_teardown_intr), + { 0, 0 } }; @@ -106,18 +123,22 @@ }; static devclass_t nexus_devclass; +extern int rman_debug; /* XXX XXX */ + static int nexus_probe(device_t dev) { device_set_desc(dev, "MIPS32 root nexus"); + rman_debug = 1; /* XXX XXX */ + irq_rman.rm_start = 0; - irq_rman.rm_end = 5; + irq_rman.rm_end = NUM_MIPS_IRQS - 1; irq_rman.rm_type = RMAN_ARRAY; irq_rman.rm_descr = "Hardware IRQs"; if (rman_init(&irq_rman) != 0 || - rman_manage_region(&irq_rman, 0, 5) != 0) { + rman_manage_region(&irq_rman, 0, NUM_MIPS_IRQS - 1) != 0) { panic("nexus_probe irq_rman"); } @@ -140,7 +161,7 @@ register_t sr = intr_disable(); irq = rman_get_start(res); - if (irq > 5) + if (irq >= NUM_MIPS_IRQS) return (0); cpu_establish_hardintr(device_get_nameunit(child), filt, intr, arg, @@ -162,8 +183,13 @@ nexus_attach(device_t dev) { + /* + * XXX: next line needed to probe clock (intr 5), + * otherwise no clock and lots of stray hard interrupt 5 + * once compare counts down. + */ + bus_generic_probe(dev); bus_enumerate_hinted_children(dev); - bus_generic_probe(dev); bus_generic_attach(dev); return (0); @@ -199,6 +225,34 @@ return (retval); } +static void +nexus_hinted_child(device_t bus, const char *dname, int dunit) +{ + device_t child; + long maddr; + int msize; + int 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); + + printf("%s: discovered hinted child %s at maddr %p(%d)\n", + __func__, device_get_nameunit(child), + (void *)(intptr_t)maddr, msize); + + result = bus_set_resource(child, SYS_RES_MEMORY, MIPS_MEM_RID, + maddr, msize); + if (result != 0) { + device_printf(bus, "warning: bus_set_resource() failed\n"); + } +} + static device_t nexus_add_child(device_t bus, int order, const char *name, int unit) { @@ -227,31 +281,70 @@ nexus_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 *rv; - struct rman *rm; - int needactivate = flags & RF_ACTIVE; + struct nexus_device *ndev = DEVTONX(child); + struct resource *rv; + struct resource_list_entry *rle; + struct rman *rm; + int isdefault, needactivate, passthrough; + + printf("%s: entry (%p, %p, %d, %p, %p, %p, %ld, %d)\n", + __func__, bus, child, type, rid, (void *)(intptr_t)start, + (void *)(intptr_t)end, count, flags); + printf("%s: requested rid is %d\n", __func__, *rid); + + isdefault = (start == 0UL && end == ~0UL && count == 1); + needactivate = flags & RF_ACTIVE; + passthrough = (device_get_parent(child) != bus); + rle = NULL; + + /* + * If this is an allocation of the "default" range for a given RID, + * and we know what the resources for this device are (ie. they aren't + * maintained by a child bus), then work out the start/end values. + */ + if (isdefault) { + rle = resource_list_find(&ndev->nx_resources, type, *rid); + if (rle == NULL) + return (NULL); + if (rle->res != NULL) { + /* XXX panic? */ + printf("%s: resource entry is busy\n", __func__); + return (NULL); + } + start = rle->start; + end = rle->end; + count = rle->count; + } switch (type) { case SYS_RES_IRQ: rm = &irq_rman; break; - case SYS_RES_MEMORY: rm = &mem_rman; break; - default: + printf("%s: unknown resource type %d\n", __func__, type); return (0); } rv = rman_reserve_resource(rm, start, end, count, flags, child); - if (rv == 0) + if (rv == 0) { + printf("%s: could not reserve resource\n", __func__); return (0); + } rman_set_rid(rv, *rid); +#if 0 + if (type == SYS_RES_MEMORY) { + rman_set_bustag(rv, &nexus_bustag); + rman_set_bushandle(rv, rman_get_start(rv)); + } +#endif if (needactivate) { if (bus_activate_resource(child, type, *rid, rv)) { + printf("%s: could not activate resource\n", __func__); rman_release_resource(rv); return (0); } @@ -266,7 +359,8 @@ { /* - * If this is a memory resource, track the virtual direct mapping. + * If this is a memory resource, track the direct mapping + * in the uncached MIPS KSEG1 segment. * XXX is this correct? */ if (type == SYS_RES_MEMORY) { @@ -281,4 +375,58 @@ return (rman_activate_resource(r)); } +static struct resource_list * +nexus_get_reslist(device_t dev, device_t child) +{ + struct nexus_device *ndev = DEVTONX(child); + + return (&ndev->nx_resources); +} + +static int +nexus_set_resource(device_t dev, device_t child, int type, int rid, + u_long start, u_long count) +{ + struct nexus_device *ndev = DEVTONX(child); + struct resource_list *rl = &ndev->nx_resources; + struct resource_list_entry *rle; + + printf("%s: entry (%p, %p, %d, %d, %p, %ld)\n", + __func__, dev, child, type, rid, (void *)(intptr_t)start, count); + + rle = resource_list_add(rl, type, rid, start, start + count - 1, + count); + if (rle == NULL) + return (ENXIO); + + return (0); +} + +static int +nexus_get_resource(device_t dev, device_t child, int type, int rid, + u_long *startp, u_long *countp) +{ + struct nexus_device *ndev = DEVTONX(child); + struct resource_list *rl = &ndev->nx_resources; + struct resource_list_entry *rle; + + rle = resource_list_find(rl, type, rid); + if (!rle) + return(ENOENT); + if (startp) + *startp = rle->start; + if (countp) + *countp = rle->count; + return (0); +} + +static void +nexus_delete_resource(device_t dev, device_t child, int type, int rid) +{ + struct nexus_device *ndev = DEVTONX(child); + struct resource_list *rl = &ndev->nx_resources; + + resource_list_delete(rl, type, rid); +} + DRIVER_MODULE(nexus, root, nexus_driver, nexus_devclass, 0, 0); From owner-p4-projects@FreeBSD.ORG Tue May 8 05:55:47 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CBF6D16A403; Tue, 8 May 2007 05:55:46 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A356516A400 for ; Tue, 8 May 2007 05:55:46 +0000 (UTC) (envelope-from zec@icir.org) Received: from xaqua.tel.fer.hr (xaqua.tel.fer.hr [161.53.19.25]) by mx1.freebsd.org (Postfix) with ESMTP id 33A5913C44B for ; Tue, 8 May 2007 05:55:46 +0000 (UTC) (envelope-from zec@icir.org) Received: by xaqua.tel.fer.hr (Postfix, from userid 20006) id 9CBA09B64A; Tue, 8 May 2007 07:55:44 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on xaqua.tel.fer.hr X-Spam-Level: X-Spam-Status: No, score=-4.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.7 Received: from [192.168.200.106] (zec2.tel.fer.hr [161.53.19.79]) by xaqua.tel.fer.hr (Postfix) with ESMTP id A1A3B9B649; Tue, 8 May 2007 07:55:43 +0200 (CEST) From: Marko Zec To: Julian Elischer Date: Tue, 8 May 2007 07:55:35 +0200 User-Agent: KMail/1.9.6 References: <200705072252.l47Mq4xX044896@repoman.freebsd.org> <200705080135.33036.zec@icir.org> <463FBE8E.2070604@elischer.org> In-Reply-To: <463FBE8E.2070604@elischer.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200705080755.36056.zec@icir.org> Cc: Perforce Change Reviews Subject: Re: PERFORCE change 119444 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 05:55:47 -0000 On Tuesday 08 May 2007 02:04:30 Julian Elischer wrote: > Marko Zec wrote: > > On Tuesday 08 May 2007 01:22:59 Julian Elischer wrote: > >> Marko Zec wrote: > >>> http://perforce.freebsd.org/chv.cgi?CH=119444 > >>> > >>> Change 119444 by zec@zec_tpx32 on 2007/05/07 22:51:07 > >>> > >>> Add support for free-floating ng_hub and ng_bridge instances. > >>> > >>> If a hook named "anchor" is created on a ng_hub or ng_bridge > >>> node instance, the node will not self-destruct even if it > >>> has no hooks connected. Reminder: normal behavior is that > >>> hub or bridge nodes automatically destroy themselves when > >>> the last hook is disconnected. > >> > >> What is this hook attached to? > >> One could just as easily send them a 'become persistant' message.. > >> It would be a good candidate for a generic message. > >> Data is still sent to this hook. is that what is expected? > > > > This hook should typically disappear right after it is created, if > > we use it like this: > > > > tpx32# ngctl mkpeer hub anchor anchor > > tpx32# ngctl l > > There are 3 total nodes: > > Name: ngctl69865 Type: socket ID: 0000040d Num hooks: 0 > > Name: Type: hub ID: 0000040b Num hooks: 0 > > Name: em0 Type: ether ID: 00000004 Num hooks: 0 > > > > Yes, the only purpose of this is to pin-up the node. We cannot > > send a 'become persistant' message to a node that doesn't exist... > > Or do you have an alternative suggestion to achieve this > > functionality? I really need this badly for IMUNES... > > > > Cheers, > > > > Marko > > there is a hook when you create it.. you send it the message, then > you can remove the hook. I'd be sold on the concept you propose if I had an idea how to use it from non-interactive scripts in a reasonably simple way. For example: tpx32# ngctl -f - mkpeer hub x x list # XXX what now? Send "pin-up" message to which node? There are 3 total nodes: Name: Type: hub ID: 00000429 Num hooks: 1 Name: ngctl93546 Type: socket ID: 00000428 Num hooks: 1 Name: em0 Type: ether ID: 00000004 Num hooks: 0 My point is that even if we don't close the controlling socket (we remain in ngctl) so that we don't loose the newly created node right away, how can we at this point know the address of the new node without going through some woodo magic style parsing of the output from currently running ngctl process, and then feeding the result back to its standard input? Marko From owner-p4-projects@FreeBSD.ORG Tue May 8 16:48:59 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 04A1816A408; Tue, 8 May 2007 16:48:59 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B9E8C16A406 for ; Tue, 8 May 2007 16:48:58 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id A740E13C4AD for ; Tue, 8 May 2007 16:48:58 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l48Gmwaa001697 for ; Tue, 8 May 2007 16:48:58 GMT (envelope-from rpaulo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l48GmtLi001694 for perforce@freebsd.org; Tue, 8 May 2007 16:48:55 GMT (envelope-from rpaulo@FreeBSD.org) Date: Tue, 8 May 2007 16:48:55 GMT Message-Id: <200705081648.l48GmtLi001694@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rpaulo@FreeBSD.org using -f From: Rui Paulo To: Perforce Change Reviews Cc: Subject: PERFORCE change 119487 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 16:48:59 -0000 http://perforce.freebsd.org/chv.cgi?CH=119487 Change 119487 by rpaulo@rpaulo_epsilon on 2007/05/08 16:48:09 IFC Affected files ... .. //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/intr_machdep.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/amd64/include/vmparam.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/arm/include/vmparam.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/boot/common/loader.8#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/conf/files#7 integrate .. //depot/projects/soc2007/rpaulo-macbook/conf/options#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/dbuf.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/dnode.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/zio.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/acpica/acpi.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/ata/ata-disk.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/bce/if_bce.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/bce/if_bcefw.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/bce/if_bcereg.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_80003es2lan.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_80003es2lan.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_82540.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_82541.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_82541.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_82542.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_82543.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_82543.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_82571.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_82571.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_82575.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_82575.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_api.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_api.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_defines.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_hw.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_ich8lan.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_ich8lan.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_mac.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_mac.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_manage.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_manage.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_nvm.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_nvm.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_osdep.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_phy.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_phy.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/e1000_regs.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/if_em.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/em/if_em.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/gem/if_gem.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/gem/if_gem_pci.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/gem/if_gemvar.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/isp/isp.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/isp/isp_freebsd.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/isp/isp_freebsd.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/isp/isp_pci.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/isp/isp_sbus.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/isp/isp_tpublic.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mpt/mpt.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mpt/mpt.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mpt/mpt_cam.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mpt/mpt_cam.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mpt/mpt_pci.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mpt/mpt_raid.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mxge/eth_z8e.dat.gz.uu#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mxge/ethp_z8e.dat.gz.uu#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mxge/if_mxge.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mxge/mxge_mcp.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/nve/if_nve.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/pci/pci.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/sound/pci/hda/hdac.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/sound/pci/hda/hdac_private.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/sound/pci/ich.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/sound/pcm/buffer.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/sound/pcm/sound.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/if_rum.c#1 branch .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/if_rumreg.h#1 branch .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/if_rumvar.h#1 branch .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/rt2573_ucode.h#1 branch .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/usb_subr.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/usbdevs#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/geom/eli/g_eli_ctl.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/geom/geom.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/geom/geom_dev.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/geom/geom_disk.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/geom/geom_disk.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/geom/geom_io.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/geom/geom_slice.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/geom/geom_subr.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/conf/GENERIC#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/conf/PAE#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/i386/intr_machdep.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/include/vmparam.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/ia64/ia64/machdep.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/ia64/include/vmparam.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/kern/kern_descrip.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/kern/kern_intr.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/kern/uipc_socket.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/kern/uipc_usrreq.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/kern/vfs_syscalls.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/modules/Makefile#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/modules/em/Makefile#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/modules/rum/Makefile#1 branch .. //depot/projects/soc2007/rpaulo-macbook/net/ieee8023ad_lacp.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/net/ieee8023ad_lacp.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/net/if_lagg.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/net/if_lagg.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/net80211/ieee80211_amrr.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netgraph/ng_mppc.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp.h#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_asconf.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_auth.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_constants.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_indata.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_indata.h#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_input.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_input.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_os_bsd.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_output.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_output.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_pcb.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_pcb.h#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_structs.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_sysctl.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_timer.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_uio.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_usrreq.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_var.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctputil.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctputil.h#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_debug.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_input.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_output.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_subr.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_syncache.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_timer.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_usrreq.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_var.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/udp_usrreq.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet6/nd6.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet6/nd6_nbr.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet6/sctp6_usrreq.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/powerpc/include/vmparam.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/sparc64/include/vmparam.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/sun4v/include/vmparam.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/sys/disk.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/sys/filedesc.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/sys/interrupt.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/vm/vm_page.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/vm/vm_page.h#2 integrate Differences ... ==== //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/intr_machdep.c#2 (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/amd64/intr_machdep.c,v 1.30 2007/03/06 17:16:46 jhb Exp $ + * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.31 2007/05/06 17:02:49 piso Exp $ */ /* @@ -74,6 +74,12 @@ static struct mtx intr_table_lock; static STAILQ_HEAD(, pic) pics; +#ifdef INTR_FILTER +static void intr_eoi_src(void *arg); +static void intr_disab_eoi_src(void *arg); +static void intr_event_stray(void *cookie); +#endif + #ifdef SMP static int assign_cpu; @@ -134,8 +140,14 @@ vector = isrc->is_pic->pic_vector(isrc); if (interrupt_sources[vector] != NULL) return (EEXIST); +#ifdef INTR_FILTER + error = intr_event_create(&isrc->is_event, isrc, 0, + (mask_fn)isrc->is_pic->pic_enable_source, + intr_eoi_src, intr_disab_eoi_src, "irq%d:", vector); +#else error = intr_event_create(&isrc->is_event, isrc, 0, (mask_fn)isrc->is_pic->pic_enable_source, "irq%d:", vector); +#endif if (error) return (error); mtx_lock_spin(&intr_table_lock); @@ -212,6 +224,77 @@ return (isrc->is_pic->pic_config_intr(isrc, trig, pol)); } +#ifdef INTR_FILTER +void +intr_execute_handlers(struct intsrc *isrc, struct trapframe *frame) +{ + struct thread *td; + struct intr_event *ie; + int vector; + + td = curthread; + + /* + * We count software interrupts when we process them. The + * code here follows previous practice, but there's an + * argument for counting hardware interrupts when they're + * processed too. + */ + (*isrc->is_count)++; + PCPU_LAZY_INC(cnt.v_intr); + + ie = isrc->is_event; + + /* + * XXX: We assume that IRQ 0 is only used for the ISA timer + * device (clk). + */ + vector = isrc->is_pic->pic_vector(isrc); + if (vector == 0) + clkintr_pending = 1; + + if (intr_event_handle(ie, frame) != 0) + intr_event_stray(isrc); +} + +static void +intr_event_stray(void *cookie) +{ + struct intsrc *isrc; + + isrc = cookie; + /* + * For stray interrupts, mask and EOI the source, bump the + * stray count, and log the condition. + */ + isrc->is_pic->pic_disable_source(isrc, PIC_EOI); + (*isrc->is_straycount)++; + if (*isrc->is_straycount < MAX_STRAY_LOG) + log(LOG_ERR, "stray irq%d\n", isrc->is_pic->pic_vector(isrc)); + else if (*isrc->is_straycount == MAX_STRAY_LOG) + log(LOG_CRIT, + "too many stray irq %d's: not logging anymore\n", + isrc->is_pic->pic_vector(isrc)); +} + +static void +intr_eoi_src(void *arg) +{ + struct intsrc *isrc; + + isrc = arg; + isrc->is_pic->pic_eoi_source(isrc); +} + +static void +intr_disab_eoi_src(void *arg) +{ + struct intsrc *isrc; + + isrc = arg; + isrc->is_pic->pic_disable_source(isrc, PIC_EOI); +} +#else void intr_execute_handlers(struct intsrc *isrc, struct trapframe *frame) { @@ -298,6 +381,7 @@ } td->td_intr_nesting_level--; } +#endif void intr_resume(void) ==== //depot/projects/soc2007/rpaulo-macbook/amd64/include/vmparam.h#3 (text+ko) ==== @@ -38,7 +38,7 @@ * SUCH DAMAGE. * * from: @(#)vmparam.h 5.9 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.46 2007/04/21 01:14:47 sepotvin Exp $ + * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.47 2007/05/05 19:50:26 alc Exp $ */ @@ -88,6 +88,11 @@ #define UMA_MD_SMALL_ALLOC /* + * The physical address space is densely populated. + */ +#define VM_PHYSSEG_DENSE + +/* * Virtual addresses of things. Derived from the page directory and * page table indexes from pmap.h for precision. * Because of the page that is both a PD and PT, it looks a little ==== //depot/projects/soc2007/rpaulo-macbook/arm/include/vmparam.h#2 (text+ko) ==== @@ -28,7 +28,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/arm/include/vmparam.h,v 1.7 2006/08/25 23:51:10 alc Exp $ + * $FreeBSD: src/sys/arm/include/vmparam.h,v 1.8 2007/05/05 19:50:26 alc Exp $ */ #ifndef _MACHINE_VMPARAM_H_ @@ -73,6 +73,11 @@ #define VM_PHYSSEG_NOADD /* + * The physical address space is densely populated. + */ +#define VM_PHYSSEG_DENSE + +/* * we support 2 free lists: * * - DEFAULT for all systems ==== //depot/projects/soc2007/rpaulo-macbook/boot/common/loader.8#2 (text+ko) ==== @@ -22,9 +22,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/sys/boot/common/loader.8,v 1.91 2007/02/04 06:35:10 imp Exp $ +.\" $FreeBSD: src/sys/boot/common/loader.8,v 1.92 2007/05/05 17:36:42 jmg Exp $ .\" -.Dd November 29, 2006 +.Dd May 5, 2007 .Dt LOADER 8 .Os .Sh NAME @@ -574,20 +574,19 @@ meta information, which directly governs the maximum amount of swap the system can support. This value is specified in bytes of KVA space -and defaults to around 70MBytes. +and defaults to 32MBytes on i386 and amd64. Care should be taken to not reduce this value such that the actual amount of configured swap exceeds 1/2 the kernel-supported swap. -The default 70MB allows -the kernel to support a maximum of (approximately) -14GB of configured swap. -Only mess around with +The default of 32MB allows +the kernel to support a maximum of ~7GB of swap. +Only change this parameter if you need to greatly extend the KVM reservation for other resources such as the buffer cache or .Va kern.ipc.nmbclusters . -Modifies +Modifies kernel option .Dv VM_SWZONE_SIZE_MAX . .It Va kern.maxbcache Limits the amount of KVM reserved for use by the ==== //depot/projects/soc2007/rpaulo-macbook/conf/files#7 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1201 2007/05/04 13:29:45 rwatson Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1202 2007/05/06 10:07:20 kevlo Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -1071,6 +1071,7 @@ dev/usb/if_kue.c optional kue dev/usb/if_ural.c optional ural dev/usb/if_rue.c optional rue +dev/usb/if_rum.c optional rum dev/usb/if_udav.c optional udav dev/usb/ohci.c optional ohci dev/usb/ohci_pci.c optional ohci pci ==== //depot/projects/soc2007/rpaulo-macbook/conf/options#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.586 2007/04/14 20:16:03 kmacy Exp $ +# $FreeBSD: src/sys/conf/options,v 1.587 2007/05/06 17:04:34 piso Exp $ # # On the handling of kernel options # @@ -764,3 +764,6 @@ # snd_emu10kx sound driver options SND_EMU10KX_MULTICHANNEL opt_emu10kx.h + +# Interrupt filtering +INTR_FILTER opt_global.h ==== //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/dbuf.c#2 (text+ko) ==== @@ -1178,7 +1178,8 @@ } else { ASSERT(db->db_buf != NULL); ASSERT(list_head(&dr->dt.di.dr_children) == NULL); - /* XXX - mutex and list destroy? */ + list_destroy(&dr->dt.di.dr_children); + mutex_destroy(&dr->dt.di.dr_mtx); } kmem_free(dr, sizeof (dbuf_dirty_record_t)); @@ -1925,6 +1926,10 @@ drp = &(*drp)->dr_next; ASSERT((*drp)->dr_next == NULL); *drp = NULL; + if (dr->dr_dbuf->db_level != 0) { + list_destroy(&dr->dt.di.dr_children); + mutex_destroy(&dr->dt.di.dr_mtx); + } kmem_free(dr, sizeof (dbuf_dirty_record_t)); ASSERT(db->db_dirtycnt > 0); db->db_dirtycnt -= 1; @@ -2225,6 +2230,8 @@ >> (db->db_level * epbs), >=, db->db_blkid); arc_set_callback(db->db_buf, dbuf_do_evict, db); } + list_destroy(&dr->dt.di.dr_children); + mutex_destroy(&dr->dt.di.dr_mtx); } kmem_free(dr, sizeof (dbuf_dirty_record_t)); ==== //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/dnode.c#2 (text+ko) ==== @@ -260,7 +260,6 @@ uint64_t object) { dnode_t *dn = kmem_cache_alloc(dnode_cache, KM_SLEEP); - (void) dnode_cons(dn, NULL, 0); /* XXX */ dn->dn_objset = os; dn->dn_object = object; ==== //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c#2 (text+ko) ==== @@ -445,6 +445,8 @@ } else { mutex_exit(&db->db_mtx); dnode_undirty_dbufs(&dr->dt.di.dr_children); + list_destroy(&dr->dt.di.dr_children); + mutex_destroy(&dr->dt.di.dr_mtx); } kmem_free(dr, sizeof (dbuf_dirty_record_t)); dbuf_rele(db, (void *)(uintptr_t)txg); ==== //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c#2 (text+ko) ==== @@ -129,6 +129,7 @@ txg_list_destroy(&dp->dp_dirty_datasets); txg_list_destroy(&dp->dp_dirty_dirs); + txg_list_destroy(&dp->dp_sync_tasks); list_destroy(&dp->dp_synced_objsets); arc_flush(); ==== //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#3 (text+ko) ==== @@ -27,11 +27,13 @@ #include #include #include +#include #include #include #include #include #include +#include /* * Virtual device vector for GEOM. @@ -83,7 +85,8 @@ error = cp->provider->error; ZFS_LOG(1, "Closing access to %s.", cp->provider->name); - g_access(cp, -cp->acr, -cp->acw, -cp->ace); + if (cp->acr + cp->acw + cp->ace > 0) + g_access(cp, -cp->acr, -cp->acw, -cp->ace); ZFS_LOG(1, "Destroyed consumer to %s.", cp->provider->name); g_detach(cp); g_destroy_consumer(cp); @@ -113,8 +116,11 @@ ZFS_LOG(1, "Attaching to %s.", pp->name); /* Do we have geom already? No? Create one. */ LIST_FOREACH(gp, &zfs_vdev_class.geom, geom) { - if (!(gp->flags & G_GEOM_WITHER)) - break; + if (gp->flags & G_GEOM_WITHER) + continue; + if (strcmp(gp->name, "zfs::vdev") != 0) + continue; + break; } if (gp == NULL) { gp = g_new_geomf(&zfs_vdev_class, "zfs::vdev"); @@ -227,12 +233,125 @@ } } +static char * +vdev_geom_get_id(struct g_consumer *cp) +{ + char *id; + int len; + + g_topology_assert_not(); + len = DISK_IDENT_SIZE; + id = kmem_zalloc(len, KM_SLEEP); + if (g_io_getattr("GEOM::ident", cp, &len, id) != 0) { + kmem_free(id, DISK_IDENT_SIZE); + return (NULL); + } + return (id); +} + +static void +vdev_geom_free_id(char *id) +{ + + if (id != NULL) + kmem_free(id, DISK_IDENT_SIZE); +} + +struct vdev_geom_find { + const char *id; + int write; + struct g_consumer *cp; +}; + +static void +vdev_geom_taste_orphan(struct g_consumer *cp) +{ + + KASSERT(1 == 0, ("%s called while tasting %s.", __func__, + cp->provider->name)); +} + +static void +vdev_geom_attach_by_id_event(void *arg, int flags __unused) +{ + struct vdev_geom_find *ap; + struct g_class *mp; + struct g_geom *gp, *zgp; + struct g_provider *pp; + struct g_consumer *zcp; + char *id; + + g_topology_assert(); + + ap = arg; + + zgp = g_new_geomf(&zfs_vdev_class, "zfs::vdev::taste"); + /* This orphan function should be never called. */ + zgp->orphan = vdev_geom_taste_orphan; + zcp = g_new_consumer(zgp); + + LIST_FOREACH(mp, &g_classes, class) { + if (mp == &zfs_vdev_class) + continue; + LIST_FOREACH(gp, &mp->geom, geom) { + if (gp->flags & G_GEOM_WITHER) + continue; + LIST_FOREACH(pp, &gp->provider, provider) { + if (pp->flags & G_PF_WITHER) + continue; + g_attach(zcp, pp); + if (g_access(zcp, 1, 0, 0) != 0) { + g_detach(zcp); + continue; + } + g_topology_unlock(); + id = vdev_geom_get_id(zcp); + g_topology_lock(); + g_access(zcp, -1, 0, 0); + g_detach(zcp); + if (id == NULL || strcmp(id, ap->id) != 0) { + vdev_geom_free_id(id); + continue; + } + vdev_geom_free_id(id); + ap->cp = vdev_geom_attach(pp, ap->write); + if (ap->cp == NULL) { + printf("ZFS WARNING: Cannot open %s " + "for writting.\n", pp->name); + continue; + } + goto end; + } + } + } + ap->cp = NULL; +end: + g_destroy_consumer(zcp); + g_destroy_geom(zgp); +} + +static struct g_consumer * +vdev_geom_attach_by_id(const char *id, int write) +{ + struct vdev_geom_find *ap; + struct g_consumer *cp; + + ap = kmem_zalloc(sizeof(*ap), KM_SLEEP); + ap->id = id; + ap->write = write; + g_waitfor_event(vdev_geom_attach_by_id_event, ap, M_WAITOK, NULL); + cp = ap->cp; + kmem_free(ap, sizeof(*ap)); + return (cp); +} + static int vdev_geom_open(vdev_t *vd, uint64_t *psize, uint64_t *ashift) { vdev_geom_ctx_t *ctx; struct g_provider *pp; struct g_consumer *cp; + char *id = NULL; int owned; /* @@ -245,23 +364,55 @@ if ((owned = mtx_owned(&Giant))) mtx_unlock(&Giant); + cp = NULL; g_topology_lock(); pp = g_provider_by_name(vd->vdev_path + sizeof("/dev/") - 1); - if (pp == NULL) { - g_topology_unlock(); - if (owned) - mtx_lock(&Giant); - vd->vdev_stat.vs_aux = VDEV_AUX_BAD_LABEL; - return (EINVAL); + if (pp != NULL) { + ZFS_LOG(1, "Found provider by name %s.", vd->vdev_path); + cp = vdev_geom_attach(pp, !!(spa_mode & FWRITE)); + if (cp != NULL && vd->vdev_devid != NULL) { + g_topology_unlock(); + id = vdev_geom_get_id(cp); + g_topology_lock(); + if (id == NULL || strcmp(id, vd->vdev_devid) != 0) { + vdev_geom_detach(cp, 0); + cp = NULL; + ZFS_LOG(1, "ID mismatch for provider %s: " + "[%s]!=[%s].", vd->vdev_path, + vd->vdev_devid, id); + goto next; + } + ZFS_LOG(1, "ID match for provider %s.", vd->vdev_path); + } } - cp = vdev_geom_attach(pp, !!(spa_mode & FWRITE)); +next: g_topology_unlock(); + vdev_geom_free_id(id); + if (cp == NULL && vd->vdev_devid != NULL) { + ZFS_LOG(0, "Searching by ID [%s].", vd->vdev_devid); + cp = vdev_geom_attach_by_id(vd->vdev_devid, + !!(spa_mode & FWRITE)); + if (cp != NULL) { + size_t len = strlen(cp->provider->name) + 6; /* 6 == strlen("/dev/") + 1 */ + char *buf = kmem_alloc(len, KM_SLEEP); + + snprintf(buf, len, "/dev/%s", cp->provider->name); + spa_strfree(vd->vdev_path); + vd->vdev_path = buf; + + ZFS_LOG(1, "Attach by ID [%s] succeeded, provider %s.", + vd->vdev_devid, vd->vdev_path); + } + } if (owned) mtx_lock(&Giant); if (cp == NULL) { + ZFS_LOG(1, "Provider %s (id=[%s]) not found.", vd->vdev_path, + vd->vdev_devid); vd->vdev_stat.vs_aux = VDEV_AUX_OPEN_FAILED; return (EACCES); } + pp = cp->provider; /* * Determine the actual size of the device. ==== //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#4 (text+ko) ==== @@ -770,11 +770,12 @@ * Perhaps we should use SPA_MAXBLOCKSIZE chunks? */ nbytes = MIN(n, max_blksz - P2PHASE(woff, max_blksz)); - rw_enter(&zp->z_map_lock, RW_READER); if (woff + nbytes > zp->z_phys->zp_size) vnode_pager_setsize(vp, woff + nbytes); + rw_enter(&zp->z_map_lock, RW_READER); + tx_bytes = uio->uio_resid; if (vn_has_cached_data(vp)) { rw_exit(&zp->z_map_lock); ==== //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#4 (text+ko) ==== @@ -695,9 +695,6 @@ ZFS_OBJ_HOLD_EXIT(zfsvfs, z_id); } -/* - * FreeBSD: Should be called from ->vop_reclaim(). - */ void zfs_znode_free(znode_t *zp) { @@ -991,6 +988,7 @@ error = zap_add(os, moid, ZFS_ROOT_OBJ, 8, 1, &roid, tx); ASSERT(error == 0); + mutex_destroy(&zfsvfs.z_znodes_lock); kmem_cache_free(znode_cache, rootzp); } #endif /* _KERNEL */ ==== //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/zio.c#3 (text+ko) ==== @@ -977,6 +977,8 @@ cv_broadcast(&zio->io_cv); mutex_exit(&zio->io_lock); } else { + cv_destroy(&zio->io_cv); + mutex_destroy(&zio->io_lock); kmem_cache_free(zio_cache, zio); } } ==== //depot/projects/soc2007/rpaulo-macbook/dev/acpica/acpi.c#3 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.235 2007/04/25 16:22:18 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.236 2007/05/08 14:31:49 marks Exp $"); #include "opt_acpi.h" #include @@ -331,14 +331,14 @@ if (device_find_child(parent, "acpi", 0) != NULL) return_VOID; + snprintf(acpi_ca_version, sizeof(acpi_ca_version), "%x", ACPI_CA_VERSION); + /* Initialize root tables. */ if (ACPI_FAILURE(acpi_Startup())) { printf("ACPI: Try disabling either ACPI or apic support.\n"); return_VOID; } - snprintf(acpi_ca_version, sizeof(acpi_ca_version), "%x", ACPI_CA_VERSION); - /* Attach the actual ACPI device. */ if ((child = BUS_ADD_CHILD(parent, 10, "acpi", 0)) == NULL) { device_printf(parent, "device_identify failed\n"); ==== //depot/projects/soc2007/rpaulo-macbook/dev/ata/ata-disk.c#3 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.202 2007/04/26 12:59:20 roberto Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.203 2007/05/06 01:20:06 pjd Exp $"); #include "opt_ata.h" #include @@ -161,6 +161,8 @@ adp->disk->d_unit = device_get_unit(dev); if (atadev->param.support.command2 & ATA_SUPPORT_FLUSHCACHE) adp->disk->d_flags = DISKFLAG_CANFLUSHCACHE; + snprintf(adp->disk->d_ident, sizeof(adp->disk->d_ident), "ad:%s", + atadev->param.serial); disk_create(adp->disk, DISK_VERSION); device_add_child(dev, "subdisk", device_get_unit(dev)); ad_firmware_geom_adjust(dev, adp->disk); ==== //depot/projects/soc2007/rpaulo-macbook/dev/bce/if_bce.c#2 (text) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2006 Broadcom Corporation + * Copyright (c) 2006-2007 Broadcom Corporation * David Christensen . All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -29,20 +29,18 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/bce/if_bce.c,v 1.29 2007/03/04 03:38:06 csjp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/bce/if_bce.c,v 1.30 2007/05/04 23:14:19 davidch Exp $"); /* * The following controllers are supported by this driver: * BCM5706C A2, A3 - * BCM5708C B1 + * BCM5708C B1, B2 * * The following controllers are not supported by this driver: - * (These are not "Production" versions of the controller.) - * * BCM5706C A0, A1 * BCM5706S A0, A1, A2, A3 * BCM5708C A0, B0 - * BCM5708S A0, B0, B1 + * BCM5708S A0, B0, B1, B2 */ #include "opt_bce.h" @@ -51,12 +49,6 @@ #include /****************************************************************************/ -/* BCE Driver Version */ -/****************************************************************************/ -char bce_driver_version[] = "v0.9.6"; - - -/****************************************************************************/ /* BCE Debug Options */ /****************************************************************************/ #ifdef BCE_DEBUG @@ -416,11 +408,10 @@ return(ENOMEM); /* Print out the device identity. */ - snprintf(descbuf, BCE_DEVDESC_MAX, "%s (%c%d), %s", + snprintf(descbuf, BCE_DEVDESC_MAX, "%s (%c%d)", t->bce_name, (((pci_read_config(dev, PCIR_REVID, 4) & 0xf0) >> 4) + 'A'), - (pci_read_config(dev, PCIR_REVID, 4) & 0xf), - bce_driver_version); + (pci_read_config(dev, PCIR_REVID, 4) & 0xf)); device_set_desc_copy(dev, descbuf); free(descbuf, M_TEMP); @@ -473,7 +464,7 @@ RF_ACTIVE | PCI_RF_DENSE); /* flags */ if (sc->bce_res == NULL) { - BCE_PRINTF(sc, "%s(%d): PCI memory allocation failed\n", + BCE_PRINTF("%s(%d): PCI memory allocation failed\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; @@ -495,7 +486,7 @@ RF_SHAREABLE | RF_ACTIVE); if (sc->bce_irq == NULL) { - BCE_PRINTF(sc, "%s(%d): PCI map interrupt failed\n", + BCE_PRINTF("%s(%d): PCI map interrupt failed\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; @@ -523,7 +514,7 @@ case BCE_CHIP_ID_5706_A1: case BCE_CHIP_ID_5708_A0: case BCE_CHIP_ID_5708_B0: - BCE_PRINTF(sc, "%s(%d): Unsupported controller revision (%c%d)!\n", + BCE_PRINTF("%s(%d): Unsupported controller revision (%c%d)!\n", __FILE__, __LINE__, (((pci_read_config(dev, PCIR_REVID, 4) & 0xf0) >> 4) + 'A'), (pci_read_config(dev, PCIR_REVID, 4) & 0xf)); @@ -603,7 +594,7 @@ if (val & BCE_PCICFG_MISC_STATUS_32BIT_DET) sc->bce_flags |= BCE_PCI_32BIT_FLAG; - BCE_PRINTF(sc, "ASIC ID 0x%08X; Revision (%c%d); PCI%s %s %dMHz\n", + BCE_PRINTF("ASIC ID 0x%08X; Revision (%c%d); PCI%s %s %dMHz\n", sc->bce_chipid, ((BCE_CHIP_ID(sc) & 0xf000) >> 12) + 'A', ((BCE_CHIP_ID(sc) & 0x0ff0) >> 4), @@ -619,7 +610,7 @@ /* Initialize the controller. */ if (bce_chipinit(sc)) { - BCE_PRINTF(sc, "%s(%d): Controller initialization failed!\n", + BCE_PRINTF("%s(%d): Controller initialization failed!\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; @@ -627,7 +618,7 @@ /* Perform NVRAM test. */ if (bce_nvram_test(sc)) { - BCE_PRINTF(sc, "%s(%d): NVRAM test failed!\n", + BCE_PRINTF("%s(%d): NVRAM test failed!\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; @@ -693,7 +684,7 @@ /* Allocate DMA memory resources. */ if (bce_dma_alloc(dev)) { - BCE_PRINTF(sc, "%s(%d): DMA resource allocation failed!\n", + BCE_PRINTF("%s(%d): DMA resource allocation failed!\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; @@ -702,7 +693,7 @@ /* Allocate an ifnet structure. */ ifp = sc->bce_ifp = if_alloc(IFT_ETHER); if (ifp == NULL) { - BCE_PRINTF(sc, "%s(%d): Interface allocation failed!\n", + BCE_PRINTF("%s(%d): Interface allocation failed!\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; @@ -738,7 +729,7 @@ /* Look for our PHY. */ if (mii_phy_probe(dev, &sc->bce_miibus, bce_ifmedia_upd, bce_ifmedia_sts)) { - BCE_PRINTF(sc, "%s(%d): PHY probe failed!\n", + BCE_PRINTF("%s(%d): PHY probe failed!\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; @@ -758,7 +749,7 @@ bce_intr, sc, &sc->bce_intrhand); if (rc) { - BCE_PRINTF(sc, "%s(%d): Failed to setup IRQ!\n", + BCE_PRINTF("%s(%d): Failed to setup IRQ!\n", __FILE__, __LINE__); bce_detach(dev); goto bce_attach_exit; @@ -771,9 +762,9 @@ bce_add_sysctls(sc); /* Get the firmware running so IPMI still works */ - BCE_LOCK(sc); + BCE_LOCK(sc); bce_mgmt_init_locked(sc); - BCE_UNLOCK(sc); + BCE_UNLOCK(sc); goto bce_attach_exit; @@ -984,7 +975,7 @@ } if (val & BCE_EMAC_MDIO_COMM_START_BUSY) { - BCE_PRINTF(sc, "%s(%d): Error: PHY read timeout! phy = %d, reg = 0x%04X\n", + BCE_PRINTF("%s(%d): Error: PHY read timeout! phy = %d, reg = 0x%04X\n", __FILE__, __LINE__, phy, reg); val = 0x0; } else { @@ -1061,7 +1052,7 @@ } if (val1 & BCE_EMAC_MDIO_COMM_START_BUSY) - BCE_PRINTF(sc, "%s(%d): PHY write timeout!\n", + BCE_PRINTF("%s(%d): PHY write timeout!\n", __FILE__, __LINE__); if (sc->bce_phy_flags & BCE_PHY_INT_MODE_AUTO_POLLING_FLAG) { @@ -1415,7 +1406,7 @@ /* Check for errors. */ if (i >= NVRAM_TIMEOUT_COUNT) { - BCE_PRINTF(sc, "%s(%d): Timeout error reading NVRAM at offset 0x%08X!\n", + BCE_PRINTF("%s(%d): Timeout error reading NVRAM at offset 0x%08X!\n", __FILE__, __LINE__, offset); rc = EBUSY; } @@ -1471,7 +1462,7 @@ break; } if (j >= NVRAM_TIMEOUT_COUNT) { - BCE_PRINTF(sc, "%s(%d): Timeout error writing NVRAM at offset 0x%08X\n", + BCE_PRINTF("%s(%d): Timeout error writing NVRAM at offset 0x%08X\n", __FILE__, __LINE__, offset); >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Tue May 8 18:03:37 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D7EBF16A408; Tue, 8 May 2007 18:03:36 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4048316A403 for ; Tue, 8 May 2007 18:03:36 +0000 (UTC) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2AE3413C489 for ; Tue, 8 May 2007 18:03:36 +0000 (UTC) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l48I3ZcI013818 for ; Tue, 8 May 2007 18:03:36 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l48I3UPu013791 for perforce@freebsd.org; Tue, 8 May 2007 18:03:30 GMT (envelope-from marcel@freebsd.org) Date: Tue, 8 May 2007 18:03:30 GMT Message-Id: <200705081803.l48I3UPu013791@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Cc: Subject: PERFORCE change 119491 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 18:03:37 -0000 http://perforce.freebsd.org/chv.cgi?CH=119491 Change 119491 by marcel@marcel_jnpr on 2007/05/08 17:48:57 Bootstrap the e500 branch. It will be used to merge support for Freescale's MPC85xx processors, based on the e500 core (PowerPC). The work has been done by Juniper and Semihalf. Affected files ... .. //depot/projects/e500/COPYRIGHT#1 branch .. //depot/projects/e500/LOCKS#1 branch .. //depot/projects/e500/MAINTAINERS#1 branch .. //depot/projects/e500/Makefile#1 branch .. //depot/projects/e500/Makefile.inc1#1 branch .. //depot/projects/e500/ObsoleteFiles.inc#1 branch .. //depot/projects/e500/README#1 branch .. //depot/projects/e500/UPDATING#1 branch .. //depot/projects/e500/bin/Makefile#1 branch .. //depot/projects/e500/bin/Makefile.inc#1 branch .. //depot/projects/e500/bin/cat/Makefile#1 branch .. //depot/projects/e500/bin/cat/cat.1#1 branch .. //depot/projects/e500/bin/cat/cat.c#1 branch .. //depot/projects/e500/bin/chflags/Makefile#1 branch .. //depot/projects/e500/bin/chflags/chflags.1#1 branch .. //depot/projects/e500/bin/chflags/chflags.c#1 branch .. //depot/projects/e500/bin/chio/Makefile#1 branch .. //depot/projects/e500/bin/chio/chio.1#1 branch .. //depot/projects/e500/bin/chio/chio.c#1 branch .. //depot/projects/e500/bin/chio/defs.h#1 branch .. //depot/projects/e500/bin/chio/pathnames.h#1 branch .. //depot/projects/e500/bin/chmod/Makefile#1 branch .. //depot/projects/e500/bin/chmod/chmod.1#1 branch .. //depot/projects/e500/bin/chmod/chmod.c#1 branch .. //depot/projects/e500/bin/cp/Makefile#1 branch .. //depot/projects/e500/bin/cp/cp.1#1 branch .. //depot/projects/e500/bin/cp/cp.c#1 branch .. //depot/projects/e500/bin/cp/extern.h#1 branch .. //depot/projects/e500/bin/cp/utils.c#1 branch .. //depot/projects/e500/bin/csh/Makefile#1 branch .. //depot/projects/e500/bin/csh/USD.doc/csh.1#1 branch .. //depot/projects/e500/bin/csh/USD.doc/csh.2#1 branch .. //depot/projects/e500/bin/csh/USD.doc/csh.3#1 branch .. //depot/projects/e500/bin/csh/USD.doc/csh.4#1 branch .. //depot/projects/e500/bin/csh/USD.doc/csh.a#1 branch .. //depot/projects/e500/bin/csh/USD.doc/csh.g#1 branch .. //depot/projects/e500/bin/csh/USD.doc/tabs#1 branch .. //depot/projects/e500/bin/csh/config.h#1 branch .. //depot/projects/e500/bin/csh/config_p.h#1 branch .. //depot/projects/e500/bin/csh/host.defs#1 branch .. //depot/projects/e500/bin/csh/iconv.h#1 branch .. //depot/projects/e500/bin/csh/iconv_stub.c#1 branch .. //depot/projects/e500/bin/date/Makefile#1 branch .. //depot/projects/e500/bin/date/date.1#1 branch .. //depot/projects/e500/bin/date/date.c#1 branch .. //depot/projects/e500/bin/date/extern.h#1 branch .. //depot/projects/e500/bin/date/netdate.c#1 branch .. //depot/projects/e500/bin/date/vary.c#1 branch .. //depot/projects/e500/bin/date/vary.h#1 branch .. //depot/projects/e500/bin/dd/Makefile#1 branch .. //depot/projects/e500/bin/dd/args.c#1 branch .. //depot/projects/e500/bin/dd/conv.c#1 branch .. //depot/projects/e500/bin/dd/conv_tab.c#1 branch .. //depot/projects/e500/bin/dd/dd.1#1 branch .. //depot/projects/e500/bin/dd/dd.c#1 branch .. //depot/projects/e500/bin/dd/dd.h#1 branch .. //depot/projects/e500/bin/dd/extern.h#1 branch .. //depot/projects/e500/bin/dd/gen.c#1 branch .. //depot/projects/e500/bin/dd/misc.c#1 branch .. //depot/projects/e500/bin/dd/position.c#1 branch .. //depot/projects/e500/bin/dd/ref.ascii#1 branch .. //depot/projects/e500/bin/dd/ref.ebcdic#1 branch .. //depot/projects/e500/bin/dd/ref.ibm#1 branch .. //depot/projects/e500/bin/dd/ref.lcase#1 branch .. //depot/projects/e500/bin/dd/ref.oldascii#1 branch .. //depot/projects/e500/bin/dd/ref.oldebcdic#1 branch .. //depot/projects/e500/bin/dd/ref.oldibm#1 branch .. //depot/projects/e500/bin/dd/ref.pareven#1 branch .. //depot/projects/e500/bin/dd/ref.parnone#1 branch .. //depot/projects/e500/bin/dd/ref.parodd#1 branch .. //depot/projects/e500/bin/dd/ref.parset#1 branch .. //depot/projects/e500/bin/dd/ref.swab#1 branch .. //depot/projects/e500/bin/dd/ref.ucase#1 branch .. //depot/projects/e500/bin/df/Makefile#1 branch .. //depot/projects/e500/bin/df/df.1#1 branch .. //depot/projects/e500/bin/df/df.c#1 branch .. //depot/projects/e500/bin/domainname/Makefile#1 branch .. //depot/projects/e500/bin/domainname/domainname.1#1 branch .. //depot/projects/e500/bin/domainname/domainname.c#1 branch .. //depot/projects/e500/bin/echo/Makefile#1 branch .. //depot/projects/e500/bin/echo/echo.1#1 branch .. //depot/projects/e500/bin/echo/echo.c#1 branch .. //depot/projects/e500/bin/ed/Makefile#1 branch .. //depot/projects/e500/bin/ed/POSIX#1 branch .. //depot/projects/e500/bin/ed/README#1 branch .. //depot/projects/e500/bin/ed/buf.c#1 branch .. //depot/projects/e500/bin/ed/cbc.c#1 branch .. //depot/projects/e500/bin/ed/ed.1#1 branch .. //depot/projects/e500/bin/ed/ed.h#1 branch .. //depot/projects/e500/bin/ed/glbl.c#1 branch .. //depot/projects/e500/bin/ed/io.c#1 branch .. //depot/projects/e500/bin/ed/main.c#1 branch .. //depot/projects/e500/bin/ed/re.c#1 branch .. //depot/projects/e500/bin/ed/sub.c#1 branch .. //depot/projects/e500/bin/ed/test/=.err#1 branch .. //depot/projects/e500/bin/ed/test/Makefile#1 branch .. //depot/projects/e500/bin/ed/test/README#1 branch .. //depot/projects/e500/bin/ed/test/TODO#1 branch .. //depot/projects/e500/bin/ed/test/a.d#1 branch .. //depot/projects/e500/bin/ed/test/a.r#1 branch .. //depot/projects/e500/bin/ed/test/a.t#1 branch .. //depot/projects/e500/bin/ed/test/a1.err#1 branch .. //depot/projects/e500/bin/ed/test/a2.err#1 branch .. //depot/projects/e500/bin/ed/test/addr.d#1 branch .. //depot/projects/e500/bin/ed/test/addr.r#1 branch .. //depot/projects/e500/bin/ed/test/addr.t#1 branch .. //depot/projects/e500/bin/ed/test/addr1.err#1 branch .. //depot/projects/e500/bin/ed/test/addr2.err#1 branch .. //depot/projects/e500/bin/ed/test/ascii.d.uu#1 branch .. //depot/projects/e500/bin/ed/test/ascii.r.uu#1 branch .. //depot/projects/e500/bin/ed/test/ascii.t#1 branch .. //depot/projects/e500/bin/ed/test/bang1.d#1 branch .. //depot/projects/e500/bin/ed/test/bang1.err#1 branch .. //depot/projects/e500/bin/ed/test/bang1.r#1 branch .. //depot/projects/e500/bin/ed/test/bang1.t#1 branch .. //depot/projects/e500/bin/ed/test/bang2.err#1 branch .. //depot/projects/e500/bin/ed/test/c.d#1 branch .. //depot/projects/e500/bin/ed/test/c.r#1 branch .. //depot/projects/e500/bin/ed/test/c.t#1 branch .. //depot/projects/e500/bin/ed/test/c1.err#1 branch .. //depot/projects/e500/bin/ed/test/c2.err#1 branch .. //depot/projects/e500/bin/ed/test/ckscripts.sh#1 branch .. //depot/projects/e500/bin/ed/test/d.d#1 branch .. //depot/projects/e500/bin/ed/test/d.err#1 branch .. //depot/projects/e500/bin/ed/test/d.r#1 branch .. //depot/projects/e500/bin/ed/test/d.t#1 branch .. //depot/projects/e500/bin/ed/test/e1.d#1 branch .. //depot/projects/e500/bin/ed/test/e1.err#1 branch .. //depot/projects/e500/bin/ed/test/e1.r#1 branch .. //depot/projects/e500/bin/ed/test/e1.t#1 branch .. //depot/projects/e500/bin/ed/test/e2.d#1 branch .. //depot/projects/e500/bin/ed/test/e2.err#1 branch .. //depot/projects/e500/bin/ed/test/e2.r#1 branch .. //depot/projects/e500/bin/ed/test/e2.t#1 branch .. //depot/projects/e500/bin/ed/test/e3.d#1 branch .. //depot/projects/e500/bin/ed/test/e3.err#1 branch .. //depot/projects/e500/bin/ed/test/e3.r#1 branch .. //depot/projects/e500/bin/ed/test/e3.t#1 branch .. //depot/projects/e500/bin/ed/test/e4.d#1 branch .. //depot/projects/e500/bin/ed/test/e4.r#1 branch .. //depot/projects/e500/bin/ed/test/e4.t#1 branch .. //depot/projects/e500/bin/ed/test/f1.err#1 branch .. //depot/projects/e500/bin/ed/test/f2.err#1 branch .. //depot/projects/e500/bin/ed/test/g1.d#1 branch .. //depot/projects/e500/bin/ed/test/g1.err#1 branch .. //depot/projects/e500/bin/ed/test/g1.r#1 branch .. //depot/projects/e500/bin/ed/test/g1.t#1 branch .. //depot/projects/e500/bin/ed/test/g2.d#1 branch .. //depot/projects/e500/bin/ed/test/g2.err#1 branch .. //depot/projects/e500/bin/ed/test/g2.r#1 branch .. //depot/projects/e500/bin/ed/test/g2.t#1 branch .. //depot/projects/e500/bin/ed/test/g3.d#1 branch .. //depot/projects/e500/bin/ed/test/g3.err#1 branch .. //depot/projects/e500/bin/ed/test/g3.r#1 branch .. //depot/projects/e500/bin/ed/test/g3.t#1 branch .. //depot/projects/e500/bin/ed/test/g4.d#1 branch .. //depot/projects/e500/bin/ed/test/g4.r#1 branch .. //depot/projects/e500/bin/ed/test/g4.t#1 branch .. //depot/projects/e500/bin/ed/test/g5.d#1 branch .. //depot/projects/e500/bin/ed/test/g5.r#1 branch .. //depot/projects/e500/bin/ed/test/g5.t#1 branch .. //depot/projects/e500/bin/ed/test/h.err#1 branch .. //depot/projects/e500/bin/ed/test/i.d#1 branch .. //depot/projects/e500/bin/ed/test/i.r#1 branch .. //depot/projects/e500/bin/ed/test/i.t#1 branch .. //depot/projects/e500/bin/ed/test/i1.err#1 branch .. //depot/projects/e500/bin/ed/test/i2.err#1 branch .. //depot/projects/e500/bin/ed/test/i3.err#1 branch .. //depot/projects/e500/bin/ed/test/j.d#1 branch .. //depot/projects/e500/bin/ed/test/j.r#1 branch .. //depot/projects/e500/bin/ed/test/j.t#1 branch .. //depot/projects/e500/bin/ed/test/k.d#1 branch .. //depot/projects/e500/bin/ed/test/k.r#1 branch .. //depot/projects/e500/bin/ed/test/k.t#1 branch .. //depot/projects/e500/bin/ed/test/k1.err#1 branch .. //depot/projects/e500/bin/ed/test/k2.err#1 branch .. //depot/projects/e500/bin/ed/test/k3.err#1 branch .. //depot/projects/e500/bin/ed/test/k4.err#1 branch .. //depot/projects/e500/bin/ed/test/l.d#1 branch .. //depot/projects/e500/bin/ed/test/l.r#1 branch .. //depot/projects/e500/bin/ed/test/l.t#1 branch .. //depot/projects/e500/bin/ed/test/m.d#1 branch .. //depot/projects/e500/bin/ed/test/m.err#1 branch .. //depot/projects/e500/bin/ed/test/m.r#1 branch .. //depot/projects/e500/bin/ed/test/m.t#1 branch .. //depot/projects/e500/bin/ed/test/mkscripts.sh#1 branch .. //depot/projects/e500/bin/ed/test/n.d#1 branch .. //depot/projects/e500/bin/ed/test/n.r#1 branch .. //depot/projects/e500/bin/ed/test/n.t#1 branch .. //depot/projects/e500/bin/ed/test/nl.err#1 branch .. //depot/projects/e500/bin/ed/test/nl1.d#1 branch .. //depot/projects/e500/bin/ed/test/nl1.r#1 branch .. //depot/projects/e500/bin/ed/test/nl1.t#1 branch .. //depot/projects/e500/bin/ed/test/nl2.d#1 branch .. //depot/projects/e500/bin/ed/test/nl2.r#1 branch .. //depot/projects/e500/bin/ed/test/nl2.t#1 branch .. //depot/projects/e500/bin/ed/test/p.d#1 branch .. //depot/projects/e500/bin/ed/test/p.r#1 branch .. //depot/projects/e500/bin/ed/test/p.t#1 branch .. //depot/projects/e500/bin/ed/test/q.d#1 branch .. //depot/projects/e500/bin/ed/test/q.r#1 branch .. //depot/projects/e500/bin/ed/test/q.t#1 branch .. //depot/projects/e500/bin/ed/test/q1.err#1 branch .. //depot/projects/e500/bin/ed/test/r1.d#1 branch .. //depot/projects/e500/bin/ed/test/r1.err#1 branch .. //depot/projects/e500/bin/ed/test/r1.r#1 branch .. //depot/projects/e500/bin/ed/test/r1.t#1 branch .. //depot/projects/e500/bin/ed/test/r2.d#1 branch .. //depot/projects/e500/bin/ed/test/r2.err#1 branch .. //depot/projects/e500/bin/ed/test/r2.r#1 branch .. //depot/projects/e500/bin/ed/test/r2.t#1 branch .. //depot/projects/e500/bin/ed/test/r3.d#1 branch .. //depot/projects/e500/bin/ed/test/r3.r#1 branch .. //depot/projects/e500/bin/ed/test/r3.t#1 branch .. //depot/projects/e500/bin/ed/test/s1.d#1 branch .. //depot/projects/e500/bin/ed/test/s1.err#1 branch .. //depot/projects/e500/bin/ed/test/s1.r#1 branch .. //depot/projects/e500/bin/ed/test/s1.t#1 branch .. //depot/projects/e500/bin/ed/test/s10.err#1 branch .. //depot/projects/e500/bin/ed/test/s2.d#1 branch .. //depot/projects/e500/bin/ed/test/s2.err#1 branch .. //depot/projects/e500/bin/ed/test/s2.r#1 branch .. //depot/projects/e500/bin/ed/test/s2.t#1 branch .. //depot/projects/e500/bin/ed/test/s3.d#1 branch .. //depot/projects/e500/bin/ed/test/s3.err#1 branch .. //depot/projects/e500/bin/ed/test/s3.r#1 branch .. //depot/projects/e500/bin/ed/test/s3.t#1 branch .. //depot/projects/e500/bin/ed/test/s4.err#1 branch .. //depot/projects/e500/bin/ed/test/s5.err#1 branch .. //depot/projects/e500/bin/ed/test/s6.err#1 branch .. //depot/projects/e500/bin/ed/test/s7.err#1 branch .. //depot/projects/e500/bin/ed/test/s8.err#1 branch .. //depot/projects/e500/bin/ed/test/s9.err#1 branch .. //depot/projects/e500/bin/ed/test/t.d#1 branch .. //depot/projects/e500/bin/ed/test/t.r#1 branch .. //depot/projects/e500/bin/ed/test/t1.d#1 branch .. //depot/projects/e500/bin/ed/test/t1.err#1 branch .. //depot/projects/e500/bin/ed/test/t1.r#1 branch .. //depot/projects/e500/bin/ed/test/t1.t#1 branch .. //depot/projects/e500/bin/ed/test/t2.d#1 branch .. //depot/projects/e500/bin/ed/test/t2.err#1 branch .. //depot/projects/e500/bin/ed/test/t2.r#1 branch .. //depot/projects/e500/bin/ed/test/t2.t#1 branch .. //depot/projects/e500/bin/ed/test/u.d#1 branch .. //depot/projects/e500/bin/ed/test/u.err#1 branch .. //depot/projects/e500/bin/ed/test/u.r#1 branch .. //depot/projects/e500/bin/ed/test/u.t#1 branch .. //depot/projects/e500/bin/ed/test/v.d#1 branch .. //depot/projects/e500/bin/ed/test/v.r#1 branch .. //depot/projects/e500/bin/ed/test/v.t#1 branch .. //depot/projects/e500/bin/ed/test/w.d#1 branch .. //depot/projects/e500/bin/ed/test/w.r#1 branch .. //depot/projects/e500/bin/ed/test/w.t#1 branch .. //depot/projects/e500/bin/ed/test/w1.err#1 branch .. //depot/projects/e500/bin/ed/test/w2.err#1 branch .. //depot/projects/e500/bin/ed/test/w3.err#1 branch .. //depot/projects/e500/bin/ed/test/x.err#1 branch .. //depot/projects/e500/bin/ed/test/z.err#1 branch .. //depot/projects/e500/bin/ed/undo.c#1 branch .. //depot/projects/e500/bin/expr/Makefile#1 branch .. //depot/projects/e500/bin/expr/expr.1#1 branch .. //depot/projects/e500/bin/expr/expr.y#1 branch .. //depot/projects/e500/bin/getfacl/Makefile#1 branch .. //depot/projects/e500/bin/getfacl/getfacl.1#1 branch .. //depot/projects/e500/bin/getfacl/getfacl.c#1 branch .. //depot/projects/e500/bin/hostname/Makefile#1 branch .. //depot/projects/e500/bin/hostname/hostname.1#1 branch .. //depot/projects/e500/bin/hostname/hostname.c#1 branch .. //depot/projects/e500/bin/kenv/Makefile#1 branch .. //depot/projects/e500/bin/kenv/kenv.1#1 branch .. //depot/projects/e500/bin/kenv/kenv.c#1 branch .. //depot/projects/e500/bin/kill/Makefile#1 branch .. //depot/projects/e500/bin/kill/kill.1#1 branch .. //depot/projects/e500/bin/kill/kill.c#1 branch .. //depot/projects/e500/bin/ln/Makefile#1 branch .. //depot/projects/e500/bin/ln/ln.1#1 branch .. //depot/projects/e500/bin/ln/ln.c#1 branch .. //depot/projects/e500/bin/ln/symlink.7#1 branch .. //depot/projects/e500/bin/ls/Makefile#1 branch .. //depot/projects/e500/bin/ls/cmp.c#1 branch .. //depot/projects/e500/bin/ls/extern.h#1 branch .. //depot/projects/e500/bin/ls/ls.1#1 branch .. //depot/projects/e500/bin/ls/ls.c#1 branch .. //depot/projects/e500/bin/ls/ls.h#1 branch .. //depot/projects/e500/bin/ls/print.c#1 branch .. //depot/projects/e500/bin/ls/util.c#1 branch .. //depot/projects/e500/bin/mkdir/Makefile#1 branch .. //depot/projects/e500/bin/mkdir/mkdir.1#1 branch .. //depot/projects/e500/bin/mkdir/mkdir.c#1 branch .. //depot/projects/e500/bin/mv/Makefile#1 branch .. //depot/projects/e500/bin/mv/mv.1#1 branch .. //depot/projects/e500/bin/mv/mv.c#1 branch .. //depot/projects/e500/bin/pax/Makefile#1 branch .. //depot/projects/e500/bin/pax/ar_io.c#1 branch .. //depot/projects/e500/bin/pax/ar_subs.c#1 branch .. //depot/projects/e500/bin/pax/buf_subs.c#1 branch .. //depot/projects/e500/bin/pax/cache.c#1 branch .. //depot/projects/e500/bin/pax/cache.h#1 branch .. //depot/projects/e500/bin/pax/cpio.1#1 branch .. //depot/projects/e500/bin/pax/cpio.c#1 branch .. //depot/projects/e500/bin/pax/cpio.h#1 branch .. //depot/projects/e500/bin/pax/extern.h#1 branch .. //depot/projects/e500/bin/pax/file_subs.c#1 branch .. //depot/projects/e500/bin/pax/ftree.c#1 branch .. //depot/projects/e500/bin/pax/ftree.h#1 branch .. //depot/projects/e500/bin/pax/gen_subs.c#1 branch .. //depot/projects/e500/bin/pax/getoldopt.c#1 branch .. //depot/projects/e500/bin/pax/options.c#1 branch .. //depot/projects/e500/bin/pax/options.h#1 branch .. //depot/projects/e500/bin/pax/pat_rep.c#1 branch .. //depot/projects/e500/bin/pax/pat_rep.h#1 branch .. //depot/projects/e500/bin/pax/pax.1#1 branch .. //depot/projects/e500/bin/pax/pax.c#1 branch .. //depot/projects/e500/bin/pax/pax.h#1 branch .. //depot/projects/e500/bin/pax/sel_subs.c#1 branch .. //depot/projects/e500/bin/pax/sel_subs.h#1 branch .. //depot/projects/e500/bin/pax/tables.c#1 branch .. //depot/projects/e500/bin/pax/tables.h#1 branch .. //depot/projects/e500/bin/pax/tar.1#1 branch .. //depot/projects/e500/bin/pax/tar.c#1 branch .. //depot/projects/e500/bin/pax/tar.h#1 branch .. //depot/projects/e500/bin/pax/tty_subs.c#1 branch .. //depot/projects/e500/bin/ps/Makefile#1 branch .. //depot/projects/e500/bin/ps/extern.h#1 branch .. //depot/projects/e500/bin/ps/fmt.c#1 branch .. //depot/projects/e500/bin/ps/keyword.c#1 branch .. //depot/projects/e500/bin/ps/nlist.c#1 branch .. //depot/projects/e500/bin/ps/print.c#1 branch .. //depot/projects/e500/bin/ps/ps.1#1 branch .. //depot/projects/e500/bin/ps/ps.c#1 branch .. //depot/projects/e500/bin/ps/ps.h#1 branch .. //depot/projects/e500/bin/pwd/Makefile#1 branch .. //depot/projects/e500/bin/pwd/pwd.1#1 branch .. //depot/projects/e500/bin/pwd/pwd.c#1 branch .. //depot/projects/e500/bin/rcp/Makefile#1 branch .. //depot/projects/e500/bin/rcp/extern.h#1 branch .. //depot/projects/e500/bin/rcp/rcp.1#1 branch .. //depot/projects/e500/bin/rcp/rcp.c#1 branch .. //depot/projects/e500/bin/rcp/util.c#1 branch .. //depot/projects/e500/bin/realpath/Makefile#1 branch .. //depot/projects/e500/bin/realpath/realpath.1#1 branch .. //depot/projects/e500/bin/realpath/realpath.c#1 branch .. //depot/projects/e500/bin/rm/Makefile#1 branch .. //depot/projects/e500/bin/rm/rm.1#1 branch .. //depot/projects/e500/bin/rm/rm.c#1 branch .. //depot/projects/e500/bin/rmail/Makefile#1 branch .. //depot/projects/e500/bin/rmdir/Makefile#1 branch .. //depot/projects/e500/bin/rmdir/rmdir.1#1 branch .. //depot/projects/e500/bin/rmdir/rmdir.c#1 branch .. //depot/projects/e500/bin/setfacl/Makefile#1 branch .. //depot/projects/e500/bin/setfacl/file.c#1 branch .. //depot/projects/e500/bin/setfacl/mask.c#1 branch .. //depot/projects/e500/bin/setfacl/merge.c#1 branch .. //depot/projects/e500/bin/setfacl/remove.c#1 branch .. //depot/projects/e500/bin/setfacl/setfacl.1#1 branch .. //depot/projects/e500/bin/setfacl/setfacl.c#1 branch .. //depot/projects/e500/bin/setfacl/setfacl.h#1 branch .. //depot/projects/e500/bin/setfacl/util.c#1 branch .. //depot/projects/e500/bin/sh/Makefile#1 branch .. //depot/projects/e500/bin/sh/TOUR#1 branch .. //depot/projects/e500/bin/sh/alias.c#1 branch .. //depot/projects/e500/bin/sh/alias.h#1 branch .. //depot/projects/e500/bin/sh/arith.h#1 branch .. //depot/projects/e500/bin/sh/arith.y#1 branch .. //depot/projects/e500/bin/sh/arith_lex.l#1 branch .. //depot/projects/e500/bin/sh/bltin/bltin.h#1 branch .. //depot/projects/e500/bin/sh/bltin/echo.1#1 branch .. //depot/projects/e500/bin/sh/bltin/echo.c#1 branch .. //depot/projects/e500/bin/sh/builtins.def#1 branch .. //depot/projects/e500/bin/sh/cd.c#1 branch .. //depot/projects/e500/bin/sh/cd.h#1 branch .. //depot/projects/e500/bin/sh/error.c#1 branch .. //depot/projects/e500/bin/sh/error.h#1 branch .. //depot/projects/e500/bin/sh/eval.c#1 branch .. //depot/projects/e500/bin/sh/eval.h#1 branch .. //depot/projects/e500/bin/sh/exec.c#1 branch .. //depot/projects/e500/bin/sh/exec.h#1 branch .. //depot/projects/e500/bin/sh/expand.c#1 branch .. //depot/projects/e500/bin/sh/expand.h#1 branch .. //depot/projects/e500/bin/sh/funcs/cmv#1 branch .. //depot/projects/e500/bin/sh/funcs/dirs#1 branch .. //depot/projects/e500/bin/sh/funcs/kill#1 branch .. //depot/projects/e500/bin/sh/funcs/login#1 branch .. //depot/projects/e500/bin/sh/funcs/newgrp#1 branch .. //depot/projects/e500/bin/sh/funcs/popd#1 branch .. //depot/projects/e500/bin/sh/funcs/pushd#1 branch .. //depot/projects/e500/bin/sh/funcs/suspend#1 branch .. //depot/projects/e500/bin/sh/histedit.c#1 branch .. //depot/projects/e500/bin/sh/init.h#1 branch .. //depot/projects/e500/bin/sh/input.c#1 branch .. //depot/projects/e500/bin/sh/input.h#1 branch .. //depot/projects/e500/bin/sh/jobs.c#1 branch .. //depot/projects/e500/bin/sh/jobs.h#1 branch .. //depot/projects/e500/bin/sh/mail.c#1 branch .. //depot/projects/e500/bin/sh/mail.h#1 branch .. //depot/projects/e500/bin/sh/main.c#1 branch .. //depot/projects/e500/bin/sh/main.h#1 branch .. //depot/projects/e500/bin/sh/memalloc.c#1 branch .. //depot/projects/e500/bin/sh/memalloc.h#1 branch .. //depot/projects/e500/bin/sh/miscbltin.c#1 branch .. //depot/projects/e500/bin/sh/mkbuiltins#1 branch .. //depot/projects/e500/bin/sh/mkinit.c#1 branch .. //depot/projects/e500/bin/sh/mknodes.c#1 branch .. //depot/projects/e500/bin/sh/mksyntax.c#1 branch .. //depot/projects/e500/bin/sh/mktokens#1 branch .. //depot/projects/e500/bin/sh/myhistedit.h#1 branch .. //depot/projects/e500/bin/sh/mystring.c#1 branch .. //depot/projects/e500/bin/sh/mystring.h#1 branch .. //depot/projects/e500/bin/sh/nodes.c.pat#1 branch .. //depot/projects/e500/bin/sh/nodetypes#1 branch .. //depot/projects/e500/bin/sh/options.c#1 branch .. //depot/projects/e500/bin/sh/options.h#1 branch .. //depot/projects/e500/bin/sh/output.c#1 branch .. //depot/projects/e500/bin/sh/output.h#1 branch .. //depot/projects/e500/bin/sh/parser.c#1 branch .. //depot/projects/e500/bin/sh/parser.h#1 branch .. //depot/projects/e500/bin/sh/redir.c#1 branch .. //depot/projects/e500/bin/sh/redir.h#1 branch .. //depot/projects/e500/bin/sh/sh.1#1 branch .. //depot/projects/e500/bin/sh/shell.h#1 branch .. //depot/projects/e500/bin/sh/show.c#1 branch .. //depot/projects/e500/bin/sh/show.h#1 branch .. //depot/projects/e500/bin/sh/trap.c#1 branch .. //depot/projects/e500/bin/sh/trap.h#1 branch .. //depot/projects/e500/bin/sh/var.c#1 branch .. //depot/projects/e500/bin/sh/var.h#1 branch .. //depot/projects/e500/bin/sleep/Makefile#1 branch .. //depot/projects/e500/bin/sleep/sleep.1#1 branch .. //depot/projects/e500/bin/sleep/sleep.c#1 branch .. //depot/projects/e500/bin/stty/Makefile#1 branch .. //depot/projects/e500/bin/stty/cchar.c#1 branch .. //depot/projects/e500/bin/stty/extern.h#1 branch .. //depot/projects/e500/bin/stty/gfmt.c#1 branch .. //depot/projects/e500/bin/stty/key.c#1 branch .. //depot/projects/e500/bin/stty/modes.c#1 branch .. //depot/projects/e500/bin/stty/print.c#1 branch .. //depot/projects/e500/bin/stty/stty.1#1 branch .. //depot/projects/e500/bin/stty/stty.c#1 branch .. //depot/projects/e500/bin/stty/stty.h#1 branch .. //depot/projects/e500/bin/stty/util.c#1 branch .. //depot/projects/e500/bin/sync/Makefile#1 branch .. //depot/projects/e500/bin/sync/sync.8#1 branch .. //depot/projects/e500/bin/sync/sync.c#1 branch .. //depot/projects/e500/bin/test/Makefile#1 branch .. //depot/projects/e500/bin/test/TEST.README#1 branch .. //depot/projects/e500/bin/test/TEST.csh#1 branch .. //depot/projects/e500/bin/test/TEST.sh#1 branch .. //depot/projects/e500/bin/test/test.1#1 branch .. //depot/projects/e500/bin/test/test.c#1 branch .. //depot/projects/e500/cddl/Makefile#1 branch .. //depot/projects/e500/cddl/Makefile.inc#1 branch .. //depot/projects/e500/cddl/lib/Makefile#1 branch .. //depot/projects/e500/cddl/lib/Makefile.inc#1 branch .. //depot/projects/e500/cddl/lib/libavl/Makefile#1 branch .. //depot/projects/e500/cddl/lib/libnvpair/Makefile#1 branch .. //depot/projects/e500/cddl/lib/libumem/Makefile#1 branch .. //depot/projects/e500/cddl/lib/libuutil/Makefile#1 branch .. //depot/projects/e500/cddl/lib/libzfs/Makefile#1 branch .. //depot/projects/e500/cddl/lib/libzpool/Makefile#1 branch .. //depot/projects/e500/cddl/sbin/Makefile#1 branch .. //depot/projects/e500/cddl/sbin/Makefile.inc#1 branch .. //depot/projects/e500/cddl/sbin/zfs/Makefile#1 branch .. //depot/projects/e500/cddl/sbin/zpool/Makefile#1 branch .. //depot/projects/e500/cddl/usr.bin/Makefile#1 branch .. //depot/projects/e500/cddl/usr.bin/Makefile.inc#1 branch .. //depot/projects/e500/cddl/usr.bin/ztest/Makefile#1 branch .. //depot/projects/e500/cddl/usr.sbin/Makefile#1 branch .. //depot/projects/e500/cddl/usr.sbin/Makefile.inc#1 branch .. //depot/projects/e500/cddl/usr.sbin/zdb/Makefile#1 branch .. //depot/projects/e500/compat/opensolaris/include/devid.h#1 branch .. //depot/projects/e500/compat/opensolaris/include/fsshare.h#1 branch .. //depot/projects/e500/compat/opensolaris/include/libintl.h#1 branch .. //depot/projects/e500/compat/opensolaris/include/mnttab.h#1 branch .. //depot/projects/e500/compat/opensolaris/include/priv.h#1 branch .. //depot/projects/e500/compat/opensolaris/include/solaris.h#1 branch .. //depot/projects/e500/compat/opensolaris/include/zone.h#1 branch .. //depot/projects/e500/compat/opensolaris/lib/libumem/umem.c#1 branch .. //depot/projects/e500/compat/opensolaris/lib/libumem/umem.h#1 branch .. //depot/projects/e500/compat/opensolaris/misc/deviceid.c#1 branch .. //depot/projects/e500/compat/opensolaris/misc/fsshare.c#1 branch .. //depot/projects/e500/compat/opensolaris/misc/mkdirp.c#1 branch .. //depot/projects/e500/compat/opensolaris/misc/mnttab.c#1 branch .. //depot/projects/e500/compat/opensolaris/misc/zmount.c#1 branch .. //depot/projects/e500/compat/opensolaris/misc/zone.c#1 branch .. //depot/projects/e500/contrib/amd/AUTHORS#1 branch .. //depot/projects/e500/contrib/amd/BUGS#1 branch .. //depot/projects/e500/contrib/amd/COPYING#1 branch .. //depot/projects/e500/contrib/amd/ChangeLog#1 branch .. //depot/projects/e500/contrib/amd/FREEBSD-Xlist#1 branch .. //depot/projects/e500/contrib/amd/FREEBSD-upgrade#1 branch .. //depot/projects/e500/contrib/amd/INSTALL#1 branch .. //depot/projects/e500/contrib/amd/MIRRORS.html#1 branch .. //depot/projects/e500/contrib/amd/MIRRORS.txt#1 branch .. //depot/projects/e500/contrib/amd/NEWS#1 branch .. //depot/projects/e500/contrib/amd/README#1 branch .. //depot/projects/e500/contrib/amd/README.ldap#1 branch .. //depot/projects/e500/contrib/amd/README.y2k#1 branch .. //depot/projects/e500/contrib/amd/amd/am_ops.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amd.8#1 branch .. //depot/projects/e500/contrib/amd/amd/amd.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amd.h#1 branch .. //depot/projects/e500/contrib/amd/amd/amfs_auto.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amfs_direct.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amfs_error.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amfs_host.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amfs_inherit.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amfs_link.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amfs_linkx.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amfs_nfsl.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amfs_nfsx.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amfs_program.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amfs_root.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amfs_toplvl.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amfs_union.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amq_subr.c#1 branch .. //depot/projects/e500/contrib/amd/amd/amq_svc.c#1 branch .. //depot/projects/e500/contrib/amd/amd/autil.c#1 branch .. //depot/projects/e500/contrib/amd/amd/clock.c#1 branch .. //depot/projects/e500/contrib/amd/amd/conf.c#1 branch .. //depot/projects/e500/contrib/amd/amd/conf_parse.y#1 branch .. //depot/projects/e500/contrib/amd/amd/conf_tok.l#1 branch .. //depot/projects/e500/contrib/amd/amd/get_args.c#1 branch .. //depot/projects/e500/contrib/amd/amd/info_file.c#1 branch .. //depot/projects/e500/contrib/amd/amd/info_hesiod.c#1 branch .. //depot/projects/e500/contrib/amd/amd/info_ldap.c#1 branch .. //depot/projects/e500/contrib/amd/amd/info_ndbm.c#1 branch .. //depot/projects/e500/contrib/amd/amd/info_nis.c#1 branch .. //depot/projects/e500/contrib/amd/amd/info_nisplus.c#1 branch .. //depot/projects/e500/contrib/amd/amd/info_passwd.c#1 branch .. //depot/projects/e500/contrib/amd/amd/info_union.c#1 branch .. //depot/projects/e500/contrib/amd/amd/map.c#1 branch .. //depot/projects/e500/contrib/amd/amd/mapc.c#1 branch .. //depot/projects/e500/contrib/amd/amd/mntfs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/nfs_prot_svc.c#1 branch .. //depot/projects/e500/contrib/amd/amd/nfs_start.c#1 branch .. //depot/projects/e500/contrib/amd/amd/nfs_subr.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_TEMPLATE.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_cachefs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_cdfs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_efs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_lofs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_mfs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_nfs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_nfs3.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_nullfs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_pcfs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_tfs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_tmpfs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_ufs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_umapfs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_unionfs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/ops_xfs.c#1 branch .. //depot/projects/e500/contrib/amd/amd/opts.c#1 branch .. //depot/projects/e500/contrib/amd/amd/restart.c#1 branch .. //depot/projects/e500/contrib/amd/amd/rpc_fwd.c#1 branch .. //depot/projects/e500/contrib/amd/amd/sched.c#1 branch .. //depot/projects/e500/contrib/amd/amd/srvr_amfs_auto.c#1 branch .. //depot/projects/e500/contrib/amd/amd/srvr_nfs.c#1 branch .. //depot/projects/e500/contrib/amd/amq/amq.8#1 branch .. //depot/projects/e500/contrib/amd/amq/amq.c#1 branch .. //depot/projects/e500/contrib/amd/amq/amq.h#1 branch .. //depot/projects/e500/contrib/amd/amq/amq_clnt.c#1 branch .. //depot/projects/e500/contrib/amd/amq/amq_xdr.c#1 branch .. //depot/projects/e500/contrib/amd/amq/pawd.1#1 branch .. //depot/projects/e500/contrib/amd/amq/pawd.c#1 branch .. //depot/projects/e500/contrib/amd/aux_conf.h.in#1 branch .. //depot/projects/e500/contrib/amd/bootstrap#1 branch .. //depot/projects/e500/contrib/amd/conf/checkmount/checkmount_bsd44.c#1 branch .. //depot/projects/e500/contrib/amd/conf/fh_dref/fh_dref_freebsd22.h#1 branch .. //depot/projects/e500/contrib/amd/conf/mtab/mtab_bsd.c#1 branch .. //depot/projects/e500/contrib/amd/conf/nfs_prot/nfs_prot_freebsd2.h#1 branch .. //depot/projects/e500/contrib/amd/conf/nfs_prot/nfs_prot_freebsd3.h#1 branch .. //depot/projects/e500/contrib/amd/conf/sa_dref/sa_dref_bsd44.h#1 branch .. //depot/projects/e500/contrib/amd/conf/transp/transp_sockets.c#1 branch .. //depot/projects/e500/contrib/amd/conf/trap/trap_default.h#1 branch .. //depot/projects/e500/contrib/amd/conf/umount/umount_bsd44.c#1 branch .. //depot/projects/e500/contrib/amd/doc/am-utils.texi#1 branch .. //depot/projects/e500/contrib/amd/doc/texinfo.tex#1 branch .. //depot/projects/e500/contrib/amd/doc/version.texi#1 branch .. //depot/projects/e500/contrib/amd/fixmount/fixmount.8#1 branch .. //depot/projects/e500/contrib/amd/fixmount/fixmount.c#1 branch .. //depot/projects/e500/contrib/amd/fsinfo/fsi_analyze.c#1 branch .. //depot/projects/e500/contrib/amd/fsinfo/fsi_data.h#1 branch .. //depot/projects/e500/contrib/amd/fsinfo/fsi_dict.c#1 branch .. //depot/projects/e500/contrib/amd/fsinfo/fsi_gram.y#1 branch .. //depot/projects/e500/contrib/amd/fsinfo/fsi_lex.l#1 branch .. //depot/projects/e500/contrib/amd/fsinfo/fsi_util.c#1 branch .. //depot/projects/e500/contrib/amd/fsinfo/fsinfo.8#1 branch .. //depot/projects/e500/contrib/amd/fsinfo/fsinfo.c#1 branch .. //depot/projects/e500/contrib/amd/fsinfo/fsinfo.h#1 branch .. //depot/projects/e500/contrib/amd/fsinfo/wr_atab.c#1 branch .. //depot/projects/e500/contrib/amd/fsinfo/wr_bparam.c#1 branch .. //depot/projects/e500/contrib/amd/fsinfo/wr_dumpset.c#1 branch .. //depot/projects/e500/contrib/amd/fsinfo/wr_exportfs.c#1 branch .. //depot/projects/e500/contrib/amd/fsinfo/wr_fstab.c#1 branch .. //depot/projects/e500/contrib/amd/hlfsd/hlfsd.8#1 branch .. //depot/projects/e500/contrib/amd/hlfsd/hlfsd.c#1 branch .. //depot/projects/e500/contrib/amd/hlfsd/hlfsd.h#1 branch .. //depot/projects/e500/contrib/amd/hlfsd/homedir.c#1 branch .. //depot/projects/e500/contrib/amd/hlfsd/nfs_prot_svc.c#1 branch .. //depot/projects/e500/contrib/amd/hlfsd/stubs.c#1 branch .. //depot/projects/e500/contrib/amd/include/am_compat.h#1 branch .. //depot/projects/e500/contrib/amd/include/am_defs.h#1 branch .. //depot/projects/e500/contrib/amd/include/am_utils.h#1 branch .. //depot/projects/e500/contrib/amd/include/am_xdr_func.h#1 branch .. //depot/projects/e500/contrib/amd/include/amq_defs.h#1 branch .. //depot/projects/e500/contrib/amd/include/mount_headers1.h#1 branch .. //depot/projects/e500/contrib/amd/include/mount_headers2.h#1 branch .. //depot/projects/e500/contrib/amd/ldap-id.ms#1 branch .. //depot/projects/e500/contrib/amd/ldap-id.txt#1 branch .. //depot/projects/e500/contrib/amd/libamu/alloca.c#1 branch .. //depot/projects/e500/contrib/amd/libamu/amu.h#1 branch .. //depot/projects/e500/contrib/amd/libamu/hasmntopt.c#1 branch .. //depot/projects/e500/contrib/amd/libamu/misc_rpc.c#1 branch .. //depot/projects/e500/contrib/amd/libamu/mount_fs.c#1 branch .. //depot/projects/e500/contrib/amd/libamu/mtab.c#1 branch .. //depot/projects/e500/contrib/amd/libamu/nfs_prot_xdr.c#1 branch .. //depot/projects/e500/contrib/amd/libamu/strerror.c#1 branch .. //depot/projects/e500/contrib/amd/libamu/util.c#1 branch .. //depot/projects/e500/contrib/amd/libamu/wire.c#1 branch .. //depot/projects/e500/contrib/amd/libamu/xdr_func.c#1 branch .. //depot/projects/e500/contrib/amd/libamu/xutil.c#1 branch .. //depot/projects/e500/contrib/amd/m4/GNUmakefile#1 branch .. //depot/projects/e500/contrib/amd/m4/amdgrep#1 branch .. //depot/projects/e500/contrib/amd/m4/amindent#1 branch .. //depot/projects/e500/contrib/amd/m4/autopat#1 branch .. //depot/projects/e500/contrib/amd/m4/chop-aclocal.pl#1 branch .. //depot/projects/e500/contrib/amd/m4/copy-if-newbig#1 branch .. //depot/projects/e500/contrib/amd/m4/macros/HEADER#1 branch .. //depot/projects/e500/contrib/amd/m4/macros/TRAILER#1 branch .. //depot/projects/e500/contrib/amd/m4/mk-aclocal#1 branch .. //depot/projects/e500/contrib/amd/m4/mkconf#1 branch .. //depot/projects/e500/contrib/amd/m4/rmtspc#1 branch .. //depot/projects/e500/contrib/amd/m4/update_build_version#1 branch .. //depot/projects/e500/contrib/amd/mk-amd-map/mk-amd-map.8#1 branch .. //depot/projects/e500/contrib/amd/mk-amd-map/mk-amd-map.c#1 branch .. //depot/projects/e500/contrib/amd/scripts/Makefile.am#1 branch .. //depot/projects/e500/contrib/amd/scripts/Makefile.in#1 branch .. //depot/projects/e500/contrib/amd/scripts/am-eject.in#1 branch .. //depot/projects/e500/contrib/amd/scripts/amd.conf-sample#1 branch .. //depot/projects/e500/contrib/amd/scripts/amd.conf.5#1 branch .. //depot/projects/e500/contrib/amd/scripts/amd2ldif.in#1 branch .. //depot/projects/e500/contrib/amd/scripts/amd2sun.in#1 branch .. //depot/projects/e500/contrib/amd/scripts/automount2amd.8#1 branch .. //depot/projects/e500/contrib/amd/scripts/automount2amd.in#1 branch .. //depot/projects/e500/contrib/amd/scripts/ctl-amd.in#1 branch .. //depot/projects/e500/contrib/amd/scripts/ctl-hlfsd.in#1 branch .. //depot/projects/e500/contrib/amd/scripts/expn.1#1 branch .. //depot/projects/e500/contrib/amd/scripts/expn.in#1 branch .. //depot/projects/e500/contrib/amd/scripts/fix-amd-map.in#1 branch .. //depot/projects/e500/contrib/amd/scripts/fixrmtab.in#1 branch .. //depot/projects/e500/contrib/amd/scripts/redhat-ctl-amd.in#1 branch .. //depot/projects/e500/contrib/amd/scripts/wait4amd.in#1 branch .. //depot/projects/e500/contrib/amd/scripts/wait4amd2die.in#1 branch .. //depot/projects/e500/contrib/amd/tasks#1 branch .. //depot/projects/e500/contrib/amd/wire-test/wire-test.8#1 branch .. //depot/projects/e500/contrib/amd/wire-test/wire-test.c#1 branch .. //depot/projects/e500/contrib/bc/AUTHORS#1 branch .. //depot/projects/e500/contrib/bc/ChangeLog#1 branch .. //depot/projects/e500/contrib/bc/Examples/ckbook.b#1 branch .. //depot/projects/e500/contrib/bc/Examples/pi.b#1 branch .. //depot/projects/e500/contrib/bc/Examples/primes.b#1 branch .. //depot/projects/e500/contrib/bc/Examples/twins.b#1 branch .. //depot/projects/e500/contrib/bc/FAQ#1 branch .. //depot/projects/e500/contrib/bc/FREEBSD-upgrade#1 branch .. //depot/projects/e500/contrib/bc/INSTALL#1 branch .. //depot/projects/e500/contrib/bc/Makefile.am#1 branch .. //depot/projects/e500/contrib/bc/Makefile.in#1 branch .. //depot/projects/e500/contrib/bc/NEWS#1 branch .. //depot/projects/e500/contrib/bc/README#1 branch .. //depot/projects/e500/contrib/bc/Test/BUG.bc#1 branch .. //depot/projects/e500/contrib/bc/Test/array.b#1 branch .. //depot/projects/e500/contrib/bc/Test/arrayp.b#1 branch .. //depot/projects/e500/contrib/bc/Test/aryprm.b#1 branch .. //depot/projects/e500/contrib/bc/Test/atan.b#1 branch .. //depot/projects/e500/contrib/bc/Test/checklib.b#1 branch .. //depot/projects/e500/contrib/bc/Test/div.b#1 branch .. //depot/projects/e500/contrib/bc/Test/exp.b#1 branch .. //depot/projects/e500/contrib/bc/Test/fact.b#1 branch .. //depot/projects/e500/contrib/bc/Test/jn.b#1 branch .. //depot/projects/e500/contrib/bc/Test/ln.b#1 branch .. //depot/projects/e500/contrib/bc/Test/mul.b#1 branch .. //depot/projects/e500/contrib/bc/Test/raise.b#1 branch .. //depot/projects/e500/contrib/bc/Test/signum#1 branch .. //depot/projects/e500/contrib/bc/Test/sine.b#1 branch .. //depot/projects/e500/contrib/bc/Test/sqrt.b#1 branch .. //depot/projects/e500/contrib/bc/Test/sqrt1.b#1 branch .. //depot/projects/e500/contrib/bc/Test/sqrt2.b#1 branch .. //depot/projects/e500/contrib/bc/Test/testfn.b#1 branch .. //depot/projects/e500/contrib/bc/Test/timetest#1 branch .. //depot/projects/e500/contrib/bc/acconfig.h#1 branch .. //depot/projects/e500/contrib/bc/aclocal.m4#1 branch .. //depot/projects/e500/contrib/bc/bc/Makefile.am#1 branch .. //depot/projects/e500/contrib/bc/bc/Makefile.in#1 branch .. //depot/projects/e500/contrib/bc/bc/bc.y#1 branch .. //depot/projects/e500/contrib/bc/bc/bcdefs.h#1 branch .. //depot/projects/e500/contrib/bc/bc/const.h#1 branch .. //depot/projects/e500/contrib/bc/bc/execute.c#1 branch .. //depot/projects/e500/contrib/bc/bc/fix-libmath_h#1 branch .. //depot/projects/e500/contrib/bc/bc/global.c#1 branch .. //depot/projects/e500/contrib/bc/bc/global.h#1 branch .. //depot/projects/e500/contrib/bc/bc/libmath.b#1 branch .. //depot/projects/e500/contrib/bc/bc/libmath.h#1 branch .. //depot/projects/e500/contrib/bc/bc/load.c#1 branch .. //depot/projects/e500/contrib/bc/bc/main.c#1 branch .. //depot/projects/e500/contrib/bc/bc/proto.h#1 branch .. //depot/projects/e500/contrib/bc/bc/sbc.y#1 branch .. //depot/projects/e500/contrib/bc/bc/scan.l#1 branch .. //depot/projects/e500/contrib/bc/bc/storage.c#1 branch .. //depot/projects/e500/contrib/bc/bc/util.c#1 branch .. //depot/projects/e500/contrib/bc/config.h.in#1 branch .. //depot/projects/e500/contrib/bc/configure#1 branch .. //depot/projects/e500/contrib/bc/configure.in#1 branch .. //depot/projects/e500/contrib/bc/dc/Makefile.am#1 branch .. //depot/projects/e500/contrib/bc/dc/Makefile.in#1 branch .. //depot/projects/e500/contrib/bc/dc/array.c#1 branch .. //depot/projects/e500/contrib/bc/dc/dc-proto.h#1 branch .. //depot/projects/e500/contrib/bc/dc/dc-regdef.h#1 branch .. //depot/projects/e500/contrib/bc/dc/dc.c#1 branch .. //depot/projects/e500/contrib/bc/dc/dc.h#1 branch .. //depot/projects/e500/contrib/bc/dc/eval.c#1 branch .. //depot/projects/e500/contrib/bc/dc/misc.c#1 branch .. //depot/projects/e500/contrib/bc/dc/numeric.c#1 branch .. //depot/projects/e500/contrib/bc/dc/stack.c#1 branch .. //depot/projects/e500/contrib/bc/dc/string.c#1 branch .. //depot/projects/e500/contrib/bc/doc/Makefile.am#1 branch .. //depot/projects/e500/contrib/bc/doc/Makefile.in#1 branch .. //depot/projects/e500/contrib/bc/doc/bc.1#1 branch .. //depot/projects/e500/contrib/bc/doc/bc.texi#1 branch .. //depot/projects/e500/contrib/bc/doc/dc.1#1 branch .. //depot/projects/e500/contrib/bc/doc/dc.texi#1 branch .. //depot/projects/e500/contrib/bc/h/number.h#1 branch .. //depot/projects/e500/contrib/bc/install-sh#1 branch .. //depot/projects/e500/contrib/bc/lib/Makefile.am#1 branch .. //depot/projects/e500/contrib/bc/lib/Makefile.in#1 branch .. //depot/projects/e500/contrib/bc/lib/number.c#1 branch .. //depot/projects/e500/contrib/bc/lib/testmul.c#1 branch .. //depot/projects/e500/contrib/bc/lib/vfprintf.c#1 branch .. //depot/projects/e500/contrib/bc/missing#1 branch .. //depot/projects/e500/contrib/bc/mkinstalldirs#1 branch .. //depot/projects/e500/contrib/bc/stamp-h.in#1 branch .. //depot/projects/e500/contrib/bind9/CHANGES#1 branch .. //depot/projects/e500/contrib/bind9/COPYRIGHT#1 branch .. //depot/projects/e500/contrib/bind9/FAQ#1 branch .. //depot/projects/e500/contrib/bind9/FAQ.xml#1 branch .. //depot/projects/e500/contrib/bind9/FREEBSD-Upgrade#1 branch .. //depot/projects/e500/contrib/bind9/FREEBSD-Xlist#1 branch .. //depot/projects/e500/contrib/bind9/Makefile.in#1 branch .. //depot/projects/e500/contrib/bind9/README#1 branch .. //depot/projects/e500/contrib/bind9/acconfig.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/Makefile.in#1 branch .. //depot/projects/e500/contrib/bind9/bin/check/Makefile.in#1 branch .. //depot/projects/e500/contrib/bind9/bin/check/check-tool.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/check/check-tool.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/check/named-checkconf.8#1 branch .. //depot/projects/e500/contrib/bind9/bin/check/named-checkconf.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/check/named-checkconf.docbook#1 branch .. //depot/projects/e500/contrib/bind9/bin/check/named-checkconf.html#1 branch .. //depot/projects/e500/contrib/bind9/bin/check/named-checkzone.8#1 branch .. //depot/projects/e500/contrib/bind9/bin/check/named-checkzone.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/check/named-checkzone.docbook#1 branch .. //depot/projects/e500/contrib/bind9/bin/check/named-checkzone.html#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/Makefile.in#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/dig.1#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/dig.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/dig.docbook#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/dig.html#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/dighost.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/host.1#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/host.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/host.docbook#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/host.html#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/include/dig/dig.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/nslookup.1#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/nslookup.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/nslookup.docbook#1 branch .. //depot/projects/e500/contrib/bind9/bin/dig/nslookup.html#1 branch .. //depot/projects/e500/contrib/bind9/bin/dnssec/Makefile.in#1 branch .. //depot/projects/e500/contrib/bind9/bin/dnssec/dnssec-keygen.8#1 branch .. //depot/projects/e500/contrib/bind9/bin/dnssec/dnssec-keygen.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/dnssec/dnssec-keygen.docbook#1 branch .. //depot/projects/e500/contrib/bind9/bin/dnssec/dnssec-keygen.html#1 branch .. //depot/projects/e500/contrib/bind9/bin/dnssec/dnssec-signzone.8#1 branch .. //depot/projects/e500/contrib/bind9/bin/dnssec/dnssec-signzone.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/dnssec/dnssec-signzone.docbook#1 branch .. //depot/projects/e500/contrib/bind9/bin/dnssec/dnssec-signzone.html#1 branch .. //depot/projects/e500/contrib/bind9/bin/dnssec/dnssectool.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/dnssec/dnssectool.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/Makefile.in#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/aclconf.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/builtin.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/client.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/config.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/control.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/controlconf.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/aclconf.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/builtin.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/client.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/config.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/control.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/globals.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/interfacemgr.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/listenlist.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/log.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/logconf.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/lwaddr.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/lwdclient.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/lwresd.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/lwsearch.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/main.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/notify.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/ns_smf_globals.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/query.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/server.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/sortlist.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/tkeyconf.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/tsigconf.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/types.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/update.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/xfrout.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/include/named/zoneconf.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/interfacemgr.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/listenlist.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/log.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/logconf.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/lwaddr.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/lwdclient.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/lwderror.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/lwdgabn.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/lwdgnba.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/lwdgrbn.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/lwdnoop.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/lwresd.8#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/lwresd.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/lwresd.docbook#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/lwresd.html#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/lwsearch.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/main.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/named.8#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/named.conf.5#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/named.conf.docbook#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/named.conf.html#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/named.docbook#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/named.html#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/notify.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/query.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/server.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/sortlist.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/tkeyconf.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/tsigconf.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/unix/Makefile.in#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/unix/include/named/os.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/unix/os.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/update.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/xfrout.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/named/zoneconf.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/nsupdate/Makefile.in#1 branch .. //depot/projects/e500/contrib/bind9/bin/nsupdate/nsupdate.8#1 branch .. //depot/projects/e500/contrib/bind9/bin/nsupdate/nsupdate.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/nsupdate/nsupdate.docbook#1 branch .. //depot/projects/e500/contrib/bind9/bin/nsupdate/nsupdate.html#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/Makefile.in#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/include/rndc/os.h#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/rndc-confgen.8#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/rndc-confgen.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/rndc-confgen.docbook#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/rndc-confgen.html#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/rndc.8#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/rndc.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/rndc.conf#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/rndc.conf.5#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/rndc.conf.docbook#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/rndc.conf.html#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/rndc.docbook#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/rndc.html#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/unix/Makefile.in#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/unix/os.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/util.c#1 branch .. //depot/projects/e500/contrib/bind9/bin/rndc/util.h#1 branch .. //depot/projects/e500/contrib/bind9/config.guess#1 branch .. //depot/projects/e500/contrib/bind9/config.sub#1 branch .. //depot/projects/e500/contrib/bind9/config.threads.in#1 branch .. //depot/projects/e500/contrib/bind9/configure.in#1 branch .. //depot/projects/e500/contrib/bind9/doc/Makefile.in#1 branch .. //depot/projects/e500/contrib/bind9/doc/arm/Bv9ARM-book.xml#1 branch .. //depot/projects/e500/contrib/bind9/doc/arm/Bv9ARM.ch01.html#1 branch .. //depot/projects/e500/contrib/bind9/doc/arm/Bv9ARM.ch02.html#1 branch .. //depot/projects/e500/contrib/bind9/doc/arm/Bv9ARM.ch03.html#1 branch .. //depot/projects/e500/contrib/bind9/doc/arm/Bv9ARM.ch04.html#1 branch .. //depot/projects/e500/contrib/bind9/doc/arm/Bv9ARM.ch05.html#1 branch .. //depot/projects/e500/contrib/bind9/doc/arm/Bv9ARM.ch06.html#1 branch .. //depot/projects/e500/contrib/bind9/doc/arm/Bv9ARM.ch07.html#1 branch .. //depot/projects/e500/contrib/bind9/doc/arm/Bv9ARM.ch08.html#1 branch .. //depot/projects/e500/contrib/bind9/doc/arm/Bv9ARM.ch09.html#1 branch .. //depot/projects/e500/contrib/bind9/doc/arm/Bv9ARM.html#1 branch .. //depot/projects/e500/contrib/bind9/doc/arm/Bv9ARM.pdf#1 branch .. //depot/projects/e500/contrib/bind9/doc/arm/Makefile.in#1 branch .. //depot/projects/e500/contrib/bind9/doc/arm/README-SGML#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-baba-dnsext-acl-reqts-01.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-daigle-napstr-04.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-danisch-dns-rr-smtp-03.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-dnsext-opcode-discover-02.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-durand-dnsop-dynreverse-00.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-2929bis-01.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-axfr-clarify-05.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-dhcid-rr-09.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-dns-name-p-s-00.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-2535typecode-change-06.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-bis-updates-01.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-experiments-01.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-online-signing-00.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-opt-in-07.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-trans-02.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-ecc-key-07.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-insensitive-06.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-interop3597-02.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-keyrr-key-signing-flag-12.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-mdns-43.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-nsec3-02.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-rfc2536bis-dsa-06.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-rfc2538bis-04.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-rfc2539bis-dhk-06.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-signed-nonexistence-requirements-01.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-tkey-renewal-mode-05.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-trustupdate-threshold-00.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-trustupdate-timers-01.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-tsig-sha-04.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsext-wcard-clarify-08.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsop-bad-dns-res-04.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsop-dnssec-operational-practices-04.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsop-inaddr-required-07.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-dns-configuration-06.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-dns-issues-11.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-transport-guidelines-01.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsop-key-rollover-requirements-02.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsop-respsize-02.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-dnsop-serverid-04.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-enum-e164-gstn-np-05.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-ipv6-node-requirements-08.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ietf-secsh-dns-05.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-ihren-dnsext-threshold-validation-00.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-kato-dnsop-local-zones-00.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/draft-park-ipv6-extensions-dns-pnp-00.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/draft/update#1 branch .. //depot/projects/e500/contrib/bind9/doc/misc/Makefile.in#1 branch .. //depot/projects/e500/contrib/bind9/doc/misc/dnssec#1 branch .. //depot/projects/e500/contrib/bind9/doc/misc/format-options.pl#1 branch .. //depot/projects/e500/contrib/bind9/doc/misc/ipv6#1 branch .. //depot/projects/e500/contrib/bind9/doc/misc/migration#1 branch .. //depot/projects/e500/contrib/bind9/doc/misc/migration-4to9#1 branch .. //depot/projects/e500/contrib/bind9/doc/misc/options#1 branch .. //depot/projects/e500/contrib/bind9/doc/misc/rfc-compliance#1 branch .. //depot/projects/e500/contrib/bind9/doc/misc/roadmap#1 branch .. //depot/projects/e500/contrib/bind9/doc/misc/sdb#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/index#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1032.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1033.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1034.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1035.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1101.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1122.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1123.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1183.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1348.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1535.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1536.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1537.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1591.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1611.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1612.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1706.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1712.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1750.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1876.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1886.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1982.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1995.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc1996.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc2052.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc2104.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc2119.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc2133.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc2136.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc2137.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc2163.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc2168.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc2181.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc2230.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc2308.txt#1 branch .. //depot/projects/e500/contrib/bind9/doc/rfc/rfc2317.txt#1 branch >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Tue May 8 18:54:49 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 66D8E16A408; Tue, 8 May 2007 18:54:49 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 20C4F16A406 for ; Tue, 8 May 2007 18:54:49 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outS.internet-mail-service.net (outS.internet-mail-service.net [216.240.47.242]) by mx1.freebsd.org (Postfix) with ESMTP id 0CAA813C468 for ; Tue, 8 May 2007 18:54:48 +0000 (UTC) (envelope-from julian@elischer.org) Received: from mx0.idiom.com (HELO idiom.com) (216.240.32.160) by out.internet-mail-service.net (qpsmtpd/0.32) with ESMTP; Tue, 08 May 2007 11:54:48 -0700 Received: from julian-mac.elischer.org (nat.ironport.com [63.251.108.100]) by idiom.com (Postfix) with ESMTP id 51275125B40; Tue, 8 May 2007 11:54:48 -0700 (PDT) Message-ID: <4640C777.5000203@elischer.org> Date: Tue, 08 May 2007 11:54:47 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.0 (Macintosh/20070326) MIME-Version: 1.0 To: Marko Zec References: <200705072252.l47Mq4xX044896@repoman.freebsd.org> <200705080135.33036.zec@icir.org> <463FBE8E.2070604@elischer.org> <200705080755.36056.zec@icir.org> In-Reply-To: <200705080755.36056.zec@icir.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews Subject: Re: PERFORCE change 119444 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 18:54:49 -0000 Marko Zec wrote: > On Tuesday 08 May 2007 02:04:30 Julian Elischer wrote: >> Marko Zec wrote: >>> On Tuesday 08 May 2007 01:22:59 Julian Elischer wrote: >>>> Marko Zec wrote: >>>>> http://perforce.freebsd.org/chv.cgi?CH=119444 >>>>> >>>>> Change 119444 by zec@zec_tpx32 on 2007/05/07 22:51:07 >>>>> >>>>> Add support for free-floating ng_hub and ng_bridge instances. >>>>> >>>>> If a hook named "anchor" is created on a ng_hub or ng_bridge >>>>> node instance, the node will not self-destruct even if it >>>>> has no hooks connected. Reminder: normal behavior is that >>>>> hub or bridge nodes automatically destroy themselves when >>>>> the last hook is disconnected. >>>> What is this hook attached to? >>>> One could just as easily send them a 'become persistant' message.. >>>> It would be a good candidate for a generic message. >>>> Data is still sent to this hook. is that what is expected? >>> This hook should typically disappear right after it is created, if >>> we use it like this: >>> >>> tpx32# ngctl mkpeer hub anchor anchor >>> tpx32# ngctl l >>> There are 3 total nodes: >>> Name: ngctl69865 Type: socket ID: 0000040d Num hooks: 0 >>> Name: Type: hub ID: 0000040b Num hooks: 0 >>> Name: em0 Type: ether ID: 00000004 Num hooks: 0 >>> >>> Yes, the only purpose of this is to pin-up the node. We cannot >>> send a 'become persistant' message to a node that doesn't exist... >>> Or do you have an alternative suggestion to achieve this >>> functionality? I really need this badly for IMUNES... >>> >>> Cheers, >>> >>> Marko >> there is a hook when you create it.. you send it the message, then >> you can remove the hook. > > I'd be sold on the concept you propose if I had an idea how to use it > from non-interactive scripts in a reasonably simple way. For example: > > tpx32# ngctl -f - > mkpeer hub x x > list > # XXX what now? Send "pin-up" message to which node? msg [429]: pin {value=1} assuming we defined a message called 'pin' which had a single binary element called 'value'. (or we could define two messages. 'pin' and 'unpin' with no contents, like 'shutdown'. see /usr/share/example/netgraph/* for examples also : http://ezine.daemonnews.org/200003/netgraph.html > > There are 3 total nodes: > Name: Type: hub ID: 00000429 Num hooks: 1 > Name: ngctl93546 Type: socket ID: 00000428 Num hooks: 1 > Name: em0 Type: ether ID: 00000004 Num hooks: 0 > > My point is that even if we don't close the controlling socket (we > remain in ngctl) so that we don't loose the newly created node right > away, how can we at this point know the address of the new node without > going through some woodo magic style parsing of the output from > currently running ngctl process, and then feeding the result back to > its standard input? > > Marko > From owner-p4-projects@FreeBSD.ORG Tue May 8 18:58:00 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5350B16A409; Tue, 8 May 2007 18:58:00 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 0975D16A407 for ; Tue, 8 May 2007 18:58:00 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outW.internet-mail-service.net (outW.internet-mail-service.net [216.240.47.246]) by mx1.freebsd.org (Postfix) with ESMTP id E979513C455 for ; Tue, 8 May 2007 18:57:59 +0000 (UTC) (envelope-from julian@elischer.org) Received: from mx0.idiom.com (HELO idiom.com) (216.240.32.160) by out.internet-mail-service.net (qpsmtpd/0.32) with ESMTP; Tue, 08 May 2007 11:57:59 -0700 Received: from julian-mac.elischer.org (nat.ironport.com [63.251.108.100]) by idiom.com (Postfix) with ESMTP id 0B37B125B40; Tue, 8 May 2007 11:57:59 -0700 (PDT) Message-ID: <4640C835.4050502@elischer.org> Date: Tue, 08 May 2007 11:57:57 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.0 (Macintosh/20070326) MIME-Version: 1.0 To: Marko Zec References: <200705072252.l47Mq4xX044896@repoman.freebsd.org> <200705080135.33036.zec@icir.org> <463FBE8E.2070604@elischer.org> <200705080755.36056.zec@icir.org> In-Reply-To: <200705080755.36056.zec@icir.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews Subject: Re: PERFORCE change 119444 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 18:58:00 -0000 Marko Zec wrote: > On Tuesday 08 May 2007 02:04:30 Julian Elischer wrote: >> Marko Zec wrote: >>> On Tuesday 08 May 2007 01:22:59 Julian Elischer wrote: >>>> Marko Zec wrote: >>>>> http://perforce.freebsd.org/chv.cgi?CH=119444 >>>>> >>>>> Change 119444 by zec@zec_tpx32 on 2007/05/07 22:51:07 >>>>> >>>>> Add support for free-floating ng_hub and ng_bridge instances. >>>>> >>>>> If a hook named "anchor" is created on a ng_hub or ng_bridge >>>>> node instance, the node will not self-destruct even if it >>>>> has no hooks connected. Reminder: normal behavior is that >>>>> hub or bridge nodes automatically destroy themselves when >>>>> the last hook is disconnected. >>>> What is this hook attached to? >>>> One could just as easily send them a 'become persistant' message.. >>>> It would be a good candidate for a generic message. >>>> Data is still sent to this hook. is that what is expected? >>> This hook should typically disappear right after it is created, if >>> we use it like this: >>> >>> tpx32# ngctl mkpeer hub anchor anchor >>> tpx32# ngctl l >>> There are 3 total nodes: >>> Name: ngctl69865 Type: socket ID: 0000040d Num hooks: 0 >>> Name: Type: hub ID: 0000040b Num hooks: 0 >>> Name: em0 Type: ether ID: 00000004 Num hooks: 0 >>> >>> Yes, the only purpose of this is to pin-up the node. We cannot >>> send a 'become persistant' message to a node that doesn't exist... >>> Or do you have an alternative suggestion to achieve this >>> functionality? I really need this badly for IMUNES... >>> >>> Cheers, >>> >>> Marko >> there is a hook when you create it.. you send it the message, then >> you can remove the hook. > > I'd be sold on the concept you propose if I had an idea how to use it > from non-interactive scripts in a reasonably simple way. For example: > > tpx32# ngctl -f - > mkpeer hub x x > list > # XXX what now? Send "pin-up" message to which node? > > There are 3 total nodes: > Name: Type: hub ID: 00000429 Num hooks: 1 > Name: ngctl93546 Type: socket ID: 00000428 Num hooks: 1 > Name: em0 Type: ether ID: 00000004 Num hooks: 0 msg .:x pin {value=1} > > My point is that even if we don't close the controlling socket (we > remain in ngctl) so that we don't loose the newly created node right > away, how can we at this point know the address of the new node without > going through some woodo magic style parsing of the output from > currently running ngctl process, and then feeding the result back to > its standard input? > > Marko > From owner-p4-projects@FreeBSD.ORG Tue May 8 19:17:28 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 350EC16A403; Tue, 8 May 2007 19:17:28 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C4A7816A408 for ; Tue, 8 May 2007 19:17:27 +0000 (UTC) (envelope-from zec@icir.org) Received: from xaqua.tel.fer.hr (xaqua.tel.fer.hr [161.53.19.25]) by mx1.freebsd.org (Postfix) with ESMTP id 4FF6B13C448 for ; Tue, 8 May 2007 19:17:27 +0000 (UTC) (envelope-from zec@icir.org) Received: by xaqua.tel.fer.hr (Postfix, from userid 20006) id F2BAD9B659; Tue, 8 May 2007 21:17:25 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on xaqua.tel.fer.hr X-Spam-Level: X-Spam-Status: No, score=-4.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.7 Received: from [192.168.200.106] (zec2.tel.fer.hr [161.53.19.79]) by xaqua.tel.fer.hr (Postfix) with ESMTP id C7E3B9B654; Tue, 8 May 2007 21:17:24 +0200 (CEST) From: Marko Zec To: Julian Elischer Date: Tue, 8 May 2007 21:17:17 +0200 User-Agent: KMail/1.9.6 References: <200705072252.l47Mq4xX044896@repoman.freebsd.org> <200705080755.36056.zec@icir.org> <4640C777.5000203@elischer.org> In-Reply-To: <4640C777.5000203@elischer.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200705082117.17599.zec@icir.org> Cc: Perforce Change Reviews Subject: Re: PERFORCE change 119444 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 19:17:28 -0000 On Tuesday 08 May 2007 20:54:47 Julian Elischer wrote: > Marko Zec wrote: > > On Tuesday 08 May 2007 02:04:30 Julian Elischer wrote: > >> Marko Zec wrote: > >>> On Tuesday 08 May 2007 01:22:59 Julian Elischer wrote: > >>>> Marko Zec wrote: > >>>>> http://perforce.freebsd.org/chv.cgi?CH=119444 > >>>>> > >>>>> Change 119444 by zec@zec_tpx32 on 2007/05/07 22:51:07 > >>>>> > >>>>> Add support for free-floating ng_hub and ng_bridge instances. > >>>>> > >>>>> If a hook named "anchor" is created on a ng_hub or ng_bridge > >>>>> node instance, the node will not self-destruct even if it > >>>>> has no hooks connected. Reminder: normal behavior is that > >>>>> hub or bridge nodes automatically destroy themselves when > >>>>> the last hook is disconnected. > >>>> > >>>> What is this hook attached to? > >>>> One could just as easily send them a 'become persistant' > >>>> message.. It would be a good candidate for a generic message. > >>>> Data is still sent to this hook. is that what is expected? > >>> > >>> This hook should typically disappear right after it is created, > >>> if we use it like this: > >>> > >>> tpx32# ngctl mkpeer hub anchor anchor > >>> tpx32# ngctl l > >>> There are 3 total nodes: > >>> Name: ngctl69865 Type: socket ID: 0000040d Num hooks: 0 > >>> Name: Type: hub ID: 0000040b Num hooks: 0 > >>> Name: em0 Type: ether ID: 00000004 Num hooks: 0 > >>> > >>> Yes, the only purpose of this is to pin-up the node. We cannot > >>> send a 'become persistant' message to a node that doesn't > >>> exist... Or do you have an alternative suggestion to achieve this > >>> functionality? I really need this badly for IMUNES... > >>> > >>> Cheers, > >>> > >>> Marko > >> > >> there is a hook when you create it.. you send it the message, then > >> you can remove the hook. > > > > I'd be sold on the concept you propose if I had an idea how to use > > it from non-interactive scripts in a reasonably simple way. For > > example: > > > > tpx32# ngctl -f - > > mkpeer hub x x > > list > > # XXX what now? Send "pin-up" message to which node? > > msg [429]: pin {value=1} This won't work since the invoking script can't (at least not trivially) discover the ID of the new node... > assuming we defined a message called 'pin' which had a single > binary element called 'value'. > (or we could define two messages. 'pin' and 'unpin' with > no contents, like 'shutdown'. > > > > see /usr/share/example/netgraph/* for examples > > also : > http://ezine.daemonnews.org/200003/netgraph.html > > > There are 3 total nodes: > > Name: Type: hub ID: 00000429 Num hooks: 1 > > Name: ngctl93546 Type: socket ID: 00000428 Num hooks: 1 > > Name: em0 Type: ether ID: 00000004 Num hooks: 0 > > > > My point is that even if we don't close the controlling socket (we > > remain in ngctl) so that we don't loose the newly created node > > right away, how can we at this point know the address of the new > > node without going through some woodo magic style parsing of the > > output from currently running ngctl process, and then feeding the > > result back to its standard input? > > > > Marko From owner-p4-projects@FreeBSD.ORG Tue May 8 19:17:35 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 03DB716A473; Tue, 8 May 2007 19:17:35 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D499B16A409 for ; Tue, 8 May 2007 19:17:34 +0000 (UTC) (envelope-from zec@icir.org) Received: from xaqua.tel.fer.hr (xaqua.tel.fer.hr [161.53.19.25]) by mx1.freebsd.org (Postfix) with ESMTP id 6412213C43E for ; Tue, 8 May 2007 19:17:34 +0000 (UTC) (envelope-from zec@icir.org) Received: by xaqua.tel.fer.hr (Postfix, from userid 20006) id B099F9B659; Tue, 8 May 2007 21:17:33 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on xaqua.tel.fer.hr X-Spam-Level: X-Spam-Status: No, score=-4.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.7 Received: from [192.168.200.106] (zec2.tel.fer.hr [161.53.19.79]) by xaqua.tel.fer.hr (Postfix) with ESMTP id B0E439B654; Tue, 8 May 2007 21:17:32 +0200 (CEST) From: Marko Zec To: Julian Elischer Date: Tue, 8 May 2007 21:17:25 +0200 User-Agent: KMail/1.9.6 References: <200705072252.l47Mq4xX044896@repoman.freebsd.org> <200705080755.36056.zec@icir.org> <4640C835.4050502@elischer.org> In-Reply-To: <4640C835.4050502@elischer.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200705082117.25633.zec@icir.org> Cc: Perforce Change Reviews Subject: Re: PERFORCE change 119444 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 19:17:35 -0000 On Tuesday 08 May 2007 20:57:57 Julian Elischer wrote: > Marko Zec wrote: > > On Tuesday 08 May 2007 02:04:30 Julian Elischer wrote: > >> Marko Zec wrote: > >>> On Tuesday 08 May 2007 01:22:59 Julian Elischer wrote: > >>>> Marko Zec wrote: > >>>>> http://perforce.freebsd.org/chv.cgi?CH=119444 > >>>>> > >>>>> Change 119444 by zec@zec_tpx32 on 2007/05/07 22:51:07 > >>>>> > >>>>> Add support for free-floating ng_hub and ng_bridge instances. > >>>>> > >>>>> If a hook named "anchor" is created on a ng_hub or ng_bridge > >>>>> node instance, the node will not self-destruct even if it > >>>>> has no hooks connected. Reminder: normal behavior is that > >>>>> hub or bridge nodes automatically destroy themselves when > >>>>> the last hook is disconnected. > >>>> > >>>> What is this hook attached to? > >>>> One could just as easily send them a 'become persistant' > >>>> message.. It would be a good candidate for a generic message. > >>>> Data is still sent to this hook. is that what is expected? > >>> > >>> This hook should typically disappear right after it is created, > >>> if we use it like this: > >>> > >>> tpx32# ngctl mkpeer hub anchor anchor > >>> tpx32# ngctl l > >>> There are 3 total nodes: > >>> Name: ngctl69865 Type: socket ID: 0000040d Num hooks: 0 > >>> Name: Type: hub ID: 0000040b Num hooks: 0 > >>> Name: em0 Type: ether ID: 00000004 Num hooks: 0 > >>> > >>> Yes, the only purpose of this is to pin-up the node. We cannot > >>> send a 'become persistant' message to a node that doesn't > >>> exist... Or do you have an alternative suggestion to achieve this > >>> functionality? I really need this badly for IMUNES... > >>> > >>> Cheers, > >>> > >>> Marko > >> > >> there is a hook when you create it.. you send it the message, then > >> you can remove the hook. > > > > I'd be sold on the concept you propose if I had an idea how to use > > it from non-interactive scripts in a reasonably simple way. For > > example: > > > > tpx32# ngctl -f - > > mkpeer hub x x > > list > > # XXX what now? Send "pin-up" message to which node? > > > > There are 3 total nodes: > > Name: Type: hub ID: 00000429 Num hooks: 1 > > Name: ngctl93546 Type: socket ID: 00000428 Num hooks: 1 > > Name: em0 Type: ether ID: 00000004 Num hooks: 0 > > msg .:x pin {value=1} Bingo - yup this should / must work! Thanks!!! Marko > > My point is that even if we don't close the controlling socket (we > > remain in ngctl) so that we don't loose the newly created node > > right away, how can we at this point know the address of the new > > node without going through some woodo magic style parsing of the > > output from currently running ngctl process, and then feeding the > > result back to its standard input? > > > > Marko From owner-p4-projects@FreeBSD.ORG Tue May 8 20:32:04 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 497E216A408; Tue, 8 May 2007 20:32:04 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 18DFF16A406 for ; Tue, 8 May 2007 20:32:04 +0000 (UTC) (envelope-from ivoras@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id E4DBD13C448 for ; Tue, 8 May 2007 20:32:03 +0000 (UTC) (envelope-from ivoras@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l48KW3te039529 for ; Tue, 8 May 2007 20:32:03 GMT (envelope-from ivoras@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l48KW3uu039525 for perforce@freebsd.org; Tue, 8 May 2007 20:32:03 GMT (envelope-from ivoras@FreeBSD.org) Date: Tue, 8 May 2007 20:32:03 GMT Message-Id: <200705082032.l48KW3uu039525@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to ivoras@FreeBSD.org using -f From: Ivan Voras To: Perforce Change Reviews Cc: Subject: PERFORCE change 119505 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 20:32:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=119505 Change 119505 by ivoras@ivoras_finstall on 2007/05/08 20:31:19 Started working on the experimental / prototype backend. Let's call it SysToolD. This one is written in Python for ease of implementation, the real one should be done in C. Affected files ... .. //depot/projects/soc2007/ivoras_finstall/pybackend/README.txt#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Tue May 8 20:33:06 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 058AE16A406; Tue, 8 May 2007 20:33:06 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D806B16A403 for ; Tue, 8 May 2007 20:33:05 +0000 (UTC) (envelope-from ivoras@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id B226813C44B for ; Tue, 8 May 2007 20:33:05 +0000 (UTC) (envelope-from ivoras@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l48KX5BJ039903 for ; Tue, 8 May 2007 20:33:05 GMT (envelope-from ivoras@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l48KX5Ls039900 for perforce@freebsd.org; Tue, 8 May 2007 20:33:05 GMT (envelope-from ivoras@FreeBSD.org) Date: Tue, 8 May 2007 20:33:05 GMT Message-Id: <200705082033.l48KX5Ls039900@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to ivoras@FreeBSD.org using -f From: Ivan Voras To: Perforce Change Reviews Cc: Subject: PERFORCE change 119506 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 20:33:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=119506 Change 119506 by ivoras@ivoras_finstall on 2007/05/08 20:32:30 The beginnings of SysToolD. It's currently a simple XML-RPC server that doesn't do much, but can be used to examine and alter /etc/rc.conf Affected files ... .. //depot/projects/soc2007/ivoras_finstall/pybackend/conffile.py#1 add .. //depot/projects/soc2007/ivoras_finstall/pybackend/globals.py#1 add .. //depot/projects/soc2007/ivoras_finstall/pybackend/systoold.py#1 add .. //depot/projects/soc2007/ivoras_finstall/pybackend/systoolengine.py#1 add .. //depot/projects/soc2007/ivoras_finstall/pybackend/xmldict.py#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Tue May 8 20:38:12 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9001216A40A; Tue, 8 May 2007 20:38:12 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 68B5416A403 for ; Tue, 8 May 2007 20:38:12 +0000 (UTC) (envelope-from ivoras@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 42BB713C45E for ; Tue, 8 May 2007 20:38:12 +0000 (UTC) (envelope-from ivoras@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l48KcC7O040336 for ; Tue, 8 May 2007 20:38:12 GMT (envelope-from ivoras@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l48KcBrP040333 for perforce@freebsd.org; Tue, 8 May 2007 20:38:11 GMT (envelope-from ivoras@FreeBSD.org) Date: Tue, 8 May 2007 20:38:11 GMT Message-Id: <200705082038.l48KcBrP040333@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to ivoras@FreeBSD.org using -f From: Ivan Voras To: Perforce Change Reviews Cc: Subject: PERFORCE change 119507 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 20:38:13 -0000 http://perforce.freebsd.org/chv.cgi?CH=119507 Change 119507 by ivoras@ivoras_finstall on 2007/05/08 20:37:54 The beginnings of SysToolD test utility Affected files ... .. //depot/projects/soc2007/ivoras_finstall/pybackend/testtool/st.py#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Tue May 8 20:54:41 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 35F8B16A407; Tue, 8 May 2007 20:54:41 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 04F7A16A403 for ; Tue, 8 May 2007 20:54:41 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id EB05213C455 for ; Tue, 8 May 2007 20:54:40 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l48Kse2Y051646 for ; Tue, 8 May 2007 20:54:40 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l48KseXv051643 for perforce@freebsd.org; Tue, 8 May 2007 20:54:40 GMT (envelope-from bms@incunabulum.net) Date: Tue, 8 May 2007 20:54:40 GMT Message-Id: <200705082054.l48KseXv051643@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119510 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 20:54:41 -0000 http://perforce.freebsd.org/chv.cgi?CH=119510 Change 119510 by bms@bms_anglepoise on 2007/05/08 20:54:18 Add release/deactivate primitives. siba needs to be able to remap itself once it discovers how big its bus space is during probe. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips/nexus.c#9 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips/nexus.c#9 (text+ko) ==== @@ -71,6 +71,20 @@ static struct rman irq_rman; static struct rman mem_rman; +#ifdef notyet +/* + * XXX: TODO: Implement bus space barrier functions. + * Currently tag and handle are set when memory resources + * are activated. + */ +struct bus_space_tag nexus_bustag = { + NULL, /* cookie */ + NULL, /* parent bus tag */ + NEXUS_BUS_SPACE, /* type */ + nexus_bus_barrier, /* bus_space_barrier */ +}; +#endif + static struct resource * nexus_alloc_resource(device_t, device_t, int, int *, u_long, u_long, u_long, u_int); @@ -78,6 +92,8 @@ struct resource *); static device_t nexus_add_child(device_t, int, const char *, int); static int nexus_attach(device_t); +static int nexus_deactivate_resource(device_t, device_t, int, int, + struct resource *); static void nexus_delete_resource(device_t, device_t, int, int); static struct resource_list * nexus_get_reslist(device_t, device_t); @@ -87,6 +103,8 @@ static int nexus_print_child(device_t, device_t); static int nexus_print_all_resources(device_t dev); static int nexus_probe(device_t); +static int nexus_release_resource(device_t, device_t, int, int, + struct resource *); static int nexus_set_resource(device_t, device_t, int, int, u_long, u_long); static int nexus_setup_intr(device_t dev, device_t child, @@ -104,11 +122,13 @@ DEVMETHOD(bus_add_child, nexus_add_child), DEVMETHOD(bus_activate_resource,nexus_activate_resource), DEVMETHOD(bus_alloc_resource, nexus_alloc_resource), + DEVMETHOD(bus_deactivate_resource, nexus_deactivate_resource), DEVMETHOD(bus_delete_resource, nexus_delete_resource), DEVMETHOD(bus_get_resource, nexus_get_resource), DEVMETHOD(bus_get_resource_list, nexus_get_reslist), DEVMETHOD(bus_hinted_child, nexus_hinted_child), DEVMETHOD(bus_print_child, nexus_print_child), + DEVMETHOD(bus_release_resource, nexus_release_resource), DEVMETHOD(bus_set_resource, nexus_set_resource), DEVMETHOD(bus_setup_intr, nexus_setup_intr), DEVMETHOD(bus_teardown_intr, nexus_teardown_intr), @@ -123,16 +143,12 @@ }; static devclass_t nexus_devclass; -extern int rman_debug; /* XXX XXX */ - static int nexus_probe(device_t dev) { device_set_desc(dev, "MIPS32 root nexus"); - rman_debug = 1; /* XXX XXX */ - irq_rman.rm_start = 0; irq_rman.rm_end = NUM_MIPS_IRQS - 1; irq_rman.rm_type = RMAN_ARRAY; @@ -335,12 +351,6 @@ } rman_set_rid(rv, *rid); -#if 0 - if (type == SYS_RES_MEMORY) { - rman_set_bustag(rv, &nexus_bustag); - rman_set_bushandle(rv, rman_get_start(rv)); - } -#endif if (needactivate) { if (bus_activate_resource(child, type, *rid, rv)) { @@ -426,7 +436,32 @@ struct nexus_device *ndev = DEVTONX(child); struct resource_list *rl = &ndev->nx_resources; + printf("%s: entry\n", __func__); + resource_list_delete(rl, type, rid); } +static int +nexus_release_resource(device_t bus, device_t child, int type, int rid, + struct resource *r) +{ + printf("%s: entry\n", __func__); + + if (rman_get_flags(r) & RF_ACTIVE) { + int error = bus_deactivate_resource(child, type, rid, r); + if (error) + return error; + } + + return (rman_release_resource(r)); +} + +static int +nexus_deactivate_resource(device_t bus, device_t child, int type, int rid, + struct resource *r) +{ + + return (rman_deactivate_resource(r)); +} + DRIVER_MODULE(nexus, root, nexus_driver, nexus_devclass, 0, 0); From owner-p4-projects@FreeBSD.ORG Tue May 8 21:26:23 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C309F16A406; Tue, 8 May 2007 21:26:22 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7879316A402 for ; Tue, 8 May 2007 21:26:22 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 52B7113C43E for ; Tue, 8 May 2007 21:26:22 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l48LQMer057537 for ; Tue, 8 May 2007 21:26:22 GMT (envelope-from rpaulo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l48LQMnk057533 for perforce@freebsd.org; Tue, 8 May 2007 21:26:22 GMT (envelope-from rpaulo@FreeBSD.org) Date: Tue, 8 May 2007 21:26:22 GMT Message-Id: <200705082126.l48LQMnk057533@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rpaulo@FreeBSD.org using -f From: Rui Paulo To: Perforce Change Reviews Cc: Subject: PERFORCE change 119513 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 21:26:23 -0000 http://perforce.freebsd.org/chv.cgi?CH=119513 Change 119513 by rpaulo@rpaulo_epsilon on 2007/05/08 21:25:37 Add Apple Internal Keyboard / Trackpad. Affected files ... .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/usbdevs#4 edit Differences ... ==== //depot/projects/soc2007/rpaulo-macbook/dev/usb/usbdevs#4 (text+ko) ==== @@ -710,6 +710,7 @@ product APPLE IPOD_08 0x1208 iPod '08' product APPLE IPODVIDEO 0x1209 iPod Video product APPLE IPODNANO 0x120a iPod Nano +product APPLE INTKBTP 0x0218 Apple Internal Keyboard / Trackpad /* Arkmicro Technologies */ product ARKMICRO ARK3116 0x0232 ARK3116 Serial From owner-p4-projects@FreeBSD.ORG Tue May 8 21:46:48 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9C66E16A403; Tue, 8 May 2007 21:46:48 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 57AC516A400 for ; Tue, 8 May 2007 21:46:48 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 4A15B13C447 for ; Tue, 8 May 2007 21:46:48 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l48Lkmvb060991 for ; Tue, 8 May 2007 21:46:48 GMT (envelope-from rpaulo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l48LklLM060988 for perforce@freebsd.org; Tue, 8 May 2007 21:46:47 GMT (envelope-from rpaulo@FreeBSD.org) Date: Tue, 8 May 2007 21:46:47 GMT Message-Id: <200705082146.l48LklLM060988@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rpaulo@FreeBSD.org using -f From: Rui Paulo To: Perforce Change Reviews Cc: Subject: PERFORCE change 119515 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 21:46:48 -0000 http://perforce.freebsd.org/chv.cgi?CH=119515 Change 119515 by rpaulo@rpaulo_epsilon on 2007/05/08 21:46:22 On internal Apple keyboards (found on MacBooks and PowerBooks) the Fn key is software controlled. For now, locate the HID. Handling of the key will be done in subsequent edits. Affected files ... .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/ukbd.c#2 edit .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/usb_quirks.c#2 edit .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/usb_quirks.h#2 edit .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/usbhid.h#2 edit Differences ... ==== //depot/projects/soc2007/rpaulo-macbook/dev/usb/ukbd.c#2 (text+ko) ==== @@ -120,6 +120,9 @@ typedef struct ukbd_softc { device_t sc_dev; /* base device */ +#define UKBD_FN 0x01 + int sc_flags; + struct hid_location sc_loc_fn; /* location of the Fn key */ } ukbd_softc_t; #define UKBD_CHUNK 128 /* chunk size for read */ @@ -163,6 +166,10 @@ usbd_interface_handle iface = uaa->iface; usb_interface_descriptor_t *id; char devinfo[1024]; + void *desc; + int size; + usbd_status err; + uint32_t flags; keyboard_switch_t *sw; keyboard_t *kbd; @@ -177,6 +184,28 @@ usbd_devinfo(uaa->device, USBD_SHOW_INTERFACE_CLASS, devinfo); USB_ATTACH_SETUP; + /* + * Locate the Fn key on Apple keyboards. + */ + if (usbd_get_quirks(uaa->device)->uq_flags & UQ_KBD_FNKEY) { + err = usbd_read_report_desc(uaa->iface, &desc, &size, M_TEMP); + if (err) { + printf("%s: could not read report descriptor\n", + device_get_nameunit(sc->sc_dev)); + USB_ATTACH_ERROR_RETURN; + } + + if (hid_locate(desc, size, HID_USAGE2(HUP_CUSTOM, HUC_FNKEY), + hid_input, &sc->sc_loc_fn, &flags)) { + printf("%s: Fn key.\n", + device_get_nameunit(sc->sc_dev)); + sc->sc_flags |= UKBD_FN; + } else + printf("%s: Fn key not found.\n", + device_get_nameunit(sc->sc_dev)); + free(desc, M_TEMP); + } + arg[0] = (void *)uaa; arg[1] = (void *)ukbd_intr; kbd = NULL; ==== //depot/projects/soc2007/rpaulo-macbook/dev/usb/usb_quirks.c#2 (text+ko) ==== @@ -133,6 +133,9 @@ /* Devices which should be ignored by both ukbd and uhid */ { USB_VENDOR_CYPRESS, USB_PRODUCT_CYPRESS_WISPY, ANY, { UQ_KBD_IGNORE }}, + /* Devices that need special handling of the Fn key */ + { USB_VENDOR_APPLE, USB_PRODUCT_APPLE_INTKBTP, + ANY, { UQ_KBD_FNKEY } }, { 0, 0, 0, { 0 } } }; ==== //depot/projects/soc2007/rpaulo-macbook/dev/usb/usb_quirks.h#2 (text+ko) ==== @@ -57,6 +57,7 @@ #define UQ_OPEN_CLEARSTALL 0x4000 /* device needs clear endpoint stall */ #define UQ_HID_IGNORE 0x8000 /* device should be ignored by hid class */ #define UQ_KBD_IGNORE 0x18000 /* device should be ignored by both kbd and hid class */ +#define UQ_KBD_FNKEY 0x40000 /* device needs special handling for the Fn key */ }; ==== //depot/projects/soc2007/rpaulo-macbook/dev/usb/usbhid.h#2 (text+ko) ==== @@ -94,6 +94,7 @@ #define HUP_SCALE 0x008c #define HUP_CAMERA_CONTROL 0x0090 #define HUP_ARCADE 0x0091 +#define HUP_CUSTOM 0xffff #define HUP_MICROSOFT 0xff00 /* Usages, generic desktop */ @@ -165,6 +166,9 @@ #define HUD_ERASER 0x0045 #define HUD_TABLET_PICK 0x0046 +/* Usages Custom */ +#define HUC_FNKEY 0x0003 + #define HID_USAGE2(p,u) (((p) << 16) | u) #define UHID_INPUT_REPORT 0x01 From owner-p4-projects@FreeBSD.ORG Tue May 8 22:21:37 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 867A316A409; Tue, 8 May 2007 22:21:37 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4D47D16A402 for ; Tue, 8 May 2007 22:21:37 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id D61C913C43E for ; Tue, 8 May 2007 22:21:36 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l48MLa09068099 for ; Tue, 8 May 2007 22:21:36 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l48MLYJg068040 for perforce@freebsd.org; Tue, 8 May 2007 22:21:34 GMT (envelope-from jhb@freebsd.org) Date: Tue, 8 May 2007 22:21:34 GMT Message-Id: <200705082221.l48MLYJg068040@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Cc: Subject: PERFORCE change 119521 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 22:21:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=119521 Change 119521 by jhb@jhb_mutex on 2007/05/08 22:21:08 IFC @119518. Affected files ... .. //depot/projects/smpng/sys/amd64/acpica/madt.c#14 integrate .. //depot/projects/smpng/sys/amd64/amd64/intr_machdep.c#26 integrate .. //depot/projects/smpng/sys/amd64/amd64/io_apic.c#21 integrate .. //depot/projects/smpng/sys/amd64/amd64/local_apic.c#30 integrate .. //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#42 integrate .. //depot/projects/smpng/sys/amd64/amd64/mptable.c#12 integrate .. //depot/projects/smpng/sys/amd64/amd64/msi.c#6 integrate .. //depot/projects/smpng/sys/amd64/amd64/nexus.c#26 integrate .. //depot/projects/smpng/sys/amd64/include/apicvar.h#18 integrate .. //depot/projects/smpng/sys/amd64/include/intr_machdep.h#16 integrate .. //depot/projects/smpng/sys/amd64/include/vmparam.h#9 integrate .. //depot/projects/smpng/sys/amd64/isa/atpic.c#16 integrate .. //depot/projects/smpng/sys/arm/include/vmparam.h#8 integrate .. //depot/projects/smpng/sys/boot/common/loader.8#44 integrate .. //depot/projects/smpng/sys/conf/files#206 integrate .. //depot/projects/smpng/sys/conf/options#142 integrate .. //depot/projects/smpng/sys/contrib/opensolaris/uts/common/fs/zfs/dbuf.c#3 integrate .. //depot/projects/smpng/sys/contrib/opensolaris/uts/common/fs/zfs/dnode.c#2 integrate .. //depot/projects/smpng/sys/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c#2 integrate .. //depot/projects/smpng/sys/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c#2 integrate .. //depot/projects/smpng/sys/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#3 integrate .. //depot/projects/smpng/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#4 integrate .. //depot/projects/smpng/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#4 integrate .. //depot/projects/smpng/sys/contrib/opensolaris/uts/common/fs/zfs/zio.c#3 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi.c#101 integrate .. //depot/projects/smpng/sys/dev/ata/ata-disk.c#64 integrate .. //depot/projects/smpng/sys/dev/bce/if_bce.c#16 integrate .. //depot/projects/smpng/sys/dev/bce/if_bcefw.h#2 integrate .. //depot/projects/smpng/sys/dev/bce/if_bcereg.h#7 integrate .. //depot/projects/smpng/sys/dev/isp/isp.c#57 integrate .. //depot/projects/smpng/sys/dev/isp/isp_freebsd.c#56 integrate .. //depot/projects/smpng/sys/dev/isp/isp_freebsd.h#41 integrate .. //depot/projects/smpng/sys/dev/isp/isp_pci.c#55 integrate .. //depot/projects/smpng/sys/dev/isp/isp_sbus.c#26 integrate .. //depot/projects/smpng/sys/dev/isp/isp_tpublic.h#14 integrate .. //depot/projects/smpng/sys/dev/mpt/mpt.c#23 integrate .. //depot/projects/smpng/sys/dev/mpt/mpt.h#22 integrate .. //depot/projects/smpng/sys/dev/mpt/mpt_cam.c#25 integrate .. //depot/projects/smpng/sys/dev/mpt/mpt_cam.h#6 integrate .. //depot/projects/smpng/sys/dev/mpt/mpt_pci.c#32 integrate .. //depot/projects/smpng/sys/dev/mpt/mpt_raid.c#11 integrate .. //depot/projects/smpng/sys/dev/mxge/eth_z8e.dat.gz.uu#5 integrate .. //depot/projects/smpng/sys/dev/mxge/ethp_z8e.dat.gz.uu#5 integrate .. //depot/projects/smpng/sys/dev/mxge/if_mxge.c#17 integrate .. //depot/projects/smpng/sys/dev/mxge/mxge_mcp.h#4 integrate .. //depot/projects/smpng/sys/dev/nve/if_nve.c#15 integrate .. //depot/projects/smpng/sys/dev/pci/pci.c#93 integrate .. //depot/projects/smpng/sys/dev/sound/pci/hda/hdac.c#13 integrate .. //depot/projects/smpng/sys/dev/sound/pci/hda/hdac_private.h#5 integrate .. //depot/projects/smpng/sys/dev/sound/pci/ich.c#51 integrate .. //depot/projects/smpng/sys/dev/sound/pcm/buffer.h#13 integrate .. //depot/projects/smpng/sys/dev/sound/pcm/sound.h#31 integrate .. //depot/projects/smpng/sys/dev/usb/if_rum.c#1 branch .. //depot/projects/smpng/sys/dev/usb/if_rumreg.h#1 branch .. //depot/projects/smpng/sys/dev/usb/if_rumvar.h#1 branch .. //depot/projects/smpng/sys/dev/usb/rt2573_ucode.h#1 branch .. //depot/projects/smpng/sys/dev/usb/ubsa.c#18 integrate .. //depot/projects/smpng/sys/dev/usb/usb_subr.c#40 integrate .. //depot/projects/smpng/sys/dev/usb/usbdevs#105 integrate .. //depot/projects/smpng/sys/geom/eli/g_eli_ctl.c#9 integrate .. //depot/projects/smpng/sys/geom/geom.h#50 integrate .. //depot/projects/smpng/sys/geom/geom_dev.c#45 integrate .. //depot/projects/smpng/sys/geom/geom_disk.c#50 integrate .. //depot/projects/smpng/sys/geom/geom_disk.h#7 integrate .. //depot/projects/smpng/sys/geom/geom_io.c#47 integrate .. //depot/projects/smpng/sys/geom/geom_slice.c#36 integrate .. //depot/projects/smpng/sys/geom/geom_subr.c#50 integrate .. //depot/projects/smpng/sys/geom/part/g_part.c#3 integrate .. //depot/projects/smpng/sys/geom/part/g_part.h#2 integrate .. //depot/projects/smpng/sys/geom/part/g_part_apm.c#2 integrate .. //depot/projects/smpng/sys/geom/part/g_part_gpt.c#2 integrate .. //depot/projects/smpng/sys/i386/acpica/madt.c#20 integrate .. //depot/projects/smpng/sys/i386/conf/GENERIC#88 integrate .. //depot/projects/smpng/sys/i386/conf/PAE#20 integrate .. //depot/projects/smpng/sys/i386/i386/intr_machdep.c#26 integrate .. //depot/projects/smpng/sys/i386/i386/io_apic.c#23 integrate .. //depot/projects/smpng/sys/i386/i386/local_apic.c#51 integrate .. //depot/projects/smpng/sys/i386/i386/mp_machdep.c#108 integrate .. //depot/projects/smpng/sys/i386/i386/mptable.c#20 integrate .. //depot/projects/smpng/sys/i386/i386/msi.c#6 integrate .. //depot/projects/smpng/sys/i386/i386/nexus.c#28 integrate .. //depot/projects/smpng/sys/i386/include/apicvar.h#27 integrate .. //depot/projects/smpng/sys/i386/include/intr_machdep.h#18 integrate .. //depot/projects/smpng/sys/i386/include/vmparam.h#10 integrate .. //depot/projects/smpng/sys/i386/isa/atpic.c#19 integrate .. //depot/projects/smpng/sys/ia64/ia64/machdep.c#109 integrate .. //depot/projects/smpng/sys/ia64/include/vmparam.h#13 integrate .. //depot/projects/smpng/sys/kern/kern_condvar.c#48 integrate .. //depot/projects/smpng/sys/kern/kern_intr.c#87 integrate .. //depot/projects/smpng/sys/kern/kern_mutex.c#147 integrate .. //depot/projects/smpng/sys/kern/kern_rwlock.c#16 integrate .. //depot/projects/smpng/sys/kern/kern_sx.c#47 integrate .. //depot/projects/smpng/sys/kern/kern_synch.c#116 integrate .. //depot/projects/smpng/sys/kern/uipc_socket.c#105 integrate .. //depot/projects/smpng/sys/kern/uipc_usrreq.c#77 integrate .. //depot/projects/smpng/sys/modules/Makefile#140 integrate .. //depot/projects/smpng/sys/modules/em/Makefile#7 integrate .. //depot/projects/smpng/sys/modules/rum/Makefile#1 branch .. //depot/projects/smpng/sys/net/ieee8023ad_lacp.c#5 integrate .. //depot/projects/smpng/sys/net/ieee8023ad_lacp.h#3 integrate .. //depot/projects/smpng/sys/net/if_lagg.c#4 integrate .. //depot/projects/smpng/sys/net/if_lagg.h#3 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_amrr.c#2 integrate .. //depot/projects/smpng/sys/netinet/sctp.h#5 integrate .. //depot/projects/smpng/sys/netinet/sctp_asconf.c#8 integrate .. //depot/projects/smpng/sys/netinet/sctp_asconf.h#5 integrate .. //depot/projects/smpng/sys/netinet/sctp_auth.c#8 integrate .. //depot/projects/smpng/sys/netinet/sctp_auth.h#4 integrate .. //depot/projects/smpng/sys/netinet/sctp_bsd_addr.c#6 integrate .. //depot/projects/smpng/sys/netinet/sctp_bsd_addr.h#5 integrate .. //depot/projects/smpng/sys/netinet/sctp_constants.h#11 integrate .. //depot/projects/smpng/sys/netinet/sctp_crc32.c#5 integrate .. //depot/projects/smpng/sys/netinet/sctp_crc32.h#3 integrate .. //depot/projects/smpng/sys/netinet/sctp_header.h#4 integrate .. //depot/projects/smpng/sys/netinet/sctp_indata.c#12 integrate .. //depot/projects/smpng/sys/netinet/sctp_indata.h#5 integrate .. //depot/projects/smpng/sys/netinet/sctp_input.c#12 integrate .. //depot/projects/smpng/sys/netinet/sctp_input.h#3 integrate .. //depot/projects/smpng/sys/netinet/sctp_lock_bsd.h#5 integrate .. //depot/projects/smpng/sys/netinet/sctp_os.h#6 integrate .. //depot/projects/smpng/sys/netinet/sctp_os_bsd.h#10 integrate .. //depot/projects/smpng/sys/netinet/sctp_output.c#12 integrate .. //depot/projects/smpng/sys/netinet/sctp_output.h#6 integrate .. //depot/projects/smpng/sys/netinet/sctp_pcb.c#12 integrate .. //depot/projects/smpng/sys/netinet/sctp_pcb.h#10 integrate .. //depot/projects/smpng/sys/netinet/sctp_peeloff.c#8 integrate .. //depot/projects/smpng/sys/netinet/sctp_peeloff.h#3 integrate .. //depot/projects/smpng/sys/netinet/sctp_structs.h#9 integrate .. //depot/projects/smpng/sys/netinet/sctp_sysctl.c#4 integrate .. //depot/projects/smpng/sys/netinet/sctp_sysctl.h#4 integrate .. //depot/projects/smpng/sys/netinet/sctp_timer.c#9 integrate .. //depot/projects/smpng/sys/netinet/sctp_timer.h#3 integrate .. //depot/projects/smpng/sys/netinet/sctp_uio.h#10 integrate .. //depot/projects/smpng/sys/netinet/sctp_usrreq.c#13 integrate .. //depot/projects/smpng/sys/netinet/sctp_var.h#7 integrate .. //depot/projects/smpng/sys/netinet/sctputil.c#14 integrate .. //depot/projects/smpng/sys/netinet/sctputil.h#9 integrate .. //depot/projects/smpng/sys/netinet/tcp_debug.c#8 integrate .. //depot/projects/smpng/sys/netinet/tcp_input.c#105 integrate .. //depot/projects/smpng/sys/netinet/tcp_output.c#49 integrate .. //depot/projects/smpng/sys/netinet/tcp_subr.c#93 integrate .. //depot/projects/smpng/sys/netinet/tcp_syncache.c#59 integrate .. //depot/projects/smpng/sys/netinet/tcp_timer.c#36 integrate .. //depot/projects/smpng/sys/netinet/tcp_usrreq.c#62 integrate .. //depot/projects/smpng/sys/netinet/tcp_var.h#51 integrate .. //depot/projects/smpng/sys/netinet/udp_usrreq.c#77 integrate .. //depot/projects/smpng/sys/netinet6/in6_proto.c#19 integrate .. //depot/projects/smpng/sys/netinet6/nd6.c#41 integrate .. //depot/projects/smpng/sys/netinet6/nd6_nbr.c#25 integrate .. //depot/projects/smpng/sys/netinet6/sctp6_usrreq.c#11 integrate .. //depot/projects/smpng/sys/netinet6/sctp6_var.h#4 integrate .. //depot/projects/smpng/sys/powerpc/include/vmparam.h#6 integrate .. //depot/projects/smpng/sys/sparc64/include/vmparam.h#14 integrate .. //depot/projects/smpng/sys/sun4v/include/vmparam.h#3 integrate .. //depot/projects/smpng/sys/sys/disk.h#14 integrate .. //depot/projects/smpng/sys/sys/interrupt.h#22 integrate .. //depot/projects/smpng/sys/sys/rwlock.h#10 integrate .. //depot/projects/smpng/sys/sys/sx.h#27 integrate .. //depot/projects/smpng/sys/vm/vm_page.c#91 integrate .. //depot/projects/smpng/sys/vm/vm_page.h#39 integrate Differences ... ==== //depot/projects/smpng/sys/amd64/acpica/madt.c#14 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/acpica/madt.c,v 1.23 2007/03/22 18:16:38 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/acpica/madt.c,v 1.24 2007/05/08 22:01:02 jhb Exp $"); #include #include @@ -53,21 +53,18 @@ #include #include -#define NIOAPICS 32 /* Max number of I/O APICs */ -#define NLAPICS 32 /* Max number of local APICs */ - typedef void madt_entry_handler(ACPI_SUBTABLE_HEADER *entry, void *arg); /* These two arrays are indexed by APIC IDs. */ struct ioapic_info { void *io_apic; UINT32 io_vector; -} ioapics[NIOAPICS]; +} ioapics[MAX_APIC_ID + 1]; struct lapic_info { u_int la_enabled:1; u_int la_acpi_id:8; -} lapics[NLAPICS]; +} lapics[MAX_APIC_ID + 1]; static int madt_found_sci_override; static ACPI_TABLE_MADT *madt; @@ -393,7 +390,7 @@ } /* Third, we register all the I/O APIC's. */ - for (i = 0; i < NIOAPICS; i++) + for (i = 0; i <= MAX_APIC_ID; i++) if (ioapics[i].io_apic != NULL) ioapic_register(ioapics[i].io_apic); @@ -450,7 +447,7 @@ "enabled" : "disabled"); if (!(proc->LapicFlags & ACPI_MADT_ENABLED)) break; - if (proc->Id >= NLAPICS) + if (proc->Id > MAX_APIC_ID) panic("%s: CPU ID %u too high", __func__, proc->Id); la = &lapics[proc->Id]; KASSERT(la->la_enabled == 0, @@ -479,7 +476,7 @@ "MADT: Found IO APIC ID %u, Interrupt %u at %p\n", apic->Id, apic->GlobalIrqBase, (void *)(uintptr_t)apic->Address); - if (apic->Id >= NIOAPICS) + if (apic->Id > MAX_APIC_ID) panic("%s: I/O APIC ID %u too high", __func__, apic->Id); if (ioapics[apic->Id].io_apic != NULL) @@ -545,7 +542,7 @@ { int i; - for (i = 0; i < NLAPICS; i++) { + for (i = 0; i <= MAX_APIC_ID; i++) { if (!lapics[i].la_enabled) continue; if (lapics[i].la_acpi_id != acpi_id) @@ -566,7 +563,7 @@ int i, best; best = -1; - for (i = 0; i < NIOAPICS; i++) { + for (i = 0; i <= MAX_APIC_ID; i++) { if (ioapics[i].io_apic == NULL || ioapics[i].io_vector > intr) continue; ==== //depot/projects/smpng/sys/amd64/amd64/intr_machdep.c#26 (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/amd64/intr_machdep.c,v 1.30 2007/03/06 17:16:46 jhb Exp $ + * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.32 2007/05/08 21:29:12 jhb Exp $ */ /* @@ -43,13 +43,14 @@ #include #include #include -#include #include #include +#include #include #include #include #include +#include #include #include #include @@ -71,9 +72,16 @@ static int intrcnt_index; static struct intsrc *interrupt_sources[NUM_IO_INTS]; -static struct mtx intr_table_lock; +static struct sx intr_table_lock; +static struct mtx intrcnt_lock; static STAILQ_HEAD(, pic) pics; +#ifdef INTR_FILTER +static void intr_eoi_src(void *arg); +static void intr_disab_eoi_src(void *arg); +static void intr_event_stray(void *cookie); +#endif + #ifdef SMP static int assign_cpu; @@ -109,14 +117,14 @@ { int error; - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); if (intr_pic_registered(pic)) error = EBUSY; else { STAILQ_INSERT_TAIL(&pics, pic, pics); error = 0; } - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); return (error); } @@ -134,20 +142,26 @@ vector = isrc->is_pic->pic_vector(isrc); if (interrupt_sources[vector] != NULL) return (EEXIST); +#ifdef INTR_FILTER error = intr_event_create(&isrc->is_event, isrc, 0, + (mask_fn)isrc->is_pic->pic_enable_source, + intr_eoi_src, intr_disab_eoi_src, "irq%d:", vector); +#else + error = intr_event_create(&isrc->is_event, isrc, 0, (mask_fn)isrc->is_pic->pic_enable_source, "irq%d:", vector); +#endif if (error) return (error); - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); if (interrupt_sources[vector] != NULL) { - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); intr_event_destroy(isrc->is_event); return (EEXIST); } intrcnt_register(isrc); interrupt_sources[vector] = isrc; - isrc->is_enabled = 0; - mtx_unlock_spin(&intr_table_lock); + isrc->is_handlers = 0; + sx_xunlock(&intr_table_lock); return (0); } @@ -171,19 +185,18 @@ error = intr_event_add_handler(isrc->is_event, name, filter, handler, arg, intr_priority(flags), flags, cookiep); if (error == 0) { + sx_xlock(&intr_table_lock); intrcnt_updatename(isrc); - mtx_lock_spin(&intr_table_lock); - if (!isrc->is_enabled) { - isrc->is_enabled = 1; + isrc->is_handlers++; + if (isrc->is_handlers == 1) { #ifdef SMP if (assign_cpu) intr_assign_next_cpu(isrc); #endif - mtx_unlock_spin(&intr_table_lock); isrc->is_pic->pic_enable_intr(isrc); - } else - mtx_unlock_spin(&intr_table_lock); - isrc->is_pic->pic_enable_source(isrc); + isrc->is_pic->pic_enable_source(isrc); + } + sx_xunlock(&intr_table_lock); } return (error); } @@ -196,8 +209,16 @@ isrc = intr_handler_source(cookie); error = intr_event_remove_handler(cookie); - if (error == 0) + if (error == 0) { + sx_xlock(&intr_table_lock); + isrc->is_handlers--; + if (isrc->is_handlers == 0) { + isrc->is_pic->pic_disable_source(isrc, PIC_NO_EOI); + isrc->is_pic->pic_disable_intr(isrc); + } intrcnt_updatename(isrc); + sx_xunlock(&intr_table_lock); + } return (error); } @@ -212,11 +233,82 @@ return (isrc->is_pic->pic_config_intr(isrc, trig, pol)); } +#ifdef INTR_FILTER void intr_execute_handlers(struct intsrc *isrc, struct trapframe *frame) { struct thread *td; struct intr_event *ie; + int vector; + + td = curthread; + + /* + * We count software interrupts when we process them. The + * code here follows previous practice, but there's an + * argument for counting hardware interrupts when they're + * processed too. + */ + (*isrc->is_count)++; + PCPU_LAZY_INC(cnt.v_intr); + + ie = isrc->is_event; + + /* + * XXX: We assume that IRQ 0 is only used for the ISA timer + * device (clk). + */ + vector = isrc->is_pic->pic_vector(isrc); + if (vector == 0) + clkintr_pending = 1; + + if (intr_event_handle(ie, frame) != 0) + intr_event_stray(isrc); +} + +static void +intr_event_stray(void *cookie) +{ + struct intsrc *isrc; + + isrc = cookie; + /* + * For stray interrupts, mask and EOI the source, bump the + * stray count, and log the condition. + */ + isrc->is_pic->pic_disable_source(isrc, PIC_EOI); + (*isrc->is_straycount)++; + if (*isrc->is_straycount < MAX_STRAY_LOG) + log(LOG_ERR, "stray irq%d\n", isrc->is_pic->pic_vector(isrc)); + else if (*isrc->is_straycount == MAX_STRAY_LOG) + log(LOG_CRIT, + "too many stray irq %d's: not logging anymore\n", + isrc->is_pic->pic_vector(isrc)); +} + +static void +intr_eoi_src(void *arg) +{ + struct intsrc *isrc; + + isrc = arg; + isrc->is_pic->pic_eoi_source(isrc); +} + +static void +intr_disab_eoi_src(void *arg) +{ + struct intsrc *isrc; + + isrc = arg; + isrc->is_pic->pic_disable_source(isrc, PIC_EOI); +} +#else +void +intr_execute_handlers(struct intsrc *isrc, struct trapframe *frame) +{ + struct thread *td; + struct intr_event *ie; struct intr_handler *ih; int error, vector, thread; @@ -298,6 +390,7 @@ } td->td_intr_nesting_level--; } +#endif void intr_resume(void) @@ -307,12 +400,12 @@ #ifndef DEV_ATPIC atpic_reset(); #endif - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); STAILQ_FOREACH(pic, &pics, pics) { if (pic->pic_resume != NULL) pic->pic_resume(pic); } - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); } void @@ -320,12 +413,12 @@ { struct pic *pic; - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); STAILQ_FOREACH(pic, &pics, pics) { if (pic->pic_suspend != NULL) pic->pic_suspend(pic); } - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); } static void @@ -348,8 +441,8 @@ { char straystr[MAXCOMLEN + 1]; - /* mtx_assert(&intr_table_lock, MA_OWNED); */ KASSERT(is->is_event != NULL, ("%s: isrc with no event", __func__)); + mtx_lock_spin(&intrcnt_lock); is->is_index = intrcnt_index; intrcnt_index += 2; snprintf(straystr, MAXCOMLEN + 1, "stray irq%d", @@ -358,17 +451,18 @@ is->is_count = &intrcnt[is->is_index]; intrcnt_setname(straystr, is->is_index + 1); is->is_straycount = &intrcnt[is->is_index + 1]; + mtx_unlock_spin(&intrcnt_lock); } void intrcnt_add(const char *name, u_long **countp) { - mtx_lock_spin(&intr_table_lock); + mtx_lock_spin(&intrcnt_lock); *countp = &intrcnt[intrcnt_index]; intrcnt_setname(name, intrcnt_index); intrcnt_index++; - mtx_unlock_spin(&intr_table_lock); + mtx_unlock_spin(&intrcnt_lock); } static void @@ -378,7 +472,8 @@ intrcnt_setname("???", 0); intrcnt_index = 1; STAILQ_INIT(&pics); - mtx_init(&intr_table_lock, "intr table", NULL, MTX_SPIN); + sx_init(&intr_table_lock, "intr sources"); + mtx_init(&intrcnt_lock, "intrcnt", NULL, MTX_SPIN); } SYSINIT(intr_init, SI_SUB_INTR, SI_ORDER_FIRST, intr_init, NULL) @@ -486,14 +581,14 @@ return; /* Round-robin assign a CPU to each enabled source. */ - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); assign_cpu = 1; for (i = 0; i < NUM_IO_INTS; i++) { isrc = interrupt_sources[i]; - if (isrc != NULL && isrc->is_enabled) + if (isrc != NULL && isrc->is_handlers > 0) intr_assign_next_cpu(isrc); } - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); } SYSINIT(intr_shuffle_irqs, SI_SUB_SMP, SI_ORDER_SECOND, intr_shuffle_irqs, NULL) #endif ==== //depot/projects/smpng/sys/amd64/amd64/io_apic.c#21 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.29 2007/03/20 21:53:30 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.30 2007/05/08 21:29:12 jhb Exp $"); #include "opt_isa.h" @@ -114,6 +114,7 @@ static void ioapic_disable_source(struct intsrc *isrc, int eoi); static void ioapic_eoi_source(struct intsrc *isrc); static void ioapic_enable_intr(struct intsrc *isrc); +static void ioapic_disable_intr(struct intsrc *isrc); static int ioapic_vector(struct intsrc *isrc); static int ioapic_source_pending(struct intsrc *isrc); static int ioapic_config_intr(struct intsrc *isrc, enum intr_trigger trig, @@ -125,8 +126,8 @@ static STAILQ_HEAD(,ioapic) ioapic_list = STAILQ_HEAD_INITIALIZER(ioapic_list); struct pic ioapic_template = { ioapic_enable_source, ioapic_disable_source, ioapic_eoi_source, ioapic_enable_intr, - ioapic_vector, ioapic_source_pending, - NULL, ioapic_resume, + ioapic_disable_intr, ioapic_vector, + ioapic_source_pending, NULL, ioapic_resume, ioapic_config_intr, ioapic_assign_cpu }; static int next_ioapic_base; @@ -359,6 +360,23 @@ } } +static void +ioapic_disable_intr(struct intsrc *isrc) +{ + struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; + u_int vector; + + if (intpin->io_vector != 0) { + /* Mask this interrupt pin and free its APIC vector. */ + vector = intpin->io_vector; + apic_disable_vector(vector); + intpin->io_masked = 1; + intpin->io_vector = 0; + ioapic_program_intpin(intpin); + apic_free_vector(vector, intpin->io_irq); + } +} + static int ioapic_vector(struct intsrc *isrc) { ==== //depot/projects/smpng/sys/amd64/amd64/local_apic.c#30 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.38 2007/04/25 19:58:41 ariff Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.40 2007/05/08 22:01:02 jhb Exp $"); #include "opt_hwpmc_hooks.h" @@ -65,13 +65,6 @@ #include #endif -/* - * We can handle up to 60 APICs via our logical cluster IDs, but currently - * the physical IDs on Intel processors up to the Pentium 4 are limited to - * 16. - */ -#define MAX_APICID 16 - /* Sanity checks on IDT vectors. */ CTASSERT(APIC_IO_INTS + APIC_NUM_IOINTS == APIC_TIMER_INT); CTASSERT(APIC_TIMER_INT < APIC_LOCAL_INTS); @@ -114,7 +107,7 @@ u_long la_hard_ticks; u_long la_stat_ticks; u_long la_prof_ticks; -} static lapics[MAX_APICID]; +} static lapics[MAX_APIC_ID + 1]; /* XXX: should thermal be an NMI? */ @@ -147,6 +140,8 @@ APIC_TDCR_32, APIC_TDCR_64, APIC_TDCR_128 }; +extern inthand_t IDTVEC(rsvd); + volatile lapic_t *lapic; vm_paddr_t lapic_paddr; static u_long lapic_timer_divisor, lapic_timer_period, lapic_timer_hz; @@ -238,7 +233,7 @@ { int i; - if (apic_id >= MAX_APICID) { + if (apic_id > MAX_APIC_ID) { printf("APIC: Ignoring local APIC with ID %d\n", apic_id); if (boot_cpu) panic("Can't ignore BSP"); @@ -837,6 +832,16 @@ setidt(vector, ioint_handlers[vector / 32], SDT_SYSIGT, SEL_KPL, 0); } +void +apic_disable_vector(u_int vector) +{ + + KASSERT(vector != IDT_SYSCALL, ("Attempt to overwrite syscall entry")); + KASSERT(ioint_handlers[vector / 32] != NULL, + ("No ISR handler for vector %u", vector)); + setidt(vector, &IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0); +} + /* Release an APIC vector when it's no longer in use. */ void apic_free_vector(u_int vector, u_int irq) ==== //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#42 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.283 2007/03/06 17:16:46 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.284 2007/05/08 22:01:02 jhb Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -151,7 +151,7 @@ int cpu_present:1; int cpu_bsp:1; int cpu_disabled:1; -} static cpu_info[MAXCPU]; +} static cpu_info[MAX_APIC_ID + 1]; int cpu_apic_ids[MAXCPU]; /* Holds pending bitmap based IPIs per CPU */ @@ -159,6 +159,7 @@ static u_int boot_address; +static void assign_cpu_ids(void); static void set_interrupt_apic_ids(void); static int start_all_aps(void); static int start_ap(int apic_id); @@ -204,7 +205,7 @@ } group = &mp_groups[0]; groups = 1; - for (cpu = 0, apic_id = 0; apic_id < MAXCPU; apic_id++) { + for (cpu = 0, apic_id = 0; apic_id <= MAX_APIC_ID; apic_id++) { if (!cpu_info[apic_id].cpu_present) continue; /* @@ -246,9 +247,8 @@ cpu_add(u_int apic_id, char boot_cpu) { - if (apic_id >= MAXCPU) { - printf("SMP: CPU %d exceeds maximum CPU %d, ignoring\n", - apic_id, MAXCPU - 1); + if (apic_id > MAX_APIC_ID) { + panic("SMP: APIC ID %d too high", apic_id); return; } KASSERT(cpu_info[apic_id].cpu_present == 0, ("CPU %d added twice", @@ -261,13 +261,13 @@ boot_cpu_id = apic_id; cpu_info[apic_id].cpu_bsp = 1; } - mp_ncpus++; - if (apic_id > mp_maxid) - mp_maxid = apic_id; + if (mp_ncpus < MAXCPU) { + mp_ncpus++; + mp_maxid = mp_ncpus -1; + } if (bootverbose) printf("SMP: Added CPU %d (%s)\n", apic_id, boot_cpu ? "BSP" : "AP"); - } void @@ -286,8 +286,7 @@ else KASSERT(mp_maxid >= mp_ncpus - 1, ("%s: counters out of sync: max %d, count %d", __func__, - mp_maxid, mp_ncpus)); - + mp_maxid, mp_ncpus)); } int @@ -365,6 +364,8 @@ ("BSP's APIC ID doesn't match boot_cpu_id")); cpu_apic_ids[0] = boot_cpu_id; + assign_cpu_ids(); + /* Start each Application Processor */ start_all_aps(); @@ -429,7 +430,7 @@ /* List CPUs */ printf(" cpu0 (BSP): APIC ID: %2d\n", boot_cpu_id); - for (i = 1, x = 0; x < MAXCPU; x++) { + for (i = 1, x = 0; x <= MAX_APIC_ID; x++) { if (!cpu_info[x].cpu_present || cpu_info[x].cpu_bsp) continue; if (cpu_info[x].cpu_disabled) @@ -646,6 +647,48 @@ } /* + * Assign logical CPU IDs to local APICs. + */ +static void +assign_cpu_ids(void) +{ + u_int i; + + /* Check for explicitly disabled CPUs. */ + for (i = 0; i <= MAX_APIC_ID; i++) { + if (!cpu_info[i].cpu_present || cpu_info[i].cpu_bsp) + continue; + + /* Don't use this CPU if it has been disabled by a tunable. */ + if (resource_disabled("lapic", i)) { + cpu_info[i].cpu_disabled = 1; + continue; + } + } + + /* + * Assign CPU IDs to local APIC IDs and disable any CPUs + * beyond MAXCPU. CPU 0 has already been assigned to the BSP, + * so we only have to assign IDs for APs. + */ + mp_ncpus = 1; + for (i = 0; i <= MAX_APIC_ID; i++) { + if (!cpu_info[i].cpu_present || cpu_info[i].cpu_bsp || + cpu_info[i].cpu_disabled) + continue; + + if (mp_ncpus < MAXCPU) { + cpu_apic_ids[mp_ncpus] = i; + mp_ncpus++; + } else + cpu_info[i].cpu_disabled = 1; + } + KASSERT(mp_maxid >= mp_ncpus - 1, + ("%s: counters out of sync: max %d, count %d", __func__, mp_maxid, + mp_ncpus)); +} + +/* * start each AP in our list */ static int @@ -696,24 +739,8 @@ outb(CMOS_DATA, BIOS_WARM); /* 'warm-start' */ /* start each AP */ - for (cpu = 0, apic_id = 0; apic_id < MAXCPU; apic_id++) { - - /* Ignore non-existent CPUs and the BSP. */ - if (!cpu_info[apic_id].cpu_present || - cpu_info[apic_id].cpu_bsp) - continue; - - /* Don't use this CPU if it has been disabled by a tunable. */ - if (resource_disabled("lapic", apic_id)) { - cpu_info[apic_id].cpu_disabled = 1; - mp_ncpus--; - continue; - } - - cpu++; - - /* save APIC ID for this logical ID */ - cpu_apic_ids[cpu] = apic_id; + for (cpu = 1; cpu < mp_ncpus; cpu++) { + apic_id = cpu_apic_ids[cpu]; /* allocate and set up an idle stack data page */ bootstacks[cpu] = (void *)kmem_alloc(kernel_map, KSTACK_PAGES * PAGE_SIZE); ==== //depot/projects/smpng/sys/amd64/amd64/mptable.c#12 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable.c,v 1.239 2007/03/09 15:49:57 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable.c,v 1.240 2007/05/08 22:01:02 jhb Exp $"); #include #include @@ -50,7 +50,7 @@ /* string defined by the Intel MP Spec as identifying the MP table */ #define MP_SIG 0x5f504d5f /* _MP_ */ -#define NAPICID 32 /* Max number of APIC's */ +#define MAX_LAPIC_ID 63 /* Max local APIC ID for HTT fixup */ #define BIOS_BASE (0xf0000) #define BIOS_SIZE (0x10000) @@ -136,7 +136,7 @@ static mpfps_t mpfps; static mpcth_t mpct; -static void *ioapics[NAPICID]; +static void *ioapics[MAX_APIC_ID + 1]; static bus_datum *busses; static int mptable_nioapics, mptable_nbusses, mptable_maxbusid; static int pci0 = -1; @@ -152,7 +152,7 @@ static void mptable_count_items(void); static void mptable_count_items_handler(u_char *entry, void *arg); #ifdef MPTABLE_FORCE_HTT -static void mptable_hyperthread_fixup(u_int id_mask); +static void mptable_hyperthread_fixup(u_long id_mask); #endif static void mptable_parse_apics_and_busses(void); static void mptable_parse_apics_and_busses_handler(u_char *entry, @@ -294,7 +294,7 @@ static int mptable_probe_cpus(void) { - u_int cpu_mask; + u_long cpu_mask; /* Is this a pre-defined config? */ if (mpfps->config_type != 0) { @@ -356,7 +356,7 @@ mptable_parse_ints(); /* Fourth, we register all the I/O APIC's. */ - for (i = 0; i < NAPICID; i++) + for (i = 0; i <= MAX_APIC_ID; i++) if (ioapics[i] != NULL) ioapic_register(ioapics[i]); @@ -414,7 +414,7 @@ mptable_probe_cpus_handler(u_char *entry, void *arg) { proc_entry_ptr proc; - u_int *cpu_mask; + u_long *cpu_mask; switch (*entry) { case MPCT_ENTRY_PROCESSOR: @@ -422,8 +422,10 @@ if (proc->cpu_flags & PROCENTRY_FLAG_EN) { lapic_create(proc->apic_id, proc->cpu_flags & PROCENTRY_FLAG_BP); - cpu_mask = (u_int *)arg; - *cpu_mask |= (1 << proc->apic_id); + if (proc->apic_id < MAX_LAPIC_ID) { + cpu_mask = (u_long *)arg; + *cpu_mask |= (1ul << proc->apic_id); + } } break; } @@ -510,7 +512,7 @@ apic = (io_apic_entry_ptr)entry; if (!(apic->apic_flags & IOAPICENTRY_FLAG_EN)) break; - if (apic->apic_id >= NAPICID) + if (apic->apic_id > MAX_APIC_ID) panic("%s: I/O APIC ID %d too high", __func__, apic->apic_id); if (ioapics[apic->apic_id] != NULL) @@ -655,7 +657,7 @@ return; } } - if (apic_id >= NAPICID) { + if (apic_id > MAX_APIC_ID) { printf("MPTable: Ignoring interrupt entry for ioapic%d\n", intr->dst_apic_id); return; @@ -868,7 +870,7 @@ * with the number of logical CPU's in the processor. */ static void -mptable_hyperthread_fixup(u_int id_mask) +mptable_hyperthread_fixup(u_long id_mask) { u_int i, id, logical_cpus; @@ -885,7 +887,7 @@ * physical processor. If any of those ID's are * already in the table, then kill the fixup. */ - for (id = 0; id < NAPICID; id++) { + for (id = 0; id <= MAX_LAPIC_ID; id++) { if ((id_mask & 1 << id) == 0) continue; /* First, make sure we are on a logical_cpus boundary. */ @@ -900,7 +902,7 @@ * Ok, the ID's checked out, so perform the fixup by * adding the logical CPUs. */ - while ((id = ffs(id_mask)) != 0) { + while ((id = ffsl(id_mask)) != 0) { id--; for (i = id + 1; i < id + logical_cpus; i++) { if (bootverbose) ==== //depot/projects/smpng/sys/amd64/amd64/msi.c#6 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.5 2007/05/02 17:50:34 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.6 2007/05/08 21:29:13 jhb Exp $"); #include #include >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Tue May 8 22:26:45 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1C33516A409; Tue, 8 May 2007 22:26:45 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E041216A407 for ; Tue, 8 May 2007 22:26:44 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id D2ABF13C448 for ; Tue, 8 May 2007 22:26:44 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l48MQiNx068971 for ; Tue, 8 May 2007 22:26:44 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l48MQiBR068968 for perforce@freebsd.org; Tue, 8 May 2007 22:26:44 GMT (envelope-from fli@FreeBSD.org) Date: Tue, 8 May 2007 22:26:44 GMT Message-Id: <200705082226.l48MQiBR068968@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119525 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 22:26:45 -0000 http://perforce.freebsd.org/chv.cgi?CH=119525 Change 119525 by fli@fli_genesis on 2007/05/08 22:25:51 Add the initial multicast DNS stack to the responder daemon. It provides buffer management, packet creation/parsing, takes care of socket creation and does multicast membership join/leave. There is full support for IPv6, DNS name compression and UTF-8. Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/mdns.h#1 add .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_buf.c#1 add .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_buf.h#1 add .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_mdns.c#1 add .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_mdns.h#1 add .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_packet.c#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Tue May 8 22:29:54 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E890E16A407; Tue, 8 May 2007 22:29:53 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C658A16A400 for ; Tue, 8 May 2007 22:29:53 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id A109813C45D for ; Tue, 8 May 2007 22:29:53 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l48MTrCk069132 for ; Tue, 8 May 2007 22:29:53 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l48MTrbh069129 for perforce@freebsd.org; Tue, 8 May 2007 22:29:53 GMT (envelope-from fli@FreeBSD.org) Date: Tue, 8 May 2007 22:29:53 GMT Message-Id: <200705082229.l48MTrbh069129@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119527 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 22:29:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=119527 Change 119527 by fli@fli_genesis on 2007/05/08 22:29:14 Add data structures needed by the stack. A Double-linked list and a hash table. Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/hash.c#1 add .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/hash.h#1 add .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/list.h#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Tue May 8 22:36:48 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4A42D16A40B; Tue, 8 May 2007 22:36:48 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E234616A400 for ; Tue, 8 May 2007 22:36:47 +0000 (UTC) (envelope-from peter@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id D19DA13C447 for ; Tue, 8 May 2007 22:36:47 +0000 (UTC) (envelope-from peter@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l48Mal3d070689 for ; Tue, 8 May 2007 22:36:47 GMT (envelope-from peter@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l48MaAmg070673 for perforce@freebsd.org; Tue, 8 May 2007 22:36:10 GMT (envelope-from peter@freebsd.org) Date: Tue, 8 May 2007 22:36:10 GMT Message-Id: <200705082236.l48MaAmg070673@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to peter@freebsd.org using -f From: Peter Wemm To: Perforce Change Reviews Cc: Subject: PERFORCE change 119528 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 22:36:48 -0000 http://perforce.freebsd.org/chv.cgi?CH=119528 Change 119528 by peter@peter_overcee on 2007/05/08 22:35:59 IFC @119518 Affected files ... .. //depot/projects/hammer/MAINTAINERS#44 integrate .. //depot/projects/hammer/Makefile.inc1#122 integrate .. //depot/projects/hammer/ObsoleteFiles.inc#25 integrate .. //depot/projects/hammer/UPDATING#100 integrate .. //depot/projects/hammer/bin/df/df.c#23 integrate .. //depot/projects/hammer/bin/sh/var.c#12 integrate .. //depot/projects/hammer/cddl/Makefile#2 integrate .. //depot/projects/hammer/cddl/Makefile.inc#2 integrate .. //depot/projects/hammer/cddl/lib/Makefile#2 integrate .. //depot/projects/hammer/cddl/lib/Makefile.inc#2 integrate .. //depot/projects/hammer/cddl/lib/libavl/Makefile#2 integrate .. //depot/projects/hammer/cddl/lib/libnvpair/Makefile#2 integrate .. //depot/projects/hammer/cddl/lib/libumem/Makefile#2 integrate .. //depot/projects/hammer/cddl/lib/libuutil/Makefile#2 integrate .. //depot/projects/hammer/cddl/lib/libzfs/Makefile#2 integrate .. //depot/projects/hammer/cddl/lib/libzpool/Makefile#2 integrate .. //depot/projects/hammer/cddl/sbin/Makefile#2 integrate .. //depot/projects/hammer/cddl/sbin/zfs/Makefile#2 integrate .. //depot/projects/hammer/cddl/sbin/zpool/Makefile#2 integrate .. //depot/projects/hammer/cddl/usr.bin/Makefile#2 integrate .. //depot/projects/hammer/cddl/usr.bin/ztest/Makefile#2 integrate .. //depot/projects/hammer/cddl/usr.sbin/Makefile#2 integrate .. //depot/projects/hammer/cddl/usr.sbin/zdb/Makefile#2 integrate .. //depot/projects/hammer/compat/opensolaris/include/devid.h#2 integrate .. //depot/projects/hammer/compat/opensolaris/misc/deviceid.c#1 branch .. //depot/projects/hammer/compat/opensolaris/misc/fsshare.c#2 integrate .. //depot/projects/hammer/contrib/gdb/gdb/ppcfbsd-nat.c#2 integrate .. //depot/projects/hammer/contrib/libreadline/FREEBSD-upgrade#7 integrate .. //depot/projects/hammer/contrib/libreadline/display.c#8 integrate .. //depot/projects/hammer/contrib/openbsm/HISTORY#4 integrate .. //depot/projects/hammer/contrib/openbsm/README#4 integrate .. //depot/projects/hammer/contrib/openbsm/TODO#4 integrate .. //depot/projects/hammer/contrib/openbsm/VERSION#4 integrate .. //depot/projects/hammer/contrib/openbsm/bin/audit/audit.8#2 integrate .. //depot/projects/hammer/contrib/openbsm/bin/auditd/auditd.8#3 integrate .. //depot/projects/hammer/contrib/openbsm/bin/auditd/auditd.c#4 integrate .. //depot/projects/hammer/contrib/openbsm/bin/auditfilterd/auditfilterd.8#2 integrate .. //depot/projects/hammer/contrib/openbsm/bin/auditfilterd/auditfilterd.c#3 integrate .. //depot/projects/hammer/contrib/openbsm/bin/auditreduce/auditreduce.1#3 integrate .. //depot/projects/hammer/contrib/openbsm/bin/praudit/praudit.1#2 integrate .. //depot/projects/hammer/contrib/openbsm/bin/praudit/praudit.c#2 integrate .. //depot/projects/hammer/contrib/openbsm/bsm/libbsm.h#4 integrate .. //depot/projects/hammer/contrib/openbsm/compat/clock_gettime.h#1 branch .. //depot/projects/hammer/contrib/openbsm/config/config.h#4 integrate .. //depot/projects/hammer/contrib/openbsm/configure#4 integrate .. //depot/projects/hammer/contrib/openbsm/configure.ac#4 integrate .. //depot/projects/hammer/contrib/openbsm/etc/audit_event#5 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/au_class.3#2 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/au_control.3#3 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/au_event.3#2 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/au_free_token.3#2 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/au_io.3#2 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/au_mask.3#2 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/au_open.3#3 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/au_token.3#4 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/au_user.3#2 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/audit_submit.3#2 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/bsm_io.c#4 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/bsm_notify.c#3 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/bsm_token.c#4 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/bsm_wrappers.c#3 integrate .. //depot/projects/hammer/contrib/openbsm/libbsm/libbsm.3#4 integrate .. //depot/projects/hammer/contrib/openbsm/man/audit.2#2 integrate .. //depot/projects/hammer/contrib/openbsm/man/audit.log.5#4 integrate .. //depot/projects/hammer/contrib/openbsm/man/audit_class.5#2 integrate .. //depot/projects/hammer/contrib/openbsm/man/audit_control.5#3 integrate .. //depot/projects/hammer/contrib/openbsm/man/audit_event.5#2 integrate .. //depot/projects/hammer/contrib/openbsm/man/audit_user.5#2 integrate .. //depot/projects/hammer/contrib/openbsm/man/audit_warn.5#2 integrate .. //depot/projects/hammer/contrib/openbsm/man/auditctl.2#3 integrate .. //depot/projects/hammer/contrib/openbsm/man/auditon.2#3 integrate .. //depot/projects/hammer/contrib/openbsm/man/getaudit.2#2 integrate .. //depot/projects/hammer/contrib/openbsm/man/getauid.2#2 integrate .. //depot/projects/hammer/contrib/openbsm/man/setaudit.2#2 integrate .. //depot/projects/hammer/contrib/openbsm/man/setauid.2#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/bsm/generate.c#3 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/arg32_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/data_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/file_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/in_addr_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/ip_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/ipc_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/iport_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/opaque_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/path_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/process32_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/process32ex_record#2 delete .. //depot/projects/hammer/contrib/openbsm/test/reference/process32ex_record-IPv4#1 branch .. //depot/projects/hammer/contrib/openbsm/test/reference/process32ex_record-IPv6#1 branch .. //depot/projects/hammer/contrib/openbsm/test/reference/process32ex_token#2 delete .. //depot/projects/hammer/contrib/openbsm/test/reference/process32ex_token-IPv4#1 branch .. //depot/projects/hammer/contrib/openbsm/test/reference/process32ex_token-IPv6#1 branch .. //depot/projects/hammer/contrib/openbsm/test/reference/process64_record#1 branch .. //depot/projects/hammer/contrib/openbsm/test/reference/process64_token#1 branch .. //depot/projects/hammer/contrib/openbsm/test/reference/process64ex_record-IPv4#1 branch .. //depot/projects/hammer/contrib/openbsm/test/reference/process64ex_record-IPv6#1 branch .. //depot/projects/hammer/contrib/openbsm/test/reference/process64ex_token-IPv4#1 branch .. //depot/projects/hammer/contrib/openbsm/test/reference/process64ex_token-IPv6#1 branch .. //depot/projects/hammer/contrib/openbsm/test/reference/return32_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/seq_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/subject32_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/subject32ex_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/subject32ex_token-IPv4#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/subject32ex_token-IPv6#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/text_record#2 integrate .. //depot/projects/hammer/contrib/openbsm/test/reference/zonename_record#1 branch .. //depot/projects/hammer/contrib/openbsm/test/reference/zonename_token#1 branch .. //depot/projects/hammer/contrib/openbsm/tools/audump.c#3 integrate .. //depot/projects/hammer/contrib/opensolaris/cmd/zdb/zdb.8#2 integrate .. //depot/projects/hammer/contrib/opensolaris/cmd/zdb/zdb.c#2 integrate .. //depot/projects/hammer/contrib/opensolaris/cmd/zfs/zfs.8#2 integrate .. //depot/projects/hammer/contrib/opensolaris/cmd/zfs/zfs_main.c#2 integrate .. //depot/projects/hammer/contrib/opensolaris/cmd/zpool/zpool.8#2 integrate .. //depot/projects/hammer/contrib/opensolaris/cmd/zpool/zpool_vdev.c#2 integrate .. //depot/projects/hammer/contrib/opensolaris/cmd/ztest/ztest.c#2 integrate .. //depot/projects/hammer/contrib/opensolaris/lib/libzfs/common/libzfs.h#2 integrate .. //depot/projects/hammer/contrib/opensolaris/lib/libzfs/common/libzfs_changelist.c#2 integrate .. //depot/projects/hammer/contrib/opensolaris/lib/libzfs/common/libzfs_config.c#2 integrate .. //depot/projects/hammer/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c#2 integrate .. //depot/projects/hammer/contrib/opensolaris/lib/libzfs/common/libzfs_import.c#2 integrate .. //depot/projects/hammer/contrib/opensolaris/lib/libzpool/common/kernel.c#2 integrate .. //depot/projects/hammer/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h#2 integrate .. //depot/projects/hammer/contrib/sendmail/libmilter/engine.c#10 integrate .. //depot/projects/hammer/contrib/sendmail/libmilter/listener.c#10 integrate .. //depot/projects/hammer/contrib/sendmail/libmilter/main.c#6 integrate .. //depot/projects/hammer/contrib/top/commands.c#7 integrate .. //depot/projects/hammer/contrib/top/machine.h#4 integrate .. //depot/projects/hammer/contrib/top/top.X#9 integrate .. //depot/projects/hammer/contrib/top/top.c#9 integrate .. //depot/projects/hammer/contrib/top/top.h#3 integrate .. //depot/projects/hammer/contrib/traceroute/traceroute.c#8 integrate .. //depot/projects/hammer/etc/mtree/BSD.include.dist#42 integrate .. //depot/projects/hammer/etc/rc.d/hostid#2 integrate .. //depot/projects/hammer/etc/rc.d/mountd#10 integrate .. //depot/projects/hammer/etc/rc.d/netoptions#7 integrate .. //depot/projects/hammer/etc/rc.d/routing#7 integrate .. //depot/projects/hammer/etc/rc.d/zfs#2 integrate .. //depot/projects/hammer/etc/sendmail/freebsd.mc#9 integrate .. //depot/projects/hammer/etc/sendmail/freebsd.submit.mc#5 integrate .. //depot/projects/hammer/etc/services#13 integrate .. //depot/projects/hammer/gnu/usr.bin/gdb/arch/powerpc/Makefile#2 integrate .. //depot/projects/hammer/gnu/usr.bin/gdb/arch/powerpc/init.c#2 integrate .. //depot/projects/hammer/include/Makefile#61 integrate .. //depot/projects/hammer/include/rpc/Makefile#2 integrate .. //depot/projects/hammer/include/rpc/types.h#3 delete .. //depot/projects/hammer/include/stdlib.h#15 integrate .. //depot/projects/hammer/lib/libarchive/Makefile#40 integrate .. //depot/projects/hammer/lib/libarchive/archive.h.in#17 integrate .. //depot/projects/hammer/lib/libarchive/archive_entry.c#29 integrate .. //depot/projects/hammer/lib/libarchive/archive_platform.h#17 integrate .. //depot/projects/hammer/lib/libarchive/archive_read_extract.c#33 integrate .. //depot/projects/hammer/lib/libarchive/archive_read_support_format_ar.c#2 integrate .. //depot/projects/hammer/lib/libarchive/archive_read_support_format_cpio.c#19 integrate .. //depot/projects/hammer/lib/libarchive/archive_read_support_format_tar.c#32 integrate .. //depot/projects/hammer/lib/libarchive/archive_read_support_format_zip.c#10 integrate .. //depot/projects/hammer/lib/libarchive/archive_write_disk.c#4 integrate .. //depot/projects/hammer/lib/libarchive/archive_write_disk_set_standard_lookup.c#2 integrate .. //depot/projects/hammer/lib/libarchive/archive_write_set_compression_none.c#14 integrate .. //depot/projects/hammer/lib/libarchive/archive_write_set_format_ar.c#2 integrate .. //depot/projects/hammer/lib/libarchive/archive_write_set_format_by_name.c#6 integrate .. //depot/projects/hammer/lib/libarchive/archive_write_set_format_pax.c#30 integrate .. //depot/projects/hammer/lib/libarchive/archive_write_set_format_ustar.c#16 integrate .. //depot/projects/hammer/lib/libarchive/config_freebsd.h#3 integrate .. //depot/projects/hammer/lib/libarchive/test/Makefile#3 integrate .. //depot/projects/hammer/lib/libarchive/test/main.c#2 integrate .. //depot/projects/hammer/lib/libarchive/test/test_acl_basic.c#2 integrate .. //depot/projects/hammer/lib/libarchive/test/test_acl_pax.c#2 integrate .. //depot/projects/hammer/lib/libarchive/test/test_read_data_large.c#2 integrate .. //depot/projects/hammer/lib/libarchive/test/test_read_extract.c#2 integrate .. //depot/projects/hammer/lib/libarchive/test/test_read_format_ar.c#2 integrate .. //depot/projects/hammer/lib/libarchive/test/test_read_large.c#2 integrate .. //depot/projects/hammer/lib/libarchive/test/test_read_position.c#2 integrate .. //depot/projects/hammer/lib/libarchive/test/test_read_truncated.c#2 integrate .. //depot/projects/hammer/lib/libarchive/test/test_tar_filenames.c#1 branch .. //depot/projects/hammer/lib/libarchive/test/test_write_disk_perms.c#3 integrate .. //depot/projects/hammer/lib/libarchive/test/test_write_disk_secure.c#2 integrate .. //depot/projects/hammer/lib/libarchive/test/test_write_format_ar.c#2 integrate .. //depot/projects/hammer/lib/libarchive/test/test_write_format_tar.c#2 integrate .. //depot/projects/hammer/lib/libarchive/test/test_write_open_memory.c#2 integrate .. //depot/projects/hammer/lib/libbsm/Makefile#4 integrate .. //depot/projects/hammer/lib/libc/Versions.def#2 integrate .. //depot/projects/hammer/lib/libc/amd64/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/arm/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/compat-43/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/db/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/gdtoa/Symbol.map#4 integrate .. //depot/projects/hammer/lib/libc/gdtoa/_hdtoa.c#4 integrate .. //depot/projects/hammer/lib/libc/gen/Symbol.map#4 integrate .. //depot/projects/hammer/lib/libc/gen/sysconf.c#7 integrate .. //depot/projects/hammer/lib/libc/gmon/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/i386/Symbol.map#3 integrate .. //depot/projects/hammer/lib/libc/ia64/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/inet/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/locale/Symbol.map#3 integrate .. //depot/projects/hammer/lib/libc/locale/isdigit.3#9 integrate .. //depot/projects/hammer/lib/libc/nameser/Symbol.map#3 integrate .. //depot/projects/hammer/lib/libc/net/Symbol.map#7 integrate .. //depot/projects/hammer/lib/libc/net/rthdr.c#4 integrate .. //depot/projects/hammer/lib/libc/nls/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/posix1e/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/powerpc/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/quad/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/regex/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/resolv/Symbol.map#5 integrate .. //depot/projects/hammer/lib/libc/rpc/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/softfloat/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/sparc64/Symbol.map#3 integrate .. //depot/projects/hammer/lib/libc/stdio/Symbol.map#4 integrate .. //depot/projects/hammer/lib/libc/stdio/fputs.3#5 integrate .. //depot/projects/hammer/lib/libc/stdio/vfprintf.c#24 integrate .. //depot/projects/hammer/lib/libc/stdlib/Symbol.map#4 integrate .. //depot/projects/hammer/lib/libc/stdlib/getenv.3#9 integrate .. //depot/projects/hammer/lib/libc/stdlib/getenv.c#3 integrate .. //depot/projects/hammer/lib/libc/stdlib/putenv.c#3 integrate .. //depot/projects/hammer/lib/libc/stdlib/setenv.c#3 integrate .. //depot/projects/hammer/lib/libc/stdtime/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/string/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/sys/Makefile.inc#25 integrate .. //depot/projects/hammer/lib/libc/sys/Symbol.map#3 integrate .. //depot/projects/hammer/lib/libc/sys/ptrace.2#10 integrate .. //depot/projects/hammer/lib/libc/sys/send.2#15 integrate .. //depot/projects/hammer/lib/libc/uuid/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/xdr/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libc/yp/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libelf/Version.map#2 integrate .. //depot/projects/hammer/lib/libexpat/expat_config.h#2 integrate .. //depot/projects/hammer/lib/libfetch/fetch.3#12 integrate .. //depot/projects/hammer/lib/libfetch/ftp.c#11 integrate .. //depot/projects/hammer/lib/libgeom/Makefile#7 integrate .. //depot/projects/hammer/lib/libgeom/geom_getxml.c#2 integrate .. //depot/projects/hammer/lib/libgeom/geom_util.c#1 branch .. //depot/projects/hammer/lib/libgeom/libgeom.3#6 integrate .. //depot/projects/hammer/lib/libgeom/libgeom.h#6 integrate .. //depot/projects/hammer/lib/libpmc/libpmc.c#7 integrate .. //depot/projects/hammer/lib/libpmc/pmc.3#11 integrate .. //depot/projects/hammer/lib/libpthread/pthread.map#17 integrate .. //depot/projects/hammer/lib/libpthread/thread/thr_info.c#8 integrate .. //depot/projects/hammer/lib/libpthread/thread/thr_private.h#38 integrate .. //depot/projects/hammer/lib/librt/Makefile#3 integrate .. //depot/projects/hammer/lib/librt/Version.map#1 branch .. //depot/projects/hammer/lib/libthr/pthread.map#12 integrate .. //depot/projects/hammer/lib/libthread_db/Symbol.map#2 integrate .. //depot/projects/hammer/lib/libthread_db/arch/powerpc/libpthread_md.c#2 integrate .. //depot/projects/hammer/lib/libutil/login_class.c#6 integrate .. //depot/projects/hammer/lib/msun/Symbol.map#4 integrate .. //depot/projects/hammer/lib/msun/amd64/Symbol.map#2 integrate .. //depot/projects/hammer/lib/msun/arm/Symbol.map#2 integrate .. //depot/projects/hammer/lib/msun/bsdsrc/b_tgamma.c#4 integrate .. //depot/projects/hammer/lib/msun/i387/Symbol.map#2 integrate .. //depot/projects/hammer/lib/msun/ia64/Symbol.map#2 integrate .. //depot/projects/hammer/lib/msun/powerpc/Symbol.map#2 integrate .. //depot/projects/hammer/lib/msun/sparc64/Symbol.map#2 integrate .. //depot/projects/hammer/lib/msun/src/e_lgamma_r.c#3 integrate .. //depot/projects/hammer/lib/msun/src/e_lgammaf_r.c#3 integrate .. //depot/projects/hammer/lib/ncurses/ncurses/Makefile#3 integrate .. //depot/projects/hammer/libexec/ftpd/ftpcmd.y#11 integrate .. //depot/projects/hammer/libexec/ftpd/ftpd.8#14 integrate .. //depot/projects/hammer/libexec/ftpd/ftpd.c#31 integrate .. //depot/projects/hammer/libexec/pppoed/pppoed.c#4 integrate .. //depot/projects/hammer/libexec/rtld-elf/Makefile#17 integrate .. //depot/projects/hammer/libexec/rtld-elf/Symbol.map#2 integrate .. //depot/projects/hammer/libexec/rtld-elf/Versions.def#2 delete .. //depot/projects/hammer/libexec/rtld-elf/i386/Symbol.map#2 integrate .. //depot/projects/hammer/libexec/rtld-elf/rtld.c#38 integrate .. //depot/projects/hammer/release/Makefile.inc.docports#12 integrate .. //depot/projects/hammer/release/doc/en_US.ISO8859-1/relnotes/article.sgml#6 integrate .. //depot/projects/hammer/sbin/atm/atmconfig/diag.c#8 integrate .. //depot/projects/hammer/sbin/dhclient/dhclient-script#10 integrate .. //depot/projects/hammer/sbin/fdisk/fdisk.8#6 integrate .. //depot/projects/hammer/sbin/fdisk/fdisk.c#20 integrate .. //depot/projects/hammer/sbin/fdisk_pc98/fdisk.8#7 integrate .. //depot/projects/hammer/sbin/fdisk_pc98/fdisk.c#13 integrate .. //depot/projects/hammer/sbin/geom/class/eli/geom_eli.c#12 integrate .. //depot/projects/hammer/sbin/geom/class/multipath/gmultipath.8#2 integrate .. //depot/projects/hammer/sbin/ifconfig/Makefile#11 integrate .. //depot/projects/hammer/sbin/ifconfig/ifconfig.8#41 integrate .. //depot/projects/hammer/sbin/ifconfig/iflagg.c#1 branch .. //depot/projects/hammer/sbin/ifconfig/iftrunk.c#2 delete .. //depot/projects/hammer/sbin/ipfw/ipfw.8#57 integrate .. //depot/projects/hammer/sbin/ipfw/ipfw2.c#54 integrate .. //depot/projects/hammer/sbin/mdmfs/mdmfs.c#20 integrate .. //depot/projects/hammer/sbin/mount/mount.c#29 integrate .. //depot/projects/hammer/sbin/ping6/ping6.c#9 integrate .. //depot/projects/hammer/share/examples/Makefile#12 integrate .. //depot/projects/hammer/share/examples/cvsup/cvs-supfile#9 integrate .. //depot/projects/hammer/share/examples/cvsup/stable-supfile#6 integrate .. //depot/projects/hammer/share/examples/cvsup/standard-supfile#4 integrate .. //depot/projects/hammer/share/examples/netgraph/bluetooth/rc.bluetooth#3 delete .. //depot/projects/hammer/share/man/man4/Makefile#89 integrate .. //depot/projects/hammer/share/man/man4/lagg.4#1 branch .. //depot/projects/hammer/share/man/man4/led.4#11 integrate .. //depot/projects/hammer/share/man/man4/rum.4#1 branch .. //depot/projects/hammer/share/man/man4/sbsh.4#4 integrate .. //depot/projects/hammer/share/man/man4/snd_hda.4#4 integrate .. //depot/projects/hammer/share/man/man4/trunk.4#2 delete .. //depot/projects/hammer/share/man/man4/uftdi.4#9 integrate .. //depot/projects/hammer/share/man/man4/vlan.4#17 integrate .. //depot/projects/hammer/share/man/man4/worm.4#6 delete .. //depot/projects/hammer/share/man/man5/passwd.5#9 integrate .. //depot/projects/hammer/share/man/man7/hier.7#32 integrate .. //depot/projects/hammer/share/man/man8/nanobsd.8#2 integrate .. //depot/projects/hammer/share/man/man9/disk.9#7 integrate .. //depot/projects/hammer/share/man/man9/g_bio.9#9 integrate .. //depot/projects/hammer/share/man/man9/make_dev.9#10 integrate .. //depot/projects/hammer/share/man/man9/pseudofs.9#4 integrate .. //depot/projects/hammer/share/man/man9/rman.9#8 integrate .. //depot/projects/hammer/share/misc/bsd-family-tree#36 integrate .. //depot/projects/hammer/share/misc/committers-ports.dot#2 integrate .. //depot/projects/hammer/share/misc/committers-src.dot#2 integrate .. //depot/projects/hammer/share/misc/organization.dot#1 branch .. //depot/projects/hammer/share/mk/bsd.symver.mk#2 integrate .. //depot/projects/hammer/share/mk/version_gen.awk#2 integrate .. //depot/projects/hammer/sys/Makefile#15 integrate .. //depot/projects/hammer/sys/amd64/acpica/madt.c#49 integrate .. //depot/projects/hammer/sys/amd64/amd64/busdma_machdep.c#43 integrate .. //depot/projects/hammer/sys/amd64/amd64/intr_machdep.c#49 integrate .. //depot/projects/hammer/sys/amd64/amd64/io_apic.c#55 integrate .. //depot/projects/hammer/sys/amd64/amd64/local_apic.c#72 integrate .. //depot/projects/hammer/sys/amd64/amd64/mp_machdep.c#125 integrate .. //depot/projects/hammer/sys/amd64/amd64/mptable.c#45 integrate .. //depot/projects/hammer/sys/amd64/amd64/mptable_pci.c#15 integrate .. //depot/projects/hammer/sys/amd64/amd64/msi.c#4 integrate .. //depot/projects/hammer/sys/amd64/amd64/nexus.c#42 integrate .. //depot/projects/hammer/sys/amd64/amd64/pmap.c#156 integrate .. //depot/projects/hammer/sys/amd64/amd64/vm_machdep.c#88 integrate .. //depot/projects/hammer/sys/amd64/include/apicvar.h#47 integrate .. //depot/projects/hammer/sys/amd64/include/intr_machdep.h#27 integrate .. //depot/projects/hammer/sys/amd64/include/vmparam.h#23 integrate .. //depot/projects/hammer/sys/amd64/isa/atpic.c#58 integrate .. //depot/projects/hammer/sys/amd64/linux32/linux32_dummy.c#5 integrate .. //depot/projects/hammer/sys/amd64/linux32/linux32_machdep.c#16 integrate .. //depot/projects/hammer/sys/amd64/pci/pci_bus.c#37 integrate .. //depot/projects/hammer/sys/arm/include/vmparam.h#7 integrate .. //depot/projects/hammer/sys/arm/xscale/i80321/ep80219_machdep.c#2 integrate .. //depot/projects/hammer/sys/arm/xscale/i80321/iq31244_machdep.c#20 integrate .. //depot/projects/hammer/sys/arm/xscale/ixp425/avila_machdep.c#3 integrate .. //depot/projects/hammer/sys/boot/common/loader.8#27 integrate .. //depot/projects/hammer/sys/bsm/audit.h#7 integrate .. //depot/projects/hammer/sys/bsm/audit_internal.h#4 integrate .. //depot/projects/hammer/sys/bsm/audit_kevents.h#8 integrate .. //depot/projects/hammer/sys/bsm/audit_record.h#5 integrate .. //depot/projects/hammer/sys/cam/cam_ccb.h#10 integrate .. //depot/projects/hammer/sys/cam/cam_periph.c#21 integrate .. //depot/projects/hammer/sys/cam/cam_periph.h#6 integrate .. //depot/projects/hammer/sys/cam/cam_sim.c#6 integrate .. //depot/projects/hammer/sys/cam/cam_sim.h#3 integrate .. //depot/projects/hammer/sys/cam/cam_xpt.c#30 integrate .. //depot/projects/hammer/sys/cam/cam_xpt.h#5 integrate .. //depot/projects/hammer/sys/cam/cam_xpt_periph.h#4 integrate .. //depot/projects/hammer/sys/cam/scsi/scsi_cd.c#24 integrate .. //depot/projects/hammer/sys/cam/scsi/scsi_ch.c#12 integrate .. //depot/projects/hammer/sys/cam/scsi/scsi_da.c#39 integrate .. //depot/projects/hammer/sys/cam/scsi/scsi_low.c#10 integrate .. //depot/projects/hammer/sys/cam/scsi/scsi_pass.c#10 integrate .. //depot/projects/hammer/sys/cam/scsi/scsi_pt.c#11 integrate .. //depot/projects/hammer/sys/cam/scsi/scsi_sa.c#19 integrate .. //depot/projects/hammer/sys/cam/scsi/scsi_ses.c#13 integrate .. //depot/projects/hammer/sys/cam/scsi/scsi_sg.c#2 integrate .. //depot/projects/hammer/sys/cam/scsi/scsi_targ_bh.c#11 integrate .. //depot/projects/hammer/sys/cam/scsi/scsi_target.c#20 integrate .. //depot/projects/hammer/sys/compat/freebsd32/freebsd32_misc.c#46 integrate .. //depot/projects/hammer/sys/compat/linprocfs/linprocfs.c#35 integrate .. //depot/projects/hammer/sys/compat/linux/linux_socket.c#29 integrate .. //depot/projects/hammer/sys/compat/opensolaris/kern/opensolaris_kobj.c#2 integrate .. //depot/projects/hammer/sys/compat/opensolaris/kern/opensolaris_misc.c#2 integrate .. //depot/projects/hammer/sys/compat/opensolaris/kern/opensolaris_vfs.c#2 integrate .. //depot/projects/hammer/sys/compat/opensolaris/sys/misc.h#2 integrate .. //depot/projects/hammer/sys/compat/opensolaris/sys/sunddi.h#1 branch .. //depot/projects/hammer/sys/compat/opensolaris/sys/types.h#2 integrate .. //depot/projects/hammer/sys/compat/opensolaris/sys/vnode.h#2 integrate .. //depot/projects/hammer/sys/conf/NOTES#117 integrate .. //depot/projects/hammer/sys/conf/files#149 integrate .. //depot/projects/hammer/sys/conf/kern.pre.mk#45 integrate .. //depot/projects/hammer/sys/conf/options#104 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/common/atomic/amd64/atomic.S#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/common/atomic/i386/atomic.S#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/dnlc.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/gfs.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/arc.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/dbuf.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/dnode.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/spa.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/spa_config.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/vdev.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/zap.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/zil.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/zio.c#2 integrate .. //depot/projects/hammer/sys/contrib/opensolaris/uts/common/fs/zfs/zvol.c#2 integrate .. //depot/projects/hammer/sys/contrib/pf/net/if_pfsync.c#25 integrate .. //depot/projects/hammer/sys/dev/aac/aac_cam.c#17 integrate .. //depot/projects/hammer/sys/dev/acpi_support/acpi_ibm.c#11 integrate .. //depot/projects/hammer/sys/dev/acpica/acpi.c#74 integrate .. //depot/projects/hammer/sys/dev/acpica/acpi_pcib_acpi.c#23 integrate .. //depot/projects/hammer/sys/dev/acpica/acpi_pcib_pci.c#14 integrate .. //depot/projects/hammer/sys/dev/advansys/advansys.c#13 integrate .. //depot/projects/hammer/sys/dev/advansys/adwcam.c#15 integrate .. //depot/projects/hammer/sys/dev/aha/aha.c#15 integrate .. //depot/projects/hammer/sys/dev/ahb/ahb.c#16 integrate .. //depot/projects/hammer/sys/dev/aic/aic.c#7 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic7770.c#11 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic79xx.c#23 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic79xx.h#20 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic79xx_osm.c#20 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic79xx_osm.h#15 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic79xx_pci.c#20 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic7xxx.c#20 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic7xxx.h#12 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic7xxx_inline.h#8 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic7xxx_osm.c#20 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic7xxx_osm.h#18 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic7xxx_pci.c#13 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic_osm_lib.c#4 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic_osm_lib.h#6 integrate .. //depot/projects/hammer/sys/dev/amd/amd.c#16 integrate .. //depot/projects/hammer/sys/dev/amr/amr_cam.c#16 integrate .. //depot/projects/hammer/sys/dev/arcmsr/arcmsr.c#11 integrate .. //depot/projects/hammer/sys/dev/asr/asr.c#23 integrate .. //depot/projects/hammer/sys/dev/ata/ata-disk.c#43 integrate .. //depot/projects/hammer/sys/dev/ata/atapi-cam.c#27 integrate .. //depot/projects/hammer/sys/dev/ath/if_ath.c#49 integrate .. //depot/projects/hammer/sys/dev/bce/if_bce.c#6 integrate .. //depot/projects/hammer/sys/dev/bce/if_bcefw.h#2 integrate .. //depot/projects/hammer/sys/dev/bce/if_bcereg.h#5 integrate .. //depot/projects/hammer/sys/dev/bge/if_bge.c#73 integrate .. //depot/projects/hammer/sys/dev/bge/if_bgereg.h#38 integrate .. //depot/projects/hammer/sys/dev/buslogic/bt.c#14 integrate .. //depot/projects/hammer/sys/dev/ciss/ciss.c#42 integrate .. //depot/projects/hammer/sys/dev/ciss/cissvar.h#8 integrate .. //depot/projects/hammer/sys/dev/cxgb/cxgb_main.c#2 integrate .. //depot/projects/hammer/sys/dev/cxgb/cxgb_sge.c#3 integrate .. //depot/projects/hammer/sys/dev/cxgb/sys/mvec.h#2 integrate .. //depot/projects/hammer/sys/dev/cxgb/sys/uipc_mvec.c#2 integrate .. //depot/projects/hammer/sys/dev/dpt/dpt_scsi.c#17 integrate .. //depot/projects/hammer/sys/dev/em/LICENSE#5 integrate .. //depot/projects/hammer/sys/dev/em/README#13 integrate .. //depot/projects/hammer/sys/dev/em/e1000_80003es2lan.c#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_80003es2lan.h#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_82540.c#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_82541.c#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_82541.h#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_82542.c#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_82543.c#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_82543.h#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_82571.c#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_82571.h#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_82575.c#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_82575.h#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_api.c#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_api.h#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_defines.h#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_hw.h#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_ich8lan.c#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_ich8lan.h#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_mac.c#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_mac.h#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_manage.c#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_manage.h#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_nvm.c#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_nvm.h#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_osdep.h#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_phy.c#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_phy.h#1 branch .. //depot/projects/hammer/sys/dev/em/e1000_regs.h#1 branch .. //depot/projects/hammer/sys/dev/em/if_em.c#65 integrate .. //depot/projects/hammer/sys/dev/em/if_em.h#31 integrate .. //depot/projects/hammer/sys/dev/em/if_em_hw.c#19 delete .. //depot/projects/hammer/sys/dev/em/if_em_hw.h#19 delete .. //depot/projects/hammer/sys/dev/em/if_em_osdep.h#14 delete .. //depot/projects/hammer/sys/dev/esp/ncr53c9x.c#11 integrate .. //depot/projects/hammer/sys/dev/ex/if_exvar.h#5 integrate .. //depot/projects/hammer/sys/dev/firewire/firewire.c#34 integrate .. //depot/projects/hammer/sys/dev/firewire/firewire.h#10 integrate .. //depot/projects/hammer/sys/dev/firewire/firewirereg.h#20 integrate .. //depot/projects/hammer/sys/dev/firewire/fwdev.c#21 integrate .. //depot/projects/hammer/sys/dev/firewire/fwdma.c#8 integrate .. //depot/projects/hammer/sys/dev/firewire/fwohci.c#30 integrate .. //depot/projects/hammer/sys/dev/firewire/fwohcireg.h#15 integrate .. //depot/projects/hammer/sys/dev/firewire/if_fwip.c#12 integrate .. //depot/projects/hammer/sys/dev/firewire/sbp.c#38 integrate .. //depot/projects/hammer/sys/dev/firewire/sbp_targ.c#9 integrate .. //depot/projects/hammer/sys/dev/gem/if_gem.c#26 integrate .. //depot/projects/hammer/sys/dev/gem/if_gem_pci.c#15 integrate .. //depot/projects/hammer/sys/dev/gem/if_gemvar.h#8 integrate .. //depot/projects/hammer/sys/dev/hme/if_hme.c#30 integrate .. //depot/projects/hammer/sys/dev/hptmv/entry.c#13 integrate .. //depot/projects/hammer/sys/dev/hwpmc/hwpmc_logging.c#7 integrate .. //depot/projects/hammer/sys/dev/hwpmc/hwpmc_mod.c#18 integrate .. //depot/projects/hammer/sys/dev/hwpmc/hwpmc_piv.c#10 integrate .. //depot/projects/hammer/sys/dev/iicbus/icee.c#2 integrate .. //depot/projects/hammer/sys/dev/iir/iir.c#15 integrate .. //depot/projects/hammer/sys/dev/ipmi/ipmi_smbios.c#3 integrate .. //depot/projects/hammer/sys/dev/isp/isp.c#24 integrate .. //depot/projects/hammer/sys/dev/isp/isp_freebsd.c#27 integrate .. //depot/projects/hammer/sys/dev/isp/isp_freebsd.h#21 integrate .. //depot/projects/hammer/sys/dev/isp/isp_pci.c#28 integrate .. //depot/projects/hammer/sys/dev/isp/isp_sbus.c#18 integrate .. //depot/projects/hammer/sys/dev/isp/isp_tpublic.h#12 integrate .. //depot/projects/hammer/sys/dev/led/led.c#14 integrate .. //depot/projects/hammer/sys/dev/led/led.h#4 integrate .. //depot/projects/hammer/sys/dev/mii/brgphy.c#30 integrate .. //depot/projects/hammer/sys/dev/mii/mii.c#15 integrate .. //depot/projects/hammer/sys/dev/mly/mly.c#17 integrate .. //depot/projects/hammer/sys/dev/mpt/mpt.c#18 integrate .. //depot/projects/hammer/sys/dev/mpt/mpt.h#15 integrate .. //depot/projects/hammer/sys/dev/mpt/mpt_cam.c#14 integrate .. //depot/projects/hammer/sys/dev/mpt/mpt_cam.h#6 integrate .. //depot/projects/hammer/sys/dev/mpt/mpt_pci.c#21 integrate .. //depot/projects/hammer/sys/dev/mpt/mpt_raid.c#9 integrate .. //depot/projects/hammer/sys/dev/msk/if_msk.c#5 integrate .. //depot/projects/hammer/sys/dev/msk/if_mskreg.h#2 integrate .. //depot/projects/hammer/sys/dev/mxge/eth_z8e.dat.gz.uu#4 integrate .. //depot/projects/hammer/sys/dev/mxge/ethp_z8e.dat.gz.uu#4 integrate .. //depot/projects/hammer/sys/dev/mxge/if_mxge.c#7 integrate .. //depot/projects/hammer/sys/dev/mxge/mxge_mcp.h#3 integrate .. //depot/projects/hammer/sys/dev/nve/if_nve.c#19 integrate .. //depot/projects/hammer/sys/dev/pci/pci.c#60 integrate .. //depot/projects/hammer/sys/dev/pci/pci_if.m#8 integrate .. //depot/projects/hammer/sys/dev/pci/pci_pci.c#21 integrate .. //depot/projects/hammer/sys/dev/pci/pci_private.h#15 integrate .. //depot/projects/hammer/sys/dev/pci/pcib_if.m#6 integrate .. //depot/projects/hammer/sys/dev/pci/pcib_private.h#8 integrate .. //depot/projects/hammer/sys/dev/pci/pcireg.h#17 integrate .. //depot/projects/hammer/sys/dev/pci/pcivar.h#15 integrate .. //depot/projects/hammer/sys/dev/ppbus/vpo.c#9 integrate .. //depot/projects/hammer/sys/dev/ral/rt2560.c#6 integrate .. //depot/projects/hammer/sys/dev/re/if_re.c#46 integrate .. //depot/projects/hammer/sys/dev/rr232x/osm_bsd.c#4 integrate .. //depot/projects/hammer/sys/dev/sound/isa/ad1816.c#18 integrate .. //depot/projects/hammer/sys/dev/sound/isa/ess.c#15 integrate .. //depot/projects/hammer/sys/dev/sound/isa/mss.c#21 integrate .. //depot/projects/hammer/sys/dev/sound/isa/sb16.c#18 integrate .. //depot/projects/hammer/sys/dev/sound/isa/sb8.c#14 integrate .. //depot/projects/hammer/sys/dev/sound/pci/als4000.c#15 integrate .. //depot/projects/hammer/sys/dev/sound/pci/atiixp.c#9 integrate .. //depot/projects/hammer/sys/dev/sound/pci/au88x0.c#11 integrate .. //depot/projects/hammer/sys/dev/sound/pci/aureal.c#12 integrate .. //depot/projects/hammer/sys/dev/sound/pci/cmi.c#21 integrate .. //depot/projects/hammer/sys/dev/sound/pci/cs4281.c#12 integrate .. //depot/projects/hammer/sys/dev/sound/pci/csapcm.c#15 integrate .. //depot/projects/hammer/sys/dev/sound/pci/ds1.c#17 integrate .. //depot/projects/hammer/sys/dev/sound/pci/emu10k1.c#23 integrate .. //depot/projects/hammer/sys/dev/sound/pci/emu10kx-pcm.c#4 integrate .. //depot/projects/hammer/sys/dev/sound/pci/emu10kx.c#3 integrate .. //depot/projects/hammer/sys/dev/sound/pci/envy24.c#5 integrate .. //depot/projects/hammer/sys/dev/sound/pci/envy24ht.c#4 integrate .. //depot/projects/hammer/sys/dev/sound/pci/es137x.c#20 integrate .. //depot/projects/hammer/sys/dev/sound/pci/fm801.c#15 integrate .. //depot/projects/hammer/sys/dev/sound/pci/hda/hdac.c#5 integrate .. //depot/projects/hammer/sys/dev/sound/pci/hda/hdac_private.h#4 integrate .. //depot/projects/hammer/sys/dev/sound/pci/ich.c#36 integrate .. //depot/projects/hammer/sys/dev/sound/pci/maestro3.c#15 integrate .. //depot/projects/hammer/sys/dev/sound/pci/solo.c#17 integrate .. //depot/projects/hammer/sys/dev/sound/pci/t4dwave.c#15 integrate .. //depot/projects/hammer/sys/dev/sound/pci/via8233.c#23 integrate .. //depot/projects/hammer/sys/dev/sound/pci/via82c686.c#18 integrate .. //depot/projects/hammer/sys/dev/sound/pci/vibes.c#12 integrate .. //depot/projects/hammer/sys/dev/sound/pcm/ac97.c#24 integrate .. //depot/projects/hammer/sys/dev/sound/pcm/ac97.h#9 integrate .. //depot/projects/hammer/sys/dev/sound/pcm/ac97_patch.c#7 integrate .. //depot/projects/hammer/sys/dev/sound/pcm/ac97_patch.h#7 integrate .. //depot/projects/hammer/sys/dev/sound/pcm/buffer.c#14 integrate .. //depot/projects/hammer/sys/dev/sound/pcm/buffer.h#9 integrate .. //depot/projects/hammer/sys/dev/sound/pcm/sound.h#22 integrate .. //depot/projects/hammer/sys/dev/sound/sbus/cs4231.c#7 integrate .. //depot/projects/hammer/sys/dev/stge/if_stge.c#4 integrate .. //depot/projects/hammer/sys/dev/stge/if_stgereg.h#2 integrate .. //depot/projects/hammer/sys/dev/sym/sym_hipd.c#23 integrate .. //depot/projects/hammer/sys/dev/trm/trm.c#22 integrate .. //depot/projects/hammer/sys/dev/twa/tw_osl_cam.c#8 integrate .. //depot/projects/hammer/sys/dev/uart/uart_kbd_sun.c#11 integrate .. //depot/projects/hammer/sys/dev/usb/if_axe.c#31 integrate .. //depot/projects/hammer/sys/dev/usb/if_axereg.h#9 integrate .. //depot/projects/hammer/sys/dev/usb/if_rum.c#1 branch .. //depot/projects/hammer/sys/dev/usb/if_rumreg.h#1 branch .. //depot/projects/hammer/sys/dev/usb/if_rumvar.h#1 branch .. //depot/projects/hammer/sys/dev/usb/if_ural.c#20 integrate .. //depot/projects/hammer/sys/dev/usb/rt2573_ucode.h#1 branch .. //depot/projects/hammer/sys/dev/usb/ubsa.c#16 integrate .. //depot/projects/hammer/sys/dev/usb/uftdi.c#19 integrate .. //depot/projects/hammer/sys/dev/usb/umass.c#42 integrate .. //depot/projects/hammer/sys/dev/usb/usb_subr.c#30 integrate .. //depot/projects/hammer/sys/dev/usb/usbdevs#76 integrate .. //depot/projects/hammer/sys/dev/wds/wd7000.c#10 integrate .. //depot/projects/hammer/sys/dev/wi/if_wi.c#49 integrate .. //depot/projects/hammer/sys/fs/devfs/devfs_devs.c#17 integrate .. //depot/projects/hammer/sys/fs/devfs/devfs_vnops.c#48 integrate .. //depot/projects/hammer/sys/fs/procfs/procfs_dbregs.c#9 integrate .. //depot/projects/hammer/sys/fs/procfs/procfs_fpregs.c#9 integrate .. //depot/projects/hammer/sys/fs/procfs/procfs_ioctl.c#13 integrate .. //depot/projects/hammer/sys/fs/procfs/procfs_map.c#11 integrate .. //depot/projects/hammer/sys/fs/procfs/procfs_regs.c#9 integrate .. //depot/projects/hammer/sys/fs/pseudofs/pseudofs.c#14 integrate .. //depot/projects/hammer/sys/fs/pseudofs/pseudofs.h#12 integrate .. //depot/projects/hammer/sys/fs/pseudofs/pseudofs_fileno.c#6 integrate .. //depot/projects/hammer/sys/fs/pseudofs/pseudofs_internal.h#3 integrate .. //depot/projects/hammer/sys/fs/pseudofs/pseudofs_vncache.c#16 integrate .. //depot/projects/hammer/sys/fs/pseudofs/pseudofs_vnops.c#23 integrate .. //depot/projects/hammer/sys/geom/eli/g_eli_ctl.c#8 integrate .. //depot/projects/hammer/sys/geom/geom.h#38 integrate .. //depot/projects/hammer/sys/geom/geom_dev.c#35 integrate .. //depot/projects/hammer/sys/geom/geom_disk.c#38 integrate .. //depot/projects/hammer/sys/geom/geom_disk.h#6 integrate .. //depot/projects/hammer/sys/geom/geom_io.c#40 integrate .. //depot/projects/hammer/sys/geom/geom_slice.c#25 integrate .. //depot/projects/hammer/sys/geom/geom_subr.c#37 integrate .. //depot/projects/hammer/sys/geom/part/g_part.c#2 integrate .. //depot/projects/hammer/sys/geom/part/g_part.h#2 integrate .. //depot/projects/hammer/sys/geom/part/g_part_apm.c#2 integrate .. //depot/projects/hammer/sys/geom/part/g_part_gpt.c#2 integrate .. //depot/projects/hammer/sys/geom/uzip/g_uzip.c#11 integrate .. //depot/projects/hammer/sys/geom/vinum/geom_vinum.h#11 integrate .. //depot/projects/hammer/sys/geom/vinum/geom_vinum_rm.c#11 integrate .. //depot/projects/hammer/sys/geom/vinum/geom_vinum_share.c#5 integrate .. //depot/projects/hammer/sys/geom/vinum/geom_vinum_subr.c#14 integrate .. //depot/projects/hammer/sys/i386/acpica/madt.c#21 integrate .. //depot/projects/hammer/sys/i386/conf/GENERIC#51 integrate .. //depot/projects/hammer/sys/i386/conf/PAE#21 integrate .. //depot/projects/hammer/sys/i386/i386/bios.c#20 integrate .. //depot/projects/hammer/sys/i386/i386/busdma_machdep.c#32 integrate .. //depot/projects/hammer/sys/i386/i386/identcpu.c#39 integrate .. //depot/projects/hammer/sys/i386/i386/intr_machdep.c#23 integrate .. //depot/projects/hammer/sys/i386/i386/io_apic.c#25 integrate .. //depot/projects/hammer/sys/i386/i386/local_apic.c#29 integrate .. //depot/projects/hammer/sys/i386/i386/mp_machdep.c#61 integrate .. //depot/projects/hammer/sys/i386/i386/mptable.c#22 integrate .. //depot/projects/hammer/sys/i386/i386/mptable_pci.c#7 integrate .. //depot/projects/hammer/sys/i386/i386/msi.c#4 integrate .. //depot/projects/hammer/sys/i386/i386/nexus.c#23 integrate .. //depot/projects/hammer/sys/i386/i386/pmap.c#91 integrate .. //depot/projects/hammer/sys/i386/i386/sys_machdep.c#23 integrate .. //depot/projects/hammer/sys/i386/i386/vm_machdep.c#57 integrate .. //depot/projects/hammer/sys/i386/include/apicvar.h#22 integrate .. //depot/projects/hammer/sys/i386/include/intr_machdep.h#13 integrate .. //depot/projects/hammer/sys/i386/include/pmap.h#30 integrate .. //depot/projects/hammer/sys/i386/include/vmparam.h#10 integrate .. //depot/projects/hammer/sys/i386/isa/atpic.c#20 integrate .. //depot/projects/hammer/sys/i386/pci/pci_bus.c#26 integrate .. //depot/projects/hammer/sys/ia64/ia64/machdep.c#59 integrate .. //depot/projects/hammer/sys/ia64/include/vmparam.h#10 integrate .. //depot/projects/hammer/sys/isa/isa_common.c#17 integrate .. //depot/projects/hammer/sys/kern/kern_condvar.c#25 integrate .. //depot/projects/hammer/sys/kern/kern_descrip.c#66 integrate .. //depot/projects/hammer/sys/kern/kern_intr.c#44 integrate .. //depot/projects/hammer/sys/kern/kern_jail.c#23 integrate .. //depot/projects/hammer/sys/kern/kern_linker.c#27 integrate .. //depot/projects/hammer/sys/kern/kern_malloc.c#32 integrate .. //depot/projects/hammer/sys/kern/kern_mutex.c#44 integrate .. //depot/projects/hammer/sys/kern/kern_rwlock.c#8 integrate .. //depot/projects/hammer/sys/kern/kern_sx.c#14 integrate .. //depot/projects/hammer/sys/kern/kern_synch.c#59 integrate .. //depot/projects/hammer/sys/kern/kern_time.c#27 integrate .. //depot/projects/hammer/sys/kern/kern_uuid.c#12 integrate .. //depot/projects/hammer/sys/kern/sched_ule.c#74 integrate .. //depot/projects/hammer/sys/kern/subr_rman.c#24 integrate .. //depot/projects/hammer/sys/kern/subr_witness.c#61 integrate .. //depot/projects/hammer/sys/kern/sys_generic.c#31 integrate .. //depot/projects/hammer/sys/kern/uipc_debug.c#2 integrate .. //depot/projects/hammer/sys/kern/uipc_mbuf.c#44 integrate .. //depot/projects/hammer/sys/kern/uipc_sockbuf.c#3 integrate .. //depot/projects/hammer/sys/kern/uipc_socket.c#74 integrate .. //depot/projects/hammer/sys/kern/uipc_syscalls.c#61 integrate .. //depot/projects/hammer/sys/kern/uipc_usrreq.c#49 integrate .. //depot/projects/hammer/sys/kern/vfs_bio.c#74 integrate .. //depot/projects/hammer/sys/kern/vfs_mount.c#76 integrate .. //depot/projects/hammer/sys/kern/vfs_subr.c#111 integrate .. //depot/projects/hammer/sys/kern/vfs_syscalls.c#67 integrate .. //depot/projects/hammer/sys/modules/Makefile#106 integrate .. //depot/projects/hammer/sys/modules/em/Makefile#5 integrate .. //depot/projects/hammer/sys/modules/if_lagg/Makefile#1 branch .. //depot/projects/hammer/sys/modules/if_trunk/Makefile#2 delete .. //depot/projects/hammer/sys/modules/rum/Makefile#1 branch .. //depot/projects/hammer/sys/modules/zfs/Makefile#2 integrate .. //depot/projects/hammer/sys/net/ieee8023ad_lacp.c#2 integrate .. //depot/projects/hammer/sys/net/ieee8023ad_lacp.h#2 integrate .. //depot/projects/hammer/sys/net/if.c#68 integrate .. //depot/projects/hammer/sys/net/if.h#26 integrate .. //depot/projects/hammer/sys/net/if_ethersubr.c#61 integrate .. //depot/projects/hammer/sys/net/if_lagg.c#1 branch .. //depot/projects/hammer/sys/net/if_lagg.h#1 branch .. //depot/projects/hammer/sys/net/if_trunk.c#2 delete .. //depot/projects/hammer/sys/net/if_trunk.h#2 delete .. //depot/projects/hammer/sys/net/if_var.h#43 integrate .. //depot/projects/hammer/sys/net80211/ieee80211_amrr.c#2 integrate .. //depot/projects/hammer/sys/netgraph/ng_l2tp.c#11 integrate .. //depot/projects/hammer/sys/netgraph/ng_mppc.c#8 integrate .. //depot/projects/hammer/sys/netgraph/ng_ppp.c#17 integrate .. //depot/projects/hammer/sys/netinet/in_pcb.c#46 integrate .. //depot/projects/hammer/sys/netinet/in_pcb.h#32 integrate .. //depot/projects/hammer/sys/netinet/ip_divert.c#36 integrate .. //depot/projects/hammer/sys/netinet/ip_fw.h#30 integrate .. //depot/projects/hammer/sys/netinet/ip_fw2.c#80 integrate .. //depot/projects/hammer/sys/netinet/libalias/alias_proxy.c#6 integrate .. //depot/projects/hammer/sys/netinet/raw_ip.c#45 integrate .. //depot/projects/hammer/sys/netinet/sctp.h#3 integrate .. //depot/projects/hammer/sys/netinet/sctp_asconf.c#6 integrate .. //depot/projects/hammer/sys/netinet/sctp_asconf.h#4 integrate .. //depot/projects/hammer/sys/netinet/sctp_auth.c#6 integrate .. //depot/projects/hammer/sys/netinet/sctp_auth.h#4 integrate .. //depot/projects/hammer/sys/netinet/sctp_bsd_addr.c#4 integrate .. //depot/projects/hammer/sys/netinet/sctp_bsd_addr.h#5 integrate .. //depot/projects/hammer/sys/netinet/sctp_constants.h#6 integrate .. //depot/projects/hammer/sys/netinet/sctp_crc32.c#4 integrate .. //depot/projects/hammer/sys/netinet/sctp_crc32.h#3 integrate .. //depot/projects/hammer/sys/netinet/sctp_header.h#3 integrate .. //depot/projects/hammer/sys/netinet/sctp_indata.c#6 integrate .. //depot/projects/hammer/sys/netinet/sctp_indata.h#3 integrate .. //depot/projects/hammer/sys/netinet/sctp_input.c#6 integrate .. //depot/projects/hammer/sys/netinet/sctp_input.h#3 integrate .. //depot/projects/hammer/sys/netinet/sctp_lock_bsd.h#3 integrate .. //depot/projects/hammer/sys/netinet/sctp_os.h#5 integrate .. //depot/projects/hammer/sys/netinet/sctp_os_bsd.h#6 integrate .. //depot/projects/hammer/sys/netinet/sctp_output.c#6 integrate .. //depot/projects/hammer/sys/netinet/sctp_output.h#5 integrate .. //depot/projects/hammer/sys/netinet/sctp_pcb.c#6 integrate .. //depot/projects/hammer/sys/netinet/sctp_pcb.h#5 integrate .. //depot/projects/hammer/sys/netinet/sctp_peeloff.c#5 integrate .. //depot/projects/hammer/sys/netinet/sctp_peeloff.h#3 integrate .. //depot/projects/hammer/sys/netinet/sctp_structs.h#6 integrate .. //depot/projects/hammer/sys/netinet/sctp_sysctl.c#3 integrate .. //depot/projects/hammer/sys/netinet/sctp_sysctl.h#3 integrate .. //depot/projects/hammer/sys/netinet/sctp_timer.c#6 integrate .. //depot/projects/hammer/sys/netinet/sctp_timer.h#3 integrate .. //depot/projects/hammer/sys/netinet/sctp_uio.h#6 integrate .. //depot/projects/hammer/sys/netinet/sctp_usrreq.c#6 integrate .. //depot/projects/hammer/sys/netinet/sctp_var.h#5 integrate .. //depot/projects/hammer/sys/netinet/sctputil.c#6 integrate .. //depot/projects/hammer/sys/netinet/sctputil.h#5 integrate .. //depot/projects/hammer/sys/netinet/tcp.h#17 integrate .. //depot/projects/hammer/sys/netinet/tcp_debug.c#6 integrate .. //depot/projects/hammer/sys/netinet/tcp_input.c#70 integrate .. //depot/projects/hammer/sys/netinet/tcp_output.c#40 integrate .. //depot/projects/hammer/sys/netinet/tcp_subr.c#62 integrate .. //depot/projects/hammer/sys/netinet/tcp_syncache.c#40 integrate .. //depot/projects/hammer/sys/netinet/tcp_timer.c#25 integrate .. //depot/projects/hammer/sys/netinet/tcp_usrreq.c#44 integrate .. //depot/projects/hammer/sys/netinet/tcp_var.h#41 integrate .. //depot/projects/hammer/sys/netinet/udp_usrreq.c#45 integrate .. //depot/projects/hammer/sys/netinet6/in6_pcb.c#27 integrate .. //depot/projects/hammer/sys/netinet6/in6_proto.c#16 integrate .. //depot/projects/hammer/sys/netinet6/in6_src.c#21 integrate .. //depot/projects/hammer/sys/netinet6/nd6.c#29 integrate .. //depot/projects/hammer/sys/netinet6/nd6_nbr.c#21 integrate .. //depot/projects/hammer/sys/netinet6/route6.c#7 integrate .. //depot/projects/hammer/sys/netinet6/sctp6_usrreq.c#6 integrate .. //depot/projects/hammer/sys/netinet6/sctp6_var.h#4 integrate .. //depot/projects/hammer/sys/netnatm/natm.h#7 integrate .. //depot/projects/hammer/sys/nfsclient/nfs_bio.c#41 integrate .. //depot/projects/hammer/sys/nfsclient/nfs_lock.c#16 integrate .. //depot/projects/hammer/sys/nfsclient/nfs_vnops.c#52 integrate .. //depot/projects/hammer/sys/nfsserver/nfs_srvsock.c#21 integrate .. //depot/projects/hammer/sys/nfsserver/nfs_syscalls.c#21 integrate .. //depot/projects/hammer/sys/pci/if_rlreg.h#25 integrate .. //depot/projects/hammer/sys/pci/if_vr.c#44 integrate .. //depot/projects/hammer/sys/pci/if_vrreg.h#12 integrate .. //depot/projects/hammer/sys/pci/intpm.c#12 integrate .. //depot/projects/hammer/sys/pci/ncr.c#19 integrate .. //depot/projects/hammer/sys/powerpc/include/vmparam.h#5 integrate .. //depot/projects/hammer/sys/powerpc/powerpc/nexus.c#10 integrate .. //depot/projects/hammer/sys/security/audit/audit.c#6 integrate .. //depot/projects/hammer/sys/security/audit/audit.h#5 integrate .. //depot/projects/hammer/sys/security/audit/audit_arg.c#6 integrate .. //depot/projects/hammer/sys/security/audit/audit_bsm.c#5 integrate .. //depot/projects/hammer/sys/security/audit/audit_bsm_token.c#4 integrate .. //depot/projects/hammer/sys/security/audit/audit_ioctl.h#4 integrate .. //depot/projects/hammer/sys/security/audit/audit_private.h#5 integrate .. //depot/projects/hammer/sys/security/audit/audit_syscalls.c#6 integrate .. //depot/projects/hammer/sys/security/mac/mac_audit.c#1 branch .. //depot/projects/hammer/sys/security/mac/mac_framework.h#3 integrate .. //depot/projects/hammer/sys/security/mac/mac_inet.c#4 integrate .. //depot/projects/hammer/sys/security/mac/mac_net.c#14 integrate .. //depot/projects/hammer/sys/security/mac/mac_pipe.c#8 integrate .. //depot/projects/hammer/sys/security/mac/mac_policy.h#3 integrate .. //depot/projects/hammer/sys/security/mac/mac_process.c#11 integrate .. //depot/projects/hammer/sys/security/mac/mac_socket.c#6 integrate .. //depot/projects/hammer/sys/security/mac/mac_system.c#8 integrate .. //depot/projects/hammer/sys/security/mac/mac_vfs.c#13 integrate .. //depot/projects/hammer/sys/security/mac_biba/mac_biba.c#41 integrate .. //depot/projects/hammer/sys/security/mac_bsdextended/mac_bsdextended.c#23 integrate .. //depot/projects/hammer/sys/security/mac_ifoff/mac_ifoff.c#12 integrate .. //depot/projects/hammer/sys/security/mac_lomac/mac_lomac.c#29 integrate .. //depot/projects/hammer/sys/security/mac_mls/mac_mls.c#38 integrate .. //depot/projects/hammer/sys/security/mac_partition/mac_partition.c#12 integrate .. //depot/projects/hammer/sys/security/mac_portacl/mac_portacl.c#11 integrate .. //depot/projects/hammer/sys/security/mac_seeotheruids/mac_seeotheruids.c#11 integrate .. //depot/projects/hammer/sys/security/mac_stub/mac_stub.c#22 integrate .. //depot/projects/hammer/sys/security/mac_test/mac_test.c#40 integrate .. //depot/projects/hammer/sys/sparc64/include/vmparam.h#4 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/machdep.c#48 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/upa.c#4 integrate .. //depot/projects/hammer/sys/sun4v/include/vmparam.h#2 integrate .. //depot/projects/hammer/sys/sys/disk.h#7 integrate .. //depot/projects/hammer/sys/sys/eventhandler.h#10 integrate .. //depot/projects/hammer/sys/sys/filedesc.h#19 integrate .. //depot/projects/hammer/sys/sys/interrupt.h#16 integrate .. //depot/projects/hammer/sys/sys/ioctl_compat.h#6 integrate .. //depot/projects/hammer/sys/sys/mbuf.h#58 integrate .. //depot/projects/hammer/sys/sys/mount.h#50 integrate .. //depot/projects/hammer/sys/sys/param.h#84 integrate .. //depot/projects/hammer/sys/sys/priv.h#4 integrate .. //depot/projects/hammer/sys/sys/proc.h#102 integrate .. //depot/projects/hammer/sys/sys/rwlock.h#7 integrate .. //depot/projects/hammer/sys/sys/socket.h#21 integrate .. //depot/projects/hammer/sys/sys/socketvar.h#38 integrate .. //depot/projects/hammer/sys/sys/sx.h#12 integrate .. //depot/projects/hammer/sys/ufs/ffs/ffs_softdep.c#43 integrate .. //depot/projects/hammer/sys/vm/swap_pager.c#50 integrate .. //depot/projects/hammer/sys/vm/vm_contig.c#33 integrate .. //depot/projects/hammer/sys/vm/vm_map.c#59 integrate .. //depot/projects/hammer/sys/vm/vm_page.c#56 integrate .. //depot/projects/hammer/sys/vm/vm_page.h#27 integrate .. //depot/projects/hammer/sys/vm/vm_param.h#7 integrate .. //depot/projects/hammer/tools/regression/lib/libc/nss/Makefile#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/README#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/mach#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-getaddr.c#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-getaddr.t#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-getgr.c#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-getgr.t#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-gethostby.c#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-gethostby.t#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-getproto.c#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-getproto.t#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-getpw.c#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-getpw.t#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-getrpc.c#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-getrpc.t#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-getserv.c#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-getserv.t#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-getusershell.c#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/test-getusershell.t#1 branch .. //depot/projects/hammer/tools/regression/lib/libc/nss/testutil.h#1 branch .. //depot/projects/hammer/tools/regression/netinet/ipblock/Makefile#2 delete .. //depot/projects/hammer/tools/regression/netinet/ipblock/ipblock.c#2 delete .. //depot/projects/hammer/tools/regression/netinet6/inet6_rth/Makefile#1 branch .. //depot/projects/hammer/tools/regression/netinet6/inet6_rth/inet6_rth-segments.c#1 branch .. //depot/projects/hammer/tools/regression/netinet6/inet6_rth/test_subr.c#1 branch .. //depot/projects/hammer/tools/regression/netinet6/inet6_rth/test_subr.h#1 branch .. //depot/projects/hammer/tools/regression/sockets/sblock/Makefile#1 branch .. //depot/projects/hammer/tools/regression/sockets/sblock/sblock.c#1 branch .. //depot/projects/hammer/tools/regression/sockets/sendfile/Makefile#3 integrate .. //depot/projects/hammer/tools/regression/sockets/sendfile/sendfile.c#2 integrate .. //depot/projects/hammer/tools/regression/usr.bin/sed/regress.sh#6 integrate .. //depot/projects/hammer/tools/sched/schedgraph.py#7 integrate .. //depot/projects/hammer/tools/tools/nanobsd/nanobsd.sh#11 integrate .. //depot/projects/hammer/tools/tools/net80211/wesside/wesside/wesside.c#3 integrate .. //depot/projects/hammer/tools/tools/recoverdisk/recoverdisk.c#6 integrate .. //depot/projects/hammer/usr.bin/calendar/calendar.c#3 integrate .. //depot/projects/hammer/usr.bin/calendar/calendar.h#3 integrate .. //depot/projects/hammer/usr.bin/calendar/calendars/calendar.freebsd#52 integrate .. //depot/projects/hammer/usr.bin/calendar/calendars/calendar.usholiday#3 integrate .. //depot/projects/hammer/usr.bin/calendar/day.c#5 integrate .. //depot/projects/hammer/usr.bin/calendar/io.c#2 integrate .. //depot/projects/hammer/usr.bin/calendar/ostern.c#2 integrate .. //depot/projects/hammer/usr.bin/calendar/paskha.c#2 integrate .. //depot/projects/hammer/usr.bin/du/du.c#13 integrate .. //depot/projects/hammer/usr.bin/env/env.c#5 integrate .. //depot/projects/hammer/usr.bin/finger/extern.h#5 integrate .. //depot/projects/hammer/usr.bin/finger/finger.1#7 integrate .. //depot/projects/hammer/usr.bin/finger/finger.c#8 integrate .. //depot/projects/hammer/usr.bin/finger/net.c#5 integrate .. //depot/projects/hammer/usr.bin/lastcomm/Makefile#2 integrate .. //depot/projects/hammer/usr.bin/lastcomm/lastcomm.1#5 integrate .. //depot/projects/hammer/usr.bin/lastcomm/lastcomm.c#7 integrate .. //depot/projects/hammer/usr.bin/limits/limits.c#4 integrate .. //depot/projects/hammer/usr.bin/logger/Makefile#3 integrate .. //depot/projects/hammer/usr.bin/logger/logger.c#5 integrate .. //depot/projects/hammer/usr.bin/login/login.c#11 integrate .. //depot/projects/hammer/usr.bin/login/login.h#4 integrate .. //depot/projects/hammer/usr.bin/login/login_audit.c#2 integrate .. //depot/projects/hammer/usr.bin/login/login_fbtab.c#2 integrate .. //depot/projects/hammer/usr.bin/make/GNode.h#4 integrate .. //depot/projects/hammer/usr.bin/make/main.c#40 integrate .. //depot/projects/hammer/usr.bin/make/make.c#16 integrate .. //depot/projects/hammer/usr.bin/make/parse.c#36 integrate .. //depot/projects/hammer/usr.bin/make/targ.c#16 integrate .. //depot/projects/hammer/usr.bin/netstat/inet.c#19 integrate .. //depot/projects/hammer/usr.bin/quota/quota.c#9 integrate .. //depot/projects/hammer/usr.bin/sed/extern.h#4 integrate .. //depot/projects/hammer/usr.bin/sed/main.c#9 integrate .. //depot/projects/hammer/usr.bin/sed/process.c#14 integrate .. //depot/projects/hammer/usr.bin/sed/sed.1#14 integrate .. //depot/projects/hammer/usr.bin/stat/stat.1#8 integrate .. //depot/projects/hammer/usr.bin/su/su.c#18 integrate .. //depot/projects/hammer/usr.bin/tar/Makefile#20 integrate .. //depot/projects/hammer/usr.bin/tar/bsdtar_platform.h#15 integrate .. //depot/projects/hammer/usr.bin/tar/read.c#21 integrate .. //depot/projects/hammer/usr.bin/tar/test/test-basic.sh#3 integrate .. //depot/projects/hammer/usr.bin/tar/util.c#12 integrate .. //depot/projects/hammer/usr.bin/tar/write.c#28 integrate .. //depot/projects/hammer/usr.bin/time/Makefile#2 integrate .. //depot/projects/hammer/usr.bin/time/time.c#8 integrate .. //depot/projects/hammer/usr.bin/top/machine.c#17 integrate .. //depot/projects/hammer/usr.bin/whois/whois.c#14 integrate .. //depot/projects/hammer/usr.sbin/adduser/adduser.conf.5#4 integrate .. //depot/projects/hammer/usr.sbin/adduser/adduser.sh#12 integrate .. //depot/projects/hammer/usr.sbin/bsnmpd/modules/snmp_bridge/snmp_bridge.3#2 integrate .. //depot/projects/hammer/usr.sbin/daemon/daemon.c#8 integrate .. //depot/projects/hammer/usr.sbin/diskinfo/diskinfo.c#7 integrate .. //depot/projects/hammer/usr.sbin/mountd/mountd.c#20 integrate .. //depot/projects/hammer/usr.sbin/pciconf/cap.c#2 integrate .. //depot/projects/hammer/usr.sbin/pmcstat/Makefile#3 integrate .. //depot/projects/hammer/usr.sbin/pmcstat/pmcstat.8#9 integrate .. //depot/projects/hammer/usr.sbin/pmcstat/pmcstat.c#13 integrate .. //depot/projects/hammer/usr.sbin/pmcstat/pmcstat.h#4 integrate .. //depot/projects/hammer/usr.sbin/pstat/pstat.c#17 integrate .. //depot/projects/hammer/usr.sbin/rpc.lockd/lockd_lock.c#10 integrate .. //depot/projects/hammer/usr.sbin/rpcbind/rpcbind.8#6 integrate .. //depot/projects/hammer/usr.sbin/rpcbind/rpcbind.c#7 integrate .. //depot/projects/hammer/usr.sbin/sade/main.c#3 integrate .. //depot/projects/hammer/usr.sbin/sade/variable.c#3 integrate .. //depot/projects/hammer/usr.sbin/sysinstall/main.c#8 integrate .. //depot/projects/hammer/usr.sbin/sysinstall/variable.c#5 integrate .. //depot/projects/hammer/usr.sbin/traceroute6/traceroute6.c#9 integrate .. //depot/projects/hammer/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c#9 integrate Differences ... ==== //depot/projects/hammer/MAINTAINERS#44 (text+ko) ==== @@ -1,4 +1,4 @@ -$FreeBSD: src/MAINTAINERS,v 1.143 2007/04/06 10:57:15 pjd Exp $ +$FreeBSD: src/MAINTAINERS,v 1.144 2007/04/26 21:30:16 imp Exp $ Please note that the content of this file is strictly advisory. No locks listed here are valid. The only strict review requirements @@ -128,6 +128,7 @@ usr.sbin/bluetooth emax Pre-commit review preferred. gnu/usr.bin/send-pr bugmaster Pre-commit review requested. BSD.{local,x11*}.dist portmgr Pre-commit review requested, since these files interface with ports. +usb core Please contact core@ before any major changes Following are the entries from the Makefiles, and a few other sources. Please remove stale entries from both their origin, and this file. ==== //depot/projects/hammer/Makefile.inc1#122 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/Makefile.inc1,v 1.571 2007/04/06 02:13:29 pjd Exp $ +# $FreeBSD: src/Makefile.inc1,v 1.572 2007/04/17 15:52:36 pjd Exp $ # # Make command line options: # -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir @@ -1028,11 +1028,11 @@ ${_lib_libgssapi} ${_lib_libipx} \ lib/libkiconv lib/libkvm lib/libmd \ lib/ncurses/ncurses lib/ncurses/ncursesw \ - lib/libopie lib/libpam \ + lib/libopie lib/libpam lib/libpthread \ lib/libradius lib/libsbuf lib/libtacplus lib/libutil \ ${_lib_libypclnt} lib/libz lib/msun \ ${_secure_lib_libcrypto} ${_secure_lib_libssh} \ - ${_secure_lib_libssl} lib/libthr + ${_secure_lib_libssl} _generic_libs= ${_cddl_lib} gnu/lib ${_kerberos5_lib} lib ${_secure_lib} usr.bin/lex/lib ==== //depot/projects/hammer/ObsoleteFiles.inc#25 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/ObsoleteFiles.inc,v 1.78 2007/04/09 19:16:48 pjd Exp $ +# $FreeBSD: src/ObsoleteFiles.inc,v 1.81 2007/04/24 16:58:54 emax 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,12 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20070423: rc.bluetooth (examples) removed +OLD_FILES+=usr/share/examples/netgraph/bluetooth/rc.bluetooth +# 20070421: worm.4 removed +OLD_FILES+=usr/share/man/man4/worm.4.gz +# 20070417: trunk(4) renamed to lagg(4) +OLD_FILES+=usr/include/net/if_trunk.h >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Tue May 8 22:40:54 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DEF1116A408; Tue, 8 May 2007 22:40:53 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9BC6716A406 for ; Tue, 8 May 2007 22:40:53 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 8EA0613C480 for ; Tue, 8 May 2007 22:40:53 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l48Mere2070973 for ; Tue, 8 May 2007 22:40:53 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l48Mer9q070966 for perforce@freebsd.org; Tue, 8 May 2007 22:40:53 GMT (envelope-from bms@incunabulum.net) Date: Tue, 8 May 2007 22:40:53 GMT Message-Id: <200705082240.l48Mer9q070966@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119529 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 May 2007 22:40:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=119529 Change 119529 by bms@bms_anglepoise on 2007/05/08 22:40:28 turn 'busy resource' back into a panic. trim comments. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips/nexus.c#10 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips/nexus.c#10 (text+ko) ==== @@ -199,11 +199,6 @@ nexus_attach(device_t dev) { - /* - * XXX: next line needed to probe clock (intr 5), - * otherwise no clock and lots of stray hard interrupt 5 - * once compare counts down. - */ bus_generic_probe(dev); bus_enumerate_hinted_children(dev); bus_generic_attach(dev); @@ -323,9 +318,7 @@ if (rle == NULL) return (NULL); if (rle->res != NULL) { - /* XXX panic? */ - printf("%s: resource entry is busy\n", __func__); - return (NULL); + panic("%s: resource entry is busy", __func__); } start = rle->start; end = rle->end; @@ -371,7 +364,6 @@ /* * If this is a memory resource, track the direct mapping * in the uncached MIPS KSEG1 segment. - * XXX is this correct? */ if (type == SYS_RES_MEMORY) { void *vaddr; From owner-p4-projects@FreeBSD.ORG Wed May 9 00:23:21 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B34B316A40B; Wed, 9 May 2007 00:23:21 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8030C16A408 for ; Wed, 9 May 2007 00:23:21 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 72C3F13C45A for ; Wed, 9 May 2007 00:23:21 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l490NLZg090381 for ; Wed, 9 May 2007 00:23:21 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l490NK92090377 for perforce@freebsd.org; Wed, 9 May 2007 00:23:20 GMT (envelope-from bms@incunabulum.net) Date: Wed, 9 May 2007 00:23:20 GMT Message-Id: <200705090023.l490NK92090377@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119531 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 00:23:22 -0000 http://perforce.freebsd.org/chv.cgi?CH=119531 Change 119531 by bms@bms_anglepoise on 2007/05/09 00:22:19 Rename sentry5* to s5* Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/files.sentry5#4 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/s5_machdep.c#1 branch .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/s5reg.h#1 branch .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/sentry5_machdep.c#2 delete .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/sentry5reg.h#3 delete Differences ... ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/files.sentry5#4 (text+ko) ==== @@ -1,4 +1,4 @@ # $FreeBSD$ -#mips/mips32/sentry5/sentry5_machdep.c standard +#mips/mips32/sentry5/s5_machdep.c standard mips/mips32/sentry5/siba.c optional siba From owner-p4-projects@FreeBSD.ORG Wed May 9 00:23:22 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 09FF916A55D; Wed, 9 May 2007 00:23:21 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C1B4D16A41A for ; Wed, 9 May 2007 00:23:21 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id AE38413C480 for ; Wed, 9 May 2007 00:23:21 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l490NLT8090388 for ; Wed, 9 May 2007 00:23:21 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l490NLLV090384 for perforce@freebsd.org; Wed, 9 May 2007 00:23:21 GMT (envelope-from bms@incunabulum.net) Date: Wed, 9 May 2007 00:23:21 GMT Message-Id: <200705090023.l490NLLV090384@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119532 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 00:23:22 -0000 http://perforce.freebsd.org/chv.cgi?CH=119532 Change 119532 by bms@bms_anglepoise on 2007/05/09 00:22:58 siba(4) is now able to enumerate the bus on the Broadcom Sentry5; newbus child attachments to come. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#2 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_ids.h#1 add .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/sibareg.h#1 add .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/sibavar.h#1 add Differences ... ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#2 (text+ko) ==== @@ -1,3 +1,29 @@ +/*- + * Copyright (c) 2007 Bruce M. Simpson. + * 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 AUTHOR 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 AUTHOR 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$"); @@ -12,75 +38,314 @@ #include #include -#include +#include +#include + +/* + * TODO: cpu clock calculation. + * TODO: De-mipsify this code. + * TODO: Move siba to a machine independent location. + * TODO: Attempt to attach the children. + * TODO: resource manager for children (proxy it to nexus) + * TODO: Put the information into ivars like PCI does. + * TODO: Support detach. + * TODO: Power management. + * TODO: code cleanup. + * TODO: Support deployments of siba other than as a system bus. + */ + +#ifndef MIPS_MEM_RID +#define MIPS_MEM_RID 0x20 +#endif + +static int siba_debug = 1; +static const char descfmt[] = "Sonics SiliconBackplane rev %s"; +#define SIBA_DEVDESCLEN sizeof(descfmt) + 8 + +/* + * Device identifiers and descriptions. + */ +static struct siba_devid siba_devids[] = { + { SIBA_VID_BROADCOM, SIBA_DEVID_CHIPCOMMON, SIBA_REV_ANY, + "ChipCommon" }, + { SIBA_VID_BROADCOM, SIBA_DEVID_SDRAM, SIBA_REV_ANY, + "SDRAM controller" }, + { SIBA_VID_BROADCOM, SIBA_DEVID_PCI, SIBA_REV_ANY, + "PCI host interface" }, + { SIBA_VID_BROADCOM, SIBA_DEVID_MIPS, SIBA_REV_ANY, + "MIPS core" }, + { SIBA_VID_BROADCOM, SIBA_DEVID_ETHERNET, SIBA_REV_ANY, + "Ethernet core" }, + { SIBA_VID_BROADCOM, SIBA_DEVID_USB, SIBA_REV_ANY, + "USB host controller" }, + { SIBA_VID_BROADCOM, SIBA_DEVID_IPSEC, SIBA_REV_ANY, + "IPSEC accelerator" }, + { SIBA_VID_BROADCOM, SIBA_DEVID_SDRAMDDR, SIBA_REV_ANY, + "SDRAM/DDR controller" }, + { SIBA_VID_BROADCOM, SIBA_DEVID_MIPS_3302, SIBA_REV_ANY, + "MIPS 3302 core" }, + { 0, 0, 0, NULL } +}; static int siba_activate_resource(device_t, device_t, int, int, struct resource *); +static device_t siba_add_child(device_t, int, const char *, int); static struct resource * siba_alloc_resource(device_t, device_t, int, int *, u_long, u_long, u_long, u_int); static int siba_attach(device_t); -static int siba_detach(device_t); -//static int siba_identify(driver_t *, device_t); +static void siba_destroy_devinfo(struct siba_devinfo *); +static struct siba_devid * + siba_dev_match(uint16_t, uint16_t, uint8_t); +static uint8_t siba_getncores(uint16_t); static int siba_print_child(device_t, device_t); static int siba_probe(device_t); +static struct siba_devinfo * + siba_setup_devinfo(device_t, uint8_t); -static int -siba_probe(device_t dev) +/* + * Earlier ChipCommon revisions have hardcoded number of cores + * present dependent on the ChipCommon ID. + */ +static uint8_t +siba_getncores(uint16_t ccid) { + uint8_t ncores; + + switch (ccid) { + case SIBA_CCID_SENTRY5: + ncores = 7; + break; + case SIBA_CCID_BCM4710: + case SIBA_CCID_BCM4704: + ncores = 9; + break; + default: + ncores = 0; + } - printf("%s: entry\n", __func__); - device_set_desc(dev, "Sonics SiliconBackplane"); - return (0); + return (ncores); } static int -siba_attach(device_t dev) +siba_probe(device_t dev) { struct siba_softc *sc = device_get_softc(dev); + uint32_t idlo, idhi; + uint16_t ccid; int rid; - printf("%s: entry\n", __func__); sc->sc_dev = dev; - rid = 0x20; /* XXX MIPS_MEM_RID */ + /* + * Map the ChipCommon register set using the hints the kernel + * was compiled with. + */ + rid = MIPS_MEM_RID; sc->sc_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); if (sc->sc_mem == NULL) { - device_printf(dev, "unable to allocate memory resource\n"); + device_printf(dev, "unable to allocate probe aperture\n"); + return (ENXIO); + } + sc->sc_bt = rman_get_bustag(sc->sc_mem); + sc->sc_bh = rman_get_bushandle(sc->sc_mem); + sc->sc_maddr = rman_get_start(sc->sc_mem); + sc->sc_msize = rman_get_size(sc->sc_mem); + + if (siba_debug) { + device_printf(dev, "start %08x len %08x\n", + sc->sc_maddr, sc->sc_msize); + } + + idlo = siba_read_4(sc, 0, SIBA_CORE_IDLO); + idhi = siba_read_4(sc, 0, SIBA_CORE_IDHI); + ccid = ((idhi & 0x8ff0) >> 4); + if (siba_debug) { + device_printf(dev, "idlo = %08x\n", idlo); + device_printf(dev, "idhi = %08x\n", idhi); + device_printf(dev, " chipcore id = %08x\n", ccid); + } + + /* + * For now, check that the first core is the ChipCommon core. + */ + if (ccid != SIBA_DEVID_CHIPCOMMON) { + if (siba_debug) + device_printf(dev, "first core is not ChipCommon\n"); + return (ENXIO); + } + + /* + * Determine backplane revision and set description string. + */ + uint32_t rev; + char *revp; + char descbuf[SIBA_DEVDESCLEN]; + + rev = idlo & 0xF0000000; + revp = "unknown"; + if (rev == 0x00000000) + revp = "2.2"; + else if (rev == 0x10000000) + revp = "2.3"; + + (void)snprintf(descbuf, sizeof(descbuf), descfmt, revp); + device_set_desc_copy(dev, descbuf); + + /* + * Determine how many cores are present on this siba bus, so + * that we may map them all. + */ + uint32_t ccidreg; + uint16_t cc_id; + uint16_t cc_rev; + + ccidreg = siba_read_4(sc, 0, SIBA_CC_CCID); + cc_id = (ccidreg & SIBA_CC_IDMASK); + cc_rev = (ccidreg & SIBA_CC_REVMASK) >> SIBA_CC_REVSHIFT; + if (siba_debug) { + device_printf(dev, "ccid = %08x, cc_id = %04x, cc_rev = %04x\n", + ccidreg, cc_id, cc_rev); + } + + sc->sc_ncores = siba_getncores(cc_id); + if (siba_debug) { + device_printf(dev, "%d cores detected.\n", sc->sc_ncores); + } + + /* + * Now we know how many cores are on this siba, release the + * mapping and allocate a new mapping spanning all cores on the bus. + */ + rid = MIPS_MEM_RID; + int result; + result = bus_release_resource(dev, SYS_RES_MEMORY, rid, sc->sc_mem); + if (result != 0) { + device_printf(dev, "error %d releasing resource\n", result); return (ENXIO); } - device_printf(dev, "%s: start %p len %ld\n", __func__, - (void *)(intptr_t)rman_get_start(sc->sc_mem), - rman_get_size(sc->sc_mem)); + uint32_t total; + total = sc->sc_ncores * SIBA_CORE_LEN; - /* XXX: TODO: Check it is a SIBA */ + sc->sc_mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, + sc->sc_maddr, sc->sc_maddr + total - 1, total, RF_ACTIVE); + if (sc->sc_mem == NULL) { + device_printf(dev, "unable to allocate entire aperture\n"); + return (ENXIO); + } + sc->sc_bt = rman_get_bustag(sc->sc_mem); + sc->sc_bh = rman_get_bushandle(sc->sc_mem); + sc->sc_maddr = rman_get_start(sc->sc_mem); + sc->sc_msize = rman_get_size(sc->sc_mem); - /* Probe for and attach children. */ - bus_generic_probe(dev); - bus_generic_attach(dev); + if (siba_debug) { + device_printf(dev, "after remapping: start %08x len %08x\n", + sc->sc_maddr, sc->sc_msize); + } + bus_set_resource(dev, SYS_RES_MEMORY, rid, sc->sc_maddr, sc->sc_msize); return (0); } static int -siba_detach(device_t dev) +siba_attach(device_t dev) { + struct siba_softc *sc = device_get_softc(dev); + uint32_t idlo, idhi; + uint16_t ccid; + uint32_t rev; + + if (siba_debug) + printf("%s: entry\n", __func__); + + bus_generic_probe(dev); + + /* + * Now that all bus space is mapped and visible to the CPU, + * enumerate its children. + * Note that only one core may be mapped at any time if the siba + * bus is the child of a PCI or PCMCIA bus. + */ + uint16_t vendorid; + int idx; + + for (idx = 0; idx < sc->sc_ncores; idx++) { + struct siba_devid *sd; + + idlo = siba_read_4(sc, idx, SIBA_CORE_IDLO); + idhi = siba_read_4(sc, idx, SIBA_CORE_IDHI); + ccid = ((idhi & 0x8ff0) >> 4); + vendorid = (idhi & SSB_IDHIGH_VC) >> SSB_IDHIGH_VC_SHIFT; + rev = (idhi & SSB_IDHIGH_RCLO); + rev |= (idhi & SSB_IDHIGH_RCHI) >> SSB_IDHIGH_RCHI_SHIFT; + + struct siba_devinfo *sdi; + + sdi = siba_setup_devinfo(NULL, 0); + sdi->sdi_vid = vendorid; + sdi->sdi_devid = ccid; + sdi->sdi_rev = rev; + sdi->sdi_idx = idx; + sdi->sdi_irq = 0; /* XXX notyet */ + + sd = siba_dev_match(vendorid, ccid, rev); + if (sd != NULL) { + device_printf(dev, "core %d: %s rev %02x\n", + idx, sd->sd_desc, rev); + } else { + device_printf(dev, + "core %d: vid %04x pid %04x rev %02x\n", + idx, vendorid, ccid, rev); + } - printf("%s: entry\n", __func__); - return (ENXIO); + /* + * Try to attach the child. + * We need to set resources for the child from here; + * drivers which attach to siba will need to use the + * instance variables like children of pcib do. + */ + device_t child; + child = device_add_child(dev, NULL, -1); + if (child == NULL) { + device_printf(dev, "could not add child\n"); + siba_destroy_devinfo(sdi); + } else { + device_printf(dev, "child is %p\n", child); + device_set_ivars(child, sdi); + #ifdef notyet + bus_addr_t baseaddr; + baseaddr = sc->sc_maddr + (idx * SIBA_CORE_LEN); + bus_set_resource(child, SYS_RES_MEMORY, MIPS_MEM_RID, + baseaddr, baseaddr + SIBA_CORE_LEN - 1); + #endif + } + } + + return (bus_generic_attach(dev)); } -#if 0 -static int -siba_identify(driver_t *drv, device_t parent) +static struct siba_devid * +siba_dev_match(uint16_t vid, uint16_t devid, uint8_t rev) { + size_t i, bound; + struct siba_devid *sd; + + bound = sizeof(siba_devids) / sizeof(struct siba_devid); + sd = &siba_devids[0]; + for (i = 0; i < bound; i++, sd++) { + if (((vid == SIBA_VID_ANY) || (vid == sd->sd_vendor)) && + ((devid == SIBA_DEVID_ANY) || (devid == sd->sd_device)) && + ((rev == SIBA_REV_ANY) || (rev == sd->sd_rev) || + (sd->sd_rev == SIBA_REV_ANY))) + break; + } + if (i == bound) + sd = NULL; - printf("%s: entry\n", __func__); - return (ENXIO); + return (sd); } -#endif static int siba_print_child(device_t bus, device_t child) @@ -98,7 +363,9 @@ u_long start, u_long end, u_long count, u_int flags) { - printf("%s: entry\n", __func__); + if (siba_debug) + printf("%s: entry\n", __func__); + return (NULL); } @@ -107,25 +374,69 @@ struct resource *r) { - printf("%s: entry\n", __func__); + if (siba_debug) + printf("%s: entry\n", __func__); + return (ENXIO); } +static struct siba_devinfo * +siba_setup_devinfo(device_t dev, uint8_t idx) +{ + struct siba_devinfo *sdi; + + sdi = malloc(sizeof(*sdi), M_DEVBUF, M_WAITOK | M_ZERO); + resource_list_init(&sdi->sdi_rl); + + return (sdi); +} + +static void +siba_destroy_devinfo(struct siba_devinfo *sdi) +{ + + resource_list_free(&sdi->sdi_rl); + free(sdi, M_DEVBUF); +} + +static device_t +siba_add_child(device_t dev, int order, const char *name, int unit) +{ +#if 1 + + device_printf(dev, "%s: entry\n", __func__); + return (NULL); +#else + device_t child; + struct siba_devinfo *sdi; + + child = device_add_child_ordered(dev, order, name, unit); + if (child == NULL) + return (NULL); + + sdi = malloc(sizeof(struct siba_devinfo), M_DEVBUF, M_NOWAIT|M_ZERO); + if (sdi == NULL) + return (NULL); + + device_set_ivars(child, sdi); + return (child); +#endif +} + static device_method_t siba_methods[] = { /* Device interface */ - //DEVMETHOD(device_identify, siba_identify), - DEVMETHOD(device_probe, siba_probe), DEVMETHOD(device_attach, siba_attach), - DEVMETHOD(device_detach, siba_detach), DEVMETHOD(device_detach, bus_generic_detach), + DEVMETHOD(device_probe, siba_probe), + DEVMETHOD(device_resume, bus_generic_resume), DEVMETHOD(device_shutdown, bus_generic_shutdown), DEVMETHOD(device_suspend, bus_generic_suspend), - DEVMETHOD(device_resume, bus_generic_resume), /* Bus interface */ + DEVMETHOD(bus_activate_resource,siba_activate_resource), + DEVMETHOD(bus_add_child, siba_add_child), + DEVMETHOD(bus_alloc_resource, siba_alloc_resource), DEVMETHOD(bus_print_child, siba_print_child), - DEVMETHOD(bus_alloc_resource, siba_alloc_resource), - DEVMETHOD(bus_activate_resource,siba_activate_resource), DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), From owner-p4-projects@FreeBSD.ORG Wed May 9 07:06:30 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EF1F116A406; Wed, 9 May 2007 07:06:29 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A3F6C16A402 for ; Wed, 9 May 2007 07:06:29 +0000 (UTC) (envelope-from rdivacky@vlk.vlakno.cz) Received: from vlakno.cz (vlk.vlakno.cz [62.168.28.247]) by mx1.freebsd.org (Postfix) with ESMTP id 5660013C468 for ; Wed, 9 May 2007 07:06:28 +0000 (UTC) (envelope-from rdivacky@vlk.vlakno.cz) Received: from localhost (localhost [127.0.0.1]) by vlakno.cz (Postfix) with ESMTP id B05108BD470; Wed, 9 May 2007 09:06:27 +0200 (CEST) X-Virus-Scanned: amavisd-new at vlakno.cz Received: from vlakno.cz ([127.0.0.1]) by localhost (vlk.vlakno.cz [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id efZs7UV+01Xw; Wed, 9 May 2007 09:06:26 +0200 (CEST) Received: from vlk.vlakno.cz (localhost [127.0.0.1]) by vlakno.cz (Postfix) with ESMTP id C4DAD8BD3BE; Wed, 9 May 2007 09:06:26 +0200 (CEST) Received: (from rdivacky@localhost) by vlk.vlakno.cz (8.13.8/8.13.8/Submit) id l4976Qnx041462; Wed, 9 May 2007 09:06:26 +0200 (CEST) (envelope-from rdivacky) Date: Wed, 9 May 2007 09:06:26 +0200 From: Roman Divacky To: Fredrik Lindberg Message-ID: <20070509070626.GA41419@freebsd.org> References: <200705082229.l48MTrbh069129@repoman.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200705082229.l48MTrbh069129@repoman.freebsd.org> User-Agent: Mutt/1.4.2.2i Cc: Perforce Change Reviews Subject: Re: PERFORCE change 119527 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 07:06:30 -0000 On Tue, May 08, 2007 at 10:29:53PM +0000, Fredrik Lindberg wrote: > http://perforce.freebsd.org/chv.cgi?CH=119527 > > Change 119527 by fli@fli_genesis on 2007/05/08 22:29:14 > > Add data structures needed by the stack. > A Double-linked list and a hash table. what about sys/queue.h ? it provides various abstract data types including double-linked list From owner-p4-projects@FreeBSD.ORG Wed May 9 08:41:15 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9C9F116A409; Wed, 9 May 2007 08:41:15 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 40DE316A400; Wed, 9 May 2007 08:41:15 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from mx1.h3q.net (mx1.h3q.net [212.37.5.30]) by mx1.freebsd.org (Postfix) with ESMTP id 0072A13C48A; Wed, 9 May 2007 08:41:14 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from [192.168.1.100] (81-232-22-115-no50.tbcn.telia.com [81.232.22.115]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: fli@shapeshifter.se) by mx1.h3q.net (Postfix) with ESMTP id 0707B78C20; Wed, 9 May 2007 10:08:47 +0200 (CEST) Message-ID: <4641818B.4030507@FreeBSD.org> Date: Wed, 09 May 2007 10:08:43 +0200 From: Fredrik Lindberg User-Agent: Thunderbird 2.0.0.0 (X11/20070420) MIME-Version: 1.0 To: Roman Divacky References: <200705082229.l48MTrbh069129@repoman.freebsd.org> <20070509070626.GA41419@freebsd.org> In-Reply-To: <20070509070626.GA41419@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews Subject: Re: PERFORCE change 119527 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 08:41:15 -0000 Roman Divacky wrote: > On Tue, May 08, 2007 at 10:29:53PM +0000, Fredrik Lindberg wrote: >> http://perforce.freebsd.org/chv.cgi?CH=119527 >> >> Change 119527 by fli@fli_genesis on 2007/05/08 22:29:14 >> >> Add data structures needed by the stack. >> A Double-linked list and a hash table. > > what about sys/queue.h ? it provides various abstract data types > including double-linked list > Yes, I know it does provide that, and I've used it a lot in the past. A while ago I needed a linked list for another project where I needed to be independent of FreeBSD. So I rolled my own (with a similar api) and I've used it ever since. (It can be used both as a stack and queue). It's not exactly rocket-science and it does increase portability since this is a userland application. If there aren't any major objections or other selling points in favor for sys/queue.h (in a userland application!) I'm just going to leave it as it is. From owner-p4-projects@FreeBSD.ORG Wed May 9 10:01:20 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7903C16A406; Wed, 9 May 2007 10:01:20 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4A4B916A403 for ; Wed, 9 May 2007 10:01:20 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [209.31.154.42]) by mx1.freebsd.org (Postfix) with ESMTP id 211AE13C44B for ; Wed, 9 May 2007 10:01:20 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [209.31.154.41]) by cyrus.watson.org (Postfix) with ESMTP id 54F0E46C3B; Wed, 9 May 2007 05:35:18 -0400 (EDT) Date: Wed, 9 May 2007 10:35:18 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Fredrik Lindberg In-Reply-To: <4641818B.4030507@FreeBSD.org> Message-ID: <20070509103404.D71759@fledge.watson.org> References: <200705082229.l48MTrbh069129@repoman.freebsd.org> <20070509070626.GA41419@freebsd.org> <4641818B.4030507@FreeBSD.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: Roman Divacky , Perforce Change Reviews Subject: Re: PERFORCE change 119527 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 10:01:20 -0000 On Wed, 9 May 2007, Fredrik Lindberg wrote: > Roman Divacky wrote: >> On Tue, May 08, 2007 at 10:29:53PM +0000, Fredrik Lindberg wrote: >>> http://perforce.freebsd.org/chv.cgi?CH=119527 >>> >>> Change 119527 by fli@fli_genesis on 2007/05/08 22:29:14 >>> >>> Add data structures needed by the stack. >>> A Double-linked list and a hash table. >> >> what about sys/queue.h ? it provides various abstract data types including >> double-linked list > > Yes, I know it does provide that, and I've used it a lot in the past. A > while ago I needed a linked list for another project where I needed to be > independent of FreeBSD. So I rolled my own (with a similar api) and I've > used it ever since. (It can be used both as a stack and queue). > > It's not exactly rocket-science and it does increase portability since this > is a userland application. If there aren't any major objections or other > selling points in favor for sys/queue.h (in a userland application!) I'm > just going to leave it as it is. FYI, slightly stale versions of queue.h are shipped with both Linux and Mac OS X, so they are actually relatively portable. Some of the more recent TAILQ macros, etc, aren't available there, so I recently changed from using the OS-native queue.h in OpenBSM to a FreeBSD version I ship to use on those platforms. Robert N M Watson Computer Laboratory University of Cambridge From owner-p4-projects@FreeBSD.ORG Wed May 9 10:21:14 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 07A4016A403; Wed, 9 May 2007 10:21:14 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8B74016A400; Wed, 9 May 2007 10:21:13 +0000 (UTC) (envelope-from fli@shapeshifter.se) Received: from mx1.h3q.net (mx1.h3q.net [212.37.5.30]) by mx1.freebsd.org (Postfix) with ESMTP id 45C3F13C45A; Wed, 9 May 2007 10:21:13 +0000 (UTC) (envelope-from fli@shapeshifter.se) Received: from [130.237.226.17] (grey-03.nada.kth.se [130.237.226.17]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: fli@shapeshifter.se) by mx1.h3q.net (Postfix) with ESMTP id 13A3978C20; Wed, 9 May 2007 11:52:33 +0200 (CEST) Message-ID: <464199D9.7020908@shapeshifter.se> Date: Wed, 09 May 2007 11:52:25 +0200 From: Fredrik Lindberg User-Agent: Thunderbird 1.5.0.10 (X11/20070303) MIME-Version: 1.0 To: Robert Watson References: <200705082229.l48MTrbh069129@repoman.freebsd.org> <20070509070626.GA41419@freebsd.org> <4641818B.4030507@FreeBSD.org> <20070509103404.D71759@fledge.watson.org> In-Reply-To: <20070509103404.D71759@fledge.watson.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Roman Divacky , Perforce Change Reviews , Fredrik Lindberg Subject: Re: PERFORCE change 119527 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 10:21:14 -0000 Robert Watson wrote: > > On Wed, 9 May 2007, Fredrik Lindberg wrote: > >> Roman Divacky wrote: >>> On Tue, May 08, 2007 at 10:29:53PM +0000, Fredrik Lindberg wrote: >>>> http://perforce.freebsd.org/chv.cgi?CH=119527 >>>> >>>> Change 119527 by fli@fli_genesis on 2007/05/08 22:29:14 >>>> >>>> Add data structures needed by the stack. >>>> A Double-linked list and a hash table. >>> >>> what about sys/queue.h ? it provides various abstract data types >>> including double-linked list >> >> Yes, I know it does provide that, and I've used it a lot in the past. >> A while ago I needed a linked list for another project where I needed >> to be independent of FreeBSD. So I rolled my own (with a similar api) >> and I've used it ever since. (It can be used both as a stack and queue). >> >> It's not exactly rocket-science and it does increase portability since >> this is a userland application. If there aren't any major objections >> or other selling points in favor for sys/queue.h (in a userland >> application!) I'm just going to leave it as it is. > > FYI, slightly stale versions of queue.h are shipped with both Linux and > Mac OS X, so they are actually relatively portable. Some of the more > recent TAILQ macros, etc, aren't available there, so I recently changed > from using the OS-native queue.h in OpenBSM to a FreeBSD version I ship > to use on those platforms. > Ok, I'll take a look at the various queue.h shipped with the major BSDs, and see if I can find a common subset that suits my needs (without too many compromises) and based on the findings I'll reconsider my choice. Fredrik Lindberg From owner-p4-projects@FreeBSD.ORG Wed May 9 14:37:28 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8011D16A408; Wed, 9 May 2007 14:37:28 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5501116A402 for ; Wed, 9 May 2007 14:37:28 +0000 (UTC) (envelope-from ivoras@gmail.com) Received: from an-out-0708.google.com (an-out-0708.google.com [209.85.132.243]) by mx1.freebsd.org (Postfix) with ESMTP id 1272913C45A for ; Wed, 9 May 2007 14:37:27 +0000 (UTC) (envelope-from ivoras@gmail.com) Received: by an-out-0708.google.com with SMTP id d23so46928and for ; Wed, 09 May 2007 07:37:27 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=nXn2eN28PqsqS1GEuIPKQpVuKS8xuzYK9wypol+x/sRbsVYC7ZUpR5aOmntFe9WicuS3m6GaNrPc+kZSXC5nT5ttuwLwAlT2mkXZy670A+uiXbzuKfxxGKD+hCcbb5q+evAi3Ex0SUbDIAkO+Ufy/3uUMUJaRSzDWv6F5cqMeY4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=qsegVEQV6+L5Ljhf1IP9Ew0WEp5gWI6q9l4MyrnxOsz8HX4uqauP5HZs2dflOF/ukaBCmHfF1UrQzIZKHtLdN6rnGsQgqLY3hLNvyySPWCzAnFw22X2LAdEY3rBg3SoT1eu7H8T72NYTU6mz7ETfEnK44fWCdPXc7HSmcjREWQA= Received: by 10.100.135.16 with SMTP id i16mr360664and.1178719832665; Wed, 09 May 2007 07:10:32 -0700 (PDT) Received: by 10.100.93.15 with HTTP; Wed, 9 May 2007 07:10:32 -0700 (PDT) Message-ID: <9bbcef730705090710h653dc15bjb7a1159484c1c48b@mail.gmail.com> Date: Wed, 9 May 2007 16:10:32 +0200 From: "Ivan Voras" To: "Fredrik Lindberg" In-Reply-To: <464199D9.7020908@shapeshifter.se> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <200705082229.l48MTrbh069129@repoman.freebsd.org> <20070509070626.GA41419@freebsd.org> <4641818B.4030507@FreeBSD.org> <20070509103404.D71759@fledge.watson.org> <464199D9.7020908@shapeshifter.se> Cc: Perforce Change Reviews Subject: Re: PERFORCE change 119527 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 14:37:28 -0000 On 09/05/07, Fredrik Lindberg wrote: > Ok, I'll take a look at the various queue.h shipped with the major BSDs, > and see if I can find a common subset that suits my needs (without too > many compromises) and based on the findings I'll reconsider my choice. I use sys/queue.h in my userland applications all the time, there's no problem there. From owner-p4-projects@FreeBSD.ORG Wed May 9 14:58:49 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A477D16A403; Wed, 9 May 2007 14:58:49 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 1133C16A400 for ; Wed, 9 May 2007 14:58:49 +0000 (UTC) (envelope-from fli@shapeshifter.se) Received: from mx1.h3q.net (mx1.h3q.net [212.37.5.30]) by mx1.freebsd.org (Postfix) with ESMTP id C48B513C43E for ; Wed, 9 May 2007 14:58:46 +0000 (UTC) (envelope-from fli@shapeshifter.se) Received: from [192.168.1.100] (81-232-22-115-no50.tbcn.telia.com [81.232.22.115]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: fli@shapeshifter.se) by mx1.h3q.net (Postfix) with ESMTP id 6436578C20; Wed, 9 May 2007 16:58:45 +0200 (CEST) Message-ID: <4641E19F.80809@shapeshifter.se> Date: Wed, 09 May 2007 16:58:39 +0200 From: Fredrik Lindberg User-Agent: Thunderbird 2.0.0.0 (X11/20070420) MIME-Version: 1.0 To: Ivan Voras References: <200705082229.l48MTrbh069129@repoman.freebsd.org> <20070509070626.GA41419@freebsd.org> <4641818B.4030507@FreeBSD.org> <20070509103404.D71759@fledge.watson.org> <464199D9.7020908@shapeshifter.se> <9bbcef730705090710h653dc15bjb7a1159484c1c48b@mail.gmail.com> In-Reply-To: <9bbcef730705090710h653dc15bjb7a1159484c1c48b@mail.gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews Subject: Re: PERFORCE change 119527 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 14:58:50 -0000 Ivan Voras wrote: > On 09/05/07, Fredrik Lindberg wrote: > >> Ok, I'll take a look at the various queue.h shipped with the major BSDs, >> and see if I can find a common subset that suits my needs (without too >> many compromises) and based on the findings I'll reconsider my choice. > > I use sys/queue.h in my userland applications all the time, there's no > problem there. > And it works on {Net,Open}BSD?, I could swear that I've been bitten by sys/queue.h in the past when moving stuff between FreeBSD and NetBSD. Could have been those TAILQ-macros Robert Watson talked about though. Fredrik Lindberg From owner-p4-projects@FreeBSD.ORG Wed May 9 15:36:05 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D0BF216A404; Wed, 9 May 2007 15:36:04 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6BFD916A402 for ; Wed, 9 May 2007 15:36:04 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 5B02713C48A for ; Wed, 9 May 2007 15:36:04 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49Fa4lK091944 for ; Wed, 9 May 2007 15:36:04 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49Fa3xY091941 for perforce@freebsd.org; Wed, 9 May 2007 15:36:03 GMT (envelope-from bms@incunabulum.net) Date: Wed, 9 May 2007 15:36:03 GMT Message-Id: <200705091536.l49Fa3xY091941@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119561 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 15:36:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=119561 Change 119561 by bms@bms_anglepoise on 2007/05/09 15:35:21 Add instance variables and devinfo for child devices. Add a skeleton siba child driver for the ChipCommon core which doesn't do anything yet. Be sure to free the window for the entire SiBa system bus range in MIPS memory space before we attach children, as their allocations will ultimately be proxied to nexus (when Siba is used as a system bus). Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/files.sentry5#5 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#3 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_cc.c#1 add .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/sibavar.h#2 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/files.sentry5#5 (text+ko) ==== @@ -2,3 +2,4 @@ #mips/mips32/sentry5/s5_machdep.c standard mips/mips32/sentry5/siba.c optional siba +mips/mips32/sentry5/siba_cc.c optional siba ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#3 (text+ko) ==== @@ -100,8 +100,10 @@ static uint8_t siba_getncores(uint16_t); static int siba_print_child(device_t, device_t); static int siba_probe(device_t); +int siba_read_ivar(device_t, device_t, int, uintptr_t *); static struct siba_devinfo * siba_setup_devinfo(device_t, uint8_t); +int siba_write_ivar(device_t, device_t, int, uintptr_t); /* * Earlier ChipCommon revisions have hardcoded number of cores @@ -229,6 +231,11 @@ uint32_t total; total = sc->sc_ncores * SIBA_CORE_LEN; + /* XXX Don't allocate the entire window until we + * enumerate the bus. Once the bus has been enumerated, + * and instance variables/children instantiated + populated, + * release the resource so children may attach. + */ sc->sc_mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, sc->sc_maddr, sc->sc_maddr + total - 1, total, RF_ACTIVE); if (sc->sc_mem == NULL) { @@ -314,15 +321,28 @@ } else { device_printf(dev, "child is %p\n", child); device_set_ivars(child, sdi); - #ifdef notyet + + /* Set memory window for immediate child. */ bus_addr_t baseaddr; baseaddr = sc->sc_maddr + (idx * SIBA_CORE_LEN); bus_set_resource(child, SYS_RES_MEMORY, MIPS_MEM_RID, baseaddr, baseaddr + SIBA_CORE_LEN - 1); - #endif } } + /* + * Release our memory window before children are attached. + */ + int result; + int rid; + rid = MIPS_MEM_RID; + result = bus_release_resource(dev, SYS_RES_MEMORY, rid, + sc->sc_mem); + if (result != 0) { + device_printf(dev, "error %d releasing resource\n", result); + return (ENXIO); + } + return (bus_generic_attach(dev)); } @@ -423,6 +443,37 @@ #endif } +int +siba_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) +{ + struct siba_devinfo *sdi; + + sdi = device_get_ivars(child); + + switch (which) { + case SIBA_IVAR_VENDOR: + *result = sdi->sdi_vid; + break; + case SIBA_IVAR_DEVICE: + *result = sdi->sdi_devid; + break; + case SIBA_IVAR_REVID: + *result = sdi->sdi_rev; + break; + default: + return (ENOENT); + } + + return (0); +} + +int +siba_write_ivar(device_t dev, device_t child, int which, uintptr_t value) +{ + + return (EINVAL); +} + static device_method_t siba_methods[] = { /* Device interface */ DEVMETHOD(device_attach, siba_attach), @@ -437,8 +488,10 @@ DEVMETHOD(bus_add_child, siba_add_child), DEVMETHOD(bus_alloc_resource, siba_alloc_resource), DEVMETHOD(bus_print_child, siba_print_child), + DEVMETHOD(bus_read_ivar, siba_read_ivar), DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), + DEVMETHOD(bus_write_ivar, siba_write_ivar), {0, 0}, }; ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/sibavar.h#2 (text+ko) ==== @@ -41,11 +41,6 @@ uint8_t sc_ncores; }; -enum siba_device_ivars { - SIBA_IVAR_VENDOR, - SIBA_IVAR_DEVICE, - SIBA_IVAR_REVID -}; struct siba_devinfo { struct resource_list sdi_rl; @@ -76,4 +71,19 @@ bus_space_write_4((sc)->sc_bt, (sc)->sc_bh, \ (core * SIBA_CORE_LEN) + (reg), (val)) +enum siba_device_ivars { + SIBA_IVAR_VENDOR, + SIBA_IVAR_DEVICE, + SIBA_IVAR_REVID +}; + +#define SIBA_ACCESSOR(var, ivar, type) \ + __BUS_ACCESSOR(siba, var, SIBA, ivar, type) + +SIBA_ACCESSOR(vendor, VENDOR, uint16_t) +SIBA_ACCESSOR(device, DEVICE, uint16_t) +SIBA_ACCESSOR(revid, REVID, uint8_t) + +#undef SIBA_ACCESSOR + #endif /* _SIBAVAR_H_ */ From owner-p4-projects@FreeBSD.ORG Wed May 9 16:13:52 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D561216A406; Wed, 9 May 2007 16:13:51 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 960E516A402 for ; Wed, 9 May 2007 16:13:51 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 8461513C44C for ; Wed, 9 May 2007 16:13:51 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49GDpWs099561 for ; Wed, 9 May 2007 16:13:51 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49GDpPj099558 for perforce@freebsd.org; Wed, 9 May 2007 16:13:51 GMT (envelope-from fli@FreeBSD.org) Date: Wed, 9 May 2007 16:13:51 GMT Message-Id: <200705091613.l49GDpPj099558@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119564 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 16:13:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=119564 Change 119564 by fli@fli_genesis on 2007/05/09 16:13:23 Nuke my own-rolled list and replace with sys/queue.h Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/hash.c#2 edit .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/hash.h#2 edit .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/list.h#2 delete .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/mdns.h#2 edit .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_buf.c#2 edit .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_buf.h#2 edit .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_mdns.c#2 edit .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_packet.c#2 edit Differences ... ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/hash.c#2 (text+ko) ==== @@ -239,7 +239,7 @@ chunk = malloc(sizeof(struct hashentry) * entries); for (i = 0; i < entries; i++) { - list_insert_tail(ht->ht_free, &chunk[i], he_next); + TAILQ_INSERT_TAIL(&ht->ht_free, &chunk[i], he_next); } ht->ht_chunk[ht->ht_chunks++] = chunk; @@ -253,15 +253,20 @@ int hashtbl_init(struct hashtbl *ht, size_t len) { + size_t i; bzero(ht, sizeof(struct hashtbl)); ht->ht_table = malloc(sizeof(*ht->ht_table) * len); - bzero(ht->ht_table, sizeof(*ht->ht_table) * len); ht->ht_tblsz = len; ht->ht_mask = len - 1; ht->ht_entries = 0; + + for (i = 0; i < len; i++) { + TAILQ_INIT(&ht->ht_table[i]); + } + TAILQ_INIT(&ht->ht_free); + pre_alloc(ht); - return (0); } @@ -275,7 +280,7 @@ size_t i; for (i = 0; i < ht->ht_tblsz; i++) { - list_foreach(ht->ht_table[i], he, he_next) { + TAILQ_FOREACH(he, &ht->ht_table[i], he_next) { free(he->he_key); } } @@ -298,7 +303,7 @@ { struct hashentry *he; - list_foreach(ht->ht_table[hval], he, he_next) { + TAILQ_FOREACH(he, &ht->ht_table[hval], he_next) { if (keylen == he->he_keylen) { if (memcmp(key, he->he_key, keylen) == 0) break; @@ -329,18 +334,18 @@ if (he != NULL) return (-1); - if (list_empty(ht->ht_free)) { + if (TAILQ_EMPTY(&ht->ht_free)) { pre_alloc(ht); } - he = list_first(ht->ht_free); - list_remove_head(ht->ht_free, he_next); + he = TAILQ_FIRST(&ht->ht_free); + TAILQ_REMOVE(&ht->ht_free, he, he_next); he->he_key = malloc(keylen); memcpy(he->he_key, key, keylen); he->he_keylen = keylen; he->he_data = data; - list_insert_tail(ht->ht_table[hval], he, he_next); + TAILQ_INSERT_TAIL(&ht->ht_table[hval], he, he_next); return (0); } @@ -366,9 +371,9 @@ if (he != NULL) { hval = hash(key, keylen, time(NULL)); hval &= ht->ht_mask; - list_remove(ht->ht_table[hval], he, he_next); + TAILQ_REMOVE(&ht->ht_table[hval], he, he_next); free(he->he_key); - list_insert_tail(ht->ht_free, he, he_next); + TAILQ_INSERT_TAIL(&ht->ht_free, he, he_next); return (0); } return (-1); ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/hash.h#2 (text+ko) ==== @@ -27,13 +27,13 @@ #ifndef _HASH_H_ #define _HASH_H_ -#include "list.h" +#include /* * Hash table entry */ struct hashentry { - list_entry(hashentry) he_next; /* Next entry */ + TAILQ_ENTRY(hashentry) he_next; /* Next entry */ void *he_key; /* Key */ size_t he_keylen; /* Key length */ void *he_data; /* Data object pointer */ @@ -43,11 +43,11 @@ * Hash table */ struct hashtbl { - list_head(hashentry) *ht_table; /* Bucket array */ + TAILQ_HEAD(, hashentry) *ht_table; /* Bucket array */ size_t ht_tblsz; /* Size of table */ uint32_t ht_mask; struct hashentry **ht_chunk; /* Chunk array */ - list_head(hashentry) ht_free; /* Free list */ + TAILQ_HEAD(, hashentry) ht_free; /* Free list */ size_t ht_entries; /* Entries per chunk */ size_t ht_chunks; /* Number of chunks */ }; ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/mdns.h#2 (text+ko) ==== @@ -31,8 +31,8 @@ #include #include #include +#include -#include "list.h" #include "stack_buf.h" /* @@ -62,7 +62,7 @@ #endif uint16_t md_maxpkgsz; /* max (udp) packet size */ struct mdns_bufpool *md_bp; /* buffer pool */ - list_head(mdns_packet) md_pkglist; /* free list */ + TAILQ_HEAD(, mdns_packet) md_pkglist; /* free list */ int md_pkgfree; int md_pkgtotal; }; @@ -82,7 +82,7 @@ struct mdns_packet { uint32_t p_magic; struct mdns_pkgchain *p_pc; - list_entry(mdns_packet) p_list; /* packet list */ + TAILQ_ENTRY(mdns_packet) p_list; /* packet list */ size_t p_len; /* total packet length */ struct mdns_bufhead p_buflist; @@ -117,7 +117,7 @@ typedef int (*md_unlock)(void *); struct mdns_pkgchain { uint32_t pc_magic; - list_head(mdns_packet) pc_head; /* packet list */ + TAILQ_HEAD(, mdns_packet) pc_head; /* packet list */ int pc_list_len; /* packet list length */ int pc_flags; #define MDNS_PC_NONE 0x0 ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_buf.c#2 (text+ko) ==== @@ -55,8 +55,7 @@ bp->bp_lock = lock; bp->bp_unlock = unlock; bp->bp_lockarg = arg; - list_init(bp->bp_list); - + TAILQ_INIT(&bp->bp_list); return (bp); } @@ -68,14 +67,14 @@ MDNS_BP_LOCK(bp); - while (!list_empty(bp->bp_list)) { - buf = list_first(bp->bp_list); - list_remove_head(bp->bp_list, b_list); + while (!TAILQ_EMPTY(&bp->bp_list)) { + buf = TAILQ_FIRST(&bp->bp_list); + TAILQ_REMOVE(&bp->bp_list, buf, b_list); free(buf->b_buf); free(buf); } - ret = list_empty(bp->bp_list); + ret = TAILQ_EMPTY(&bp->bp_list); MDNS_BP_UNLOCK(bp); if (ret == 1) @@ -115,9 +114,9 @@ buf = NULL; do { - if (!list_empty(bp->bp_list)) { - buf = list_first(bp->bp_list); - list_remove_head(bp->bp_list, b_list); + if (!TAILQ_EMPTY(&bp->bp_list)) { + buf = TAILQ_FIRST(&bp->bp_list); + TAILQ_REMOVE(&bp->bp_list, buf, b_list); bp->bp_buffree--; if (buf->b_sz < bp->bp_defsz) { mdns_buf_free(bp, bh, buf, 1); @@ -143,7 +142,9 @@ } while (buf == NULL); buf->b_len = 0; - list_insert_tail(bh->bh_list, buf, b_list); + if (bh->bh_size == 0) + TAILQ_INIT(&bh->bh_list); + TAILQ_INSERT_TAIL(&bh->bh_list, buf, b_list); bh->bh_size++; if (!locked) @@ -160,10 +161,10 @@ if (!locked) MDNS_BP_LOCK(bp); - list_remove(bh->bh_list, buf, b_list); + TAILQ_REMOVE(&bh->bh_list, buf, b_list); bh->bh_size--; if (!(buf->b_flags & MDNS_BUF_TEMP)) { - list_insert_tail(bp->bp_list, buf, b_list); + TAILQ_INSERT_TAIL(&bp->bp_list, buf, b_list); bp->bp_buffree++; } else { @@ -174,10 +175,10 @@ i = (bp->bp_buffree - 1) / 4; for (; i > 0; i--) { - buf = list_first(bp->bp_list); + buf = TAILQ_FIRST(&bp->bp_list); if (buf == NULL) break; - list_remove_head(bp->bp_list, b_list); + TAILQ_REMOVE(&bp->bp_list, buf, b_list); free(buf->b_buf); free(buf); bp->bp_buftotal--; @@ -200,22 +201,22 @@ struct mdns_bufhead bh2; if (MDNS_BUFHSZ(bh) <= 1) - return (list_first(bh->bh_list)); + return (TAILQ_FIRST(&bh->bh_list)); if (!locked) MDNS_BP_LOCK(bp); len = 0; - list_foreach(bh->bh_list, buf, b_list) { + TAILQ_FOREACH(buf, &bh->bh_list, b_list) { len += MDNS_BUFLEN(buf); } bzero(&bh2, sizeof(struct mdns_bufhead)); buf = mdns_buf_alloc(bp, &bh2, len, 1); - while (!list_empty(bh->bh_list)) { - buf2 = list_first(bh->bh_list); - list_remove_head(bh->bh_list, b_list); + while (!TAILQ_EMPTY(&bh->bh_list)) { + buf2 = TAILQ_FIRST(&bh->bh_list); + TAILQ_REMOVE(&bh->bh_list, buf2, b_list); memcpy(MDNS_BUFPOS(buf), MDNS_BUF(buf2), MDNS_BUFLEN(buf2)); MDNS_BUFLEN(buf) += MDNS_BUFLEN(buf2); mdns_buf_free(bp, bh, buf2, 1); ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_buf.h#2 (text+ko) ==== @@ -28,13 +28,13 @@ #define _CORE_BUF_H_ #include -#include "list.h" +#include /* * Buffer segment */ struct mdns_buf { - list_entry(mdns_buf) b_list; + TAILQ_ENTRY(mdns_buf) b_list; char *b_buf; /* raw byte buffer */ size_t b_sz; /* buffer size */ size_t b_len; @@ -46,8 +46,8 @@ #define MDNS_BUFSZ(b) (b)->b_sz #define MDNS_BUFLEN(b) (b)->b_len #define MDNS_BUFPOS(b) (((b)->b_buf) + ((b)->b_len)) -#define MDNS_BUFNEXT(b) list_next((b), b_list) -#define MDNS_BUFPREV(b) list_prev((b), b_list) +#define MDNS_BUFNEXT(b) TAILQ_NEXT((b), b_list) +#define MDNS_BUFPREV(b) TAILQ_PREV((b), b_list) /* External buffer pool locking functions */ typedef int (*bp_lock)(void *); @@ -65,7 +65,7 @@ */ struct mdns_bufpool { uint32_t bp_magic; - list_head(mdns_buf) bp_list; /* free list */ + TAILQ_HEAD(, mdns_buf) bp_list; /* free list */ size_t bp_defsz; /* default segment size */ int bp_lim; /* max number of segments */ bp_lock bp_lock; /* external lock function */ @@ -79,12 +79,12 @@ * Buffer consumer */ struct mdns_bufhead { - list_head(mdns_buf) bh_list; /* use list */ + TAILQ_HEAD(, mdns_buf) bh_list; /* use list */ size_t bh_size; /* number of buffer segments in list */ }; #define MDNS_BUFHEAD(bh) (bh)->bh_list -#define MDNS_BUFH(bh) list_first((bh)->bh_list) +#define MDNS_BUFH(bh) TAILQ_FIRST(&(bh)->bh_list) #define MDNS_BUFHSZ(bh) (bh)->bh_size struct mdns_buf * mdns_buf_alloc(struct mdns_bufpool *, ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_mdns.c#2 (text+ko) ==== @@ -52,8 +52,8 @@ static int mdns_tcp_close(struct mdns *, int); static int mcast_memberctl(int, int, int, int); -#define mcast_join(sock, ifidx, fam) mcast_memberctl(sock, ifidx, fam, 1) -#define mcast_leave(sock, ifidx, fam) mcast_memberctl(sock, ifidx, fam, 0) +#define mcast_join(sock, ifidx, fam) mcast_memberctl(sock, ifidx, fam, 1) +#define mcast_leave(sock, ifidx, fam) mcast_memberctl(sock, ifidx, fam, 0) /* * Create and initialize a MDNS handle required for sending and @@ -103,6 +103,7 @@ strlcpy(req.ifr_name, md->md_ifnam, IFNAMSIZ); sock = socket(IPPROTO_IP, SOCK_DGRAM, 0); error = ioctl(sock, SIOCGIFMTU, &req); + close(sock); /* * IP-header (no options) and UDP-header * XXX: Will there ever be ip-options present in multicast packets? @@ -124,7 +125,8 @@ if (md->md_maxpkgsz > len) mdns_bufpool_setsize(bp, len); - close(sock); + TAILQ_INIT(&md->md_pkglist); + MDNS_INIT_SET(md, md_magic); return (0); error: @@ -598,10 +600,10 @@ msg.msg_control = NULL; msg.msg_controllen = 0; - list_foreach(pc->pc_head, pkg, p_list) { + TAILQ_FOREACH(pkg, &pc->pc_head, p_list) { iov = malloc(sizeof(struct iovec) * MDNS_BUFHSZ(&pkg->p_buflist)); i = 0; - list_foreach(MDNS_BUFHEAD(&pkg->p_buflist), buf, b_list) { + TAILQ_FOREACH(buf, &MDNS_BUFHEAD(&pkg->p_buflist), b_list) { iov[i].iov_base = MDNS_BUF(buf); iov[i].iov_len = MDNS_BUFLEN(buf); i++; @@ -822,10 +824,10 @@ MDNS_INIT_ASSERT(md, md_magic); MDNS_INIT_ASSERT(pc, pc_magic); - list_foreach(pc->pc_head, pkg, p_list) { + TAILQ_FOREACH(pkg, &pc->pc_head, p_list) { iov = malloc(sizeof(struct iovec) * MDNS_BUFHSZ(&pkg->p_buflist)); i = 0; - list_foreach(MDNS_BUFHEAD(&pkg->p_buflist), buf, b_list) { + TAILQ_FOREACH(buf, &MDNS_BUFHEAD(&pkg->p_buflist), b_list) { iov[i].iov_base = MDNS_BUF(buf); iov[i].iov_len = MDNS_BUFLEN(buf); i++; @@ -878,7 +880,7 @@ * Merge buf segments into a continuous area. * This is quite expensive but TCP operations with mdns should be * very rare. TCP operations are only present to provide compability - * with legacy clients. + * with legacy clients. */ buf = mdns_buf_merge(md->md_bp, &pkg->p_buflist, 1); ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_packet.c#2 (text+ko) ==== @@ -89,9 +89,9 @@ bp = md->md_bp; - if (!list_empty(md->md_pkglist)) { - pkg = list_first(md->md_pkglist); - list_remove(md->md_pkglist, pkg, p_list); + if (!TAILQ_EMPTY(&md->md_pkglist)) { + pkg = TAILQ_FIRST(&md->md_pkglist); + TAILQ_REMOVE(&md->md_pkglist, pkg, p_list); md->md_pkgfree--; } else { @@ -106,7 +106,7 @@ bzero(pkg, sizeof(struct mdns_packet)); mdns_buf_alloc(bp, &pkg->p_buflist, 0, 0); - list_insert_tail(pc->pc_head, pkg, p_list); + TAILQ_INSERT_TAIL(&pc->pc_head, pkg, p_list); pc->pc_pkg = pkg; pc->pc_list_len++; pkg->p_pc = pc; @@ -146,7 +146,7 @@ pc->pc_pkg = NULL; pc->pc_list_len = 0; pc->pc_flags = flags; - list_init(pc->pc_head); + TAILQ_INIT(&pc->pc_head); MDNS_INIT_SET(pc, pc_magic); } @@ -161,9 +161,9 @@ int i; /* Return buffers allocated to this packet */ - while (!list_empty(pkg->p_buflist.bh_list)) { - buf = list_first(pkg->p_buflist.bh_list); - list_remove_head(pkg->p_buflist.bh_list, b_list); + while (!TAILQ_EMPTY(&pkg->p_buflist.bh_list)) { + buf = TAILQ_FIRST(&pkg->p_buflist.bh_list); + TAILQ_REMOVE(&pkg->p_buflist.bh_list, buf, b_list); mdns_buf_free(bp, &pkg->p_buflist, buf, 1); } @@ -193,20 +193,20 @@ MDNS_INIT_ASSERT(pc, pc_magic); - while (!list_empty(pc->pc_head)) { - pkg = list_first(pc->pc_head); - list_remove_head(pc->pc_head, p_list); + while (!TAILQ_EMPTY(&pc->pc_head)) { + pkg = TAILQ_FIRST(&pc->pc_head); + TAILQ_REMOVE(&pc->pc_head, pkg, p_list); free_pkg(pkg, md->md_bp); - list_insert_tail(md->md_pkglist, pkg, p_list); + TAILQ_INSERT_TAIL(&md->md_pkglist, pkg, p_list); md->md_pkgfree++; } i = (md->md_pkgfree - 1) / 2; for (; i > 0; i--) { - pkg = list_first(md->md_pkglist); + pkg = TAILQ_FIRST(&md->md_pkglist); if (pkg == NULL) break; - list_remove_head(md->md_pkglist, p_list); + TAILQ_REMOVE(&md->md_pkglist, pkg, p_list); free(pkg); md->md_pkgtotal--; md->md_pkgfree--; @@ -655,7 +655,7 @@ pkg->p_len += MDNS_QSET_HLEN + namlen; if (pc->pc_flags & MDNS_PC_CONT) - hpkg = list_first(pc->pc_head); + hpkg = TAILQ_FIRST(&pc->pc_head); else hpkg = pkg; From owner-p4-projects@FreeBSD.ORG Wed May 9 16:14:56 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B384C16A404; Wed, 9 May 2007 16:14:56 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8307616A407 for ; Wed, 9 May 2007 16:14:56 +0000 (UTC) (envelope-from yanegomi@gmail.com) Received: from mxout3.cac.washington.edu (mxout3.cac.washington.edu [140.142.32.166]) by mx1.freebsd.org (Postfix) with ESMTP id 5CA0213C46A for ; Wed, 9 May 2007 16:14:56 +0000 (UTC) (envelope-from yanegomi@gmail.com) Received: from smtp.washington.edu (smtp.washington.edu [140.142.33.7] (may be forged)) by mxout3.cac.washington.edu (8.13.7+UW06.06/8.13.7+UW07.03) with ESMTP id l49GEt44018442 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 9 May 2007 09:14:55 -0700 X-Auth-Received: from [192.168.10.45] (c-67-187-164-17.hsd1.ca.comcast.net [67.187.164.17]) (authenticated authid=youshi10) by smtp.washington.edu (8.13.7+UW06.06/8.13.7+UW07.03) with ESMTP id l49GEsEl016789 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 9 May 2007 09:14:55 -0700 Message-ID: <4641F37D.50808@gmail.com> Date: Wed, 09 May 2007 09:14:53 -0700 From: Garrett Cooper User-Agent: Thunderbird 2.0.0.0 (Windows/20070326) MIME-Version: 1.0 To: Fredrik Lindberg References: <200705082229.l48MTrbh069129@repoman.freebsd.org> <20070509070626.GA41419@freebsd.org> <4641818B.4030507@FreeBSD.org> <20070509103404.D71759@fledge.watson.org> <464199D9.7020908@shapeshifter.se> <9bbcef730705090710h653dc15bjb7a1159484c1c48b@mail.gmail.com> <4641E19F.80809@shapeshifter.se> In-Reply-To: <4641E19F.80809@shapeshifter.se> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-PMX-Version: 5.3.1.294258, Antispam-Engine: 2.5.1.298604, Antispam-Data: 2007.5.9.85635 X-Uwash-Spam: Gauge=IIIIIII, Probability=7%, Report='FORGED_FROM_GMAIL 0.1, __CT 0, __CTE 0, __CT_TEXT_PLAIN 0, __FROM_GMAIL 0, __HAS_MSGID 0, __MIME_TEXT_ONLY 0, __MIME_VERSION 0, __SANE_MSGID 0, __USER_AGENT 0' Cc: Perforce Change Reviews , Ivan Voras Subject: Re: PERFORCE change 119527 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 16:14:57 -0000 Fredrik Lindberg wrote: > Ivan Voras wrote: >> On 09/05/07, Fredrik Lindberg wrote: >> >>> Ok, I'll take a look at the various queue.h shipped with the major BSDs, >>> and see if I can find a common subset that suits my needs (without too >>> many compromises) and based on the findings I'll reconsider my choice. >> >> I use sys/queue.h in my userland applications all the time, there's no >> problem there. >> > > And it works on {Net,Open}BSD?, I could swear that I've been bitten by > sys/queue.h in the past when moving stuff between FreeBSD and NetBSD. > Could have been those TAILQ-macros Robert Watson talked about though. > > Fredrik Lindberg It may work with programs under normal conditions but are the queues guaranteed to work with thread sychronization and other non-simple conditions? I'd think that the FreeBSD queue is closer to that. Plus the FreeBSD Queue's API is simple and the maintainer doesn't have to peruse another set of source looking for the required function / method they need. Furthermore, it's a requirement made by style(9) to use methods that aren't rolled by the implementor :). Just a few thoughts. -Garrett From owner-p4-projects@FreeBSD.ORG Wed May 9 16:21:07 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 72C8916A407; Wed, 9 May 2007 16:21:07 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 29BCB16A404 for ; Wed, 9 May 2007 16:21:07 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 0C68F13C44C for ; Wed, 9 May 2007 16:21:07 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49GL6Z8000280 for ; Wed, 9 May 2007 16:21:06 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49GL1Xo099981 for perforce@freebsd.org; Wed, 9 May 2007 16:21:01 GMT (envelope-from bms@incunabulum.net) Date: Wed, 9 May 2007 16:21:01 GMT Message-Id: <200705091621.l49GL1Xo099981@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119565 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 16:21:07 -0000 http://perforce.freebsd.org/chv.cgi?CH=119565 Change 119565 by bms@bms_anglepoise on 2007/05/09 16:20:00 Begin attaching child drivers. Add child drivers. They don't do anything yet - a resource manager will be needed for the siba configuration space. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/files.sentry5#6 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#4 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_cc.c#2 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_mips.c#1 add .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_pcib.c#1 add .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_sdram.c#1 add Differences ... ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/files.sentry5#6 (text+ko) ==== @@ -1,5 +1,14 @@ # $FreeBSD$ #mips/mips32/sentry5/s5_machdep.c standard + +# TODO: Add attachment elsehwere in the tree +# for USB 1.1 OHCI, Ethernet and IPSEC cores +# which are believed to be devices we have drivers for +# which just need to be tweaked for attachment to an SSB system bus. +# TODO: Add pci host bridge support. mips/mips32/sentry5/siba.c optional siba mips/mips32/sentry5/siba_cc.c optional siba +mips/mips32/sentry5/siba_mips.c optional siba +mips/mips32/sentry5/siba_sdram.c optional siba +mips/mips32/sentry5/siba_pcib.c optional siba ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#4 (text+ko) ==== @@ -98,8 +98,10 @@ static struct siba_devid * siba_dev_match(uint16_t, uint16_t, uint8_t); static uint8_t siba_getncores(uint16_t); +static int siba_print_all_resources(device_t dev); static int siba_print_child(device_t, device_t); static int siba_probe(device_t); +static void siba_probe_nomatch(device_t, device_t); int siba_read_ivar(device_t, device_t, int, uintptr_t *); static struct siba_devinfo * siba_setup_devinfo(device_t, uint8_t); @@ -298,6 +300,9 @@ sdi->sdi_irq = 0; /* XXX notyet */ sd = siba_dev_match(vendorid, ccid, rev); + (void)sd; +#if 0 + /* we do this the newbus way now */ if (sd != NULL) { device_printf(dev, "core %d: %s rev %02x\n", idx, sd->sd_desc, rev); @@ -306,6 +311,7 @@ "core %d: vid %04x pid %04x rev %02x\n", idx, vendorid, ccid, rev); } +#endif /* * Try to attach the child. @@ -316,13 +322,12 @@ device_t child; child = device_add_child(dev, NULL, -1); if (child == NULL) { + /* XXX should panic */ device_printf(dev, "could not add child\n"); siba_destroy_devinfo(sdi); } else { - device_printf(dev, "child is %p\n", child); + /* Set memory window for immediate child. */ device_set_ivars(child, sdi); - - /* Set memory window for immediate child. */ bus_addr_t baseaddr; baseaddr = sc->sc_maddr + (idx * SIBA_CORE_LEN); bus_set_resource(child, SYS_RES_MEMORY, MIPS_MEM_RID, @@ -373,6 +378,9 @@ int retval = 0; retval += bus_print_child_header(bus, child); + retval += siba_print_all_resources(child); + if (device_get_flags(child)) + retval += printf(" flags %#x", device_get_flags(child)); retval += printf(" on %s\n", device_get_nameunit(bus)); return (retval); @@ -474,6 +482,38 @@ return (EINVAL); } +static void +siba_probe_nomatch(device_t dev, device_t child) +{ + struct siba_devid *sd; + + sd = siba_dev_match(siba_get_vendor(child), siba_get_device(child), + SIBA_REV_ANY); + device_printf(dev, "<0x%04x, 0x%04x \"%s\"> not attached\n", + siba_get_vendor(child), siba_get_device(child), + sd != NULL ? sd->sd_desc : "unknown"); +} + +static int +siba_print_all_resources(device_t dev) +{ +#if 0 + struct siba_device *ndev = DEVTONX(dev); + struct resource_list *rl = &ndev->nx_resources; + int retval = 0; + + if (STAILQ_FIRST(rl)) + retval += printf(" at"); + + retval += resource_list_print_type(rl, "mem", SYS_RES_MEMORY, "%#lx"); + retval += resource_list_print_type(rl, "irq", SYS_RES_IRQ, "%ld"); + + return (retval); +#else + return (0); +#endif +} + static device_method_t siba_methods[] = { /* Device interface */ DEVMETHOD(device_attach, siba_attach), @@ -488,6 +528,7 @@ DEVMETHOD(bus_add_child, siba_add_child), DEVMETHOD(bus_alloc_resource, siba_alloc_resource), DEVMETHOD(bus_print_child, siba_print_child), + DEVMETHOD(bus_probe_nomatch, siba_probe_nomatch), DEVMETHOD(bus_read_ivar, siba_read_ivar), DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_cc.c#2 (text+ko) ==== @@ -52,25 +52,44 @@ siba_cc_probe(device_t dev) { - printf("%s: entry\n", __func__); - if (siba_get_vendor(dev) == SIBA_VID_BROADCOM && siba_get_device(dev) == SIBA_DEVID_CHIPCOMMON) { - device_set_desc(dev, "ChipCommon core"); return (BUS_PROBE_DEFAULT); } return (ENXIO); } +struct siba_cc_softc { + void *notused; +}; + static int siba_cc_attach(device_t dev) { + //struct siba_cc_softc *sc = device_get_softc(dev); + struct resource *mem; + int rid; - /* TODO: get softc and resources */ - printf("%s: entry\n", __func__); + /* + * Allocate the resources which the parent bus has already + * determined for us. + * TODO: interrupt routing + */ +#define MIPS_MEM_RID 0x20 + rid = MIPS_MEM_RID; + mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (mem == NULL) { + device_printf(dev, "unable to allocate memory\n"); + return (ENXIO); + } + device_printf(dev, "start %08lx size %04lx\n", + rman_get_start(mem), rman_get_size(mem)); + + device_set_desc(dev, "ChipCommon core"); - return (ENXIO); + return (0); } static device_method_t siba_cc_methods[] = { From owner-p4-projects@FreeBSD.ORG Wed May 9 16:30:20 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C9A1716A405; Wed, 9 May 2007 16:30:19 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 568A516A400 for ; Wed, 9 May 2007 16:30:19 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 44E7813C447 for ; Wed, 9 May 2007 16:30:19 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49GUJbl001646 for ; Wed, 9 May 2007 16:30:19 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49GUIWp001642 for perforce@freebsd.org; Wed, 9 May 2007 16:30:18 GMT (envelope-from sam@freebsd.org) Date: Wed, 9 May 2007 16:30:18 GMT Message-Id: <200705091630.l49GUIWp001642@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 119566 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 16:30:20 -0000 http://perforce.freebsd.org/chv.cgi?CH=119566 Change 119566 by sam@sam_ebb on 2007/05/09 16:30:02 Minimal 802.11n support; mostly tested in ap mode, sta mode is known to be incomplete; a-msdu is untested; a-mpdu is known to work but BAR handling needs fixups. This grows per-sta state significantly; we may want to make support conditional. This work is derived from code provided by Atheros. Sponsored by: Marvelle Reviewed by: sephe Affected files ... .. //depot/projects/wifi/sys/net80211/_ieee80211.h#19 edit .. //depot/projects/wifi/sys/net80211/ieee80211.c#51 edit .. //depot/projects/wifi/sys/net80211/ieee80211.h#20 edit .. //depot/projects/wifi/sys/net80211/ieee80211_freebsd.h#26 edit .. //depot/projects/wifi/sys/net80211/ieee80211_ht.c#1 add .. //depot/projects/wifi/sys/net80211/ieee80211_ht.h#1 add .. //depot/projects/wifi/sys/net80211/ieee80211_input.c#102 edit .. //depot/projects/wifi/sys/net80211/ieee80211_ioctl.c#77 edit .. //depot/projects/wifi/sys/net80211/ieee80211_ioctl.h#38 edit .. //depot/projects/wifi/sys/net80211/ieee80211_node.c#92 edit .. //depot/projects/wifi/sys/net80211/ieee80211_node.h#44 edit .. //depot/projects/wifi/sys/net80211/ieee80211_output.c#73 edit .. //depot/projects/wifi/sys/net80211/ieee80211_proto.c#55 edit .. //depot/projects/wifi/sys/net80211/ieee80211_proto.h#35 edit .. //depot/projects/wifi/sys/net80211/ieee80211_radiotap.h#10 edit .. //depot/projects/wifi/sys/net80211/ieee80211_regdomain.c#3 edit .. //depot/projects/wifi/sys/net80211/ieee80211_regdomain.h#2 edit .. //depot/projects/wifi/sys/net80211/ieee80211_scan.c#12 edit .. //depot/projects/wifi/sys/net80211/ieee80211_scan.h#7 edit .. //depot/projects/wifi/sys/net80211/ieee80211_scan_ap.c#6 edit .. //depot/projects/wifi/sys/net80211/ieee80211_scan_sta.c#18 edit .. //depot/projects/wifi/sys/net80211/ieee80211_var.h#56 edit Differences ... ==== //depot/projects/wifi/sys/net80211/_ieee80211.h#19 (text+ko) ==== @@ -29,7 +29,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/net80211/_ieee80211.h,v 1.8 2007/03/07 04:35:07 sam Exp $ + * $FreeBSD: src/sys/net80211/_ieee80211.h,v 1.7 2007/02/02 02:45:33 sam Exp $ */ #ifndef _NET80211__IEEE80211_H_ #define _NET80211__IEEE80211_H_ @@ -39,6 +39,7 @@ IEEE80211_T_FH, /* frequency hopping */ IEEE80211_T_OFDM, /* frequency division multiplexing */ IEEE80211_T_TURBO, /* high rate OFDM, aka turbo mode */ + IEEE80211_T_HT, /* high throughput, full GI */ }; #define IEEE80211_T_CCK IEEE80211_T_DS /* more common nomenclature */ @@ -52,8 +53,10 @@ IEEE80211_MODE_TURBO_A = 5, /* 5GHz, OFDM, 2x clock */ IEEE80211_MODE_TURBO_G = 6, /* 2GHz, OFDM, 2x clock */ IEEE80211_MODE_STURBO_A = 7, /* 5GHz, OFDM, 2x clock, static */ + IEEE80211_MODE_11NA = 8, /* 5GHz, w/ HT */ + IEEE80211_MODE_11NG = 9, /* 2GHz, w/ HT */ }; -#define IEEE80211_MODE_MAX (IEEE80211_MODE_STURBO_A+1) +#define IEEE80211_MODE_MAX (IEEE80211_MODE_11NG+1) enum ieee80211_opmode { IEEE80211_M_STA = 1, /* infrastructure station */ @@ -66,7 +69,7 @@ #define IEEE80211_OPMODE_MAX (IEEE80211_M_MONITOR+1) /* - * 802.11g protection mode. + * 802.11g/802.11n protection mode. */ enum ieee80211_protmode { IEEE80211_PROT_NONE = 0, /* no protection */ @@ -135,7 +138,13 @@ #define IEEE80211_CHAN_STURBO 0x02000 /* 11a static turbo channel only */ #define IEEE80211_CHAN_HALF 0x04000 /* Half rate channel */ #define IEEE80211_CHAN_QUARTER 0x08000 /* Quarter rate channel */ +#define IEEE80211_CHAN_HT20 0x10000 /* HT 20 channel */ +#define IEEE80211_CHAN_HT40U 0x20000 /* HT 40 channel w/ ext above */ +#define IEEE80211_CHAN_HT40D 0x40000 /* HT 40 channel w/ ext below */ +#define IEEE80211_CHAN_HT40 (IEEE80211_CHAN_HT40U | IEEE80211_CHAN_HT40D) +#define IEEE80211_CHAN_HT (IEEE80211_CHAN_HT20 | IEEE80211_CHAN_HT40) + /* * Useful combinations of channel characteristics. */ @@ -158,7 +167,8 @@ #define IEEE80211_CHAN_ALL \ (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_GFSK | \ - IEEE80211_CHAN_CCK | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_DYN) + IEEE80211_CHAN_CCK | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_DYN | \ + IEEE80211_CHAN_HT) #define IEEE80211_CHAN_ALLTURBO \ (IEEE80211_CHAN_ALL | IEEE80211_CHAN_TURBO | IEEE80211_CHAN_STURBO) @@ -208,6 +218,22 @@ (((_c)->ic_flags & (IEEE80211_CHAN_QUARTER | IEEE80211_CHAN_HALF)) == 0) #define IEEE80211_IS_CHAN_GSM(_c) \ (((_c)->ic_flags & IEEE80211_CHAN_GSM) != 0) +#define IEEE80211_IS_CHAN_HT(_c) \ + (((_c)->ic_flags & IEEE80211_CHAN_HT) != 0) +#define IEEE80211_IS_CHAN_HT20(_c) \ + (((_c)->ic_flags & IEEE80211_CHAN_HT20) != 0) +#define IEEE80211_IS_CHAN_HT40(_c) \ + (((_c)->ic_flags & IEEE80211_CHAN_HT40) != 0) +#define IEEE80211_IS_CHAN_HT40U(_c) \ + (((_c)->ic_flags & IEEE80211_CHAN_HT40U) != 0) +#define IEEE80211_IS_CHAN_HT40D(_c) \ + (((_c)->ic_flags & IEEE80211_CHAN_HT40D) != 0) +#define IEEE80211_IS_CHAN_HTA(_c) \ + (IEEE80211_IS_CHAN_5GHZ(_c) && \ + ((_c)->ic_flags & IEEE80211_CHAN_HT) != 0) +#define IEEE80211_IS_CHAN_HTG(_c) \ + (IEEE80211_IS_CHAN_2GHZ(_c) && \ + ((_c)->ic_flags & IEEE80211_CHAN_HT) != 0) /* ni_chan encoding for FH phy */ #define IEEE80211_FH_CHANMOD 80 @@ -226,6 +252,26 @@ u_int8_t rs_rates[IEEE80211_RATE_MAXSIZE]; }; +/* + * 802.11n variant of ieee80211_rateset. Instead + * legacy rates the entries are MCS rates. We define + * the structure such that it can be used interchangeably + * with an ieee80211_rateset (modulo structure size). + */ +#define IEEE80211_HTRATE_MAXSIZE 127 + +struct ieee80211_htrateset { + u_int8_t rs_nrates; + u_int8_t rs_rates[IEEE80211_HTRATE_MAXSIZE]; +}; + +/* + * Roaming state visible to user space. There are two + * thresholds that control whether roaming is considered; + * when either is exceeded the 802.11 layer will check + * the scan cache for another AP. If the cache is stale + * then a scan may be triggered. + */ struct ieee80211_roam { int8_t rssi11a; /* rssi thresh for 11a bss */ int8_t rssi11b; /* for 11g sta in 11b bss */ ==== //depot/projects/wifi/sys/net80211/ieee80211.c#51 (text+ko) ==== @@ -60,6 +60,8 @@ "turboA", /* IEEE80211_MODE_TURBO_A */ "turboG", /* IEEE80211_MODE_TURBO_G */ "sturboA", /* IEEE80211_MODE_STURBO_A */ + "11na", /* IEEE80211_MODE_11NA */ + "11ng", /* IEEE80211_MODE_11NG */ }; /* @@ -181,6 +183,10 @@ setbit(ic->ic_modecaps, IEEE80211_MODE_TURBO_G); if (IEEE80211_IS_CHAN_ST(c)) setbit(ic->ic_modecaps, IEEE80211_MODE_STURBO_A); + if (IEEE80211_IS_CHAN_HTA(c)) + setbit(ic->ic_modecaps, IEEE80211_MODE_11NA); + if (IEEE80211_IS_CHAN_HTG(c)) + setbit(ic->ic_modecaps, IEEE80211_MODE_11NG); } /* initialize candidate channels to all available */ memcpy(ic->ic_chan_active, ic->ic_chan_avail, @@ -216,6 +222,19 @@ bpfattach2(ifp, DLT_IEEE802_11, sizeof(struct ieee80211_frame_addr4), &ic->ic_rawbpf); + /* override the 802.3 setting */ + ifp->if_hdrlen = ic->ic_headroom + + sizeof(struct ieee80211_qosframe_addr4) + + IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + + IEEE80211_WEP_EXTIVLEN; + /* XXX no way to recalculate on ifdetach */ + if (ALIGN(ifp->if_hdrlen) > max_linkhdr) { + /* XXX sanity check... */ + max_linkhdr = ALIGN(ifp->if_hdrlen); + max_hdr = max_linkhdr + max_protohdr; + max_datalen = MHLEN - max_hdr; + } + /* * Fill in 802.11 available channel set, mark all * available channels as active, and pick a default @@ -232,6 +251,7 @@ #endif if (ic->ic_caps & IEEE80211_C_BURST) ic->ic_flags |= IEEE80211_F_BURST; + ic->ic_flags |= IEEE80211_F_DOTH; /* XXX out of caps, just ena */ ic->ic_bintval = IEEE80211_BINTVAL_DEFAULT; ic->ic_bmissthreshold = IEEE80211_HWBMISS_DEFAULT; @@ -246,6 +266,7 @@ ieee80211_node_attach(ic); ieee80211_power_attach(ic); ieee80211_proto_attach(ic); + ieee80211_ht_attach(ic); ieee80211_scan_attach(ic); ieee80211_add_vap(ic); @@ -272,6 +293,7 @@ ieee80211_sysctl_detach(ic); ieee80211_scan_detach(ic); + ieee80211_ht_detach(ic); /* NB: must be called before ieee80211_node_detach */ ieee80211_proto_detach(ic); ieee80211_crypto_detach(ic); @@ -439,6 +461,8 @@ TURBO(IFM_IEEE80211_11A), /* IEEE80211_MODE_TURBO_A */ TURBO(IFM_IEEE80211_11G), /* IEEE80211_MODE_TURBO_G */ TURBO(IFM_IEEE80211_11A), /* IEEE80211_MODE_STURBO_A */ + IFM_IEEE80211_11NA, /* IEEE80211_MODE_11NA */ + IFM_IEEE80211_11NG, /* IEEE80211_MODE_11NG */ }; u_int mopt; @@ -501,7 +525,7 @@ * Add media for legacy operating modes. */ memset(&allrates, 0, sizeof(allrates)); - for (mode = IEEE80211_MODE_AUTO; mode < IEEE80211_MODE_MAX; mode++) { + for (mode = IEEE80211_MODE_AUTO; mode < IEEE80211_MODE_11NA; mode++) { if (isclr(ic->ic_modecaps, mode)) continue; addmedia(ic, mode, IFM_AUTO); @@ -539,6 +563,27 @@ /* NB: remove media options from mword */ addmedia(ic, IEEE80211_MODE_AUTO, IFM_SUBTYPE(mword)); } + /* + * Add HT/11n media. Note that we do not have enough + * bits in the media subtype to express the MCS so we + * use a "placeholder" media subtype and any fixed MCS + * must be specified with a different mechanism. + */ + for (; mode < IEEE80211_MODE_MAX; mode++) { + if (isclr(ic->ic_modecaps, mode)) + continue; + addmedia(ic, mode, IFM_AUTO); + addmedia(ic, mode, IFM_IEEE80211_MCS); + } + if (isset(ic->ic_modecaps, IEEE80211_MODE_11NA) || + isset(ic->ic_modecaps, IEEE80211_MODE_11NG)) { + addmedia(ic, IEEE80211_MODE_AUTO, IFM_IEEE80211_MCS); + /* XXX could walk htrates */ + /* XXX known array size */ + if (ieee80211_htrates[15] > maxrate) + maxrate = ieee80211_htrates[15]; + } + /* NB: strip explicit mode; we're actually in autoselect */ ifmedia_set(&ic->ic_media, media_status(ic->ic_opmode, ic->ic_curchan) &~ IFM_MMASK); @@ -554,6 +599,12 @@ return &ieee80211_rateset_half; if (IEEE80211_IS_CHAN_QUARTER(c)) return &ieee80211_rateset_quarter; + if (IEEE80211_IS_CHAN_HTA(c)) + return &ic->ic_sup_rates[IEEE80211_MODE_11A]; + if (IEEE80211_IS_CHAN_HTG(c)) { + /* XXX does this work for basic rates? */ + return &ic->ic_sup_rates[IEEE80211_MODE_11G]; + } return &ic->ic_sup_rates[ieee80211_chan2mode(c)]; } @@ -564,7 +615,7 @@ int i, mode, rate, mword; const struct ieee80211_rateset *rs; - for (mode = IEEE80211_MODE_11A; mode < IEEE80211_MODE_MAX; mode++) { + for (mode = IEEE80211_MODE_AUTO; mode < IEEE80211_MODE_11NA; mode++) { if (isclr(ic->ic_modecaps, mode)) continue; if_printf(ifp, "%s rates: ", ieee80211_phymode_name[mode]); @@ -579,6 +630,7 @@ } printf("\n"); } + ieee80211_ht_announce(ic); } void @@ -597,6 +649,8 @@ type = 'T'; else if (IEEE80211_IS_CHAN_108G(c)) type = 'G'; + else if (IEEE80211_IS_CHAN_HT(c)) + type = 'n'; else if (IEEE80211_IS_CHAN_A(c)) type = 'a'; else if (IEEE80211_IS_CHAN_ANYG(c)) @@ -605,15 +659,19 @@ type = 'b'; else type = 'f'; - if (IEEE80211_IS_CHAN_HALF(c)) + if (IEEE80211_IS_CHAN_HT40(c) || IEEE80211_IS_CHAN_TURBO(c)) + cw = 40; + else if (IEEE80211_IS_CHAN_HALF(c)) cw = 10; else if (IEEE80211_IS_CHAN_QUARTER(c)) cw = 5; else cw = 20; - printf("%4d %4d%c %2d %6d %4d.%d %4d.%d\n" + printf("%4d %4d%c %2d%c %6d %4d.%d %4d.%d\n" , c->ic_ieee, c->ic_freq, type , cw + , IEEE80211_IS_CHAN_HT40U(c) ? '+' : + IEEE80211_IS_CHAN_HT40D(c) ? '-' : ' ' , c->ic_maxregpower , c->ic_minpower / 2, c->ic_minpower & 1 ? 5 : 0 , c->ic_maxpower / 2, c->ic_maxpower & 1 ? 5 : 0 @@ -727,6 +785,12 @@ case IFM_IEEE80211_FH: newphymode = IEEE80211_MODE_FH; break; + case IFM_IEEE80211_11NA: + newphymode = IEEE80211_MODE_11NA; + break; + case IFM_IEEE80211_11NG: + newphymode = IEEE80211_MODE_11NG; + break; case IFM_AUTO: newphymode = IEEE80211_MODE_AUTO; break; @@ -748,6 +812,7 @@ else return EINVAL; } + /* XXX HT40 +/- */ /* * Next, the fixed/variable rate. */ @@ -855,21 +920,28 @@ /* should not come here */ break; } - if (IEEE80211_IS_CHAN_A(chan)) { + if (IEEE80211_IS_CHAN_HTA(chan)) { + status |= IFM_IEEE80211_11NA; + } else if (IEEE80211_IS_CHAN_HTG(chan)) { + status |= IFM_IEEE80211_11NG; + } else if (IEEE80211_IS_CHAN_A(chan)) { status |= IFM_IEEE80211_11A; - if (IEEE80211_IS_CHAN_TURBO(chan)) - status |= IFM_IEEE80211_TURBO; } else if (IEEE80211_IS_CHAN_B(chan)) { status |= IFM_IEEE80211_11B; } else if (IEEE80211_IS_CHAN_ANYG(chan)) { status |= IFM_IEEE80211_11G; - if (IEEE80211_IS_CHAN_TURBO(chan)) - status |= IFM_IEEE80211_TURBO; } else if (IEEE80211_IS_CHAN_FHSS(chan)) { status |= IFM_IEEE80211_FH; } /* XXX else complain? */ + if (IEEE80211_IS_CHAN_TURBO(chan)) + status |= IFM_IEEE80211_TURBO; + if (IEEE80211_IS_CHAN_HT40U(chan)) + status |= IFM_IEEE80211_HT40PLUS; + if (IEEE80211_IS_CHAN_HT40D(chan)) + status |= IFM_IEEE80211_HT40MINUS; + return status; } @@ -909,6 +981,7 @@ } else if (ic->ic_opmode == IEEE80211_M_STA) { /* * In station mode report the current transmit rate. + * XXX HT rate */ rs = &ic->ic_bss->ni_rates; imr->ifm_active |= ieee80211_rate2media(ic, @@ -949,7 +1022,11 @@ ieee80211_chan2mode(const struct ieee80211_channel *chan) { - if (IEEE80211_IS_CHAN_108G(chan)) + if (IEEE80211_IS_CHAN_HTA(chan)) + return IEEE80211_MODE_11NA; + else if (IEEE80211_IS_CHAN_HTG(chan)) + return IEEE80211_MODE_11NG; + else if (IEEE80211_IS_CHAN_108G(chan)) return IEEE80211_MODE_TURBO_G; else if (IEEE80211_IS_CHAN_ST(chan)) return IEEE80211_MODE_STURBO_A; @@ -988,7 +1065,8 @@ /* * Convert IEEE80211 rate value to ifmedia subtype. - * Rate is a legacy rate in units of 0.5Mbps. + * Rate is either a legacy rate in units of 0.5Mbps + * or an MCS index. */ int ieee80211_rate2media(struct ieee80211com *ic, int rate, enum ieee80211_phymode mode) @@ -1027,10 +1105,47 @@ { 54 | IFM_IEEE80211_11A, IFM_IEEE80211_OFDM27 }, /* NB: OFDM72 doesn't realy exist so we don't handle it */ }; + static const struct ratemedia htrates[] = { + { 0, IFM_IEEE80211_MCS }, + { 1, IFM_IEEE80211_MCS }, + { 2, IFM_IEEE80211_MCS }, + { 3, IFM_IEEE80211_MCS }, + { 4, IFM_IEEE80211_MCS }, + { 5, IFM_IEEE80211_MCS }, + { 6, IFM_IEEE80211_MCS }, + { 7, IFM_IEEE80211_MCS }, + { 8, IFM_IEEE80211_MCS }, + { 9, IFM_IEEE80211_MCS }, + { 10, IFM_IEEE80211_MCS }, + { 11, IFM_IEEE80211_MCS }, + { 12, IFM_IEEE80211_MCS }, + { 13, IFM_IEEE80211_MCS }, + { 14, IFM_IEEE80211_MCS }, + { 15, IFM_IEEE80211_MCS }, + }; + int m; + /* + * Check 11n rates first for match as an MCS. + */ + if (mode == IEEE80211_MODE_11NA) { + if ((rate & IEEE80211_RATE_BASIC) == 0) { + m = findmedia(htrates, N(htrates), rate); + if (m != IFM_AUTO) + return m | IFM_IEEE80211_11NA; + } + } else if (mode == IEEE80211_MODE_11NG) { + /* NB: 12 is ambiguous, it will be treated as an MCS */ + if ((rate & IEEE80211_RATE_BASIC) == 0) { + m = findmedia(htrates, N(htrates), rate); + if (m != IFM_AUTO) + return m | IFM_IEEE80211_11NG; + } + } rate &= IEEE80211_RATE_VAL; switch (mode) { case IEEE80211_MODE_11A: + case IEEE80211_MODE_11NA: case IEEE80211_MODE_TURBO_A: case IEEE80211_MODE_STURBO_A: return findmedia(rates, N(rates), rate | IFM_IEEE80211_11A); @@ -1046,6 +1161,7 @@ /* NB: hack, 11g matches both 11b+11a rates */ /* fall thru... */ case IEEE80211_MODE_11G: + case IEEE80211_MODE_11NG: case IEEE80211_MODE_TURBO_G: return findmedia(rates, N(rates), rate | IFM_IEEE80211_11G); } @@ -1082,6 +1198,7 @@ 6, /* IFM_IEEE80211_OFDM3 */ 9, /* IFM_IEEE80211_OFDM4 */ 54, /* IFM_IEEE80211_OFDM27 */ + -1, /* IFM_IEEE80211_MCS */ }; return IFM_SUBTYPE(mword) < N(ieeerates) ? ieeerates[IFM_SUBTYPE(mword)] : 0; ==== //depot/projects/wifi/sys/net80211/ieee80211.h#20 (text+ko) ==== ==== //depot/projects/wifi/sys/net80211/ieee80211_freebsd.h#26 (text+ko) ==== @@ -191,6 +191,8 @@ #define M_MORE_DATA M_PROTO5 /* more data frames to follow */ #define M_FF 0x20000 /* fast frame */ #define M_TXCB 0x40000 /* do tx complete callback */ +/* rx path usage */ +#define M_AMPDU M_PROTO5 /* A-MPDU processing done */ /* * Encode WME access control bits in the PROTO flags. * This is safe since it's passed directly in to the ==== //depot/projects/wifi/sys/net80211/ieee80211_input.c#102 (text+ko) ==== @@ -108,10 +108,28 @@ struct ieee80211_key *key; struct ether_header *eh; int hdrspace, need_tap; - u_int8_t dir, type, subtype; + u_int8_t dir, type, subtype, qos; u_int8_t *bssid; u_int16_t rxseq; + if (m->m_flags & M_AMPDU) { + /* + * Fastpath for A-MPDU reorder q resubmission. Frames + * w/ M_AMPDU marked have already passed through here + * but were received out of order and been held on the + * reorder queue. When resubmitted they are marked + * with the M_AMPDU flag and we can bypass most of the + * normal processing. + */ + wh = mtod(m, struct ieee80211_frame *); + type = IEEE80211_FC0_TYPE_DATA; + dir = wh->i_fc[1] & IEEE80211_FC1_DIR_MASK; + subtype = IEEE80211_FC0_SUBTYPE_QOS; + hdrspace = ieee80211_hdrspace(ic, wh); /* XXX optimize? */ + need_tap = 0; + goto resubmit_ampdu; + } + KASSERT(ni != NULL, ("null node")); ni->ni_inact = ni->ni_inact_reload; @@ -234,7 +252,8 @@ } else tid = IEEE80211_NONQOS_TID; rxseq = le16toh(*(u_int16_t *)wh->i_seq); - if ((wh->i_fc[1] & IEEE80211_FC1_RETRY) && + if ((ni->ni_flags & IEEE80211_NODE_HT) == 0 && + (wh->i_fc[1] & IEEE80211_FC1_RETRY) && SEQ_LEQ(rxseq, ni->ni_rxseqs[tid])) { /* duplicate, discard */ IEEE80211_DISCARD_MAC(ic, IEEE80211_MSG_INPUT, @@ -328,6 +347,7 @@ /* * Check for power save state change. + * XXX out-of-order A-MPDU frames? */ if (((wh->i_fc[1] & IEEE80211_FC1_PWR_MGT) ^ (ni->ni_flags & IEEE80211_NODE_PWR_MGT))) @@ -340,6 +360,23 @@ } /* + * Handle A-MPDU re-ordering. The station must be + * associated and negotiated HT. The frame must be + * a QoS frame (not QoS null data) and not previously + * processed for A-MPDU re-ordering. If the frame is + * to be processed directly then ieee80211_ampdu_reorder + * will return 0; otherwise it has consumed the mbuf + * and we should do nothing more with it. + */ + if ((ni->ni_flags & IEEE80211_NODE_HT) && + subtype == IEEE80211_FC0_SUBTYPE_QOS && + ieee80211_ampdu_reorder(ni, m) != 0) { + m = NULL; + goto out; + } + resubmit_ampdu: + + /* * Handle privacy requirements. Note that we * must not be preempted from here until after * we (potentially) call ieee80211_crypto_demic; @@ -371,6 +408,16 @@ } /* + * Save QoS bits for use below--before we strip the header. + */ + if (subtype == IEEE80211_FC0_SUBTYPE_QOS) { + qos = (dir == IEEE80211_FC1_DIR_DSTODS) ? + ((struct ieee80211_qosframe_addr4 *)wh)->i_qos[0] : + ((struct ieee80211_qosframe *)wh)->i_qos[0]; + } else + qos = 0; + + /* * Next up, any fragmentation. */ if (!IEEE80211_IS_MULTICAST(wh->i_addr1)) { @@ -448,8 +495,13 @@ goto out; } } + /* XXX require HT? */ + if (qos & IEEE80211_QOS_AMSDU) { + m = ieee80211_decap_amsdu(ni, m); + if (m == NULL) + return IEEE80211_FC0_TYPE_DATA; + } else if ((ni->ni_ath_flags & IEEE80211_NODE_FF) && #define FF_LLC_SIZE (sizeof(struct ether_header) + sizeof(struct llc)) - if ((ni->ni_ath_flags & IEEE80211_NODE_FF) && m->m_pkthdr.len >= 3*FF_LLC_SIZE) { struct llc *llc; @@ -547,6 +599,9 @@ case IEEE80211_FC0_SUBTYPE_PS_POLL: ieee80211_recv_pspoll(ic, ni, m); break; + case IEEE80211_FC0_SUBTYPE_BAR: + ieee80211_recv_bar(ni, m); + break; } } goto out; @@ -828,7 +883,7 @@ } /* - * Decap a frame encapsulated in a fast-frame. + * Decap a frame encapsulated in a fast-frame/A-MSDU. */ struct mbuf * ieee80211_decap1(struct mbuf *m, int *framelen) @@ -1438,6 +1493,18 @@ return frm[1] > 3 && LE_READ_4(frm+2) == ((ATH_OUI_TYPE<<24)|ATH_OUI); } +static __inline int +ishtcapoui(const u_int8_t *frm) +{ + return frm[1] > 3 && LE_READ_4(frm+2) == ((BCM_OUI_HTCAP<<24)|BCM_OUI); +} + +static __inline int +ishtinfooui(const u_int8_t *frm) +{ + return frm[1] > 3 && LE_READ_4(frm+2) == ((BCM_OUI_HTINFO<<24)|BCM_OUI); +} + /* * Convert a WPA cipher selector OUI to an internal * cipher algorithm. Where appropriate we also @@ -1986,7 +2053,7 @@ #define ISREASSOC(_st) ((_st) == IEEE80211_FC0_SUBTYPE_REASSOC_RESP) struct ieee80211_frame *wh; u_int8_t *frm, *efrm; - u_int8_t *ssid, *rates, *xrates, *wpa, *rsn, *wme, *ath; + u_int8_t *ssid, *rates, *xrates, *wpa, *rsn, *wme, *ath, *htcap; int reassoc, resp, allocbs; u_int8_t rate; @@ -2025,6 +2092,8 @@ * [tlv] extended supported rates * [tlv] WME * [tlv] WPA or RSN + * [tlv] HT capabilities + * [tlv] HT information * [tlv] Atheros capabilities */ IEEE80211_VERIFY_LENGTH(efrm - frm, 12, return); @@ -2082,9 +2151,15 @@ } scan.erp = frm[2]; break; + case IEEE80211_ELEMID_HTCAP: + scan.htcap = frm; + break; case IEEE80211_ELEMID_RSN: scan.rsn = frm; break; + case IEEE80211_ELEMID_HTINFO: + scan.htinfo = frm; + break; case IEEE80211_ELEMID_VENDOR: if (iswpaoui(frm)) scan.wpa = frm; @@ -2092,6 +2167,19 @@ scan.wme = frm; else if (isatherosoui(frm)) scan.ath = frm; + else if (ic->ic_flags_ext & IEEE80211_FEXT_HTCOMPAT) { + /* + * Accept pre-draft HT ie's if the + * standard ones have not been seen. + */ + if (ishtcapoui(frm)) { + if (scan.htcap == NULL) + scan.htcap = frm; + } else if (ishtinfooui(frm)) { + if (scan.htinfo == NULL) + scan.htcap = frm; + } + } break; default: IEEE80211_DISCARD_IE(ic, IEEE80211_MSG_ELEMID, @@ -2147,6 +2235,25 @@ ic->ic_stats.is_rx_badbintval++; return; } + /* + * Process HT ie's. This is complicated by our + * accepting both the standard ie's and the pre-draft + * vendor OUI ie's that some vendors still use/require. + */ + if (scan.htcap != NULL) { + IEEE80211_VERIFY_LENGTH(scan.htcap[1], + scan.htcap[0] == IEEE80211_ELEMID_VENDOR ? + 4 + sizeof(struct ieee80211_ie_htcap)-2 : + sizeof(struct ieee80211_ie_htcap)-2, + scan.htcap = NULL); + } + if (scan.htinfo != NULL) { + IEEE80211_VERIFY_LENGTH(scan.htinfo[1], + scan.htinfo[0] == IEEE80211_ELEMID_VENDOR ? + 4 + sizeof(struct ieee80211_ie_htinfo)-2 : + sizeof(struct ieee80211_ie_htinfo)-2, + scan.htinfo = NULL); + } /* * Count frame now that we know it's to be processed. @@ -2208,6 +2315,10 @@ ieee80211_wme_updateparams(ic); if (scan.ath != NULL) ieee80211_parse_athparams(ni, scan.ath, wh); + if (scan.htcap != NULL) + ieee80211_parse_htcap(ni, scan.htcap); + if (scan.htinfo != NULL) + ieee80211_parse_htinfo(ni, scan.htinfo); if (scan.tim != NULL) { struct ieee80211_tim_ie *tim = (struct ieee80211_tim_ie *) scan.tim; @@ -2497,6 +2608,7 @@ * [tlv] supported rates * [tlv] extended supported rates * [tlv] WPA or RSN + * [tlv] HT capabilities * [tlv] Atheros capabilities */ IEEE80211_VERIFY_LENGTH(efrm - frm, (reassoc ? 10 : 4), return); @@ -2512,7 +2624,7 @@ lintval = le16toh(*(u_int16_t *)frm); frm += 2; if (reassoc) frm += 6; /* ignore current AP info */ - ssid = rates = xrates = wpa = rsn = wme = ath = NULL; + ssid = rates = xrates = wpa = rsn = wme = ath = htcap = NULL; while (efrm - frm > 1) { IEEE80211_VERIFY_LENGTH(efrm - frm, frm[1] + 2, return); switch (*frm) { @@ -2529,6 +2641,9 @@ case IEEE80211_ELEMID_RSN: rsn = frm; break; + case IEEE80211_ELEMID_HTCAP: + htcap = frm; + break; case IEEE80211_ELEMID_VENDOR: if (iswpaoui(frm)) wpa = frm; @@ -2536,6 +2651,10 @@ wme = frm; else if (isatherosoui(frm)) ath = frm; + else if (ic->ic_flags_ext & IEEE80211_FEXT_HTCOMPAT) { + if (ishtcapoui(frm) && htcap == NULL) + htcap = frm; + } break; } frm += frm[1] + 2; @@ -2546,6 +2665,13 @@ IEEE80211_RATE_MAXSIZE - rates[1]); IEEE80211_VERIFY_ELEMENT(ssid, IEEE80211_NWID_LEN); IEEE80211_VERIFY_SSID(ic->ic_bss, ssid); + if (htcap != NULL) { + IEEE80211_VERIFY_LENGTH(htcap[1], + htcap[0] == IEEE80211_ELEMID_VENDOR ? + 4 + sizeof(struct ieee80211_ie_htcap)-2 : + sizeof(struct ieee80211_ie_htcap)-2, + return); /* XXX just NULL out? */ + } if (ni == ic->ic_bss) { IEEE80211_DPRINTF(ic, IEEE80211_MSG_ANY, @@ -2654,6 +2780,21 @@ ratesetmismatch(ni, wh, reassoc, resp, "11g", rate); return; } + /* XXX enforce PUREN */ + /* 802.11n-specific rateset handling */ + if (IEEE80211_IS_CHAN_HT(ic->ic_curchan) && htcap != NULL) { + rate = ieee80211_setup_htrates(ni, htcap, + IEEE80211_F_DOFRATE | IEEE80211_F_DONEGO | + IEEE80211_F_DOBRS); + if (rate & IEEE80211_RATE_BASIC) { + /* XXX 11n-specific stat */ + ratesetmismatch(ni, wh, reassoc, resp, + "HT", rate); + return; + } + ieee80211_ht_node_init(ni, htcap); + } else if (ni->ni_flags & IEEE80211_NODE_HT) + ieee80211_ht_node_cleanup(ni); ni->ni_rssi = rssi; ni->ni_noise = noise; ni->ni_rstamp = rstamp; @@ -2748,6 +2889,7 @@ * [tlv] supported rates * [tlv] extended supported rates * [tlv] WME + * [tlv] HT capabilities */ IEEE80211_VERIFY_LENGTH(efrm - frm, 6, return); ni = ic->ic_bss; @@ -2768,7 +2910,7 @@ associd = le16toh(*(u_int16_t *)frm); frm += 2; - rates = xrates = wme = NULL; + rates = xrates = wme = htcap = NULL; while (efrm - frm > 1) { IEEE80211_VERIFY_LENGTH(efrm - frm, frm[1] + 2, return); switch (*frm) { @@ -2778,6 +2920,9 @@ case IEEE80211_ELEMID_XRATES: xrates = frm; break; + case IEEE80211_ELEMID_HTCAP: + htcap = frm; + break; case IEEE80211_ELEMID_VENDOR: if (iswmeoui(frm)) wme = frm; @@ -2939,6 +3084,65 @@ } break; } + + case IEEE80211_FC0_SUBTYPE_ACTION: { + const struct ieee80211_action *ia; + + if (ic->ic_state != IEEE80211_S_RUN && + ic->ic_state != IEEE80211_S_ASSOC && + ic->ic_state != IEEE80211_S_AUTH) { + ic->ic_stats.is_rx_mgtdiscard++; + return; + } + /* + * action frame format: + * [1] category + * [1] action + * [tlv] parameters + */ + IEEE80211_VERIFY_LENGTH(efrm - frm, + sizeof(struct ieee80211_action), return); + ia = (const struct ieee80211_action *) frm; + + ic->ic_stats.is_rx_action++; + IEEE80211_NODE_STAT(ni, rx_action); + + /* verify frame payloads but defer processing */ + /* XXX maybe push this to method */ + switch (ia->ia_category) { + case IEEE80211_ACTION_CAT_BA: + switch (ia->ia_action) { + case IEEE80211_ACTION_BA_ADDBA_REQUEST: + IEEE80211_VERIFY_LENGTH(efrm - frm, + sizeof(struct ieee80211_action_ba_addbarequest), + return); + break; + case IEEE80211_ACTION_BA_ADDBA_RESPONSE: + IEEE80211_VERIFY_LENGTH(efrm - frm, + sizeof(struct ieee80211_action_ba_addbaresponse), + return); + break; + case IEEE80211_ACTION_BA_DELBA: + IEEE80211_VERIFY_LENGTH(efrm - frm, + sizeof(struct ieee80211_action_ba_delba), + return); + break; + } + break; + case IEEE80211_ACTION_CAT_HT: + switch (ia->ia_action) { + case IEEE80211_ACTION_HT_TXCHWIDTH: + IEEE80211_VERIFY_LENGTH(efrm - frm, + sizeof(struct ieee80211_action_ht_txchwidth), + return); + break; + } + break; + } + ic->ic_recv_action(ni, frm, efrm); + break; + } + default: IEEE80211_DISCARD(ic, IEEE80211_MSG_ANY, wh, "mgt", "subtype 0x%x not handled", subtype); ==== //depot/projects/wifi/sys/net80211/ieee80211_ioctl.c#77 (text+ko) ==== @@ -461,6 +461,7 @@ cp = copyie(cp, se->se_rsn_ie); cp = copyie(cp, se->se_wme_ie); cp = copyie(cp, se->se_ath_ie); + cp = copyie(cp, se->se_htcap_ie); } req->space -= len; @@ -1066,6 +1067,45 @@ case IEEE80211_IOC_CURCHAN: error = ieee80211_ioctl_getcurchan(ic, ireq); break; + case IEEE80211_IOC_SHORTGI: + ireq->i_val = 0; + if (ic->ic_flags_ext & IEEE80211_FEXT_SHORTGI20) + ireq->i_val |= IEEE80211_HTCAP_SHORTGI20; + if (ic->ic_flags_ext & IEEE80211_FEXT_SHORTGI40) + ireq->i_val |= IEEE80211_HTCAP_SHORTGI40; + break; + case IEEE80211_IOC_AMPDU: + ireq->i_val = 0; + if (ic->ic_flags_ext & IEEE80211_FEXT_AMPDU_TX) + ireq->i_val |= 1; + if (ic->ic_flags_ext & IEEE80211_FEXT_AMPDU_RX) + ireq->i_val |= 2; + break; + case IEEE80211_IOC_AMPDU_LIMIT: + ireq->i_val = ic->ic_ampdu_limit; /* XXX truncation? */ + break; + case IEEE80211_IOC_AMPDU_DENSITY: + ireq->i_val = ic->ic_ampdu_density; + break; + case IEEE80211_IOC_AMSDU: + ireq->i_val = 0; + if (ic->ic_flags_ext & IEEE80211_FEXT_AMSDU_TX) + ireq->i_val |= 1; + if (ic->ic_flags_ext & IEEE80211_FEXT_AMSDU_RX) + ireq->i_val |= 2; + break; + case IEEE80211_IOC_AMSDU_LIMIT: + ireq->i_val = ic->ic_amsdu_limit; /* XXX truncation? */ + break; + case IEEE80211_IOC_PUREN: + ireq->i_val = (ic->ic_flags_ext & IEEE80211_FEXT_PUREN) != 0; + break; + case IEEE80211_IOC_DOTH: + ireq->i_val = (ic->ic_flags & IEEE80211_F_DOTH) != 0; + break; + case IEEE80211_IOC_HTCOMPAT: + ireq->i_val = (ic->ic_flags_ext & IEEE80211_FEXT_HTCOMPAT) != 0; + break; default: error = EINVAL; break; @@ -1606,6 +1646,9 @@ IEEE80211_CHAN_108A, /* IEEE80211_MODE_TURBO_A */ IEEE80211_CHAN_108G, /* IEEE80211_MODE_TURBO_G */ IEEE80211_CHAN_STURBO, /* IEEE80211_MODE_STURBO_A */ + /* NB: handled specially below */ + IEEE80211_CHAN_A, /* IEEE80211_MODE_11NA */ + IEEE80211_CHAN_G, /* IEEE80211_MODE_11NG */ }; u_int modeflags; int i; @@ -1627,11 +1670,17 @@ * XXX special-case 11b/g channels so we * always select the g channel if both * are present. + * XXX prefer HT to non-HT? */ if (!IEEE80211_IS_CHAN_B(c) || !find11gchannel(ic, i, c->ic_freq)) return c; } else { + /* must check HT specially */ + if ((mode == IEEE80211_MODE_11NA || + mode == IEEE80211_MODE_11NG) && + !IEEE80211_IS_CHAN_HT(c)) + continue; if ((c->ic_flags & modeflags) == modeflags) return c; } @@ -1653,11 +1702,15 @@ case IEEE80211_MODE_11B: return (IEEE80211_IS_CHAN_B(c)); case IEEE80211_MODE_11G: - return (IEEE80211_IS_CHAN_ANYG(c)); + return (IEEE80211_IS_CHAN_ANYG(c) && !IEEE80211_IS_CHAN_HT(c)); case IEEE80211_MODE_11A: - return (IEEE80211_IS_CHAN_A(c)); + return (IEEE80211_IS_CHAN_A(c) && !IEEE80211_IS_CHAN_HT(c)); case IEEE80211_MODE_STURBO_A: return (IEEE80211_IS_CHAN_STURBO(c)); + case IEEE80211_MODE_11NA: + return (IEEE80211_IS_CHAN_HTA(c)); + case IEEE80211_MODE_11NG: + return (IEEE80211_IS_CHAN_HTG(c)); } return 1; >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Wed May 9 16:31:21 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4BA3B16A408; Wed, 9 May 2007 16:31:21 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2A06D16A400 for ; Wed, 9 May 2007 16:31:21 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 0189513C457 for ; Wed, 9 May 2007 16:31:21 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49GVKf7002254 for ; Wed, 9 May 2007 16:31:20 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49GVKuY002250 for perforce@freebsd.org; Wed, 9 May 2007 16:31:20 GMT (envelope-from sam@freebsd.org) Date: Wed, 9 May 2007 16:31:20 GMT Message-Id: <200705091631.l49GVKuY002250@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 119567 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 16:31:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=119567 Change 119567 by sam@sam_ebb on 2007/05/09 16:31:09 add net80211 ht support Affected files ... .. //depot/projects/wifi/sys/conf/files#46 edit Differences ... ==== //depot/projects/wifi/sys/conf/files#46 (text+ko) ==== @@ -1605,6 +1605,7 @@ net80211/ieee80211_crypto_tkip.c optional wlan_tkip net80211/ieee80211_crypto_wep.c optional wlan_wep net80211/ieee80211_freebsd.c optional wlan +net80211/ieee80211_ht.c optional wlan net80211/ieee80211_input.c optional wlan net80211/ieee80211_ioctl.c optional wlan net80211/ieee80211_node.c optional wlan From owner-p4-projects@FreeBSD.ORG Wed May 9 16:33:24 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 722CB16A53D; Wed, 9 May 2007 16:33:24 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2721416A53B for ; Wed, 9 May 2007 16:33:24 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 166AC13C45D for ; Wed, 9 May 2007 16:33:24 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49GXNIA002937 for ; Wed, 9 May 2007 16:33:23 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49GXN1W002934 for perforce@freebsd.org; Wed, 9 May 2007 16:33:23 GMT (envelope-from sam@freebsd.org) Date: Wed, 9 May 2007 16:33:23 GMT Message-Id: <200705091633.l49GXN1W002934@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 119568 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 16:33:25 -0000 http://perforce.freebsd.org/chv.cgi?CH=119568 Change 119568 by sam@sam_ebb on 2007/05/09 16:32:24 switch radiotap to handle 11n-capable cards Affected files ... .. //depot/projects/wifi/sys/dev/ath/if_athioctl.h#18 edit Differences ... ==== //depot/projects/wifi/sys/dev/ath/if_athioctl.h#18 (text+ko) ==== @@ -143,10 +143,10 @@ (1 << IEEE80211_RADIOTAP_TSFT) | \ (1 << IEEE80211_RADIOTAP_FLAGS) | \ (1 << IEEE80211_RADIOTAP_RATE) | \ - (1 << IEEE80211_RADIOTAP_CHANNEL) | \ (1 << IEEE80211_RADIOTAP_ANTENNA) | \ (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL) | \ (1 << IEEE80211_RADIOTAP_DBM_ANTNOISE) | \ + (1 << IEEE80211_RADIOTAP_XCHANNEL) | \ 0) struct ath_rx_radiotap_header { @@ -154,20 +154,23 @@ u_int64_t wr_tsf; u_int8_t wr_flags; u_int8_t wr_rate; - u_int16_t wr_chan_freq; - u_int16_t wr_chan_flags; int8_t wr_antsignal; int8_t wr_antnoise; u_int8_t wr_antenna; -}; + u_int8_t wr_pad[3]; + u_int32_t wr_chan_flags; + u_int16_t wr_chan_freq; + u_int8_t wr_chan_ieee; + int8_t wr_chan_maxpow; +} __packed; #define ATH_TX_RADIOTAP_PRESENT ( \ (1 << IEEE80211_RADIOTAP_TSFT) | \ (1 << IEEE80211_RADIOTAP_FLAGS) | \ (1 << IEEE80211_RADIOTAP_RATE) | \ - (1 << IEEE80211_RADIOTAP_CHANNEL) | \ (1 << IEEE80211_RADIOTAP_DBM_TX_POWER) | \ (1 << IEEE80211_RADIOTAP_ANTENNA) | \ + (1 << IEEE80211_RADIOTAP_XCHANNEL) | \ 0) struct ath_tx_radiotap_header { @@ -175,10 +178,12 @@ u_int64_t wt_tsf; u_int8_t wt_flags; u_int8_t wt_rate; - u_int16_t wt_chan_freq; - u_int16_t wt_chan_flags; u_int8_t wt_txpower; u_int8_t wt_antenna; -}; + u_int32_t wt_chan_flags; + u_int16_t wt_chan_freq; + u_int8_t wt_chan_ieee; + int8_t wt_chan_maxpow; +} __packed; #endif /* _DEV_ATH_ATHIOCTL_H */ From owner-p4-projects@FreeBSD.ORG Wed May 9 16:33:25 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B664116A584; Wed, 9 May 2007 16:33:24 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8CEE516A548 for ; Wed, 9 May 2007 16:33:24 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 7878A13C469 for ; Wed, 9 May 2007 16:33:24 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49GXOU8002944 for ; Wed, 9 May 2007 16:33:24 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49GXOLP002940 for perforce@freebsd.org; Wed, 9 May 2007 16:33:24 GMT (envelope-from sam@freebsd.org) Date: Wed, 9 May 2007 16:33:24 GMT Message-Id: <200705091633.l49GXOLP002940@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 119569 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 16:33:25 -0000 http://perforce.freebsd.org/chv.cgi?CH=119569 Change 119569 by sam@sam_ebb on 2007/05/09 16:32:56 add enough 11n support to do monitor mode; needs new hal Affected files ... .. //depot/projects/wifi/sys/dev/ath/if_ath.c#140 edit Differences ... ==== //depot/projects/wifi/sys/dev/ath/if_ath.c#140 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.166 2007/04/23 05:57:06 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.165 2007/04/19 13:09:56 sephe Exp $"); /* * Driver for the Atheros Wireless LAN controller. @@ -370,6 +370,8 @@ ath_rate_setup(sc, IEEE80211_MODE_TURBO_A); ath_rate_setup(sc, IEEE80211_MODE_TURBO_G); ath_rate_setup(sc, IEEE80211_MODE_STURBO_A); + ath_rate_setup(sc, IEEE80211_MODE_11NA); + ath_rate_setup(sc, IEEE80211_MODE_11NG); ath_rate_setup(sc, IEEE80211_MODE_HALF); ath_rate_setup(sc, IEEE80211_MODE_QUARTER); @@ -957,7 +959,7 @@ ath_mapchan(HAL_CHANNEL *hc, const struct ieee80211_channel *chan) { #define N(a) (sizeof(a) / sizeof(a[0])) - static const u_int modeflags[] = { + static const u_int modeflags[IEEE80211_MODE_MAX] = { 0, /* IEEE80211_MODE_AUTO */ CHANNEL_A, /* IEEE80211_MODE_11A */ CHANNEL_B, /* IEEE80211_MODE_11B */ @@ -965,7 +967,9 @@ 0, /* IEEE80211_MODE_FH */ CHANNEL_108A, /* IEEE80211_MODE_TURBO_A */ CHANNEL_108G, /* IEEE80211_MODE_TURBO_G */ - CHANNEL_ST /* IEEE80211_MODE_STURBO_A */ + CHANNEL_ST, /* IEEE80211_MODE_STURBO_A */ + CHANNEL_A, /* IEEE80211_MODE_11NA */ + CHANNEL_PUREG, /* IEEE80211_MODE_11NG */ }; enum ieee80211_phymode mode = ieee80211_chan2mode(chan); @@ -976,6 +980,12 @@ hc->channelFlags |= CHANNEL_HALF; if (IEEE80211_IS_CHAN_QUARTER(chan)) hc->channelFlags |= CHANNEL_QUARTER; + if (IEEE80211_IS_CHAN_HT20(chan)) + hc->channelFlags |= CHANNEL_HT20; + if (IEEE80211_IS_CHAN_HT40D(chan)) + hc->channelFlags |= CHANNEL_HT40MINUS; + if (IEEE80211_IS_CHAN_HT40U(chan)) + hc->channelFlags |= CHANNEL_HT40PLUS; hc->channel = IEEE80211_IS_CHAN_GSM(chan) ? 2422 + (922 - chan->ic_freq) : chan->ic_freq; @@ -3417,6 +3427,7 @@ ath_rx_tap(struct ath_softc *sc, struct mbuf *m, const struct ath_rx_status *rs, u_int64_t tsf, int16_t nf) { +#define CHANNEL_HT (CHANNEL_HT20|CHANNEL_HT40PLUS|CHANNEL_HT40MINUS) u_int8_t rix; KASSERT(sc->sc_drvbpf != NULL, ("no tap")); @@ -3430,13 +3441,31 @@ sc->sc_stats.ast_rx_tooshort++; return 0; } - sc->sc_rx_th.wr_tsf = htole64(ath_extend_tsf(rs->rs_tstamp, tsf)); rix = rs->rs_rate; + sc->sc_rx_th.wr_rate = sc->sc_hwmap[rix].ieeerate; sc->sc_rx_th.wr_flags = sc->sc_hwmap[rix].rxflags; + if (sc->sc_curchan.channelFlags & CHANNEL_HT) { + /* + * For HT operation we must specify the channel + * attributes for each packet since they vary. + * We deduce this by from HT40 bit in the rx + * status and the MCS/legacy rate bit. + */ + sc->sc_rx_th.wr_chan_flags &= ~IEEE80211_CHAN_HT; + if (sc->sc_rx_th.wr_rate & 0x80) { /* HT rate */ + /* XXX 40U/40D */ + sc->sc_rx_th.wr_chan_flags |= + (rs->rs_flags & HAL_RX_2040) ? + IEEE80211_CHAN_HT40U : IEEE80211_CHAN_HT20; + if ((rs->rs_flags & HAL_RX_GI) == 0) + sc->sc_rx_th.wr_flags |= + IEEE80211_RADIOTAP_F_SHORTGI; + } + } + sc->sc_rx_th.wr_tsf = htole64(ath_extend_tsf(rs->rs_tstamp, tsf)); if (rs->rs_status & HAL_RXERR_CRC) sc->sc_rx_th.wr_flags |= IEEE80211_RADIOTAP_F_BADFCS; /* XXX propagate other error flags from descriptor */ - sc->sc_rx_th.wr_rate = sc->sc_hwmap[rix].ieeerate; sc->sc_rx_th.wr_antsignal = rs->rs_rssi + nf; sc->sc_rx_th.wr_antnoise = nf; sc->sc_rx_th.wr_antenna = rs->rs_antenna; @@ -3444,6 +3473,7 @@ bpf_mtap2(sc->sc_drvbpf, &sc->sc_rx_th, sc->sc_rx_th_len, m); return 1; +#undef CHANNEL_HT } static void @@ -4964,7 +4994,6 @@ ath_chan_change(struct ath_softc *sc, struct ieee80211_channel *chan) { enum ieee80211_phymode mode; - u_int16_t flags; /* * Change channels and update the h/w rate map @@ -4978,26 +5007,15 @@ mode = ieee80211_chan2mode(chan); if (mode != sc->sc_curmode) ath_setcurmode(sc, mode); - /* - * Update BPF state. NB: ethereal et. al. don't handle - * merged flags well so pick a unique mode for their use. - */ - if (IEEE80211_IS_CHAN_A(chan)) - flags = IEEE80211_CHAN_A; - else if (IEEE80211_IS_CHAN_ANYG(chan)) - flags = IEEE80211_CHAN_G; - else - flags = IEEE80211_CHAN_B; - if (IEEE80211_IS_CHAN_TURBO(chan)) - flags |= IEEE80211_CHAN_TURBO; - if (IEEE80211_IS_CHAN_HALF(chan)) - flags |= IEEE80211_CHAN_HALF; - if (IEEE80211_IS_CHAN_QUARTER(chan)) - flags |= IEEE80211_CHAN_QUARTER; - sc->sc_tx_th.wt_chan_freq = sc->sc_rx_th.wr_chan_freq = - htole16(chan->ic_freq); - sc->sc_tx_th.wt_chan_flags = sc->sc_rx_th.wr_chan_flags = - htole16(flags); + + sc->sc_rx_th.wr_chan_flags = htole32(chan->ic_flags); + sc->sc_tx_th.wt_chan_flags = sc->sc_rx_th.wr_chan_flags; + sc->sc_rx_th.wr_chan_freq = htole16(chan->ic_freq); + sc->sc_tx_th.wt_chan_freq = sc->sc_rx_th.wr_chan_freq; + sc->sc_rx_th.wr_chan_ieee = chan->ic_ieee; + sc->sc_tx_th.wt_chan_ieee = sc->sc_rx_th.wr_chan_ieee; + sc->sc_rx_th.wr_chan_maxpow = chan->ic_maxregpower; + sc->sc_tx_th.wt_chan_maxpow = sc->sc_rx_th.wr_chan_maxpow; } /* @@ -5499,12 +5517,13 @@ c->channel, c->channelFlags, ichan->ic_ieee); ichan->ic_freq = c->channel; - if (c->channelFlags == CHANNEL_PUREG) { + if ((c->channelFlags & CHANNEL_PUREG) == CHANNEL_PUREG) { /* * Except for AR5211, HAL's PUREG means mixed * DSSS and OFDM. */ - ichan->ic_flags = IEEE80211_CHAN_G; + ichan->ic_flags = c->channelFlags &~ CHANNEL_PUREG; + ichan->ic_flags |= IEEE80211_CHAN_G; } else { ichan->ic_flags = c->channelFlags; } @@ -5637,6 +5656,12 @@ case IEEE80211_MODE_STURBO_A: rt = ath_hal_getratetable(ah, HAL_MODE_TURBO); break; + case IEEE80211_MODE_11NA: + rt = ath_hal_getratetable(ah, HAL_MODE_11NA_HT20); + break; + case IEEE80211_MODE_11NG: + rt = ath_hal_getratetable(ah, HAL_MODE_11NG_HT20); + break; default: DPRINTF(sc, ATH_DEBUG_ANY, "%s: invalid mode %u\n", __func__, mode); @@ -5690,6 +5715,8 @@ } sc->sc_hwmap[i].ieeerate = rt->info[ix].dot11Rate & IEEE80211_RATE_VAL; + if (rt->info[ix].phy == IEEE80211_T_HT) + sc->sc_hwmap[i].ieeerate |= 0x80; /* MCS */ sc->sc_hwmap[i].txflags = IEEE80211_RADIOTAP_F_DATAPAD; if (rt->info[ix].shortPreamble || rt->info[ix].phy == IEEE80211_T_OFDM) From owner-p4-projects@FreeBSD.ORG Wed May 9 16:34:26 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 44C8B16A405; Wed, 9 May 2007 16:34:26 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2306316A404 for ; Wed, 9 May 2007 16:34:26 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 12C2913C459 for ; Wed, 9 May 2007 16:34:26 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49GYPsB003310 for ; Wed, 9 May 2007 16:34:25 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49GYP6k003307 for perforce@freebsd.org; Wed, 9 May 2007 16:34:25 GMT (envelope-from sam@freebsd.org) Date: Wed, 9 May 2007 16:34:25 GMT Message-Id: <200705091634.l49GYP6k003307@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 119570 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 16:34:26 -0000 http://perforce.freebsd.org/chv.cgi?CH=119570 Change 119570 by sam@sam_ebb on 2007/05/09 16:34:14 add IFM_IEEE80211_MCS token for 11n HT rates; there aren't enough bits to express the 11n rates and besides having the fixed rate expressed in the media state is broken so this'll do for now Affected files ... .. //depot/projects/wifi/sys/net/if_media.h#9 edit Differences ... ==== //depot/projects/wifi/sys/net/if_media.h#9 (text+ko) ==== @@ -201,6 +201,8 @@ #define IFM_IEEE80211_OFDM3 21 /* OFDM 3Mbps */ #define IFM_IEEE80211_OFDM4 22 /* OFDM 4.5Mbps */ #define IFM_IEEE80211_OFDM27 23 /* OFDM 27Mbps */ +/* NB: not enough bits to express MCS fully */ +#define IFM_IEEE80211_MCS 24 /* HT MCS rate */ #define IFM_IEEE80211_ADHOC 0x00000100 /* Operate in Adhoc mode */ #define IFM_IEEE80211_HOSTAP 0x00000200 /* Operate in Host AP mode */ From owner-p4-projects@FreeBSD.ORG Wed May 9 16:37:30 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 87D2016A403; Wed, 9 May 2007 16:37:30 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 601F016A400 for ; Wed, 9 May 2007 16:37:30 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 4F3CF13C4AE for ; Wed, 9 May 2007 16:37:30 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49GbUUk003510 for ; Wed, 9 May 2007 16:37:30 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49GbTAS003507 for perforce@freebsd.org; Wed, 9 May 2007 16:37:29 GMT (envelope-from sam@freebsd.org) Date: Wed, 9 May 2007 16:37:29 GMT Message-Id: <200705091637.l49GbTAS003507@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 119571 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 16:37:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=119571 Change 119571 by sam@sam_ebb on 2007/05/09 16:36:55 update radiotap support and add 11n Affected files ... .. //depot/projects/wifi/contrib/tcpdump/ieee802_11.h#2 edit .. //depot/projects/wifi/contrib/tcpdump/ieee802_11_radio.h#2 edit .. //depot/projects/wifi/contrib/tcpdump/print-802_11.c#4 edit Differences ... ==== //depot/projects/wifi/contrib/tcpdump/ieee802_11.h#2 (text+ko) ==== @@ -30,6 +30,7 @@ #define IEEE802_11_RA_LEN 6 #define IEEE802_11_TA_LEN 6 #define IEEE802_11_SEQ_LEN 2 +#define IEEE802_11_CTL_LEN 2 #define IEEE802_11_IV_LEN 3 #define IEEE802_11_KID_LEN 1 @@ -72,6 +73,7 @@ /* RESERVED 0xF */ +#define CTRL_BAR 0x8 #define CTRL_PS_POLL 0xA #define CTRL_RTS 0xB #define CTRL_CTS 0xC @@ -280,6 +282,20 @@ #define CTRL_END_ACK_HDRLEN (IEEE802_11_FC_LEN+IEEE802_11_DUR_LEN+\ IEEE802_11_RA_LEN+IEEE802_11_BSSID_LEN) +struct ctrl_bar_t { + u_int16_t fc; + u_int16_t dur; + u_int8_t ra[6]; + u_int8_t ta[6]; + u_int16_t ctl; + u_int16_t seq; + u_int8_t fcs[4]; +}; + +#define CTRL_BAR_HDRLEN (IEEE802_11_FC_LEN+IEEE802_11_DUR_LEN+\ + IEEE802_11_RA_LEN+IEEE802_11_TA_LEN+\ + IEEE802_11_CTL_LEN+IEEE802_11_SEQ_LEN) + #define IV_IV(iv) ((iv) & 0xFFFFFF) #define IV_PAD(iv) (((iv) >> 24) & 0x3F) #define IV_KEYID(iv) (((iv) >> 30) & 0x03) ==== //depot/projects/wifi/contrib/tcpdump/ieee802_11_radio.h#2 (text+ko) ==== @@ -53,7 +53,11 @@ #endif #endif /* _KERNEL */ -/* The radio capture header precedes the 802.11 header. */ +/* + * The radio capture header precedes the 802.11 header. + * + * Note well: all radiotap fields are little-endian. + */ struct ieee80211_radiotap_header { u_int8_t it_version; /* Version 0. Only increases * for drastic changes, @@ -87,15 +91,19 @@ * IEEE80211_RADIOTAP_CHANNEL 2 x u_int16_t MHz, bitmap * * Tx/Rx frequency in MHz, followed by flags (see below). + * Note that IEEE80211_RADIOTAP_XCHANNEL must be used to + * represent an HT channel as there is not enough room in + * the flags word. * * IEEE80211_RADIOTAP_FHSS u_int16_t see below * * For frequency-hopping radios, the hop set (first byte) * and pattern (second byte). * - * IEEE80211_RADIOTAP_RATE u_int8_t 500kb/s + * IEEE80211_RADIOTAP_RATE u_int8_t 500kb/s or index * - * Tx/Rx data rate + * Tx/Rx data rate. If bit 0x80 is set then it represents an + * an MCS index and not an IEEE rate. * * IEEE80211_RADIOTAP_DBM_ANTSIGNAL int8_t decibels from * one milliwatt (dBm) @@ -154,6 +162,17 @@ * * Unitless indication of the Rx/Tx antenna for this packet. * The first antenna is antenna 0. + * + * IEEE80211_RADIOTAP_XCHANNEL u_int32_t bitmap + * u_int16_t MHz + * u_int8_t channel number + * u_int8_t .5 dBm + * + * Extended channel specification: flags (see below) followed by + * frequency in MHz, the corresponding IEEE channel number, and + * finally the maximum regulatory transmit power cap in .5 dBm + * units. This property supersedes IEEE80211_RADIOTAP_CHANNEL + * and only one of the two should be present. */ enum ieee80211_radiotap_type { IEEE80211_RADIOTAP_TSFT = 0, @@ -170,17 +189,27 @@ IEEE80211_RADIOTAP_ANTENNA = 11, IEEE80211_RADIOTAP_DB_ANTSIGNAL = 12, IEEE80211_RADIOTAP_DB_ANTNOISE = 13, + IEEE80211_RADIOTAP_XCHANNEL = 14, IEEE80211_RADIOTAP_EXT = 31 }; #ifndef _KERNEL -/* Channel flags. */ -#define IEEE80211_CHAN_TURBO 0x0010 /* Turbo channel */ -#define IEEE80211_CHAN_CCK 0x0020 /* CCK channel */ -#define IEEE80211_CHAN_OFDM 0x0040 /* OFDM channel */ -#define IEEE80211_CHAN_2GHZ 0x0080 /* 2 GHz spectrum channel. */ -#define IEEE80211_CHAN_5GHZ 0x0100 /* 5 GHz spectrum channel */ -#define IEEE80211_CHAN_PASSIVE 0x0200 /* Only passive scan allowed */ +/* Channel flags; some are used only with XCHANNEL */ +#define IEEE80211_CHAN_TURBO 0x00010 /* Turbo channel */ +#define IEEE80211_CHAN_CCK 0x00020 /* CCK channel */ +#define IEEE80211_CHAN_OFDM 0x00040 /* OFDM channel */ +#define IEEE80211_CHAN_2GHZ 0x00080 /* 2 GHz spectrum channel. */ +#define IEEE80211_CHAN_5GHZ 0x00100 /* 5 GHz spectrum channel */ +#define IEEE80211_CHAN_PASSIVE 0x00200 /* Only passive scan allowed */ +#define IEEE80211_CHAN_DYN 0x00400 /* Dynamic CCK-OFDM channel */ +#define IEEE80211_CHAN_GFSK 0x00800 /* GFSK channel (FHSS PHY) */ +#define IEEE80211_CHAN_GSM 0x01000 /* 900 MHz spectrum channel */ +#define IEEE80211_CHAN_STURBO 0x02000 /* 11a static turbo channel only */ +#define IEEE80211_CHAN_HALF 0x04000 /* Half rate channel */ +#define IEEE80211_CHAN_QUARTER 0x08000 /* Quarter rate channel */ +#define IEEE80211_CHAN_HT20 0x10000 /* HT 20 channel */ +#define IEEE80211_CHAN_HT40U 0x20000 /* HT 40 channel w/ ext above */ +#define IEEE80211_CHAN_HT40D 0x40000 /* HT 40 channel w/ ext below */ #endif /* !_KERNEL */ /* For IEEE80211_RADIOTAP_FLAGS */ @@ -197,5 +226,11 @@ #define IEEE80211_RADIOTAP_F_FRAG 0x08 /* sent/received * with fragmentation */ +#define IEEE80211_RADIOTAP_F_FCS 0x10 /* frame includes FCS */ +#define IEEE80211_RADIOTAP_F_DATAPAD 0x20 /* frame has padding between + * 802.11 header and payload + * (to 32-bit boundary) + */ +#define IEEE80211_RADIOTAP_F_BADFCS 0x40 /* does not pass FCS check */ #endif /* _NET_IF_IEEE80211RADIOTAP_H_ */ ==== //depot/projects/wifi/contrib/tcpdump/print-802_11.c#4 (text+ko) ==== @@ -61,6 +61,27 @@ printf(" Mbit]"); \ } while (0) +static const int ieee80211_htrates[16] = { + 13, /* IFM_IEEE80211_MCS0 */ + 26, /* IFM_IEEE80211_MCS1 */ + 39, /* IFM_IEEE80211_MCS2 */ + 52, /* IFM_IEEE80211_MCS3 */ + 78, /* IFM_IEEE80211_MCS4 */ + 104, /* IFM_IEEE80211_MCS5 */ + 117, /* IFM_IEEE80211_MCS6 */ + 130, /* IFM_IEEE80211_MCS7 */ + 26, /* IFM_IEEE80211_MCS8 */ + 52, /* IFM_IEEE80211_MCS9 */ + 78, /* IFM_IEEE80211_MCS10 */ + 104, /* IFM_IEEE80211_MCS11 */ + 156, /* IFM_IEEE80211_MCS12 */ + 208, /* IFM_IEEE80211_MCS13 */ + 234, /* IFM_IEEE80211_MCS14 */ + 260, /* IFM_IEEE80211_MCS15 */ +}; +#define PRINT_HT_RATE(_sep, _r, _suf) \ + printf("%s%.1f%s", _sep, (.5 * ieee80211_htrates[(_r) & 0xf]), _suf) + static const char *auth_alg_text[]={"Open System","Shared Key","EAP"}; #define NUM_AUTH_ALGS (sizeof auth_alg_text / sizeof auth_alg_text[0]) @@ -553,6 +574,17 @@ ctrl_body_print(u_int16_t fc, const u_char *p) { switch (FC_SUBTYPE(fc)) { + case CTRL_BAR: + printf("BAR"); + if (!TTEST2(*p, CTRL_BAR_HDRLEN)) + return 0; + if (!eflag) + printf(" RA:%s TA:%s CTL(%x) SEQ(%u) ", + etheraddr_string(((const struct ctrl_bar_t *)p)->ra), + etheraddr_string(((const struct ctrl_bar_t *)p)->ta), + EXTRACT_LE_16BITS(&(((const struct ctrl_bar_t *)p)->ctl)), + EXTRACT_LE_16BITS(&(((const struct ctrl_bar_t *)p)->seq))); + break; case CTRL_PS_POLL: printf("Power Save-Poll"); if (!TTEST2(*p, CTRL_PS_POLL_HDRLEN)) @@ -725,6 +757,13 @@ return; switch (FC_SUBTYPE(fc)) { + case CTRL_BAR: + printf(" RA:%s TA:%s CTL(%x) SEQ(%u) ", + etheraddr_string(((const struct ctrl_bar_t *)p)->ra), + etheraddr_string(((const struct ctrl_bar_t *)p)->ta), + EXTRACT_LE_16BITS(&(((const struct ctrl_bar_t *)p)->ctl)), + EXTRACT_LE_16BITS(&(((const struct ctrl_bar_t *)p)->seq))); + break; case CTRL_PS_POLL: printf("BSSID:%s TA:%s ", etheraddr_string(((const struct ctrl_ps_poll_t *)p)->bssid), @@ -767,6 +806,8 @@ return MGMT_HDRLEN; case T_CTRL: switch (FC_SUBTYPE(fc)) { + case CTRL_BAR: + return CTRL_BAR_HDRLEN; case CTRL_PS_POLL: return CTRL_PS_POLL_HDRLEN; case CTRL_RTS: @@ -925,6 +966,64 @@ return ieee802_11_print(p, h->len, h->caplen); } +#define IEEE80211_CHAN_FHSS \ + (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_GFSK) +#define IEEE80211_CHAN_A \ + (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM) +#define IEEE80211_CHAN_B \ + (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_CCK) +#define IEEE80211_CHAN_PUREG \ + (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM) +#define IEEE80211_CHAN_G \ + (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN) + +#define IS_CHAN_FHSS(flags) \ + ((flags & IEEE80211_CHAN_FHSS) == IEEE80211_CHAN_FHSS) +#define IS_CHAN_A(flags) \ + ((flags & IEEE80211_CHAN_A) == IEEE80211_CHAN_A) +#define IS_CHAN_B(flags) \ + ((flags & IEEE80211_CHAN_B) == IEEE80211_CHAN_B) +#define IS_CHAN_PUREG(flags) \ + ((flags & IEEE80211_CHAN_PUREG) == IEEE80211_CHAN_PUREG) +#define IS_CHAN_G(flags) \ + ((flags & IEEE80211_CHAN_G) == IEEE80211_CHAN_G) +#define IS_CHAN_ANYG(flags) \ + (IS_CHAN_PUREG(flags) || IS_CHAN_G(flags)) + +static void +print_chaninfo(int freq, int flags) +{ + printf("%u MHz", freq); + if (IS_CHAN_FHSS(flags)) + printf(" FHSS"); + if (IS_CHAN_A(flags)) { + if (flags & IEEE80211_CHAN_HALF) + printf(" 11a/10Mhz"); + else if (flags & IEEE80211_CHAN_QUARTER) + printf(" 11a/5Mhz"); + else + printf(" 11a"); + } + if (IS_CHAN_ANYG(flags)) { + if (flags & IEEE80211_CHAN_HALF) + printf(" 11g/10Mhz"); + else if (flags & IEEE80211_CHAN_QUARTER) + printf(" 11g/5Mhz"); + else + printf(" 11g"); + } else if (IS_CHAN_B(flags)) + printf(" 11b"); + if (flags & IEEE80211_CHAN_TURBO) + printf(" Turbo"); + if (flags & IEEE80211_CHAN_HT20) + printf(" ht/20"); + else if (flags & IEEE80211_CHAN_HT40D) + printf(" ht/40-"); + else if (flags & IEEE80211_CHAN_HT40U) + printf(" ht/40+"); + printf(" "); +} + static int print_radiotap_field(struct cpack_state *s, u_int32_t bit) { @@ -935,7 +1034,7 @@ u_int16_t u16; u_int32_t u32; u_int64_t u64; - } u, u2; + } u, u2, u3, u4; int rc; switch (bit) { @@ -970,6 +1069,18 @@ case IEEE80211_RADIOTAP_TSFT: rc = cpack_uint64(s, &u.u64); break; + case IEEE80211_RADIOTAP_XCHANNEL: + rc = cpack_uint32(s, &u.u32); + if (rc != 0) + break; + rc = cpack_uint16(s, &u2.u16); + if (rc != 0) + break; + rc = cpack_uint8(s, &u3.u8); + if (rc != 0) + break; + rc = cpack_uint8(s, &u4.u8); + break; default: /* this bit indicates a field whose * size we do not know, so we cannot @@ -986,15 +1097,16 @@ switch (bit) { case IEEE80211_RADIOTAP_CHANNEL: - printf("%u MHz ", u.u16); - if (u2.u16 != 0) - printf("(0x%04x) ", u2.u16); + print_chaninfo(u.u16, u2.u16); break; case IEEE80211_RADIOTAP_FHSS: printf("fhset %d fhpat %d ", u.u16 & 0xff, (u.u16 >> 8) & 0xff); break; case IEEE80211_RADIOTAP_RATE: - PRINT_RATE("", u.u8, " Mb/s "); + if (u.u8 & 0x80) + PRINT_RATE("", u.u8, " Mb/s "); + else + PRINT_HT_RATE("", u.u8, " Mb/s "); break; case IEEE80211_RADIOTAP_DBM_ANTSIGNAL: printf("%ddB signal ", u.i8); @@ -1029,6 +1141,14 @@ printf("wep "); if (u.u8 & IEEE80211_RADIOTAP_F_FRAG) printf("fragmented "); +#if 0 + if (u.u8 & IEEE80211_RADIOTAP_F_FCS) + printf("fcs "); + if (u.u8 & IEEE80211_RADIOTAP_F_DATAPAD) + printf("datapad "); +#endif + if (u.u8 & IEEE80211_RADIOTAP_F_BADFCS) + printf("badfcs "); break; case IEEE80211_RADIOTAP_ANTENNA: printf("antenna %d ", u.u8); @@ -1036,6 +1156,9 @@ case IEEE80211_RADIOTAP_TSFT: printf("%" PRIu64 "us tsft ", u.u64); break; + case IEEE80211_RADIOTAP_XCHANNEL: + print_chaninfo(u2.u16, u.u32); + break; } return 0; } From owner-p4-projects@FreeBSD.ORG Wed May 9 16:38:33 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3C86416A473; Wed, 9 May 2007 16:38:33 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id F3E8D16A46D for ; Wed, 9 May 2007 16:38:32 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id CAFE713C448 for ; Wed, 9 May 2007 16:38:32 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49GcWlv003571 for ; Wed, 9 May 2007 16:38:32 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49GcWk3003567 for perforce@freebsd.org; Wed, 9 May 2007 16:38:32 GMT (envelope-from fli@FreeBSD.org) Date: Wed, 9 May 2007 16:38:32 GMT Message-Id: <200705091638.l49GcWk3003567@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119573 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 16:38:33 -0000 http://perforce.freebsd.org/chv.cgi?CH=119573 Change 119573 by fli@fli_genesis on 2007/05/09 16:38:09 Left over from last submit. Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_mdns.h#2 edit Differences ... ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_mdns.h#2 (text+ko) ==== @@ -30,7 +30,6 @@ #include #include -#include "list.h" #include "stack_buf.h" /* Structure initialization protection */ From owner-p4-projects@FreeBSD.ORG Wed May 9 16:41:37 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 74D6316A408; Wed, 9 May 2007 16:41:37 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4579D16A405 for ; Wed, 9 May 2007 16:41:37 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 34BF613C489 for ; Wed, 9 May 2007 16:41:37 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49GfbVH004343 for ; Wed, 9 May 2007 16:41:37 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49Gfb4n004340 for perforce@freebsd.org; Wed, 9 May 2007 16:41:37 GMT (envelope-from sam@freebsd.org) Date: Wed, 9 May 2007 16:41:37 GMT Message-Id: <200705091641.l49Gfb4n004340@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 119574 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 16:41:37 -0000 http://perforce.freebsd.org/chv.cgi?CH=119574 Change 119574 by sam@sam_ebb on 2007/05/09 16:41:11 don't need compat shims any more Affected files ... .. //depot/projects/wifi/sbin/ifconfig/ifieee80211.c#67 edit Differences ... ==== //depot/projects/wifi/sbin/ifconfig/ifieee80211.c#67 (text+ko) ==== @@ -94,27 +94,6 @@ #include "ifconfig.h" -/* XXX temporary compatibility shims */ -#ifndef IEEE80211_CHAN_HT -#define IEEE80211_CHAN_HT20 0x10000 /* HT 20 channel */ -#define IEEE80211_CHAN_HT40U 0x20000 /* HT 40 channel w/ ext above */ -#define IEEE80211_CHAN_HT40D 0x40000 /* HT 40 channel w/ ext below */ - -#define IEEE80211_CHAN_HT40 (IEEE80211_CHAN_HT40U | IEEE80211_CHAN_HT40D) -#define IEEE80211_CHAN_HT (IEEE80211_CHAN_HT20 | IEEE80211_CHAN_HT40) - -#define IEEE80211_IS_CHAN_HT(_c) \ - (((_c)->ic_flags & IEEE80211_CHAN_HT) != 0) -#define IEEE80211_IS_CHAN_HT20(_c) \ - (((_c)->ic_flags & IEEE80211_CHAN_HT20) != 0) -#define IEEE80211_IS_CHAN_HT40(_c) \ - (((_c)->ic_flags & IEEE80211_CHAN_HT40) != 0) -#define IEEE80211_IS_CHAN_HT40U(_c) \ - (((_c)->ic_flags & IEEE80211_CHAN_HT40U) != 0) -#define IEEE80211_IS_CHAN_HT40D(_c) \ - (((_c)->ic_flags & IEEE80211_CHAN_HT40D) != 0) -#endif - static void set80211(int s, int type, int val, int len, void *data); static const char *get_string(const char *val, const char *sep, u_int8_t *buf, int *lenp); From owner-p4-projects@FreeBSD.ORG Wed May 9 16:43:14 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8779E16A46E; Wed, 9 May 2007 16:43:14 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 419D216A46C for ; Wed, 9 May 2007 16:43:14 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from wr-out-0506.google.com (wr-out-0506.google.com [64.233.184.229]) by mx1.freebsd.org (Postfix) with ESMTP id EEDD013C4C1 for ; Wed, 9 May 2007 16:43:13 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: by wr-out-0506.google.com with SMTP id 70so261301wra for ; Wed, 09 May 2007 09:43:13 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=mkJ35E54VkZRUHRGedD3knTI8LVrUgKKmDHPbumqi8D09lBW6M/UTB2tnqsH0RkGZxmECfyWsN2szYp90vMrzM4VjxUTQbvMwyZG6UK+8NxwXmh7JPKAXE2fibznZkhz8g6J085wQx2g+d4uyieFl580U73PvTzy1bLN0MNcdi4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=mf0BJMxk73zphMm4Axil9rrooWyxUy5z9AoqWgxQOxyJskAOABwyCZNqlW01PAoDoNh5hWOEmFdWFHrVh6oSfv0oczC4qkWAQ6MZ/dZodK+5+ud/eJtuQfo7JW+yriwtHg9c6ODrlihOtNKLJMVA2wF7GGAdRE/HiGERLvAqzQI= Received: by 10.78.187.17 with SMTP id k17mr201854huf.1178728991130; Wed, 09 May 2007 09:43:11 -0700 (PDT) Received: by 10.78.120.4 with HTTP; Wed, 9 May 2007 09:43:11 -0700 (PDT) Message-ID: <3bbf2fe10705090943m6a8c7ceej61598f567698447@mail.gmail.com> Date: Wed, 9 May 2007 18:43:11 +0200 From: "Attilio Rao" Sender: asmrookie@gmail.com To: "Garrett Cooper" In-Reply-To: <4641F37D.50808@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <200705082229.l48MTrbh069129@repoman.freebsd.org> <20070509070626.GA41419@freebsd.org> <4641818B.4030507@FreeBSD.org> <20070509103404.D71759@fledge.watson.org> <464199D9.7020908@shapeshifter.se> <9bbcef730705090710h653dc15bjb7a1159484c1c48b@mail.gmail.com> <4641E19F.80809@shapeshifter.se> <4641F37D.50808@gmail.com> X-Google-Sender-Auth: e96efcc0b4c40edd Cc: Perforce Change Reviews , Ivan Voras , Fredrik Lindberg Subject: Re: PERFORCE change 119527 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 16:43:14 -0000 2007/5/9, Garrett Cooper : > Fredrik Lindberg wrote: > > Ivan Voras wrote: > >> On 09/05/07, Fredrik Lindberg wrote: > >> > >>> Ok, I'll take a look at the various queue.h shipped with the major BSDs, > >>> and see if I can find a common subset that suits my needs (without too > >>> many compromises) and based on the findings I'll reconsider my choice. > >> > >> I use sys/queue.h in my userland applications all the time, there's no > >> problem there. > >> > > > > And it works on {Net,Open}BSD?, I could swear that I've been bitten by > > sys/queue.h in the past when moving stuff between FreeBSD and NetBSD. > > Could have been those TAILQ-macros Robert Watson talked about though. > > > > Fredrik Lindberg > > It may work with programs under normal conditions but are the queues > guaranteed to work with thread sychronization and other non-simple > conditions? I'd think that the FreeBSD queue is closer to that. They are not intended to deal with syncronization matters since they have to be the most general possible. However, sys/queue.h should be pretty portable to Net, Open and DragonFly. Attilio -- Peace can only be achieved by understanding - A. Einstein From owner-p4-projects@FreeBSD.ORG Wed May 9 16:45:44 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DB0D616A406; Wed, 9 May 2007 16:45:43 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8707916A478 for ; Wed, 9 May 2007 16:45:43 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 7446313C4B9 for ; Wed, 9 May 2007 16:45:43 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49GjhR1005133 for ; Wed, 9 May 2007 16:45:43 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49GjgL1005130 for perforce@freebsd.org; Wed, 9 May 2007 16:45:42 GMT (envelope-from sam@freebsd.org) Date: Wed, 9 May 2007 16:45:42 GMT Message-Id: <200705091645.l49GjgL1005130@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 119575 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 16:45:44 -0000 http://perforce.freebsd.org/chv.cgi?CH=119575 Change 119575 by sam@sam_ebb on 2007/05/09 16:45:36 o add 11n flag o fixes for gcc 4 complaints Affected files ... .. //depot/projects/wifi/tools/tools/net80211/wlandebug/wlandebug.c#3 edit Differences ... ==== //depot/projects/wifi/tools/tools/net80211/wlandebug/wlandebug.c#3 (text+ko) ==== @@ -43,14 +43,17 @@ #include #include +#include #include #include #include +#include #define N(a) (sizeof(a)/sizeof(a[0])) const char *progname; +#define IEEE80211_MSG_11N 0x80000000 /* 11n mode debug */ #define IEEE80211_MSG_DEBUG 0x40000000 /* IFF_DEBUG equivalent */ #define IEEE80211_MSG_DUMPPKTS 0x20000000 /* IFF_LINK2 equivalant */ #define IEEE80211_MSG_CRYPTO 0x10000000 /* crypto work */ @@ -82,6 +85,7 @@ const char *name; u_int bit; } flags[] = { + { "11n", IEEE80211_MSG_11N }, { "debug", IEEE80211_MSG_DEBUG }, { "dumppkts", IEEE80211_MSG_DUMPPKTS }, { "crypto", IEEE80211_MSG_CRYPTO }, @@ -150,7 +154,7 @@ const char *ifname = "ath0"; const char *cp, *tp; const char *sep; - int c, op, i, unit; + int op, i, unit; u_int32_t debug, ndebug; size_t debuglen, parentlen; char oid[256], parent[256]; @@ -173,8 +177,9 @@ snprintf(oid, sizeof(oid), "net.wlan.%d.%%parent", unit); #endif parentlen = sizeof(parent); - if (sysctlbyname(oid, parent, &parentlen, NULL, 0) >= 0 && - strncmp(parent, ifname, parentlen) == 0) + if (sysctlbyname(oid, parent, &parentlen, NULL, 0) < 0) + continue; + if (strncmp(parent, ifname, parentlen) == 0) break; } if (unit == 10) @@ -210,11 +215,12 @@ ndebug |= bit; else { if (bit == 0) { - if (isdigit(*cp)) + int c = *cp; + if (isdigit(c)) bit = strtoul(cp, NULL, 0); else errx(1, "unknown flag %.*s", - tp-cp, cp); + (int)(tp-cp), cp); } ndebug = bit; } From owner-p4-projects@FreeBSD.ORG Wed May 9 16:50:50 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id AD13216A404; Wed, 9 May 2007 16:50:50 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6994A16A402 for ; Wed, 9 May 2007 16:50:50 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 5891813C455 for ; Wed, 9 May 2007 16:50:50 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49GooDK013739 for ; Wed, 9 May 2007 16:50:50 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49GonDD013736 for perforce@freebsd.org; Wed, 9 May 2007 16:50:49 GMT (envelope-from sam@freebsd.org) Date: Wed, 9 May 2007 16:50:49 GMT Message-Id: <200705091650.l49GonDD013736@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 119576 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 16:50:51 -0000 http://perforce.freebsd.org/chv.cgi?CH=119576 Change 119576 by sam@sam_ebb on 2007/05/09 16:50:15 update for 11n stats Affected files ... .. //depot/projects/wifi/tools/tools/net80211/wlanstats/wlanstats.c#3 edit Differences ... ==== //depot/projects/wifi/tools/tools/net80211/wlanstats/wlanstats.c#3 (text+ko) ==== @@ -50,6 +50,7 @@ #include #include +#include #include #include #include @@ -91,7 +92,7 @@ #define S_RX_MGTDISCARD 11 { 5, "rx_mgtdiscard", "mgtdiscard", "rx discard mgt frames" }, #define S_RX_CTL 12 - { 5, "rx_ctl", "ctl", "rx discard ctrl frames" }, + { 5, "rx_ctl", "ctl", "rx ctrl frames" }, #define S_RX_BEACON 13 { 5, "rx_beacon", "beacon", "rx beacon frames" }, #define S_RX_RSTOOBIG 14 @@ -256,29 +257,49 @@ { 5, "rx_demicfail", "rx_demicfail", "rx demic failed" }, #define S_RX_DEFRAG 91 { 5, "rx_defrag", "rx_defrag", "rx defragmentation failed" }, -#define S_INPUT 92 +#define S_RX_ACTION 92 + { 5, "rx_action", "rx_action", "rx action frames" }, +#define S_AMSDU_TOOSHORT 93 + { 8, "amsdu_tooshort", "amsdu_tooshort","A-MSDU rx decap error" }, +#define S_AMSDU_SPLIT 94 + { 8, "amsdu_split", "amsdu_split", "A-MSDU rx failed on frame split" }, +#define S_AMSDU_DECAP 95 + { 8, "amsdu_decap", "amsdu_decap", "A-MSDU frames received" }, +#define S_AMSDU_ENCAP 96 + { 8, "amsdu_encap", "amsdu_encap", "A-MSDU frames transmitted" }, +#define S_AMPDU_FLUSH 97 + { 8, "ampdu_flush", "ampdu_flush", "A-MPDU frames flushed" }, +#define S_AMPDU_BARBAD 98 + { 8, "ampdu_barbad", "ampdu_barbad", "A-MPDU BAR rx before ADDBA exchange" }, +#define S_AMPDU_BAROOW 99 + { 8, "ampdu_baroow", "ampdu_baroow", "A-MPDU BAR rx out of BA window" }, +#define S_AMPDU_BAR 100 + { 8, "ampdu_bar", "ampdu_bar", "A-MPDU BAR rx successful" }, +#define S_AMPDU_OOR 101 + { 8, "ampdu_oor", "ampdu_oor", "A-MPDU frames received out-of-order" }, +#define S_AMPDU_COPY 102 + { 8, "ampdu_copy", "ampdu_copy", "A-MPDU rx window slots copied" }, +#define S_INPUT 103 { 8, "input", "input", "data frames received" }, -#define S_OUTPUT 93 +#define S_OUTPUT 104 { 8, "output", "output", "data frames transmit" }, -#define S_RATE 94 +#define S_RATE 105 { 4, "rate", "rate", "current transmit rate" }, -#define S_RSSI 95 +#define S_RSSI 106 { 4, "rssi", "rssi", "current rssi" }, -#define S_NOISE 96 +#define S_NOISE 107 { 4, "noise", "noise", "current noise floor (dBm)" }, -#define S_RX_UCAST 97 +#define S_RX_UCAST 108 { 8, "rx_ucast", "rx_ucast", "unicast data frames received" }, -#define S_RX_MCAST 98 +#define S_RX_MCAST 109 { 8, "rx_mcast", "rx_mcast", "multicast data frames received" }, -#define S_TX_UCAST 99 +#define S_TX_UCAST 110 { 8, "tx_ucast", "tx_ucast", "unicast data frames sent" }, -#define S_TX_MCAST 100 +#define S_TX_MCAST 111 { 8, "tx_mcast", "tx_mcast", "multicast data frames sent" }, -#define S_SIGNAL 101 +#define S_SIGNAL 112 { 4, "signal", "sig", "current signal (dBm)" }, }; -#define S_LAST S_RX_DEFRAG -#define S_MAX S_LAST+1 struct wlanstatfoo_p { struct wlanstatfoo base; @@ -376,7 +397,7 @@ wf->ireq.i_data = wf->mac; wf->ireq.i_len = IEEE80211_ADDR_LEN; if (ioctl(wf->s, SIOCG80211, &wf->ireq) <0) - err(1, wf->ireq.i_name); + err(1, "%s (IEEE80211_IOC_BSSID)", wf->ireq.i_name); break; } } else @@ -394,18 +415,18 @@ wf->ireq.i_data = (caddr_t) &wf->u_info; wf->ireq.i_len = sizeof(wf->u_info); if (ioctl(wf->s, SIOCG80211, &wf->ireq) < 0) - err(1, wf->ireq.i_name); + err(1, "%s (IEEE80211_IOC_STA_INFO)", wf->ireq.i_name); IEEE80211_ADDR_COPY(nstats->is_u.macaddr, wf->mac); wf->ireq.i_type = IEEE80211_IOC_STA_STATS; wf->ireq.i_data = (caddr_t) nstats; wf->ireq.i_len = sizeof(*nstats); if (ioctl(wf->s, SIOCG80211, &wf->ireq) < 0) - err(1, wf->ireq.i_name); + err(1, "%s (IEEE80211_IOC_STA_STATS)", wf->ireq.i_name); wf->ifr.ifr_data = (caddr_t) stats; if (ioctl(wf->s, SIOCG80211STATS, &wf->ifr) < 0) - err(1, wf->ifr.ifr_name); + err(1, "%s (SIOCG80211STATS)", wf->ifr.ifr_name); } static void @@ -561,6 +582,17 @@ case S_RX_MGMT: STAT(rx_mgmt); case S_RX_DEMICFAIL: STAT(rx_demicfail); case S_RX_DEFRAG: STAT(rx_defrag); + case S_RX_ACTION: STAT(rx_action); + case S_AMSDU_TOOSHORT: STAT(amsdu_tooshort); + case S_AMSDU_SPLIT: STAT(amsdu_split); + case S_AMSDU_DECAP: STAT(amsdu_decap); + case S_AMSDU_ENCAP: STAT(amsdu_encap); + case S_AMPDU_FLUSH: STAT(ampdu_rx_flush); + case S_AMPDU_BARBAD: STAT(ampdu_bar_bad); + case S_AMPDU_BAROOW: STAT(ampdu_bar_oow); + case S_AMPDU_BAR: STAT(ampdu_bar_rx); + case S_AMPDU_OOR: STAT(ampdu_rx_oor); + case S_AMPDU_COPY: STAT(ampdu_rx_copy); case S_INPUT: NSTAT(rx_data); case S_OUTPUT: NSTAT(tx_data); case S_RX_UCAST: NSTAT(rx_ucast); @@ -674,6 +706,17 @@ case S_RX_MGMT: STAT(rx_mgmt); case S_RX_DEMICFAIL: STAT(rx_demicfail); case S_RX_DEFRAG: STAT(rx_defrag); + case S_RX_ACTION: STAT(rx_action); + case S_AMSDU_TOOSHORT: STAT(amsdu_tooshort); + case S_AMSDU_SPLIT: STAT(amsdu_split); + case S_AMSDU_DECAP: STAT(amsdu_decap); + case S_AMSDU_ENCAP: STAT(amsdu_encap); + case S_AMPDU_FLUSH: STAT(ampdu_rx_flush); + case S_AMPDU_BARBAD: STAT(ampdu_bar_bad); + case S_AMPDU_BAROOW: STAT(ampdu_bar_oow); + case S_AMPDU_BAR: STAT(ampdu_bar_rx); + case S_AMPDU_OOR: STAT(ampdu_rx_oor); + case S_AMPDU_COPY: STAT(ampdu_rx_copy); case S_INPUT: NSTAT(rx_data); case S_OUTPUT: NSTAT(tx_data); case S_RX_UCAST: NSTAT(rx_ucast); From owner-p4-projects@FreeBSD.ORG Wed May 9 17:59:23 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B855416A406; Wed, 9 May 2007 17:59:23 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6B9CC16A402 for ; Wed, 9 May 2007 17:59:23 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 5AF9313C448 for ; Wed, 9 May 2007 17:59:23 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49HxNlq026742 for ; Wed, 9 May 2007 17:59:23 GMT (envelope-from lulf@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49HxNK5026739 for perforce@freebsd.org; Wed, 9 May 2007 17:59:23 GMT (envelope-from lulf@FreeBSD.org) Date: Wed, 9 May 2007 17:59:23 GMT Message-Id: <200705091759.l49HxNK5026739@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to lulf@FreeBSD.org using -f From: Ulf Lilleengen To: Perforce Change Reviews Cc: Subject: PERFORCE change 119581 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 17:59:24 -0000 http://perforce.freebsd.org/chv.cgi?CH=119581 Change 119581 by lulf@lulf_vimes on 2007/05/09 17:58:32 - Define error codes and use them. Affected files ... .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum.c#7 edit .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_rm.c#4 edit .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_state.c#8 edit .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_subr.c#4 edit .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_var.h#5 edit Differences ... ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum.c#7 (text+ko) ==== ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_rm.c#4 (text+ko) ==== @@ -165,7 +165,7 @@ LIST_FOREACH_SAFE(d, &sc->drives, drive, d2) { if (gv_consumer_is_open(d->consumer)) { gctl_error(req, "drive '%s' is busy", d->name); - return (-1); + return (GV_ERR_ISOPEN); } } /* Then if not, we remove everything. */ ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_state.c#8 (text+ko) ==== @@ -141,7 +141,7 @@ return; } -/* Update drive state; return 0 if the state changes, otherwise -1. */ +/* Update drive state; return 0 if the state changes, otherwise error. */ int gv_set_drive_state(struct gv_drive *d, int newstate, int flags) { @@ -158,7 +158,7 @@ /* We allow to take down an open drive only with force. */ if ((newstate == GV_DRIVE_DOWN) && gv_consumer_is_open(d->consumer) && (!(flags & GV_SETSTATE_FORCE))) - return (-1); + return (GV_ERR_ISOPEN); d->state = newstate; @@ -198,14 +198,14 @@ * force. */ if ((s->plex_sc != NULL) && !(flags & GV_SETSTATE_FORCE)) - return (-1); + return (GV_ERR_ISATTACHED); break; case GV_SD_UP: /* We can't bring the subdisk up if our drive is dead. */ d = s->drive_sc; if ((d == NULL) || (d->state != GV_DRIVE_UP)) - return (-1); + return (GV_ERR_SETSTATE); /* Check from where we want to be brought up. */ switch (s->state) { @@ -242,7 +242,7 @@ else s->state = GV_SD_STALE; - status = -1; + status = GV_ERR_SETSTATE; break; case GV_SD_STALE: @@ -261,17 +261,17 @@ (p->vol_sc->plexcount == 1)) break; else - return (-1); + return (GV_ERR_SETSTATE); default: - return (-1); + return (GV_ERR_INVSTATE); } break; /* Other state transitions are only possible with force. */ default: if (!(flags & GV_SETSTATE_FORCE)) - return (-1); + return (GV_ERR_SETSTATE); } /* We can change the state and do it. */ @@ -309,7 +309,7 @@ /* Let update_plex handle if the plex can come up */ gv_update_plex_state(p); if (p->state != GV_PLEX_UP && !(flags & GV_SETSTATE_FORCE)) - return (-1); /* XXX: ERROR CODES. */ + return (GV_ERR_SETSTATE); p->state = newstate; break; case GV_PLEX_DOWN: @@ -323,7 +323,7 @@ if ((v->plexcount == 1 || (v->plexcount - plexdown == 1)) && ((flags & GV_SETSTATE_FORCE) == 0)) - return (-1); /* XXX: ERROR CODES. */ + return (GV_ERR_SETSTATE); } p->state = newstate; break; @@ -356,7 +356,7 @@ /* Let update handle if the volume can come up. */ gv_update_vol_state(v); if (v->state != GV_VOL_UP && !(flags & GV_SETSTATE_FORCE)) - return (-1); /* XXX: ERROR CODES. */ + return (GV_ERR_SETSTATE); v->state = newstate; break; case GV_VOL_DOWN: @@ -366,7 +366,7 @@ */ if (!gv_provider_is_open(v->provider) && !(flags & GV_SETSTATE_FORCE)) - return (-1); /* XXX: ERROR CODES. */ + return (GV_ERR_ISOPEN); v->state = newstate; break; } ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_subr.c#4 (text+ko) ==== @@ -278,7 +278,7 @@ printf("VINUM: need equal sized subdisks for this plex " "organisation - %s (%jd) <-> %s (%jd)\n", s2->name, s2->size, s->name, s->size); - return (-1); + return (GV_ERR_BADSIZE); } /* Find the correct plex offset for this subdisk, if needed. */ @@ -525,7 +525,7 @@ printf("VINUM: can't give sd '%s' to '%s' " "(already on '%s')\n", s->name, d->name, s->drive_sc->name); - return (-1); + return (GV_ERR_ISATTACHED); } } @@ -533,7 +533,7 @@ if ((s->size > d->avail) || (d->freelist_entries == 0)) { printf("VINUM: not enough space on '%s' for '%s'", d->name, s->name); - return (-1); + return (GV_ERR_NOSPACE); } /* If no size was given for this subdisk, try to auto-size it... */ @@ -551,7 +551,7 @@ if (s->size == -1) { printf("VINUM: couldn't autosize '%s' on '%s'", s->name, d->name); - return (-1); + return (GV_ERR_BADSIZE); } /* @@ -575,7 +575,7 @@ if (i == 0) { printf("VINUM: free slots to small for '%s' on '%s'", s->name, d->name); - return (-1); + return (GV_ERR_NOSPACE); } } @@ -612,7 +612,7 @@ if (i == 0) { printf("VINUM: given drive_offset for '%s' won't fit " "on '%s'", s->name, d->name); - return (-1); + return (GV_ERR_NOSPACE); } } @@ -953,7 +953,7 @@ return (GV_TYPE_DRIVE); } - return (-1); + return (GV_ERR_INVTYPE); } void ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_var.h#5 (text+ko) ==== @@ -118,6 +118,19 @@ #define GV_BIO_PARITY 0x80 #define GV_BIO_RETRY 0x100 +/* Error codes to be used within gvinum. */ +#define GV_ERR_SETSTATE (-1) /* Error setting state. */ +#define GV_ERR_BADSIZE (-2) /* Subdisk/plex/volume has wrong size. */ +#define GV_ERR_INVTYPE (-3) /* Invalid object type. */ +#define GV_ERR_CREATE (-4) /* Error creating gvinum object. */ +#define GV_ERR_ISOPEN (-5) /* Object is busy. */ +#define GV_ERR_ISATTACHED (-6) /* Object is attached to another. */ +#define GV_ERR_INVFLAG (-7) /* Invalid flag passed. */ +#define GV_ERR_INVSTATE (-8) /* Invalid state. */ +#define GV_ERR_NOTFOUND (-9) /* Object not found. */ +#define GV_ERR_NAMETAKEN (-10) /* Object name is taken. */ +#define GV_ERR_NOSPACE (-11) /* No space left on drive/subdisk. */ + /* * hostname is 256 bytes long, but we don't need to shlep multiple copies in * vinum. We use the host name just to identify this system, and 32 bytes From owner-p4-projects@FreeBSD.ORG Wed May 9 18:31:45 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8742916A409; Wed, 9 May 2007 18:31:45 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5DC2A16A407 for ; Wed, 9 May 2007 18:31:45 +0000 (UTC) (envelope-from ivoras@gmail.com) Received: from an-out-0708.google.com (an-out-0708.google.com [209.85.132.241]) by mx1.freebsd.org (Postfix) with ESMTP id 1573313C455 for ; Wed, 9 May 2007 18:31:44 +0000 (UTC) (envelope-from ivoras@gmail.com) Received: by an-out-0708.google.com with SMTP id d23so68533and for ; Wed, 09 May 2007 11:31:44 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=PpIyNaUIoTgANkYc7sBJPRYO9F6GksuoJbfTgvCe1O51vP6qm7072vQstzWmq8DR2/Rl8uxIDdvfefBZYNfKMVUY+vVxYK8W86WBVmT6/f/ECioUgRCXtFeHDgoplSSmlLKFvOK0orZSDWnV+nuae75HSywstbnpqEIHLq+mH6A= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=I59L9blT1aMYaDiIUeZQk20K0QJrUIiqaGbt38JJQrJ0OLEqPMkeqogmMfzemGqLxmIx8q+IjaQLSpIzAaKQdKAlyA7W1cgearkwLI2Y95BIRTIVflWQvsqSE12Pr0Owu0X5iKb+CRu/tWx/ZRXO8pEQ4snL8l4tJs2k1iRQhvc= Received: by 10.101.66.11 with SMTP id t11mr569791ank.1178735504396; Wed, 09 May 2007 11:31:44 -0700 (PDT) Received: by 10.100.93.15 with HTTP; Wed, 9 May 2007 11:31:44 -0700 (PDT) Message-ID: <9bbcef730705091131h35545a99pb5e1f6782c95e2dc@mail.gmail.com> Date: Wed, 9 May 2007 20:31:44 +0200 From: "Ivan Voras" To: "Garrett Cooper" In-Reply-To: <4641F37D.50808@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <200705082229.l48MTrbh069129@repoman.freebsd.org> <20070509070626.GA41419@freebsd.org> <4641818B.4030507@FreeBSD.org> <20070509103404.D71759@fledge.watson.org> <464199D9.7020908@shapeshifter.se> <9bbcef730705090710h653dc15bjb7a1159484c1c48b@mail.gmail.com> <4641E19F.80809@shapeshifter.se> <4641F37D.50808@gmail.com> Cc: Perforce Change Reviews , Fredrik Lindberg Subject: Re: PERFORCE change 119527 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 18:31:45 -0000 On 09/05/07, Garrett Cooper wrote: > It may work with programs under normal conditions but are the queues > guaranteed to work with thread sychronization and other non-simple > conditions? I'd think that the FreeBSD queue is closer to that. No, they don't have any support for thread safety - they are intended to be used with external locks if this is an issue. (at least the FreeBSD ones - haven't tried it on other *BSD implementations). > Furthermore, it's a requirement made by style(9) to use methods that > aren't rolled by the implementor :). +1 From owner-p4-projects@FreeBSD.ORG Wed May 9 18:53:55 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 91ACC16A40B; Wed, 9 May 2007 18:53:55 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4A69B16A408 for ; Wed, 9 May 2007 18:53:55 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 3AC8B13C4B8 for ; Wed, 9 May 2007 18:53:55 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49Irte2038111 for ; Wed, 9 May 2007 18:53:55 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49IrtnO038107 for perforce@freebsd.org; Wed, 9 May 2007 18:53:55 GMT (envelope-from fli@FreeBSD.org) Date: Wed, 9 May 2007 18:53:55 GMT Message-Id: <200705091853.l49IrtnO038107@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119587 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 18:53:55 -0000 http://perforce.freebsd.org/chv.cgi?CH=119587 Change 119587 by fli@fli_genesis on 2007/05/09 18:52:54 Add a function to expand the size of an existing buffer segment Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_buf.c#3 edit Differences ... ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_buf.c#3 (text+ko) ==== @@ -190,6 +190,26 @@ MDNS_BP_UNLOCK(bp); } +int +mdns_buf_expand(struct mdns_buf *buf, size_t len) +{ + char *p; + + if (len == 0) + len = buf->b_sz * 2; + else if (len < buf->b_len) + return (-1); + + p = realloc(buf->b_buf, len); + if (p == NULL) + return (-1); + + buf->b_sz = len; + buf->b_buf = p; + buf->b_flags |= MDNS_BUF_TEMP; + return (0); +} + /* * Merge a chain of buffer segments into one continuous buffer */ From owner-p4-projects@FreeBSD.ORG Wed May 9 18:54:57 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 732F716A40F; Wed, 9 May 2007 18:54:57 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 38E4316A40B for ; Wed, 9 May 2007 18:54:57 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 18E1513C487 for ; Wed, 9 May 2007 18:54:57 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49IsuQM038374 for ; Wed, 9 May 2007 18:54:56 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49IsuZs038371 for perforce@freebsd.org; Wed, 9 May 2007 18:54:56 GMT (envelope-from fli@FreeBSD.org) Date: Wed, 9 May 2007 18:54:56 GMT Message-Id: <200705091854.l49IsuZs038371@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119588 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 18:54:57 -0000 http://perforce.freebsd.org/chv.cgi?CH=119588 Change 119588 by fli@fli_genesis on 2007/05/09 18:54:40 Remove variable names from prototype left in by accident. Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_buf.h#3 edit Differences ... ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_buf.h#3 (text+ko) ==== @@ -91,8 +91,9 @@ struct mdns_bufhead *, size_t, int); void mdns_buf_free(struct mdns_bufpool *, struct mdns_bufhead *, struct mdns_buf *, int); -struct mdns_buf * mdns_buf_merge(struct mdns_bufpool *bp, - struct mdns_bufhead *bh, int); +struct mdns_buf * mdns_buf_merge(struct mdns_bufpool *, + struct mdns_bufhead *, int); +int mdns_buf_expand(struct mdns_buf *, size_t); void mdns_bufpool_setsize(struct mdns_bufpool *, size_t); size_t mdns_bufpool_getsize(struct mdns_bufpool *); From owner-p4-projects@FreeBSD.ORG Wed May 9 19:02:57 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8EF8116A406; Wed, 9 May 2007 19:02:57 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4A63E16A400 for ; Wed, 9 May 2007 19:02:57 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.freebsd.org (Postfix) with ESMTP id F008713C44C for ; Wed, 9 May 2007 19:02:56 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from localhost.corp.yahoo.com (john@localhost [127.0.0.1]) (authenticated bits=0) by server.baldwin.cx (8.13.8/8.13.8) with ESMTP id l49J2spK093833; Wed, 9 May 2007 15:02:54 -0400 (EDT) (envelope-from jhb@freebsd.org) From: John Baldwin To: Rui Paulo Date: Wed, 9 May 2007 14:57:38 -0400 User-Agent: KMail/1.9.6 References: <200705062110.l46LAZqE011583@repoman.freebsd.org> In-Reply-To: <200705062110.l46LAZqE011583@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200705091457.39167.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [127.0.0.1]); Wed, 09 May 2007 15:02:54 -0400 (EDT) X-Virus-Scanned: ClamAV 0.88.3/3224/Wed May 9 11:25:29 2007 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: Perforce Change Reviews Subject: Re: PERFORCE change 119371 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 19:02:57 -0000 On Sunday 06 May 2007 05:10:35 pm Rui Paulo wrote: > http://perforce.freebsd.org/chv.cgi?CH=119371 > > Change 119371 by rpaulo@rpaulo_epsilon on 2007/05/06 21:10:15 > > We don't need any scheduler support because: > 1) msrtemp is a child of cpu - this implies that every > rdmsr/cpuid instruction will be executed on that CPU. No, that isn't true. You do need to use sched_bind() for that so you are really on the desired CPU when you read the MSR. > 2) rdmsr/cpuid are atomic, so I don't need to worry about > any threads interfering. This is true. -- John Baldwin From owner-p4-projects@FreeBSD.ORG Wed May 9 19:03:07 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BA63A16A405; Wed, 9 May 2007 19:03:07 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8057616A403 for ; Wed, 9 May 2007 19:03:07 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 7041613C480 for ; Wed, 9 May 2007 19:03:07 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49J37E6040718 for ; Wed, 9 May 2007 19:03:07 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49J37Bh040704 for perforce@freebsd.org; Wed, 9 May 2007 19:03:07 GMT (envelope-from fli@FreeBSD.org) Date: Wed, 9 May 2007 19:03:07 GMT Message-Id: <200705091903.l49J37Bh040704@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119589 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 19:03:08 -0000 http://perforce.freebsd.org/chv.cgi?CH=119589 Change 119589 by fli@fli_genesis on 2007/05/09 19:02:07 o Remove old debugging code o Fix automatic packet and buffer segmentation Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_packet.c#3 edit Differences ... ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_packet.c#3 (text+ko) ==== @@ -40,20 +40,6 @@ #include "stack_mdns.h" #include "hash.h" -#ifdef DEBUG -# define HEXDUMP(_hdbuf, _hdlen) do { \ - { \ - int __hd_tmp; \ - char *__hd_buf = (char *)(_hdbuf); \ - for (__hd_tmp = 0; __hd_tmp < (int)(_hdlen); __hd_tmp++) \ - printf("%.2x ", (unsigned char)__hd_buf[__hd_tmp]); \ - printf("\n"); \ - } \ -} while(0) -#else -# define HEXDUMP(_hdbuf, _hdlen) -#endif - static ssize_t utf8_encode(wchar_t *, char *, size_t); static ssize_t utf8_decode(char *, size_t, wchar_t *, size_t); static inline char * skipname(char *, char *); @@ -580,32 +566,42 @@ char nam[MDNS_RECORD_LEN + 1], namc[MDNS_RECORD_LEN]; struct mdns_packet *pkg, *hpkg; struct mdns_bufpool *bp; - struct mdns_buf *buf, *buf2; + struct mdns_buf *buf; struct mdns_header *h; struct mdns_qsec qsec; ssize_t qname_len, namlen, namlen2; int i, error, flags; uint16_t class; + bp = pc->pc_md->md_bp; pkg = pc->pc_pkg; if (pkg == NULL) { errno = EINVAL; return (-1); } + if (pkg->p_bufseg(p_questions) == NULL) { + pkg->p_bufseg(p_questions) = mdns_buf_alloc(bp, &pkg->p_buflist, 0, 0); + pkg->p_buf(p_questions) = MDNS_BUF(pkg->p_bufseg(p_questions)); + } + buf = pkg->p_bufseg(p_questions); + qname_len = wcslen(qs->q_name); i = qname_len + 1 + MDNS_QSET_HLEN; - buf = MDNS_BUFH(&pkg->p_buflist); - bp = pc->pc_md->md_bp; /* - * Expand packet chain or buffer chain if needed + * Expand packet chains, buffer chains and buffers if needed */ - if ((i + MDNS_BUFLEN(buf)) > MDNS_BUFSZ(buf)) { - if (pc->pc_flags & MDNS_PC_CONT) { - buf = mdns_buf_alloc(bp, &pkg->p_buflist, 0, 0); + if (pc->pc_flags & MDNS_PC_CONT) { + if ((i + MDNS_BUFLEN(buf)) > MDNS_BUFSZ(buf)) { + error = mdns_buf_expand(buf, 0); + if (error != 0) + return (-1); + pkg->p_buf(p_questions) = MDNS_BUF(buf); } - else { + } + else { + if (pkg->p_len + i > pc->pc_md->md_maxpkgsz) { h = (struct mdns_header *)pkg->p_buf(p_hdr); h->h_tc = 1; pkg = pkg_alloc(pc); @@ -614,6 +610,14 @@ flags |= MDNS_HEAD_AA; mdns_pkg_sethdr(pc, 0, flags); buf = mdns_buf_alloc(pc->pc_md->md_bp, &pkg->p_buflist, 0, 0); + pkg->p_bufseg(p_questions) = buf; + pkg->p_buf(p_questions) = MDNS_BUF(buf); + } + else if ((i + MDNS_BUFLEN(buf)) > MDNS_BUFSZ(buf)) { + error = mdns_buf_expand(buf, 0); + if (error != 0) + return (-1); + pkg->p_buf(p_questions) = MDNS_BUF(buf); } } @@ -629,29 +633,24 @@ } namlen2 = MDNS_RECORD_LEN; - error = name_compress(pkg->p_nc_tbl, nam, namlen, namc, &namlen2, pkg->p_len); + error = name_compress(pkg->p_nc_tbl, nam, namlen, namc, &namlen2, + pkg->p_len); if (error != 0) { return (-1); } namlen = namlen2; - if (pkg->p_bufseg(p_questions) == NULL) { - pkg->p_bufseg(p_questions) = mdns_buf_alloc(bp, &pkg->p_buflist, 0, 0); - pkg->p_buf(p_questions) = MDNS_BUF(pkg->p_bufseg(p_questions)); - } + memcpy(MDNS_BUFPOS(buf), namc, namlen); + MDNS_BUFLEN(buf) += namlen; - buf2 = pkg->p_bufseg(p_questions); - memcpy(MDNS_BUFPOS(buf2), namc, namlen); - MDNS_BUFLEN(buf2) += namlen; - class = qs->q_class; if (unicast) class |= 0x8000; qsec.qs_class = ntohs(class); qsec.qs_type = htons(qs->q_type); - memcpy(MDNS_BUFPOS(buf2), &qsec, sizeof(struct mdns_qsec)); - MDNS_BUFLEN(buf2) += MDNS_QSET_HLEN; + memcpy(MDNS_BUFPOS(buf), &qsec, sizeof(struct mdns_qsec)); + MDNS_BUFLEN(buf) += MDNS_QSET_HLEN; pkg->p_len += MDNS_QSET_HLEN + namlen; if (pc->pc_flags & MDNS_PC_CONT) @@ -717,92 +716,84 @@ char nam[MDNS_RECORD_LEN + 1], namc[MDNS_RECORD_LEN]; struct mdns_packet *pkg; struct mdns_bufpool *bp; - struct mdns_buf *buf, *buf2; + struct mdns_buf *buf; struct mdns_header *h; - ssize_t name_len, namlen, namlen2; + ssize_t namlen, namlen2; int i, error, flags; uint16_t class; struct mdns_rsec rsec; pkg = pc->pc_pkg; - name_len = wcslen(rs->r_name); - i = name_len + 1 + MDNS_RRSET_HLEN + rs->r_datalen; - buf = MDNS_BUFH(&pkg->p_buflist); + namlen = wcslen(rs->r_name); + i = namlen + 1 + MDNS_RRSET_HLEN + rs->r_datalen; bp = pc->pc_md->md_bp; + if (section == SEC_ANSWERS) + buf = pkg->p_bufseg(p_answers); + else if (section == SEC_AUTHORITY) + buf = pkg->p_bufseg(p_auths); + else { + errno = EINVAL; + return (-1); + } + /* - * Expand packet chain or buffer chain if needed + * Expand packet chains, buffer chains and buffers if needed */ - if ((i + MDNS_BUFLEN(buf)) > MDNS_BUFSZ(buf)) { - if (pc->pc_flags & MDNS_PC_CONT) { - buf = mdns_buf_alloc(bp, &pkg->p_buflist, 0, 0); + if (buf != NULL && (pc->pc_flags & MDNS_PC_CONT)) { + if ((i + MDNS_BUFLEN(buf)) > MDNS_BUFSZ(buf)) { + error = mdns_buf_expand(buf, 0); + if (error != 0) + return (-1); + pkg->p_data[section].bufptr = MDNS_BUF(buf); } - else { + } + else { + if (pkg->p_len + i > pc->pc_md->md_maxpkgsz) { h = (struct mdns_header *)pkg->p_buf(p_hdr); h->h_tc = 1; pkg = pkg_alloc(pc); - flags = MDNS_HEAD_QUERY; + flags = MDNS_HEAD_RESP; if (h->h_aa) flags |= MDNS_HEAD_AA; mdns_pkg_sethdr(pc, 0, flags); - buf = mdns_buf_alloc(bp, &pkg->p_buflist, 0, 0); + buf = NULL; + } + else if (buf != NULL && (i + MDNS_BUFLEN(buf)) > MDNS_BUFSZ(buf)) { + error = mdns_buf_expand(buf, 0); + if (error != 0) + return (-1); + pkg->p_data[section].bufptr = MDNS_BUF(buf); } } - namlen = utf8_encode(rs->r_name, nam, MDNS_RECORD_LEN); - if (namlen < 0) { - errno = EINVAL; - return (-1); - } - - if (pkg->p_nc_tbl == NULL) { - pkg->p_nc_tbl = malloc(sizeof(struct hashtbl)); - hashtbl_init(pkg->p_nc_tbl, 128); - } - - namlen2 = MDNS_RECORD_LEN; - error = name_compress(pkg->p_nc_tbl, nam, name_len, namc, &namlen2, - pkg->p_len); - if (error != 0) { - errno = EINVAL; - return (-1); - } - name_len = namlen2; - - if (section == SEC_ANSWERS) { - buf2 = pkg->p_bufseg(p_answers); - } - else if (section == SEC_AUTHORITY) { - buf2 = pkg->p_bufseg(p_auths); - } - else { - errno = EINVAL; - return (-1); - } - - if (buf2 == NULL) { + /* + * If no buffer segments exists for this section, allocate one and + * any segments that may preceed them. + */ + if (buf == NULL) { switch (section) { case SEC_QUESTIONS: if (pkg->p_bufseg(p_questions) == NULL) { - buf2 = mdns_buf_alloc(bp, &pkg->p_buflist, 0, 0); - pkg->p_bufseg(p_questions) = buf2; - pkg->p_buf(p_questions) = MDNS_BUF(buf2); + buf = mdns_buf_alloc(bp, &pkg->p_buflist, 0, 0); + pkg->p_bufseg(p_questions) = buf; + pkg->p_buf(p_questions) = MDNS_BUF(buf); if (section == SEC_QUESTIONS) break; } case SEC_ANSWERS: if (pkg->p_bufseg(p_answers) == NULL) { - buf2 = mdns_buf_alloc(bp, &pkg->p_buflist, 0, 0); - pkg->p_bufseg(p_answers) = buf2; - pkg->p_buf(p_answers) = MDNS_BUF(buf2); + buf = mdns_buf_alloc(bp, &pkg->p_buflist, 0, 0); + pkg->p_bufseg(p_answers) = buf; + pkg->p_buf(p_answers) = MDNS_BUF(buf); if (section == SEC_ANSWERS) break; } case SEC_AUTHORITY: if (pkg->p_bufseg(p_auths) == NULL) { - buf2 = mdns_buf_alloc(bp, &pkg->p_buflist, 0, 0); - pkg->p_bufseg(p_auths) = buf2; - pkg->p_buf(p_auths) = MDNS_BUF(buf2); + buf = mdns_buf_alloc(bp, &pkg->p_buflist, 0, 0); + pkg->p_bufseg(p_auths) = buf; + pkg->p_buf(p_auths) = MDNS_BUF(buf); if (section == SEC_AUTHORITY) break; } @@ -813,8 +804,28 @@ } } - memcpy(MDNS_BUFPOS(buf2), namc, namlen); - MDNS_BUFLEN(buf2) += namlen; + namlen = utf8_encode(rs->r_name, nam, MDNS_RECORD_LEN); + if (namlen < 0) { + errno = EINVAL; + return (-1); + } + + if (pkg->p_nc_tbl == NULL) { + pkg->p_nc_tbl = malloc(sizeof(struct hashtbl)); + hashtbl_init(pkg->p_nc_tbl, 128); + } + + namlen2 = MDNS_RECORD_LEN; + error = name_compress(pkg->p_nc_tbl, nam, namlen, namc, &namlen2, + pkg->p_len); + if (error != 0) { + errno = EINVAL; + return (-1); + } + namlen = namlen2; + + memcpy(MDNS_BUFPOS(buf), namc, namlen); + MDNS_BUFLEN(buf) += namlen; rsec.rs_type = htons(rs->r_type); class = rs->r_class; @@ -824,11 +835,11 @@ rsec.rs_ttl = htonl(rs->r_ttl); rsec.rs_rdlen = htons(rs->r_datalen); - memcpy(MDNS_BUFPOS(buf2), &rsec, MDNS_RRSET_HLEN); - MDNS_BUFLEN(buf2) += MDNS_RRSET_HLEN; + memcpy(MDNS_BUFPOS(buf), &rsec, MDNS_RRSET_HLEN); + MDNS_BUFLEN(buf) += MDNS_RRSET_HLEN; - memcpy(MDNS_BUFPOS(buf2), rs->r_data, rs->r_datalen); - MDNS_BUFLEN(buf2) += rs->r_datalen; + memcpy(MDNS_BUFPOS(buf), rs->r_data, rs->r_datalen); + MDNS_BUFLEN(buf) += rs->r_datalen; pkg->p_len += namlen + MDNS_RRSET_HLEN + rs->r_datalen; @@ -886,7 +897,8 @@ if (pkg->p_buf(p_questions) == NULL) { pkg->p_bufseg(p_questions) = hbuf; pkg->p_buf(p_questions) = MDNS_BUF(hbuf) + MDNS_HEADER_LEN; - pkg->p_secoff(p_questions) = malloc(sizeof(char *) * ntohs(h->h_qcount)); + pkg->p_secoff(p_questions) = + malloc(sizeof(char *) * ntohs(h->h_qcount)); bzero(pkg->p_secoff(p_questions), sizeof(char *) * ntohs(h->h_qcount)); } From owner-p4-projects@FreeBSD.ORG Wed May 9 19:05:10 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A55F016A405; Wed, 9 May 2007 19:05:10 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 743AA16A403 for ; Wed, 9 May 2007 19:05:10 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 6467013C448 for ; Wed, 9 May 2007 19:05:10 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49J5AOo041284 for ; Wed, 9 May 2007 19:05:10 GMT (envelope-from lulf@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49J59ub041281 for perforce@freebsd.org; Wed, 9 May 2007 19:05:09 GMT (envelope-from lulf@FreeBSD.org) Date: Wed, 9 May 2007 19:05:09 GMT Message-Id: <200705091905.l49J59ub041281@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to lulf@FreeBSD.org using -f From: Ulf Lilleengen To: Perforce Change Reviews Cc: Subject: PERFORCE change 119590 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 19:05:11 -0000 http://perforce.freebsd.org/chv.cgi?CH=119590 Change 119590 by lulf@lulf_vimes on 2007/05/09 19:04:17 - Modify gv_resetconfig to use the event system in a different way. Instead of posting lots of events, create a resetconfig event that will be posted when userland requests it. Affected files ... .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum.c#8 edit .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum.h#6 edit .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_rm.c#5 edit .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_var.h#6 edit Differences ... ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum.c#8 (text+ko) ==== @@ -345,7 +345,7 @@ gv_rename(gp, req); } else if (!strcmp(verb, "resetconfig")) { - gv_resetconfig(sc, req); + gv_post_event(sc, GV_EVENT_RESET_CONFIG, sc, NULL, NULL); #if 0 } else if (!strcmp(verb, "start")) { @@ -560,6 +560,14 @@ g_free(ev->arg3); break; + case GV_EVENT_RESET_CONFIG: + printf("VINUM: event 'resetconfig'\n"); + err = gv_resetconfig(sc); + if (err) + printf("VINUM: error resetting config: " + "%d\n", err); + break; + case GV_EVENT_THREAD_EXIT: printf("VINUM: event 'thread exit'\n"); g_free(ev); ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum.h#6 (text+ko) ==== @@ -51,7 +51,7 @@ /* geom_vinum_rm.c */ void gv_remove(struct g_geom *, struct gctl_req *); -int gv_resetconfig(struct gv_softc *, struct gctl_req *); +int gv_resetconfig(struct gv_softc *); void gv_rm_sd(struct gv_softc *sc, struct gv_sd *s); void gv_rm_drive(struct gv_softc *, struct gv_drive *); void gv_rm_plex(struct gv_softc *, struct gv_plex *); ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_rm.c#5 (text+ko) ==== @@ -154,7 +154,7 @@ /* Resets configuration */ int -gv_resetconfig(struct gv_softc *sc, struct gctl_req *req) +gv_resetconfig(struct gv_softc *sc) { struct gv_drive *d, *d2; struct gv_volume *v, *v2; @@ -164,19 +164,18 @@ /* First make sure nothing is open. */ LIST_FOREACH_SAFE(d, &sc->drives, drive, d2) { if (gv_consumer_is_open(d->consumer)) { - gctl_error(req, "drive '%s' is busy", d->name); return (GV_ERR_ISOPEN); } } /* Then if not, we remove everything. */ + LIST_FOREACH_SAFE(d, &sc->drives, drive, d2) + gv_rm_drive(sc, d); + LIST_FOREACH_SAFE(s, &sc->subdisks, sd, s2) + gv_rm_sd(sc, s); + LIST_FOREACH_SAFE(p, &sc->plexes, plex, p2) + gv_rm_plex(sc, p); LIST_FOREACH_SAFE(v, &sc->volumes, volume, v2) - gv_post_event(sc, GV_EVENT_RM_VOLUME, v, NULL, NULL); - LIST_FOREACH_SAFE(p, &sc->plexes, plex, p2) - gv_post_event(sc, GV_EVENT_RM_PLEX, p, NULL, NULL); - LIST_FOREACH_SAFE(s, &sc->subdisks, sd, s2) - gv_post_event(sc, GV_EVENT_RM_SD, s, NULL, NULL); - LIST_FOREACH_SAFE(d, &sc->drives, drive, d2) - gv_post_event(sc, GV_EVENT_RM_DRIVE, d, NULL, NULL); + gv_rm_vol(sc, v); gv_post_event(sc, GV_EVENT_SAVE_CONFIG, sc, NULL, NULL); ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_var.h#6 (text+ko) ==== @@ -189,6 +189,7 @@ #define GV_EVENT_SET_DRIVE_STATE 14 #define GV_EVENT_SET_VOL_STATE 15 #define GV_EVENT_SET_PLEX_STATE 16 +#define GV_EVENT_RESET_CONFIG 17 struct gv_event { int type; From owner-p4-projects@FreeBSD.ORG Wed May 9 19:15:39 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4DA8516A4CE; Wed, 9 May 2007 19:15:39 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6D13B16A47D for ; Wed, 9 May 2007 19:15:38 +0000 (UTC) (envelope-from sam@errno.com) Received: from ebb.errno.com (ebb.errno.com [69.12.149.25]) by mx1.freebsd.org (Postfix) with ESMTP id 00A3513C53B for ; Wed, 9 May 2007 19:15:35 +0000 (UTC) (envelope-from sam@errno.com) Received: from trouble.errno.com (trouble.errno.com [10.0.0.248]) (authenticated bits=0) by ebb.errno.com (8.13.6/8.12.6) with ESMTP id l49JFYUc013701 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 9 May 2007 12:15:35 -0700 (PDT) (envelope-from sam@errno.com) Message-ID: <46421DD9.5000500@errno.com> Date: Wed, 09 May 2007 12:15:37 -0700 From: Sam Leffler User-Agent: Thunderbird 2.0.0.0 (X11/20070430) MIME-Version: 1.0 To: Fredrik Lindberg References: <200705082229.l48MTrbh069129@repoman.freebsd.org> <20070509070626.GA41419@freebsd.org> <4641818B.4030507@FreeBSD.org> <20070509103404.D71759@fledge.watson.org> <464199D9.7020908@shapeshifter.se> <9bbcef730705090710h653dc15bjb7a1159484c1c48b@mail.gmail.com> <4641E19F.80809@shapeshifter.se> In-Reply-To: <4641E19F.80809@shapeshifter.se> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews , Ivan Voras Subject: Re: PERFORCE change 119527 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 19:15:39 -0000 Fredrik Lindberg wrote: > Ivan Voras wrote: >> On 09/05/07, Fredrik Lindberg wrote: >> >>> Ok, I'll take a look at the various queue.h shipped with the major BSDs, >>> and see if I can find a common subset that suits my needs (without too >>> many compromises) and based on the findings I'll reconsider my choice. >> >> I use sys/queue.h in my userland applications all the time, there's no >> problem there. >> > > And it works on {Net,Open}BSD?, I could swear that I've been bitten by > sys/queue.h in the past when moving stuff between FreeBSD and NetBSD. > Could have been those TAILQ-macros Robert Watson talked about though. I think SIMPLEQ has different names; I just add portability shims to rename things. Sam From owner-p4-projects@FreeBSD.ORG Wed May 9 19:19:28 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 23A5116A404; Wed, 9 May 2007 19:19:28 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CD4F316A402 for ; Wed, 9 May 2007 19:19:27 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.freebsd.org (Postfix) with ESMTP id 7AC8513C45B for ; Wed, 9 May 2007 19:19:27 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from localhost.corp.yahoo.com (john@localhost [127.0.0.1]) (authenticated bits=0) by server.baldwin.cx (8.13.8/8.13.8) with ESMTP id l49JJPM4093929; Wed, 9 May 2007 15:19:25 -0400 (EDT) (envelope-from jhb@freebsd.org) From: John Baldwin To: Fredrik Lindberg Date: Wed, 9 May 2007 15:05:39 -0400 User-Agent: KMail/1.9.6 References: <200705082229.l48MTrbh069129@repoman.freebsd.org> <9bbcef730705090710h653dc15bjb7a1159484c1c48b@mail.gmail.com> <4641E19F.80809@shapeshifter.se> In-Reply-To: <4641E19F.80809@shapeshifter.se> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200705091505.39795.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [127.0.0.1]); Wed, 09 May 2007 15:19:25 -0400 (EDT) X-Virus-Scanned: ClamAV 0.88.3/3224/Wed May 9 11:25:29 2007 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: Perforce Change Reviews , Ivan Voras Subject: Re: PERFORCE change 119527 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 19:19:28 -0000 On Wednesday 09 May 2007 10:58:39 am Fredrik Lindberg wrote: > Ivan Voras wrote: > > On 09/05/07, Fredrik Lindberg wrote: > > > >> Ok, I'll take a look at the various queue.h shipped with the major BSDs, > >> and see if I can find a common subset that suits my needs (without too > >> many compromises) and based on the findings I'll reconsider my choice. > > > > I use sys/queue.h in my userland applications all the time, there's no > > problem there. > > > > And it works on {Net,Open}BSD?, I could swear that I've been bitten by > sys/queue.h in the past when moving stuff between FreeBSD and NetBSD. > Could have been those TAILQ-macros Robert Watson talked about though. Just include your own copy of sys/queue.h for systems whose queue.h isn't up to snuff. You don't have to use the OS-native one, it's ok to carry one around, but then you have one less copy of the wheel. -- John Baldwin From owner-p4-projects@FreeBSD.ORG Wed May 9 19:25:48 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3625516A402; Wed, 9 May 2007 19:25:48 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CF86516A403 for ; Wed, 9 May 2007 19:25:47 +0000 (UTC) (envelope-from fli@shapeshifter.se) Received: from mx1.h3q.net (mx1.h3q.net [212.37.5.30]) by mx1.freebsd.org (Postfix) with ESMTP id 88FEF13C45E for ; Wed, 9 May 2007 19:25:47 +0000 (UTC) (envelope-from fli@shapeshifter.se) Received: from [192.168.1.100] (81-232-22-115-no50.tbcn.telia.com [81.232.22.115]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: fli@shapeshifter.se) by mx1.h3q.net (Postfix) with ESMTP id D766A78C20; Wed, 9 May 2007 21:25:45 +0200 (CEST) Message-ID: <46422038.4030409@shapeshifter.se> Date: Wed, 09 May 2007 21:25:44 +0200 From: Fredrik Lindberg User-Agent: Thunderbird 2.0.0.0 (X11/20070420) MIME-Version: 1.0 To: John Baldwin References: <200705082229.l48MTrbh069129@repoman.freebsd.org> <9bbcef730705090710h653dc15bjb7a1159484c1c48b@mail.gmail.com> <4641E19F.80809@shapeshifter.se> <200705091505.39795.jhb@freebsd.org> In-Reply-To: <200705091505.39795.jhb@freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews , Ivan Voras Subject: Re: PERFORCE change 119527 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 19:25:48 -0000 John Baldwin wrote: > On Wednesday 09 May 2007 10:58:39 am Fredrik Lindberg wrote: >> Ivan Voras wrote: >>> On 09/05/07, Fredrik Lindberg wrote: >>> >>>> Ok, I'll take a look at the various queue.h shipped with the major BSDs, >>>> and see if I can find a common subset that suits my needs (without too >>>> many compromises) and based on the findings I'll reconsider my choice. >>> I use sys/queue.h in my userland applications all the time, there's no >>> problem there. >>> >> And it works on {Net,Open}BSD?, I could swear that I've been bitten by >> sys/queue.h in the past when moving stuff between FreeBSD and NetBSD. >> Could have been those TAILQ-macros Robert Watson talked about though. > > Just include your own copy of sys/queue.h for systems whose queue.h isn't up > to snuff. You don't have to use the OS-native one, it's ok to carry one > around, but then you have one less copy of the wheel. > Yes, that's true. We can drop this discussion/bikeshed now, I submitted a change ~3 hours ago :) http://perforce.freebsd.org/chv.cgi?CH=119564 Change 119564 by fli@fli_genesis on 2007/05/09 16:13:23 Nuke my own-rolled list and replace with sys/queue.h From owner-p4-projects@FreeBSD.ORG Wed May 9 19:33:14 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8B4EF16A40D; Wed, 9 May 2007 19:33:14 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3459D16A40B for ; Wed, 9 May 2007 19:33:14 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from wr-out-0506.google.com (wr-out-0506.google.com [64.233.184.239]) by mx1.freebsd.org (Postfix) with ESMTP id E53F713C4AD for ; Wed, 9 May 2007 19:33:13 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: by wr-out-0506.google.com with SMTP id 70so320922wra for ; Wed, 09 May 2007 12:33:13 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=oUASi9fmqbC6rk9opjo6+JGSazq1oI7VC6gpzyiDDNucXFEeguDBIGDCSiDnssG4QcJ4gXiO+MCEmovnJUMPdwmbm9F1WNw6bwmt3RBHrxyCNB6XZtfbIEF9JbEhULkKJDdptTRIQzKHZS8jFgMt02pWAmSWXfQlK8NSRdjtvLs= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=AJPS5YyH+a3fg//MhvTrbqmXeAPY0TIhUhBDePifsEHYO3d+GSFeoLCCkWFKriJoTEJBhxmquXYfd57H4B/nA675Gsk1RsGCddH4feHqUDFG7z5aOE9pfRnBbX0vczXrGx3h2Z7a2p0VexbwlqPjWGz6TgXkwySvlpw9luYTpWQ= Received: by 10.78.145.5 with SMTP id s5mr246760hud.1178739192049; Wed, 09 May 2007 12:33:12 -0700 (PDT) Received: by 10.78.120.4 with HTTP; Wed, 9 May 2007 12:33:11 -0700 (PDT) Message-ID: <3bbf2fe10705091233t405121d2qda9a058ecf4124bc@mail.gmail.com> Date: Wed, 9 May 2007 21:33:11 +0200 From: "Attilio Rao" Sender: asmrookie@gmail.com To: "John Baldwin" In-Reply-To: <200705091457.39167.jhb@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <200705062110.l46LAZqE011583@repoman.freebsd.org> <200705091457.39167.jhb@freebsd.org> X-Google-Sender-Auth: cbbd4d5d7d3cf3d4 Cc: Perforce Change Reviews , Rui Paulo Subject: Re: PERFORCE change 119371 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 19:33:14 -0000 2007/5/9, John Baldwin : > On Sunday 06 May 2007 05:10:35 pm Rui Paulo wrote: > > http://perforce.freebsd.org/chv.cgi?CH=119371 > > > > Change 119371 by rpaulo@rpaulo_epsilon on 2007/05/06 21:10:15 > > > > We don't need any scheduler support because: > > 1) msrtemp is a child of cpu - this implies that every > > rdmsr/cpuid instruction will be executed on that CPU. > > No, that isn't true. You do need to use sched_bind() for that so you are > really on the desired CPU when you read the MSR. I think he just needs msr of the cpu where curthread is executed, so any scheduler lock should be needed. If he needs to know msr of a particular CPU he really needs so, but it doesn't seem the case. Attilio -- Peace can only be achieved by understanding - A. Einstein From owner-p4-projects@FreeBSD.ORG Wed May 9 19:33:36 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E4A2316A40A; Wed, 9 May 2007 19:33:35 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B458916A400 for ; Wed, 9 May 2007 19:33:35 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from ik-out-1112.google.com (ik-out-1112.google.com [66.249.90.181]) by mx1.freebsd.org (Postfix) with ESMTP id 4AE7813C480 for ; Wed, 9 May 2007 19:33:35 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: by ik-out-1112.google.com with SMTP id c29so194777ika for ; Wed, 09 May 2007 12:33:34 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=N9cyVb65vwr9pN5Q6W4arK0ixo15hGdvuJ18bsb7XmLloFLPldHZ4U1xht9hD40RBDQqL+SEOv/pkNhsfdDRBXbhEYkDkNQ2RofRMUYRU/PNjF7l+LoR/NCWG7HOmNDjoBgV8qVqHQ3MJ1UKb7Wp+xzmJqMi+SxGIgnkEOcLa1Y= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=lycYT7H20zHE/j4ncGPoCdT8JEKtiH0vCpS9wYDMgaMn/FftmELxNwmYxFIfcq+vO2zEyQp/dh5IgGtktKI63FMkyGydiTw1m8GaGF3x1eMirB2iUDORqpbWXy3OFq4obPuVxLS9AyyB/qpyBfFYccxe0RWva4I5MnLzZ+2l5Bk= Received: by 10.78.183.15 with SMTP id g15mr215995huf.1178739214110; Wed, 09 May 2007 12:33:34 -0700 (PDT) Received: by 10.78.120.4 with HTTP; Wed, 9 May 2007 12:33:34 -0700 (PDT) Message-ID: <3bbf2fe10705091233l2358359dv804897dd85cb6a42@mail.gmail.com> Date: Wed, 9 May 2007 21:33:34 +0200 From: "Attilio Rao" Sender: asmrookie@gmail.com To: "John Baldwin" In-Reply-To: <3bbf2fe10705091233t405121d2qda9a058ecf4124bc@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <200705062110.l46LAZqE011583@repoman.freebsd.org> <200705091457.39167.jhb@freebsd.org> <3bbf2fe10705091233t405121d2qda9a058ecf4124bc@mail.gmail.com> X-Google-Sender-Auth: a9dda339a8c9c66e Cc: Perforce Change Reviews , Rui Paulo Subject: Re: PERFORCE change 119371 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 19:33:36 -0000 2007/5/9, Attilio Rao : > 2007/5/9, John Baldwin : > > On Sunday 06 May 2007 05:10:35 pm Rui Paulo wrote: > > > http://perforce.freebsd.org/chv.cgi?CH=119371 > > > > > > Change 119371 by rpaulo@rpaulo_epsilon on 2007/05/06 21:10:15 > > > > > > We don't need any scheduler support because: > > > 1) msrtemp is a child of cpu - this implies that every > > > rdmsr/cpuid instruction will be executed on that CPU. > > > > No, that isn't true. You do need to use sched_bind() for that so you are > > really on the desired CPU when you read the MSR. > > I think he just needs msr of the cpu where curthread is executed, so > any scheduler lock should be needed. s/should/shouldn't. Attilio -- Peace can only be achieved by understanding - A. Einstein From owner-p4-projects@FreeBSD.ORG Wed May 9 19:43:48 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C44F116A408; Wed, 9 May 2007 19:43:47 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9EEEE16A404; Wed, 9 May 2007 19:43:47 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.freebsd.org (Postfix) with ESMTP id 44DA713C44C; Wed, 9 May 2007 19:43:45 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from localhost.corp.yahoo.com (john@localhost [127.0.0.1]) (authenticated bits=0) by server.baldwin.cx (8.13.8/8.13.8) with ESMTP id l49JhbDQ094093; Wed, 9 May 2007 15:43:37 -0400 (EDT) (envelope-from jhb@freebsd.org) From: John Baldwin To: "Attilio Rao" Date: Wed, 9 May 2007 15:43:32 -0400 User-Agent: KMail/1.9.6 References: <200705062110.l46LAZqE011583@repoman.freebsd.org> <200705091457.39167.jhb@freebsd.org> <3bbf2fe10705091233t405121d2qda9a058ecf4124bc@mail.gmail.com> In-Reply-To: <3bbf2fe10705091233t405121d2qda9a058ecf4124bc@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200705091543.33002.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [127.0.0.1]); Wed, 09 May 2007 15:43:37 -0400 (EDT) X-Virus-Scanned: ClamAV 0.88.3/3224/Wed May 9 11:25:29 2007 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: Perforce Change Reviews , Rui Paulo Subject: Re: PERFORCE change 119371 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 19:43:48 -0000 On Wednesday 09 May 2007 03:33:11 pm Attilio Rao wrote: > 2007/5/9, John Baldwin : > > On Sunday 06 May 2007 05:10:35 pm Rui Paulo wrote: > > > http://perforce.freebsd.org/chv.cgi?CH=119371 > > > > > > Change 119371 by rpaulo@rpaulo_epsilon on 2007/05/06 21:10:15 > > > > > > We don't need any scheduler support because: > > > 1) msrtemp is a child of cpu - this implies that every > > > rdmsr/cpuid instruction will be executed on that CPU. > > > > No, that isn't true. You do need to use sched_bind() for that so you are > > really on the desired CPU when you read the MSR. > > I think he just needs msr of the cpu where curthread is executed, so > any scheduler lock should be needed. > If he needs to know msr of a particular CPU he really needs so, but it > doesn't seem the case. The sysctl is per-CPU, so he needs the msr from a specific CPU in the sysctl handler. I.e., it's like dev.cpu.0.temp or some such. -- John Baldwin From owner-p4-projects@FreeBSD.ORG Wed May 9 20:19:44 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 198B216A40A; Wed, 9 May 2007 20:19:44 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C7FE816A408 for ; Wed, 9 May 2007 20:19:43 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from wr-out-0506.google.com (wr-out-0506.google.com [64.233.184.233]) by mx1.freebsd.org (Postfix) with ESMTP id 6B22113C45B for ; Wed, 9 May 2007 20:19:43 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: by wr-out-0506.google.com with SMTP id 70so337272wra for ; Wed, 09 May 2007 13:19:42 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=MzIUs96iHYEHv74Z6CTj2BmnoSY25+ypSuo883DkXIx98QgFZZgqDNdKJ5HJCWAwF0T01covwX9Jtoma45WHOeT/ZmeVT9Nd7+n9KqatdFAx73uoscu5TZhVO+ybq1bfPxY4y3Xi0GWGLK6vx1E9QY827L6q86R5gcTca/fCVMg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=s0rqbcaKpsIyCy+GQY483VLB36jGDAjJdjfXjQyAIVw7JZ0L9/jPmpemGGOeRsYUnzAPbzIHwoch27uSMBArkw5Is5q6GiARzU7KZ+wwhmNfC6x/d3Hv3JY1YK0uxMm1JZaRw21Tffn8/Wu0XQ7hR9+YMwfJ2QKwHs8n1pxpXkE= Received: by 10.78.204.7 with SMTP id b7mr259231hug.1178741981923; Wed, 09 May 2007 13:19:41 -0700 (PDT) Received: by 10.78.120.4 with HTTP; Wed, 9 May 2007 13:19:41 -0700 (PDT) Message-ID: <3bbf2fe10705091319p2820353cj5f0cecbaaa3eb3c9@mail.gmail.com> Date: Wed, 9 May 2007 22:19:41 +0200 From: "Attilio Rao" Sender: asmrookie@gmail.com To: "John Baldwin" In-Reply-To: <200705091543.33002.jhb@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <200705062110.l46LAZqE011583@repoman.freebsd.org> <200705091457.39167.jhb@freebsd.org> <3bbf2fe10705091233t405121d2qda9a058ecf4124bc@mail.gmail.com> <200705091543.33002.jhb@freebsd.org> X-Google-Sender-Auth: 79df603030b4c8d9 Cc: Perforce Change Reviews , Rui Paulo Subject: Re: PERFORCE change 119371 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 20:19:44 -0000 2007/5/9, John Baldwin : > On Wednesday 09 May 2007 03:33:11 pm Attilio Rao wrote: > > 2007/5/9, John Baldwin : > > > On Sunday 06 May 2007 05:10:35 pm Rui Paulo wrote: > > > > http://perforce.freebsd.org/chv.cgi?CH=119371 > > > > > > > > Change 119371 by rpaulo@rpaulo_epsilon on 2007/05/06 21:10:15 > > > > > > > > We don't need any scheduler support because: > > > > 1) msrtemp is a child of cpu - this implies that every > > > > rdmsr/cpuid instruction will be executed on that CPU. > > > > > > No, that isn't true. You do need to use sched_bind() for that so you are > > > really on the desired CPU when you read the MSR. > > > > I think he just needs msr of the cpu where curthread is executed, so > > any scheduler lock should be needed. > > If he needs to know msr of a particular CPU he really needs so, but it > > doesn't seem the case. > > The sysctl is per-CPU, so he needs the msr from a specific CPU in the sysctl > handler. I.e., it's like dev.cpu.0.temp or some such. Ok, in this case so he effectively needs to bind to the CPU. Attilio -- Peace can only be achieved by understanding - A. Einstein From owner-p4-projects@FreeBSD.ORG Wed May 9 20:29:32 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9BBD616A40A; Wed, 9 May 2007 20:29:32 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6DD6716A403; Wed, 9 May 2007 20:29:32 +0000 (UTC) (envelope-from rpaulo@fnop.net) Received: from core.fnop.net (mx.fnop.net [82.102.11.82]) by mx1.freebsd.org (Postfix) with ESMTP id CF4A313C44B; Wed, 9 May 2007 20:29:31 +0000 (UTC) (envelope-from rpaulo@fnop.net) Received: from core.fnop.net (mx.fnop.net [82.102.11.82]) by core.fnop.net (Postfix) with ESMTP id 1BA1868FEBB; Wed, 9 May 2007 21:29:34 +0100 (WEST) Received: by core.fnop.net (Postfix, from userid 1015) id C5EDB690919; Wed, 9 May 2007 21:29:33 +0100 (WEST) X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on core.fnop.net X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=AWL, BAYES_00, FORGED_RCVD_HELO, RCVD_IN_NJABL_DUL,RCVD_IN_SORBS_DUL autolearn=no version=3.1.7 Received: from epsilon.local.fnop.net (87-196-156-100.net.novis.pt [87.196.156.100]) by core.fnop.net (Postfix) with ESMTP id 1E76B68FEBB; Wed, 9 May 2007 21:29:33 +0100 (WEST) Date: Wed, 09 May 2007 21:29:25 +0100 Message-ID: <86ejlpn3kq.wl%rpaulo@fnop.net> From: Rui Paulo To: John Baldwin In-Reply-To: <200705091543.33002.jhb@freebsd.org> References: <200705062110.l46LAZqE011583@repoman.freebsd.org> <200705091457.39167.jhb@freebsd.org> <3bbf2fe10705091233t405121d2qda9a058ecf4124bc@mail.gmail.com> <200705091543.33002.jhb@freebsd.org> User-Agent: Wanderlust/2.14.0 (Africa) Emacs/21.3 Mule/5.0 (SAKAKI) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII X-Virus-Scanned: ClamAV using ClamSMTP Cc: Attilio Rao , Perforce Change Reviews , Rui Paulo Subject: Re: PERFORCE change 119371 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 20:29:32 -0000 At Wed, 9 May 2007 15:43:32 -0400, John Baldwin wrote: > > On Wednesday 09 May 2007 03:33:11 pm Attilio Rao wrote: > > 2007/5/9, John Baldwin : > > > On Sunday 06 May 2007 05:10:35 pm Rui Paulo wrote: > > > > http://perforce.freebsd.org/chv.cgi?CH=119371 > > > > > > > > Change 119371 by rpaulo@rpaulo_epsilon on 2007/05/06 21:10:15 > > > > > > > > We don't need any scheduler support because: > > > > 1) msrtemp is a child of cpu - this implies that every > > > > rdmsr/cpuid instruction will be executed on that CPU. > > > > > > No, that isn't true. You do need to use sched_bind() for that so you are > > > really on the desired CPU when you read the MSR. > > > > I think he just needs msr of the cpu where curthread is executed, so > > any scheduler lock should be needed. > > If he needs to know msr of a particular CPU he really needs so, but it > > doesn't seem the case. > > The sysctl is per-CPU, so he needs the msr from a specific CPU in the sysctl > handler. I.e., it's like dev.cpu.0.temp or some such. Yes, I need the MSR from a specific CPU. Does sched_pin() solve the problem? Or do I need to use shed_bind()? From owner-p4-projects@FreeBSD.ORG Wed May 9 20:33:44 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D8A8B16A414; Wed, 9 May 2007 20:33:43 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id AD5B316A400; Wed, 9 May 2007 20:33:43 +0000 (UTC) (envelope-from rpaulo@fnop.net) Received: from core.fnop.net (mx.fnop.net [82.102.11.82]) by mx1.freebsd.org (Postfix) with ESMTP id 1EFDE13C45B; Wed, 9 May 2007 20:33:43 +0000 (UTC) (envelope-from rpaulo@fnop.net) Received: from core.fnop.net (mx.fnop.net [82.102.11.82]) by core.fnop.net (Postfix) with ESMTP id DC8F168FEBB; Wed, 9 May 2007 21:33:45 +0100 (WEST) Received: by core.fnop.net (Postfix, from userid 1015) id A9B27690919; Wed, 9 May 2007 21:33:45 +0100 (WEST) X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on core.fnop.net X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=AWL, BAYES_00, FORGED_RCVD_HELO, RCVD_IN_NJABL_DUL,RCVD_IN_SORBS_DUL autolearn=no version=3.1.7 Received: from epsilon.local.fnop.net (87-196-156-100.net.novis.pt [87.196.156.100]) by core.fnop.net (Postfix) with ESMTP id 30D1D68FEBB; Wed, 9 May 2007 21:33:45 +0100 (WEST) Date: Wed, 09 May 2007 21:33:40 +0100 Message-ID: <86d519n3dn.wl%rpaulo@fnop.net> From: Rui Paulo To: John Baldwin In-Reply-To: <86ejlpn3kq.wl%rpaulo@fnop.net> References: <200705062110.l46LAZqE011583@repoman.freebsd.org> <200705091457.39167.jhb@freebsd.org> <3bbf2fe10705091233t405121d2qda9a058ecf4124bc@mail.gmail.com> <200705091543.33002.jhb@freebsd.org> <86ejlpn3kq.wl%rpaulo@fnop.net> User-Agent: Wanderlust/2.14.0 (Africa) Emacs/21.3 Mule/5.0 (SAKAKI) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII X-Virus-Scanned: ClamAV using ClamSMTP Cc: Attilio Rao , Perforce Change Reviews , Rui Paulo Subject: Re: PERFORCE change 119371 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 20:33:44 -0000 At Wed, 09 May 2007 21:29:25 +0100, Rui Paulo wrote: > > At Wed, 9 May 2007 15:43:32 -0400, > John Baldwin wrote: > > > > On Wednesday 09 May 2007 03:33:11 pm Attilio Rao wrote: > > > 2007/5/9, John Baldwin : > > > > On Sunday 06 May 2007 05:10:35 pm Rui Paulo wrote: > > > > > http://perforce.freebsd.org/chv.cgi?CH=119371 > > > > > > > > > > Change 119371 by rpaulo@rpaulo_epsilon on 2007/05/06 21:10:15 > > > > > > > > > > We don't need any scheduler support because: > > > > > 1) msrtemp is a child of cpu - this implies that every > > > > > rdmsr/cpuid instruction will be executed on that CPU. > > > > > > > > No, that isn't true. You do need to use sched_bind() for that so you are > > > > really on the desired CPU when you read the MSR. > > > > > > I think he just needs msr of the cpu where curthread is executed, so > > > any scheduler lock should be needed. > > > If he needs to know msr of a particular CPU he really needs so, but it > > > doesn't seem the case. > > > > The sysctl is per-CPU, so he needs the msr from a specific CPU in the sysctl > > handler. I.e., it's like dev.cpu.0.temp or some such. > > Yes, I need the MSR from a specific CPU. > Does sched_pin() solve the problem? Or do I need to use shed_bind()? Doh, forget this question. From owner-p4-projects@FreeBSD.ORG Wed May 9 20:54:51 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6035116A406; Wed, 9 May 2007 20:54:51 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 371F716A404 for ; Wed, 9 May 2007 20:54:51 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 27EF013C447 for ; Wed, 9 May 2007 20:54:51 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49Ksp2d071189 for ; Wed, 9 May 2007 20:54:51 GMT (envelope-from rpaulo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49Ksog4071186 for perforce@freebsd.org; Wed, 9 May 2007 20:54:50 GMT (envelope-from rpaulo@FreeBSD.org) Date: Wed, 9 May 2007 20:54:50 GMT Message-Id: <200705092054.l49Ksog4071186@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rpaulo@FreeBSD.org using -f From: Rui Paulo To: Perforce Change Reviews Cc: Subject: PERFORCE change 119595 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 20:54:51 -0000 http://perforce.freebsd.org/chv.cgi?CH=119595 Change 119595 by rpaulo@rpaulo_epsilon on 2007/05/09 20:54:28 Bring back the sched_bind() changes so that rdmsr executes on the proper CPU. Pointed out by: John Baldwin Affected files ... .. //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#7 edit Differences ... ==== //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#7 (text+ko) ==== @@ -23,7 +23,7 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#6 $ + * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/msrtemp/msrtemp.c#7 $ * */ @@ -64,7 +64,7 @@ static int msrtemp_attach(device_t); static int msrtemp_detach(device_t); -static int msrtemp_get_temp(void); +static int msrtemp_get_temp(int); static int msrtemp_get_temp_sysctl(SYSCTL_HANDLER_ARGS); static device_method_t msrtemp_methods[] = { @@ -130,25 +130,11 @@ static int msrtemp_attach(device_t dev) { - int regs[4]; struct msrtemp_softc *sc = device_get_softc(dev); device_t pdev; pdev = device_get_parent(dev); - if (bootverbose) { - /* - * CPUID 0x06 returns 1 if the processor has on-die thermal - * sensors. We already checked that in the identify routine. - * EBX[0:3] contains the number of sensors. - */ - do_cpuid(0x06, regs); - device_printf(dev, "%d digital thermal sensor(s)\n", - regs[2] & 0x03); - } - device_printf(dev, "current temperature: %d degC\n", - msrtemp_get_temp()); - /* * Add the "temperature" MIB to dev.cpu.N. */ @@ -157,7 +143,7 @@ device_get_sysctl_tree(pdev)), OID_AUTO, "temperature", CTLTYPE_INT | CTLFLAG_RD, - NULL, 0, msrtemp_get_temp_sysctl, "I", + dev, 0, msrtemp_get_temp_sysctl, "I", "Current temperature in degC"); return 0; } @@ -174,10 +160,14 @@ static int -msrtemp_get_temp(void) +msrtemp_get_temp(int cpu) { uint64_t temp; + mtx_lock_spin(&sched_lock); + sched_bind(curthread, cpu); + mtx_unlock_spin(&sched_lock); + /* * The digital temperature reading is located at bit 16 * of MSR_THERM_STATUS. @@ -212,9 +202,10 @@ static int msrtemp_get_temp_sysctl(SYSCTL_HANDLER_ARGS) { + device_t dev = (device_t) arg1; int temp; - temp = msrtemp_get_temp(); + temp = msrtemp_get_temp(device_get_unit(dev)); return sysctl_handle_int(oidp, &temp, 0, req); } From owner-p4-projects@FreeBSD.ORG Wed May 9 21:23:36 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B4A7916A405; Wed, 9 May 2007 21:23:35 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 86E0016A402 for ; Wed, 9 May 2007 21:23:35 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 75ECD13C43E for ; Wed, 9 May 2007 21:23:35 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49LNZT1076748 for ; Wed, 9 May 2007 21:23:35 GMT (envelope-from lulf@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49LNQMj076735 for perforce@freebsd.org; Wed, 9 May 2007 21:23:26 GMT (envelope-from lulf@FreeBSD.org) Date: Wed, 9 May 2007 21:23:26 GMT Message-Id: <200705092123.l49LNQMj076735@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to lulf@FreeBSD.org using -f From: Ulf Lilleengen To: Perforce Change Reviews Cc: Subject: PERFORCE change 119596 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 21:23:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=119596 Change 119596 by lulf@lulf_vimes on 2007/05/09 21:22:40 - Integrate fixup changes into main branch. - Integrate from lukas. Affected files ... .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/NOTES#3 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/files#4 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/kern.pre.mk#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/options#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/eli/g_eli_ctl.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/geom.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/geom_dev.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/geom_disk.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/geom_disk.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/geom_io.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/geom_slice.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/geom_subr.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/part/g_part.c#3 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/part/g_part.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/part/g_part_apm.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/part/g_part_gpt.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_state.c#9 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_var.h#7 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/acpica/madt.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/conf/GENERIC#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/conf/NOTES#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/conf/PAE#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/intr_machdep.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/io_apic.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/local_apic.c#3 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/mp_machdep.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/mptable.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/mptable_pci.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/msi.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/nexus.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/include/apicvar.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/include/intr_machdep.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/include/vmparam.h#3 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/isa/atpic.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/pci/pci_bus.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_condvar.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_descrip.c#3 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_intr.c#3 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_mutex.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_rwlock.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_sx.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_synch.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/sys_generic.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/uipc_debug.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/uipc_sockbuf.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/uipc_socket.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/uipc_syscalls.c#3 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/uipc_usrreq.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/vfs_syscalls.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/modules/Makefile#3 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/disk.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/filedesc.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/interrupt.h#3 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/param.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/rwlock.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/socketvar.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/sx.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/vm_page.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/vm_page.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/Makefile.inc1#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/conf/NOTES#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/conf/files#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/part/g_part.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/uzip/g_uzip.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/vinum/geom_vinum.c#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/vinum/geom_vinum.h#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/vinum/geom_vinum_init.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/vinum/geom_vinum_plex.c#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/vinum/geom_vinum_raid5.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/vinum/geom_vinum_raid5.h#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/vinum/geom_vinum_rm.c#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/vinum/geom_vinum_state.c#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/vinum/geom_vinum_subr.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/vinum/geom_vinum_var.h#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/bios.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/busdma_machdep.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/identcpu.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/local_apic.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/pmap.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/sys_machdep.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/vm_machdep.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/include/vmparam.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/kern_descrip.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/kern_intr.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/kern_linker.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/kern_malloc.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/kern_time.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/kern_uuid.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/sched_ule.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/subr_rman.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/subr_witness.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/uipc_syscalls.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/vfs_bio.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/vfs_mount.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/modules/Makefile#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/sys/interrupt.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/sys/ioctl_compat.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/sys/mount.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/sys/priv.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/sys/proc.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/sys/socket.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/vm/swap_pager.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/vm/vm_contig.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/vm/vm_map.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/vm/vm_param.h#2 integrate Differences ... ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/NOTES#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1422 2007/04/17 00:35:10 thompsa Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1424 2007/05/09 15:55:45 scottl Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/files#4 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1198 2007/04/25 15:30:17 mav Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1204 2007/05/09 07:07:24 scottl Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -600,8 +600,34 @@ dev/ed/if_ed_pci.c optional ed pci dev/eisa/eisa_if.m standard dev/eisa/eisaconf.c optional eisa -dev/em/if_em.c optional em -dev/em/if_em_hw.c optional em +dev/em/if_em.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_80003es2lan.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_82540.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_82541.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_82542.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_82543.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_82571.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_82575.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_api.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_ich8lan.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_mac.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_manage.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_nvm.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_phy.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" dev/en/if_en_pci.c optional en pci dev/en/midway.c optional en dev/ep/if_ep.c optional ep @@ -659,6 +685,7 @@ dev/hme/if_hme.c optional hme dev/hme/if_hme_pci.c optional hme pci dev/hme/if_hme_sbus.c optional hme sbus +dev/hptiop/hptiop.c optional hptiop cam dev/hwpmc/hwpmc_logging.c optional hwpmc dev/hwpmc/hwpmc_mod.c optional hwpmc dev/ichsmb/ichsmb.c optional ichsmb @@ -996,8 +1023,6 @@ dev/tdfx/tdfx_pci.c optional tdfx pci dev/ti/if_ti.c optional ti pci dev/trm/trm.c optional trm -dev/twa/tw_cl_fwimg.c optional twa \ - compile-with "${NORMAL_C} -I$S/dev/twa" dev/twa/tw_cl_init.c optional twa \ compile-with "${NORMAL_C} -I$S/dev/twa" dev/twa/tw_cl_intr.c optional twa \ @@ -1045,6 +1070,7 @@ dev/usb/if_kue.c optional kue dev/usb/if_ural.c optional ural dev/usb/if_rue.c optional rue +dev/usb/if_rum.c optional rum dev/usb/if_udav.c optional udav dev/usb/ohci.c optional ohci dev/usb/ohci_pci.c optional ohci pci ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/kern.pre.mk#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.81 2006/10/26 15:16:43 bde Exp $ +# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.82 2007/05/04 00:00:10 jfv Exp $ # Part of a unified Makefile for building kernels. This part contains all # of the definitions that need to be before %BEFORE_DEPEND. @@ -76,6 +76,9 @@ # .. and the same for twa INCLUDES+= -I$S/dev/twa +# .. and the same for em +INCLUDES+= -I$S/dev/em + # ... and XFS INCLUDES+= -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/options#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.586 2007/04/14 20:16:03 kmacy Exp $ +# $FreeBSD: src/sys/conf/options,v 1.587 2007/05/06 17:04:34 piso Exp $ # # On the handling of kernel options # @@ -764,3 +764,6 @@ # snd_emu10kx sound driver options SND_EMU10KX_MULTICHANNEL opt_emu10kx.h + +# Interrupt filtering +INTR_FILTER opt_global.h ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/eli/g_eli_ctl.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/eli/g_eli_ctl.c,v 1.12 2007/03/05 12:41:44 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/eli/g_eli_ctl.c,v 1.13 2007/05/06 14:56:03 pjd Exp $"); #include #include @@ -684,6 +684,11 @@ G_ELI_DEBUG(0, "Cannot store metadata on %s " "(error=%d).", pp->name, error); } + /* + * Flush write cache so we don't overwrite data N times in cache + * and only once on disk. + */ + g_io_flush(cp); } bzero(&md, sizeof(md)); bzero(sector, sizeof(sector)); ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/geom.h#2 (text+ko) ==== @@ -32,7 +32,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/geom/geom.h,v 1.98 2006/10/31 21:11:20 pjd Exp $ + * $FreeBSD: src/sys/geom/geom.h,v 1.100 2007/05/05 16:35:22 pjd Exp $ */ #ifndef _GEOM_GEOM_H_ @@ -230,6 +230,7 @@ int g_handleattr(struct bio *bp, const char *attribute, void *val, int len); int g_handleattr_int(struct bio *bp, const char *attribute, int val); int g_handleattr_off_t(struct bio *bp, const char *attribute, off_t val); +int g_handleattr_str(struct bio *bp, const char *attribute, char *str); struct g_consumer * g_new_consumer(struct g_geom *gp); struct g_geom * g_new_geomf(struct g_class *mp, const char *fmt, ...); struct g_provider * g_new_providerf(struct g_geom *gp, const char *fmt, ...); @@ -274,6 +275,7 @@ struct bio *g_alloc_bio(void); void * g_read_data(struct g_consumer *cp, off_t offset, off_t length, int *error); int g_write_data(struct g_consumer *cp, off_t offset, void *ptr, off_t length); +int g_delete_data(struct g_consumer *cp, off_t offset, off_t length); void g_print_bio(struct bio *bp); /* geom_kern.c / geom_kernsim.c */ ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/geom_dev.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/geom_dev.c,v 1.93 2007/03/26 21:47:03 kris Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/geom_dev.c,v 1.94 2007/05/05 17:02:19 pjd Exp $"); #include #include @@ -245,6 +245,7 @@ struct g_geom *gp; struct g_consumer *cp; struct g_kerneldump kd; + off_t offset, length; int i, error; u_int u; @@ -294,6 +295,25 @@ if (!error) dev->si_flags |= SI_DUMPDEV; break; + case DIOCGFLUSH: + error = g_io_flush(cp); + break; + case DIOCGDELETE: + offset = ((off_t *)data)[0]; + length = ((off_t *)data)[1]; + if ((offset % cp->provider->sectorsize) != 0 || + (length % cp->provider->sectorsize) != 0 || + length <= 0 || length > MAXPHYS) { + printf("%s: offset=%jd length=%jd\n", __func__, offset, + length); + error = EINVAL; + break; + } + error = g_delete_data(cp, offset, length); + break; + case DIOCGIDENT: + error = g_io_getattr("GEOM::ident", cp, &i, data); + break; default: if (cp->provider->geom->ioctl != NULL) { ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/geom_disk.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/geom_disk.c,v 1.101 2007/02/21 07:45:02 n_hibma Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/geom_disk.c,v 1.104 2007/05/05 18:09:17 pjd Exp $"); #include "opt_geom.h" @@ -301,6 +301,8 @@ break; else if (g_handleattr_off_t(bp, "GEOM::frontstuff", 0)) break; + else if (g_handleattr_str(bp, "GEOM::ident", dp->d_ident)) + break; else if (!strcmp(bp->bio_attribute, "GEOM::kerneldump")) g_disk_kerneldump(bp, dp); else @@ -396,6 +398,45 @@ g_free(dp); } +/* + * We only allow [a-zA-Z0-9-_@#%.:] characters, the rest is converted to 'x'. + */ +static void +g_disk_ident_adjust(char *ident, size_t size) +{ + char newid[DISK_IDENT_SIZE], tmp[4]; + size_t len; + char *p; + + bzero(newid, sizeof(newid)); + len = 0; + for (p = ident; *p != '\0' && len < sizeof(newid) - 1; p++) { + switch (*p) { + default: + if ((*p < 'a' || *p > 'z') && + (*p < 'A' || *p > 'Z') && + (*p < '0' || *p > '9')) { + snprintf(tmp, sizeof(tmp), "x%02hhx", *p); + strlcat(newid, tmp, sizeof(newid)); + len += 3; + break; + } + /* FALLTHROUGH */ + case '-': + case '_': + case '@': + case '#': + case '%': + case '.': + case ':': + newid[len++] = *p; + break; + } + } + bzero(ident, size); + strlcpy(ident, newid, size); +} + struct disk * disk_alloc() { @@ -408,7 +449,7 @@ void disk_create(struct disk *dp, int version) { - if (version != DISK_VERSION_00) { + if (version != DISK_VERSION_00 && version != DISK_VERSION_01) { printf("WARNING: Attempt to add disk %s%d %s", dp->d_name, dp->d_unit, " using incompatible ABI version of disk(9)\n"); @@ -425,6 +466,7 @@ dp->d_sectorsize, DEVSTAT_ALL_SUPPORTED, DEVSTAT_TYPE_DIRECT, DEVSTAT_PRIORITY_MAX); dp->d_geom = NULL; + g_disk_ident_adjust(dp->d_ident, sizeof(dp->d_ident)); g_post_event(g_disk_create, dp, M_WAITOK, dp, NULL); } ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/geom_disk.h#2 (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/geom/geom_disk.h,v 1.6 2006/10/31 21:12:43 pjd Exp $ + * $FreeBSD: src/sys/geom/geom_disk.h,v 1.7 2007/05/05 17:12:15 pjd Exp $ */ #ifndef _GEOM_GEOM_DISK_H_ @@ -42,6 +42,7 @@ #include #include #include +#include struct disk; @@ -83,6 +84,7 @@ u_int d_maxsize; u_int d_stripeoffset; u_int d_stripesize; + char d_ident[DISK_IDENT_SIZE]; /* Fields private to the driver */ void *d_drv1; @@ -99,7 +101,8 @@ void disk_gone(struct disk *disk); #define DISK_VERSION_00 0x58561059 -#define DISK_VERSION DISK_VERSION_00 +#define DISK_VERSION_01 0x5856105a +#define DISK_VERSION DISK_VERSION_01 #endif /* _KERNEL */ #endif /* _GEOM_GEOM_DISK_H_ */ ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/geom_io.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/geom_io.c,v 1.74 2007/02/27 17:23:29 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/geom_io.c,v 1.75 2007/05/05 16:35:22 pjd Exp $"); #include #include @@ -646,6 +646,28 @@ return (error); } +int +g_delete_data(struct g_consumer *cp, off_t offset, off_t length) +{ + struct bio *bp; + int error; + + KASSERT(length > 0 && length >= cp->provider->sectorsize && + length <= MAXPHYS, ("g_delete_data(): invalid length %jd", + (intmax_t)length)); + + bp = g_alloc_bio(); + bp->bio_cmd = BIO_DELETE; + bp->bio_done = NULL; + bp->bio_offset = offset; + bp->bio_length = length; + bp->bio_data = NULL; + g_io_request(bp, cp); + error = biowait(bp, "gdelete"); + g_destroy_bio(bp); + return (error); +} + void g_print_bio(struct bio *bp) { ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/geom_slice.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/geom_slice.c,v 1.61 2006/10/31 21:23:50 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/geom_slice.c,v 1.62 2007/05/05 17:52:22 pjd Exp $"); #include #include @@ -172,6 +172,28 @@ } static void +g_slice_done(struct bio *bp) +{ + + KASSERT(bp->bio_cmd == BIO_GETATTR && + strcmp(bp->bio_attribute, "GEOM::ident") == 0, + ("bio_cmd=0x%x bio_attribute=%s", bp->bio_cmd, bp->bio_attribute)); + + if (bp->bio_error == 0 && bp->bio_data[0] != '\0') { + char idx[8]; + + /* Add index to the ident received. */ + snprintf(idx, sizeof(idx), "s%d", + bp->bio_parent->bio_to->index); + if (strlcat(bp->bio_data, idx, bp->bio_length) >= + bp->bio_length) { + bp->bio_error = EFAULT; + } + } + g_std_done(bp); +} + +static void g_slice_start(struct bio *bp) { struct bio *bp2; @@ -251,6 +273,16 @@ /* Give the real method a chance to override */ if (gsp->start != NULL && gsp->start(bp)) return; + if (!strcmp("GEOM::ident", bp->bio_attribute)) { + bp2 = g_clone_bio(bp); + if (bp2 == NULL) { + g_io_deliver(bp, ENOMEM); + return; + } + bp2->bio_done = g_slice_done; + g_io_request(bp2, cp); + return; + } if (!strcmp("GEOM::kerneldump", bp->bio_attribute)) { struct g_kerneldump *gkd; ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/geom_subr.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/geom_subr.c,v 1.90 2006/09/15 16:36:45 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/geom_subr.c,v 1.91 2007/05/05 16:33:44 pjd Exp $"); #include "opt_ddb.h" @@ -790,20 +790,35 @@ } int +g_handleattr_str(struct bio *bp, const char *attribute, char *str) +{ + + return (g_handleattr(bp, attribute, str, 0)); +} + +int g_handleattr(struct bio *bp, const char *attribute, void *val, int len) { - int error; + int error = 0; if (strcmp(bp->bio_attribute, attribute)) return (0); - if (bp->bio_length != len) { - printf("bio_length %jd len %d -> EFAULT\n", - (intmax_t)bp->bio_length, len); - error = EFAULT; - } else { - error = 0; + if (len == 0) { + bzero(bp->bio_data, bp->bio_length); + if (strlcpy(bp->bio_data, val, bp->bio_length) >= + bp->bio_length) { + printf("%s: %s bio_length %jd len %zu -> EFAULT\n", + __func__, bp->bio_to->name, + (intmax_t)bp->bio_length, strlen(val)); + error = EFAULT; + } + } else if (bp->bio_length == len) { bcopy(val, bp->bio_data, len); bp->bio_completed = len; + } else { + printf("%s: %s bio_length %jd len %d -> EFAULT\n", __func__, + bp->bio_to->name, (intmax_t)bp->bio_length, len); + error = EFAULT; } g_io_deliver(bp, error); return (1); ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/part/g_part.c#3 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/part/g_part.c,v 1.2 2007/04/27 05:58:10 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/part/g_part.c,v 1.5 2007/05/09 05:37:53 marcel Exp $"); #include #include @@ -64,12 +64,12 @@ const char *lexeme; enum g_part_alias alias; } g_part_alias_list[G_PART_ALIAS_COUNT] = { - { "@efi", G_PART_ALIAS_EFI }, - { "@freebsd", G_PART_ALIAS_FREEBSD }, - { "@freebsd-swap", G_PART_ALIAS_FREEBSD_SWAP }, - { "@freebsd-ufs", G_PART_ALIAS_FREEBSD_UFS }, - { "@freebsd-vinum", G_PART_ALIAS_FREEBSD_VINUM }, - { "@mbr", G_PART_ALIAS_MBR } + { "efi", G_PART_ALIAS_EFI }, + { "freebsd", G_PART_ALIAS_FREEBSD }, + { "freebsd-swap", G_PART_ALIAS_FREEBSD_SWAP }, + { "freebsd-ufs", G_PART_ALIAS_FREEBSD_UFS }, + { "freebsd-vinum", G_PART_ALIAS_FREEBSD_VINUM }, + { "mbr", G_PART_ALIAS_MBR } }; /* @@ -111,7 +111,6 @@ G_PART_CTL_DESTROY, G_PART_CTL_MODIFY, G_PART_CTL_MOVE, - G_PART_CTL_QUERY, G_PART_CTL_RECOVER, G_PART_CTL_RESIZE, G_PART_CTL_UNDO @@ -247,7 +246,7 @@ SET_FOREACH(iter, g_part_scheme_set) { if ((*iter)->name == NULL) continue; - if (!strcmp((*iter)->name, p)) { + if (!strcasecmp((*iter)->name, p)) { s = *iter; break; } @@ -331,11 +330,12 @@ static int g_part_ctl_add(struct gctl_req *req, struct g_part_parms *gpp) { - char buf[16]; + char buf[32]; struct g_geom *gp; struct g_provider *pp; struct g_part_entry *delent, *last, *entry; struct g_part_table *table; + struct sbuf *sb; quad_t end; unsigned int index; int error; @@ -396,8 +396,6 @@ gctl_error(req, "%d index '%d'", EEXIST, gpp->gpp_index); return (EEXIST); } - snprintf(buf, sizeof(buf), "%d", index); - gctl_set_param(req, "index", buf, strlen(buf) + 1); entry = (delent == NULL) ? g_malloc(table->gpt_scheme->gps_entrysz, M_WAITOK | M_ZERO) : delent; @@ -422,6 +420,15 @@ entry->gpe_modified = 1; } g_part_new_provider(gp, table, entry); + + /* Provide feedback if so requested. */ + if (gpp->gpp_parms & G_PART_PARM_OUTPUT) { + sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); + sbuf_printf(sb, "%s%s added\n", gp->name, + G_PART_NAME(table, entry, buf, sizeof(buf))); + gctl_set_param(req, "output", sbuf_data(sb), sbuf_len(sb) + 1); + sbuf_delete(sb); + } return (0); } @@ -510,6 +517,7 @@ struct g_provider *pp; struct g_part_scheme *scheme; struct g_part_table *null, *table; + struct sbuf *sb; int attr, error; pp = gpp->gpp_provider; @@ -583,6 +591,14 @@ table->gpt_created = 1; if (null != NULL) kobj_delete((kobj_t)null, M_GEOM); + + /* Provide feedback if so requested. */ + if (gpp->gpp_parms & G_PART_PARM_OUTPUT) { + sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); + sbuf_printf(sb, "%s created\n", gp->name); + gctl_set_param(req, "output", sbuf_data(sb), sbuf_len(sb) + 1); + sbuf_delete(sb); + } return (0); fail: @@ -601,10 +617,12 @@ static int g_part_ctl_delete(struct gctl_req *req, struct g_part_parms *gpp) { + char buf[32]; struct g_geom *gp; struct g_provider *pp; struct g_part_entry *entry; struct g_part_table *table; + struct sbuf *sb; gp = gpp->gpp_geom; G_PART_TRACE((G_T_TOPOLOGY, "%s(%s)", __func__, gp->name)); @@ -639,6 +657,15 @@ entry->gpe_deleted = 1; } g_wither_provider(pp, ENXIO); + + /* Provide feedback if so requested. */ + if (gpp->gpp_parms & G_PART_PARM_OUTPUT) { + sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); + sbuf_printf(sb, "%s%s deleted\n", gp->name, + G_PART_NAME(table, entry, buf, sizeof(buf))); + gctl_set_param(req, "output", sbuf_data(sb), sbuf_len(sb) + 1); + sbuf_delete(sb); + } return (0); } @@ -648,6 +675,7 @@ struct g_geom *gp; struct g_part_entry *entry; struct g_part_table *null, *table; + struct sbuf *sb; int error; gp = gpp->gpp_geom; @@ -685,15 +713,24 @@ } kobj_delete((kobj_t)table, M_GEOM); + /* Provide feedback if so requested. */ + if (gpp->gpp_parms & G_PART_PARM_OUTPUT) { + sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); + sbuf_printf(sb, "%s destroyed\n", gp->name); + gctl_set_param(req, "output", sbuf_data(sb), sbuf_len(sb) + 1); + sbuf_delete(sb); + } return (0); } static int g_part_ctl_modify(struct gctl_req *req, struct g_part_parms *gpp) { + char buf[32]; struct g_geom *gp; struct g_part_entry *entry; struct g_part_table *table; + struct sbuf *sb; int error; gp = gpp->gpp_geom; @@ -721,6 +758,15 @@ if (!entry->gpe_created) entry->gpe_modified = 1; + + /* Provide feedback if so requested. */ + if (gpp->gpp_parms & G_PART_PARM_OUTPUT) { + sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); + sbuf_printf(sb, "%s%s modified\n", gp->name, + G_PART_NAME(table, entry, buf, sizeof(buf))); + gctl_set_param(req, "output", sbuf_data(sb), sbuf_len(sb) + 1); + sbuf_delete(sb); + } return (0); } @@ -732,13 +778,6 @@ } static int -g_part_ctl_query(struct gctl_req *req, struct g_part_parms *gpp) -{ - gctl_error(req, "%d verb 'query'", ENOSYS); - return (ENOSYS); -} - -static int g_part_ctl_recover(struct gctl_req *req, struct g_part_parms *gpp) { gctl_error(req, "%d verb 'recover'", ENOSYS); @@ -799,8 +838,12 @@ goto fail; } error = g_part_probe(gp, cp, table->gpt_depth); - if (error) - goto fail; + if (error) { + g_topology_lock(); + g_access(cp, -1, -1, -1); + g_part_wither(gp, error); + return (0); + } table = gp->softc; } @@ -863,83 +906,67 @@ ctlreq = G_PART_CTL_NONE; modifies = 0; - mparms = oparms = 0; + mparms = 0; + oparms = G_PART_PARM_FLAGS | G_PART_PARM_OUTPUT | G_PART_PARM_VERSION; switch (*verb) { case 'a': if (!strcmp(verb, "add")) { ctlreq = G_PART_CTL_ADD; modifies = 1; - mparms = G_PART_PARM_GEOM | G_PART_PARM_SIZE | + mparms |= G_PART_PARM_GEOM | G_PART_PARM_SIZE | G_PART_PARM_START | G_PART_PARM_TYPE; - oparms = G_PART_PARM_FLAGS | G_PART_PARM_INDEX | - G_PART_PARM_LABEL; + oparms |= G_PART_PARM_INDEX | G_PART_PARM_LABEL; } break; case 'c': if (!strcmp(verb, "commit")) { ctlreq = G_PART_CTL_COMMIT; - mparms = G_PART_PARM_GEOM; - oparms = G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_GEOM; } else if (!strcmp(verb, "create")) { ctlreq = G_PART_CTL_CREATE; modifies = 1; - mparms = G_PART_PARM_PROVIDER | - G_PART_PARM_SCHEME; - oparms = G_PART_PARM_ENTRIES | G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_PROVIDER | G_PART_PARM_SCHEME; + oparms |= G_PART_PARM_ENTRIES; } break; case 'd': if (!strcmp(verb, "delete")) { ctlreq = G_PART_CTL_DELETE; modifies = 1; - mparms = G_PART_PARM_GEOM | G_PART_PARM_INDEX; - oparms = G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_GEOM | G_PART_PARM_INDEX; } else if (!strcmp(verb, "destroy")) { ctlreq = G_PART_CTL_DESTROY; modifies = 1; - mparms = G_PART_PARM_GEOM; - oparms = G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_GEOM; } break; case 'm': if (!strcmp(verb, "modify")) { ctlreq = G_PART_CTL_MODIFY; modifies = 1; - mparms = G_PART_PARM_GEOM | G_PART_PARM_INDEX; - oparms = G_PART_PARM_FLAGS | G_PART_PARM_LABEL | - G_PART_PARM_TYPE; + mparms |= G_PART_PARM_GEOM | G_PART_PARM_INDEX; + oparms |= G_PART_PARM_LABEL | G_PART_PARM_TYPE; } else if (!strcmp(verb, "move")) { ctlreq = G_PART_CTL_MOVE; modifies = 1; - mparms = G_PART_PARM_GEOM | G_PART_PARM_INDEX; - oparms = G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_GEOM | G_PART_PARM_INDEX; } break; - case 'q': - if (!strcmp(verb, "query")) { - ctlreq = G_PART_CTL_QUERY; - mparms = G_PART_PARM_REQUEST | G_PART_PARM_RESPONSE; - oparms = G_PART_PARM_FLAGS | G_PART_PARM_GEOM; - } - break; case 'r': if (!strcmp(verb, "recover")) { ctlreq = G_PART_CTL_RECOVER; modifies = 1; - mparms = G_PART_PARM_GEOM; - oparms = G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_GEOM; } else if (!strcmp(verb, "resize")) { ctlreq = G_PART_CTL_RESIZE; modifies = 1; - mparms = G_PART_PARM_GEOM | G_PART_PARM_INDEX; - oparms = G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_GEOM | G_PART_PARM_INDEX; } break; case 'u': if (!strcmp(verb, "undo")) { ctlreq = G_PART_CTL_UNDO; - mparms = G_PART_PARM_GEOM; - oparms = G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_GEOM; } break; } @@ -977,16 +1004,14 @@ if (!strcmp(ap->name, "label")) parm = G_PART_PARM_LABEL; break; + case 'o': + if (!strcmp(ap->name, "output")) + parm = G_PART_PARM_OUTPUT; + break; case 'p': if (!strcmp(ap->name, "provider")) parm = G_PART_PARM_PROVIDER; break; - case 'r': - if (!strcmp(ap->name, "request")) - parm = G_PART_PARM_REQUEST; - else if (!strcmp(ap->name, "response")) - parm = G_PART_PARM_RESPONSE; - break; case 's': if (!strcmp(ap->name, "scheme")) parm = G_PART_PARM_SCHEME; @@ -1002,6 +1027,8 @@ case 'v': if (!strcmp(ap->name, "verb")) continue; + else if (!strcmp(ap->name, "version")) + parm = G_PART_PARM_VERSION; break; } if ((parm & (mparms | oparms)) == 0) { @@ -1029,15 +1056,12 @@ case G_PART_PARM_LABEL: error = g_part_parm_str(p, &gpp.gpp_label); break; + case G_PART_PARM_OUTPUT: + error = 0; /* Write-only parameter */ + break; case G_PART_PARM_PROVIDER: error = g_part_parm_provider(p, &gpp.gpp_provider); break; - case G_PART_PARM_REQUEST: - error = g_part_parm_str(p, &gpp.gpp_request); - break; - case G_PART_PARM_RESPONSE: - error = 0; /* Write-only parameter. */ - break; case G_PART_PARM_SCHEME: error = g_part_parm_scheme(p, &gpp.gpp_scheme); break; @@ -1050,6 +1074,9 @@ case G_PART_PARM_TYPE: error = g_part_parm_str(p, &gpp.gpp_type); break; + case G_PART_PARM_VERSION: + error = g_part_parm_uint(p, &gpp.gpp_version); + break; default: error = EDOOFUS; break; @@ -1106,9 +1133,6 @@ case G_PART_CTL_MOVE: error = g_part_ctl_move(req, &gpp); break; - case G_PART_CTL_QUERY: - error = g_part_ctl_query(req, &gpp); - break; case G_PART_CTL_RECOVER: error = g_part_ctl_recover(req, &gpp); break; ==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/part/g_part.h#2 (text+ko) ==== @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/geom/part/g_part.h,v 1.1 2007/02/07 18:55:30 marcel Exp $ + * $FreeBSD: src/sys/geom/part/g_part.h,v 1.2 2007/05/08 20:18:17 marcel Exp $ */ #ifndef _GEOM_PART_H_ >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Wed May 9 21:26:40 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8604B16A407; Wed, 9 May 2007 21:26:40 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2893416A405 for ; Wed, 9 May 2007 21:26:40 +0000 (UTC) (envelope-from ivoras@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 01CB513C465 for ; Wed, 9 May 2007 21:26:40 +0000 (UTC) (envelope-from ivoras@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49LQdCO077359 for ; Wed, 9 May 2007 21:26:39 GMT (envelope-from ivoras@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49LQdkp077356 for perforce@freebsd.org; Wed, 9 May 2007 21:26:39 GMT (envelope-from ivoras@FreeBSD.org) Date: Wed, 9 May 2007 21:26:39 GMT Message-Id: <200705092126.l49LQdkp077356@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to ivoras@FreeBSD.org using -f From: Ivan Voras To: Perforce Change Reviews Cc: Subject: PERFORCE change 119598 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 21:26:40 -0000 http://perforce.freebsd.org/chv.cgi?CH=119598 Change 119598 by ivoras@ivoras_finstall on 2007/05/09 21:26:09 Interface to low-level commands Affected files ... .. //depot/projects/soc2007/ivoras_finstall/pybackend/freebsd.py#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Wed May 9 21:26:41 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7311E16A538; Wed, 9 May 2007 21:26:41 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4E4F716A530 for ; Wed, 9 May 2007 21:26:40 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id DC7B113C45E for ; Wed, 9 May 2007 21:26:40 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49LQeWL077366 for ; Wed, 9 May 2007 21:26:40 GMT (envelope-from lulf@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49LQdb1077362 for perforce@freebsd.org; Wed, 9 May 2007 21:26:39 GMT (envelope-from lulf@FreeBSD.org) Date: Wed, 9 May 2007 21:26:39 GMT Message-Id: <200705092126.l49LQdb1077362@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to lulf@FreeBSD.org using -f From: Ulf Lilleengen To: Perforce Change Reviews Cc: Subject: PERFORCE change 119599 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 21:26:41 -0000 http://perforce.freebsd.org/chv.cgi?CH=119599 Change 119599 by lulf@lulf_vimes on 2007/05/09 21:26:27 - And again integrate from the fixup branch. Affected files ... .. //depot/projects/soc2007/lulf/gvinum_main/sys/conf/NOTES#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/conf/files#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/conf/kern.pre.mk#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/conf/options#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/eli/g_eli_ctl.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/geom.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/geom_dev.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/geom_disk.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/geom_disk.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/geom_io.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/geom_slice.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/geom_subr.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/part/g_part.c#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/part/g_part.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/part/g_part_apm.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/part/g_part_gpt.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/vinum/geom_vinum_state.c#4 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/geom/vinum/geom_vinum_var.h#4 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/acpica/madt.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/conf/GENERIC#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/conf/NOTES#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/conf/PAE#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/intr_machdep.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/io_apic.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/local_apic.c#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/mp_machdep.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/mptable.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/mptable_pci.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/msi.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/i386/nexus.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/include/apicvar.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/include/intr_machdep.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/include/vmparam.h#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/isa/atpic.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/i386/pci/pci_bus.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/kern_condvar.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/kern_descrip.c#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/kern_intr.c#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/kern_mutex.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/kern_rwlock.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/kern_sx.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/kern_synch.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/sys_generic.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/uipc_debug.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/uipc_sockbuf.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/uipc_socket.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/uipc_syscalls.c#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/uipc_usrreq.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/kern/vfs_syscalls.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/modules/Makefile#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/sys/disk.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/sys/filedesc.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/sys/interrupt.h#3 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/sys/param.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/sys/rwlock.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/sys/socketvar.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/sys/sx.h#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/vm/vm_page.c#2 integrate .. //depot/projects/soc2007/lulf/gvinum_main/sys/vm/vm_page.h#2 integrate Differences ... ==== //depot/projects/soc2007/lulf/gvinum_main/sys/conf/NOTES#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1422 2007/04/17 00:35:10 thompsa Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1424 2007/05/09 15:55:45 scottl Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # ==== //depot/projects/soc2007/lulf/gvinum_main/sys/conf/files#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1198 2007/04/25 15:30:17 mav Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1204 2007/05/09 07:07:24 scottl Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -600,8 +600,34 @@ dev/ed/if_ed_pci.c optional ed pci dev/eisa/eisa_if.m standard dev/eisa/eisaconf.c optional eisa -dev/em/if_em.c optional em -dev/em/if_em_hw.c optional em +dev/em/if_em.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_80003es2lan.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_82540.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_82541.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_82542.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_82543.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_82571.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_82575.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_api.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_ich8lan.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_mac.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_manage.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_nvm.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" +dev/em/e1000_phy.c optional em \ + compile-with "${NORMAL_C} -I$S/dev/em" dev/en/if_en_pci.c optional en pci dev/en/midway.c optional en dev/ep/if_ep.c optional ep @@ -659,6 +685,7 @@ dev/hme/if_hme.c optional hme dev/hme/if_hme_pci.c optional hme pci dev/hme/if_hme_sbus.c optional hme sbus +dev/hptiop/hptiop.c optional hptiop cam dev/hwpmc/hwpmc_logging.c optional hwpmc dev/hwpmc/hwpmc_mod.c optional hwpmc dev/ichsmb/ichsmb.c optional ichsmb @@ -996,8 +1023,6 @@ dev/tdfx/tdfx_pci.c optional tdfx pci dev/ti/if_ti.c optional ti pci dev/trm/trm.c optional trm -dev/twa/tw_cl_fwimg.c optional twa \ - compile-with "${NORMAL_C} -I$S/dev/twa" dev/twa/tw_cl_init.c optional twa \ compile-with "${NORMAL_C} -I$S/dev/twa" dev/twa/tw_cl_intr.c optional twa \ @@ -1045,6 +1070,7 @@ dev/usb/if_kue.c optional kue dev/usb/if_ural.c optional ural dev/usb/if_rue.c optional rue +dev/usb/if_rum.c optional rum dev/usb/if_udav.c optional udav dev/usb/ohci.c optional ohci dev/usb/ohci_pci.c optional ohci pci ==== //depot/projects/soc2007/lulf/gvinum_main/sys/conf/kern.pre.mk#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.81 2006/10/26 15:16:43 bde Exp $ +# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.82 2007/05/04 00:00:10 jfv Exp $ # Part of a unified Makefile for building kernels. This part contains all # of the definitions that need to be before %BEFORE_DEPEND. @@ -76,6 +76,9 @@ # .. and the same for twa INCLUDES+= -I$S/dev/twa +# .. and the same for em +INCLUDES+= -I$S/dev/em + # ... and XFS INCLUDES+= -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs ==== //depot/projects/soc2007/lulf/gvinum_main/sys/conf/options#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.586 2007/04/14 20:16:03 kmacy Exp $ +# $FreeBSD: src/sys/conf/options,v 1.587 2007/05/06 17:04:34 piso Exp $ # # On the handling of kernel options # @@ -764,3 +764,6 @@ # snd_emu10kx sound driver options SND_EMU10KX_MULTICHANNEL opt_emu10kx.h + +# Interrupt filtering +INTR_FILTER opt_global.h ==== //depot/projects/soc2007/lulf/gvinum_main/sys/geom/eli/g_eli_ctl.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/eli/g_eli_ctl.c,v 1.12 2007/03/05 12:41:44 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/eli/g_eli_ctl.c,v 1.13 2007/05/06 14:56:03 pjd Exp $"); #include #include @@ -684,6 +684,11 @@ G_ELI_DEBUG(0, "Cannot store metadata on %s " "(error=%d).", pp->name, error); } + /* + * Flush write cache so we don't overwrite data N times in cache + * and only once on disk. + */ + g_io_flush(cp); } bzero(&md, sizeof(md)); bzero(sector, sizeof(sector)); ==== //depot/projects/soc2007/lulf/gvinum_main/sys/geom/geom.h#2 (text+ko) ==== @@ -32,7 +32,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/geom/geom.h,v 1.98 2006/10/31 21:11:20 pjd Exp $ + * $FreeBSD: src/sys/geom/geom.h,v 1.100 2007/05/05 16:35:22 pjd Exp $ */ #ifndef _GEOM_GEOM_H_ @@ -230,6 +230,7 @@ int g_handleattr(struct bio *bp, const char *attribute, void *val, int len); int g_handleattr_int(struct bio *bp, const char *attribute, int val); int g_handleattr_off_t(struct bio *bp, const char *attribute, off_t val); +int g_handleattr_str(struct bio *bp, const char *attribute, char *str); struct g_consumer * g_new_consumer(struct g_geom *gp); struct g_geom * g_new_geomf(struct g_class *mp, const char *fmt, ...); struct g_provider * g_new_providerf(struct g_geom *gp, const char *fmt, ...); @@ -274,6 +275,7 @@ struct bio *g_alloc_bio(void); void * g_read_data(struct g_consumer *cp, off_t offset, off_t length, int *error); int g_write_data(struct g_consumer *cp, off_t offset, void *ptr, off_t length); +int g_delete_data(struct g_consumer *cp, off_t offset, off_t length); void g_print_bio(struct bio *bp); /* geom_kern.c / geom_kernsim.c */ ==== //depot/projects/soc2007/lulf/gvinum_main/sys/geom/geom_dev.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/geom_dev.c,v 1.93 2007/03/26 21:47:03 kris Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/geom_dev.c,v 1.94 2007/05/05 17:02:19 pjd Exp $"); #include #include @@ -245,6 +245,7 @@ struct g_geom *gp; struct g_consumer *cp; struct g_kerneldump kd; + off_t offset, length; int i, error; u_int u; @@ -294,6 +295,25 @@ if (!error) dev->si_flags |= SI_DUMPDEV; break; + case DIOCGFLUSH: + error = g_io_flush(cp); + break; + case DIOCGDELETE: + offset = ((off_t *)data)[0]; + length = ((off_t *)data)[1]; + if ((offset % cp->provider->sectorsize) != 0 || + (length % cp->provider->sectorsize) != 0 || + length <= 0 || length > MAXPHYS) { + printf("%s: offset=%jd length=%jd\n", __func__, offset, + length); + error = EINVAL; + break; + } + error = g_delete_data(cp, offset, length); + break; + case DIOCGIDENT: + error = g_io_getattr("GEOM::ident", cp, &i, data); + break; default: if (cp->provider->geom->ioctl != NULL) { ==== //depot/projects/soc2007/lulf/gvinum_main/sys/geom/geom_disk.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/geom_disk.c,v 1.101 2007/02/21 07:45:02 n_hibma Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/geom_disk.c,v 1.104 2007/05/05 18:09:17 pjd Exp $"); #include "opt_geom.h" @@ -301,6 +301,8 @@ break; else if (g_handleattr_off_t(bp, "GEOM::frontstuff", 0)) break; + else if (g_handleattr_str(bp, "GEOM::ident", dp->d_ident)) + break; else if (!strcmp(bp->bio_attribute, "GEOM::kerneldump")) g_disk_kerneldump(bp, dp); else @@ -396,6 +398,45 @@ g_free(dp); } +/* + * We only allow [a-zA-Z0-9-_@#%.:] characters, the rest is converted to 'x'. + */ +static void +g_disk_ident_adjust(char *ident, size_t size) +{ + char newid[DISK_IDENT_SIZE], tmp[4]; + size_t len; + char *p; + + bzero(newid, sizeof(newid)); + len = 0; + for (p = ident; *p != '\0' && len < sizeof(newid) - 1; p++) { + switch (*p) { + default: + if ((*p < 'a' || *p > 'z') && + (*p < 'A' || *p > 'Z') && + (*p < '0' || *p > '9')) { + snprintf(tmp, sizeof(tmp), "x%02hhx", *p); + strlcat(newid, tmp, sizeof(newid)); + len += 3; + break; + } + /* FALLTHROUGH */ + case '-': + case '_': + case '@': + case '#': + case '%': + case '.': + case ':': + newid[len++] = *p; + break; + } + } + bzero(ident, size); + strlcpy(ident, newid, size); +} + struct disk * disk_alloc() { @@ -408,7 +449,7 @@ void disk_create(struct disk *dp, int version) { - if (version != DISK_VERSION_00) { + if (version != DISK_VERSION_00 && version != DISK_VERSION_01) { printf("WARNING: Attempt to add disk %s%d %s", dp->d_name, dp->d_unit, " using incompatible ABI version of disk(9)\n"); @@ -425,6 +466,7 @@ dp->d_sectorsize, DEVSTAT_ALL_SUPPORTED, DEVSTAT_TYPE_DIRECT, DEVSTAT_PRIORITY_MAX); dp->d_geom = NULL; + g_disk_ident_adjust(dp->d_ident, sizeof(dp->d_ident)); g_post_event(g_disk_create, dp, M_WAITOK, dp, NULL); } ==== //depot/projects/soc2007/lulf/gvinum_main/sys/geom/geom_disk.h#2 (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/geom/geom_disk.h,v 1.6 2006/10/31 21:12:43 pjd Exp $ + * $FreeBSD: src/sys/geom/geom_disk.h,v 1.7 2007/05/05 17:12:15 pjd Exp $ */ #ifndef _GEOM_GEOM_DISK_H_ @@ -42,6 +42,7 @@ #include #include #include +#include struct disk; @@ -83,6 +84,7 @@ u_int d_maxsize; u_int d_stripeoffset; u_int d_stripesize; + char d_ident[DISK_IDENT_SIZE]; /* Fields private to the driver */ void *d_drv1; @@ -99,7 +101,8 @@ void disk_gone(struct disk *disk); #define DISK_VERSION_00 0x58561059 -#define DISK_VERSION DISK_VERSION_00 +#define DISK_VERSION_01 0x5856105a +#define DISK_VERSION DISK_VERSION_01 #endif /* _KERNEL */ #endif /* _GEOM_GEOM_DISK_H_ */ ==== //depot/projects/soc2007/lulf/gvinum_main/sys/geom/geom_io.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/geom_io.c,v 1.74 2007/02/27 17:23:29 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/geom_io.c,v 1.75 2007/05/05 16:35:22 pjd Exp $"); #include #include @@ -646,6 +646,28 @@ return (error); } +int +g_delete_data(struct g_consumer *cp, off_t offset, off_t length) +{ + struct bio *bp; + int error; + + KASSERT(length > 0 && length >= cp->provider->sectorsize && + length <= MAXPHYS, ("g_delete_data(): invalid length %jd", + (intmax_t)length)); + + bp = g_alloc_bio(); + bp->bio_cmd = BIO_DELETE; + bp->bio_done = NULL; + bp->bio_offset = offset; + bp->bio_length = length; + bp->bio_data = NULL; + g_io_request(bp, cp); + error = biowait(bp, "gdelete"); + g_destroy_bio(bp); + return (error); +} + void g_print_bio(struct bio *bp) { ==== //depot/projects/soc2007/lulf/gvinum_main/sys/geom/geom_slice.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/geom_slice.c,v 1.61 2006/10/31 21:23:50 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/geom_slice.c,v 1.62 2007/05/05 17:52:22 pjd Exp $"); #include #include @@ -172,6 +172,28 @@ } static void +g_slice_done(struct bio *bp) +{ + + KASSERT(bp->bio_cmd == BIO_GETATTR && + strcmp(bp->bio_attribute, "GEOM::ident") == 0, + ("bio_cmd=0x%x bio_attribute=%s", bp->bio_cmd, bp->bio_attribute)); + + if (bp->bio_error == 0 && bp->bio_data[0] != '\0') { + char idx[8]; + + /* Add index to the ident received. */ + snprintf(idx, sizeof(idx), "s%d", + bp->bio_parent->bio_to->index); + if (strlcat(bp->bio_data, idx, bp->bio_length) >= + bp->bio_length) { + bp->bio_error = EFAULT; + } + } + g_std_done(bp); +} + +static void g_slice_start(struct bio *bp) { struct bio *bp2; @@ -251,6 +273,16 @@ /* Give the real method a chance to override */ if (gsp->start != NULL && gsp->start(bp)) return; + if (!strcmp("GEOM::ident", bp->bio_attribute)) { + bp2 = g_clone_bio(bp); + if (bp2 == NULL) { + g_io_deliver(bp, ENOMEM); + return; + } + bp2->bio_done = g_slice_done; + g_io_request(bp2, cp); + return; + } if (!strcmp("GEOM::kerneldump", bp->bio_attribute)) { struct g_kerneldump *gkd; ==== //depot/projects/soc2007/lulf/gvinum_main/sys/geom/geom_subr.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/geom_subr.c,v 1.90 2006/09/15 16:36:45 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/geom_subr.c,v 1.91 2007/05/05 16:33:44 pjd Exp $"); #include "opt_ddb.h" @@ -790,20 +790,35 @@ } int +g_handleattr_str(struct bio *bp, const char *attribute, char *str) +{ + + return (g_handleattr(bp, attribute, str, 0)); +} + +int g_handleattr(struct bio *bp, const char *attribute, void *val, int len) { - int error; + int error = 0; if (strcmp(bp->bio_attribute, attribute)) return (0); - if (bp->bio_length != len) { - printf("bio_length %jd len %d -> EFAULT\n", - (intmax_t)bp->bio_length, len); - error = EFAULT; - } else { - error = 0; + if (len == 0) { + bzero(bp->bio_data, bp->bio_length); + if (strlcpy(bp->bio_data, val, bp->bio_length) >= + bp->bio_length) { + printf("%s: %s bio_length %jd len %zu -> EFAULT\n", + __func__, bp->bio_to->name, + (intmax_t)bp->bio_length, strlen(val)); + error = EFAULT; + } + } else if (bp->bio_length == len) { bcopy(val, bp->bio_data, len); bp->bio_completed = len; + } else { + printf("%s: %s bio_length %jd len %d -> EFAULT\n", __func__, + bp->bio_to->name, (intmax_t)bp->bio_length, len); + error = EFAULT; } g_io_deliver(bp, error); return (1); ==== //depot/projects/soc2007/lulf/gvinum_main/sys/geom/part/g_part.c#3 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/part/g_part.c,v 1.2 2007/04/27 05:58:10 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/part/g_part.c,v 1.5 2007/05/09 05:37:53 marcel Exp $"); #include #include @@ -64,12 +64,12 @@ const char *lexeme; enum g_part_alias alias; } g_part_alias_list[G_PART_ALIAS_COUNT] = { - { "@efi", G_PART_ALIAS_EFI }, - { "@freebsd", G_PART_ALIAS_FREEBSD }, - { "@freebsd-swap", G_PART_ALIAS_FREEBSD_SWAP }, - { "@freebsd-ufs", G_PART_ALIAS_FREEBSD_UFS }, - { "@freebsd-vinum", G_PART_ALIAS_FREEBSD_VINUM }, - { "@mbr", G_PART_ALIAS_MBR } + { "efi", G_PART_ALIAS_EFI }, + { "freebsd", G_PART_ALIAS_FREEBSD }, + { "freebsd-swap", G_PART_ALIAS_FREEBSD_SWAP }, + { "freebsd-ufs", G_PART_ALIAS_FREEBSD_UFS }, + { "freebsd-vinum", G_PART_ALIAS_FREEBSD_VINUM }, + { "mbr", G_PART_ALIAS_MBR } }; /* @@ -111,7 +111,6 @@ G_PART_CTL_DESTROY, G_PART_CTL_MODIFY, G_PART_CTL_MOVE, - G_PART_CTL_QUERY, G_PART_CTL_RECOVER, G_PART_CTL_RESIZE, G_PART_CTL_UNDO @@ -247,7 +246,7 @@ SET_FOREACH(iter, g_part_scheme_set) { if ((*iter)->name == NULL) continue; - if (!strcmp((*iter)->name, p)) { + if (!strcasecmp((*iter)->name, p)) { s = *iter; break; } @@ -331,11 +330,12 @@ static int g_part_ctl_add(struct gctl_req *req, struct g_part_parms *gpp) { - char buf[16]; + char buf[32]; struct g_geom *gp; struct g_provider *pp; struct g_part_entry *delent, *last, *entry; struct g_part_table *table; + struct sbuf *sb; quad_t end; unsigned int index; int error; @@ -396,8 +396,6 @@ gctl_error(req, "%d index '%d'", EEXIST, gpp->gpp_index); return (EEXIST); } - snprintf(buf, sizeof(buf), "%d", index); - gctl_set_param(req, "index", buf, strlen(buf) + 1); entry = (delent == NULL) ? g_malloc(table->gpt_scheme->gps_entrysz, M_WAITOK | M_ZERO) : delent; @@ -422,6 +420,15 @@ entry->gpe_modified = 1; } g_part_new_provider(gp, table, entry); + + /* Provide feedback if so requested. */ + if (gpp->gpp_parms & G_PART_PARM_OUTPUT) { + sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); + sbuf_printf(sb, "%s%s added\n", gp->name, + G_PART_NAME(table, entry, buf, sizeof(buf))); + gctl_set_param(req, "output", sbuf_data(sb), sbuf_len(sb) + 1); + sbuf_delete(sb); + } return (0); } @@ -510,6 +517,7 @@ struct g_provider *pp; struct g_part_scheme *scheme; struct g_part_table *null, *table; + struct sbuf *sb; int attr, error; pp = gpp->gpp_provider; @@ -583,6 +591,14 @@ table->gpt_created = 1; if (null != NULL) kobj_delete((kobj_t)null, M_GEOM); + + /* Provide feedback if so requested. */ + if (gpp->gpp_parms & G_PART_PARM_OUTPUT) { + sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); + sbuf_printf(sb, "%s created\n", gp->name); + gctl_set_param(req, "output", sbuf_data(sb), sbuf_len(sb) + 1); + sbuf_delete(sb); + } return (0); fail: @@ -601,10 +617,12 @@ static int g_part_ctl_delete(struct gctl_req *req, struct g_part_parms *gpp) { + char buf[32]; struct g_geom *gp; struct g_provider *pp; struct g_part_entry *entry; struct g_part_table *table; + struct sbuf *sb; gp = gpp->gpp_geom; G_PART_TRACE((G_T_TOPOLOGY, "%s(%s)", __func__, gp->name)); @@ -639,6 +657,15 @@ entry->gpe_deleted = 1; } g_wither_provider(pp, ENXIO); + + /* Provide feedback if so requested. */ + if (gpp->gpp_parms & G_PART_PARM_OUTPUT) { + sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); + sbuf_printf(sb, "%s%s deleted\n", gp->name, + G_PART_NAME(table, entry, buf, sizeof(buf))); + gctl_set_param(req, "output", sbuf_data(sb), sbuf_len(sb) + 1); + sbuf_delete(sb); + } return (0); } @@ -648,6 +675,7 @@ struct g_geom *gp; struct g_part_entry *entry; struct g_part_table *null, *table; + struct sbuf *sb; int error; gp = gpp->gpp_geom; @@ -685,15 +713,24 @@ } kobj_delete((kobj_t)table, M_GEOM); + /* Provide feedback if so requested. */ + if (gpp->gpp_parms & G_PART_PARM_OUTPUT) { + sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); + sbuf_printf(sb, "%s destroyed\n", gp->name); + gctl_set_param(req, "output", sbuf_data(sb), sbuf_len(sb) + 1); + sbuf_delete(sb); + } return (0); } static int g_part_ctl_modify(struct gctl_req *req, struct g_part_parms *gpp) { + char buf[32]; struct g_geom *gp; struct g_part_entry *entry; struct g_part_table *table; + struct sbuf *sb; int error; gp = gpp->gpp_geom; @@ -721,6 +758,15 @@ if (!entry->gpe_created) entry->gpe_modified = 1; + + /* Provide feedback if so requested. */ + if (gpp->gpp_parms & G_PART_PARM_OUTPUT) { + sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); + sbuf_printf(sb, "%s%s modified\n", gp->name, + G_PART_NAME(table, entry, buf, sizeof(buf))); + gctl_set_param(req, "output", sbuf_data(sb), sbuf_len(sb) + 1); + sbuf_delete(sb); + } return (0); } @@ -732,13 +778,6 @@ } static int -g_part_ctl_query(struct gctl_req *req, struct g_part_parms *gpp) -{ - gctl_error(req, "%d verb 'query'", ENOSYS); - return (ENOSYS); -} - -static int g_part_ctl_recover(struct gctl_req *req, struct g_part_parms *gpp) { gctl_error(req, "%d verb 'recover'", ENOSYS); @@ -799,8 +838,12 @@ goto fail; } error = g_part_probe(gp, cp, table->gpt_depth); - if (error) - goto fail; + if (error) { + g_topology_lock(); + g_access(cp, -1, -1, -1); + g_part_wither(gp, error); + return (0); + } table = gp->softc; } @@ -863,83 +906,67 @@ ctlreq = G_PART_CTL_NONE; modifies = 0; - mparms = oparms = 0; + mparms = 0; + oparms = G_PART_PARM_FLAGS | G_PART_PARM_OUTPUT | G_PART_PARM_VERSION; switch (*verb) { case 'a': if (!strcmp(verb, "add")) { ctlreq = G_PART_CTL_ADD; modifies = 1; - mparms = G_PART_PARM_GEOM | G_PART_PARM_SIZE | + mparms |= G_PART_PARM_GEOM | G_PART_PARM_SIZE | G_PART_PARM_START | G_PART_PARM_TYPE; - oparms = G_PART_PARM_FLAGS | G_PART_PARM_INDEX | - G_PART_PARM_LABEL; + oparms |= G_PART_PARM_INDEX | G_PART_PARM_LABEL; } break; case 'c': if (!strcmp(verb, "commit")) { ctlreq = G_PART_CTL_COMMIT; - mparms = G_PART_PARM_GEOM; - oparms = G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_GEOM; } else if (!strcmp(verb, "create")) { ctlreq = G_PART_CTL_CREATE; modifies = 1; - mparms = G_PART_PARM_PROVIDER | - G_PART_PARM_SCHEME; - oparms = G_PART_PARM_ENTRIES | G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_PROVIDER | G_PART_PARM_SCHEME; + oparms |= G_PART_PARM_ENTRIES; } break; case 'd': if (!strcmp(verb, "delete")) { ctlreq = G_PART_CTL_DELETE; modifies = 1; - mparms = G_PART_PARM_GEOM | G_PART_PARM_INDEX; - oparms = G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_GEOM | G_PART_PARM_INDEX; } else if (!strcmp(verb, "destroy")) { ctlreq = G_PART_CTL_DESTROY; modifies = 1; - mparms = G_PART_PARM_GEOM; - oparms = G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_GEOM; } break; case 'm': if (!strcmp(verb, "modify")) { ctlreq = G_PART_CTL_MODIFY; modifies = 1; - mparms = G_PART_PARM_GEOM | G_PART_PARM_INDEX; - oparms = G_PART_PARM_FLAGS | G_PART_PARM_LABEL | - G_PART_PARM_TYPE; + mparms |= G_PART_PARM_GEOM | G_PART_PARM_INDEX; + oparms |= G_PART_PARM_LABEL | G_PART_PARM_TYPE; } else if (!strcmp(verb, "move")) { ctlreq = G_PART_CTL_MOVE; modifies = 1; - mparms = G_PART_PARM_GEOM | G_PART_PARM_INDEX; - oparms = G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_GEOM | G_PART_PARM_INDEX; } break; - case 'q': - if (!strcmp(verb, "query")) { - ctlreq = G_PART_CTL_QUERY; - mparms = G_PART_PARM_REQUEST | G_PART_PARM_RESPONSE; - oparms = G_PART_PARM_FLAGS | G_PART_PARM_GEOM; - } - break; case 'r': if (!strcmp(verb, "recover")) { ctlreq = G_PART_CTL_RECOVER; modifies = 1; - mparms = G_PART_PARM_GEOM; - oparms = G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_GEOM; } else if (!strcmp(verb, "resize")) { ctlreq = G_PART_CTL_RESIZE; modifies = 1; - mparms = G_PART_PARM_GEOM | G_PART_PARM_INDEX; - oparms = G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_GEOM | G_PART_PARM_INDEX; } break; case 'u': if (!strcmp(verb, "undo")) { ctlreq = G_PART_CTL_UNDO; - mparms = G_PART_PARM_GEOM; - oparms = G_PART_PARM_FLAGS; + mparms |= G_PART_PARM_GEOM; } break; } @@ -977,16 +1004,14 @@ if (!strcmp(ap->name, "label")) parm = G_PART_PARM_LABEL; break; + case 'o': + if (!strcmp(ap->name, "output")) + parm = G_PART_PARM_OUTPUT; + break; case 'p': if (!strcmp(ap->name, "provider")) parm = G_PART_PARM_PROVIDER; break; - case 'r': - if (!strcmp(ap->name, "request")) - parm = G_PART_PARM_REQUEST; - else if (!strcmp(ap->name, "response")) - parm = G_PART_PARM_RESPONSE; - break; case 's': if (!strcmp(ap->name, "scheme")) parm = G_PART_PARM_SCHEME; @@ -1002,6 +1027,8 @@ case 'v': if (!strcmp(ap->name, "verb")) continue; + else if (!strcmp(ap->name, "version")) + parm = G_PART_PARM_VERSION; break; } if ((parm & (mparms | oparms)) == 0) { @@ -1029,15 +1056,12 @@ case G_PART_PARM_LABEL: error = g_part_parm_str(p, &gpp.gpp_label); break; + case G_PART_PARM_OUTPUT: + error = 0; /* Write-only parameter */ + break; case G_PART_PARM_PROVIDER: error = g_part_parm_provider(p, &gpp.gpp_provider); break; - case G_PART_PARM_REQUEST: - error = g_part_parm_str(p, &gpp.gpp_request); - break; - case G_PART_PARM_RESPONSE: - error = 0; /* Write-only parameter. */ - break; case G_PART_PARM_SCHEME: error = g_part_parm_scheme(p, &gpp.gpp_scheme); break; @@ -1050,6 +1074,9 @@ case G_PART_PARM_TYPE: error = g_part_parm_str(p, &gpp.gpp_type); break; + case G_PART_PARM_VERSION: + error = g_part_parm_uint(p, &gpp.gpp_version); + break; default: error = EDOOFUS; break; @@ -1106,9 +1133,6 @@ case G_PART_CTL_MOVE: error = g_part_ctl_move(req, &gpp); break; - case G_PART_CTL_QUERY: - error = g_part_ctl_query(req, &gpp); - break; case G_PART_CTL_RECOVER: error = g_part_ctl_recover(req, &gpp); break; ==== //depot/projects/soc2007/lulf/gvinum_main/sys/geom/part/g_part.h#2 (text+ko) ==== @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/geom/part/g_part.h,v 1.1 2007/02/07 18:55:30 marcel Exp $ + * $FreeBSD: src/sys/geom/part/g_part.h,v 1.2 2007/05/08 20:18:17 marcel Exp $ */ #ifndef _GEOM_PART_H_ @@ -104,13 +104,13 @@ #define G_PART_PARM_GEOM 0x0004 #define G_PART_PARM_INDEX 0x0008 #define G_PART_PARM_LABEL 0x0010 -#define G_PART_PARM_PROVIDER 0x0020 -#define G_PART_PARM_REQUEST 0x0040 -#define G_PART_PARM_RESPONSE 0x0080 -#define G_PART_PARM_SCHEME 0x0100 -#define G_PART_PARM_SIZE 0x0200 -#define G_PART_PARM_START 0x0400 -#define G_PART_PARM_TYPE 0x0800 +#define G_PART_PARM_OUTPUT 0x0020 +#define G_PART_PARM_PROVIDER 0x0040 +#define G_PART_PARM_SCHEME 0x0080 +#define G_PART_PARM_SIZE 0x0100 +#define G_PART_PARM_START 0x0200 +#define G_PART_PARM_TYPE 0x0400 +#define G_PART_PARM_VERSION 0x0800 struct g_part_parms { unsigned int gpp_parms; @@ -120,11 +120,11 @@ unsigned int gpp_index; const char *gpp_label; struct g_provider *gpp_provider; - const char *gpp_request; struct g_part_scheme *gpp_scheme; quad_t gpp_size; quad_t gpp_start; const char *gpp_type; + unsigned int gpp_version; }; #endif /* !_GEOM_PART_H_ */ ==== //depot/projects/soc2007/lulf/gvinum_main/sys/geom/part/g_part_apm.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/part/g_part_apm.c,v 1.1 2007/02/07 18:55:30 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/part/g_part_apm.c,v 1.2 2007/05/08 20:18:17 marcel Exp $"); #include #include @@ -99,8 +99,10 @@ >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Wed May 9 21:27:43 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1720C16A403; Wed, 9 May 2007 21:27:43 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D134116A400 for ; Wed, 9 May 2007 21:27:42 +0000 (UTC) (envelope-from ivoras@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id C242513C459 for ; Wed, 9 May 2007 21:27:42 +0000 (UTC) (envelope-from ivoras@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49LRgoX077448 for ; Wed, 9 May 2007 21:27:42 GMT (envelope-from ivoras@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49LRg1B077445 for perforce@freebsd.org; Wed, 9 May 2007 21:27:42 GMT (envelope-from ivoras@FreeBSD.org) Date: Wed, 9 May 2007 21:27:42 GMT Message-Id: <200705092127.l49LRg1B077445@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to ivoras@FreeBSD.org using -f From: Ivan Voras To: Perforce Change Reviews Cc: Subject: PERFORCE change 119600 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 21:27:43 -0000 http://perforce.freebsd.org/chv.cgi?CH=119600 Change 119600 by ivoras@ivoras_finstall on 2007/05/09 21:27:18 Started implementing the more easier interfaces Affected files ... .. //depot/projects/soc2007/ivoras_finstall/pybackend/globals.py#2 edit .. //depot/projects/soc2007/ivoras_finstall/pybackend/systoold.py#2 edit .. //depot/projects/soc2007/ivoras_finstall/pybackend/systoolengine.py#2 edit Differences ... ==== //depot/projects/soc2007/ivoras_finstall/pybackend/globals.py#2 (text+ko) ==== @@ -29,11 +29,14 @@ # the caps array. Each caps string corresponds to a group of XML-RPC # functions the server claims to support. # The caps are: -# "systoold" : Special functions: GetId, GetCaps, SetRoot +# "systoold" : Special functions: GetId, GetCaps, SetDestRoot, +# SetLiveRoot # "rcconf" : Low-level functions that alter /etc/rc.conf: # GetConf, SetConf +# "disk" : Low-level drive & file system functions: +# GetDrives, GetMountPoints, Mount # These functions are implemented in systoolengine.py -server_caps = ["systoold", "rcconf"] +server_caps = ["systoold", "rcconf", "disk"] # debug level. 0 = no debug debug_level = 0 ==== //depot/projects/soc2007/ivoras_finstall/pybackend/systoold.py#2 (text+ko) ==== ==== //depot/projects/soc2007/ivoras_finstall/pybackend/systoolengine.py#2 (text+ko) ==== @@ -22,36 +22,82 @@ # SysToolD Engine import os, sys + import globals +import freebsd from conffile import ConfFile class SysToolEngine: + def __init__(self): - self.root_dir = "" # self.root_dir is sans final slash + self.root_dest = "" # Config file / "new" root, sans final slash + self.root_live = "" # Live file system root (for binaries!) + def GetId(self): """Returns server ID string""" return globals.server_id + def GetCaps(self): """Returns server capabilities array""" return globals.server_caps - def SetRoot(self, root_dir): - """Sets internal root directory (so Get/SetConf can be used - with alternative root""" - self.root_dir = root_dir + + def SetDestRoot(self, root_dir): + """Sets internal root directory for installation and config tasks + (so Get/SetConf can be used with alternative root)""" + self.root_conf = root_dir + return True + + + def SetLiveRoot(self, root_dir): + """Notifies SysTool Engine where to expect utility binaries.""" + self.root_live = root_dir return True + def GetConf(self, name): """Returns configuration variable from /etc/rc.conf""" - cf = ConfFile("%s/etc/rc.conf" % self.root_dir) + cf = ConfFile("%s/etc/rc.conf" % self.root_dest) val = cf.GetConf(name, None) return val - def SetConf(self, name, value): + + def SetConf(self, name, value, description): """Sets configuration variable to /etc/rc.conf""" + cf = ConfFile("%s/etc/rc.conf" % self.root_dest) + cf.SetConf(name, value, description) + return True + + + def GetDrives(self): + """Returns an array of drives the kernel knows about. + Examines "kern.drives" sysctl. This is NOT the list of + valid GEOM leaves which can be mounted, but a list of + found hardware.""" + return freebsd.get_sysctl("kern.disks").split(" ") + + + def GetMountPoints(self): + """Returns a list of dictionaries containing information + about currently mounted file systems""" + raw_mounts = freebsd.get_cmd_output("%s -p" % freebsd.cmd_mount).split("\n") + mounts = [] + for m in raw_mounts: + while m.find("\t\t") != -1: + m = m.replace("\t\t", "\t") + m = m.split("\t") + mounts.append({"device" : m[0], "mountpoint" : m[1], "filesystem" : m[2], "flags" : m[3]}) + return mounts + + + def Mount(self, device, mountpoint, filesystem, flags): + """Mounts a file system.""" return False + + + From owner-p4-projects@FreeBSD.ORG Wed May 9 21:46:08 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6840416A405; Wed, 9 May 2007 21:46:08 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3CC0C16A403 for ; Wed, 9 May 2007 21:46:08 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2D11913C44C for ; Wed, 9 May 2007 21:46:08 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49Lk8dP080683 for ; Wed, 9 May 2007 21:46:08 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49Lk5rh080678 for perforce@freebsd.org; Wed, 9 May 2007 21:46:05 GMT (envelope-from bms@incunabulum.net) Date: Wed, 9 May 2007 21:46:05 GMT Message-Id: <200705092146.l49Lk5rh080678@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119601 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 21:46:08 -0000 http://perforce.freebsd.org/chv.cgi?CH=119601 Change 119601 by bms@bms_anglepoise on 2007/05/09 21:45:26 do NEWBUS-ly correct probe and attach; resources allocated by siba are now managed and allocations handed out to children; bus handle and tag setup is proxied to parent nexus as all this stuff lives in KSEG1. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips/nexus.c#11 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#5 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_cc.c#3 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_mips.c#2 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_pcib.c#2 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_sdram.c#2 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips/nexus.c#11 (text+ko) ==== @@ -155,7 +155,7 @@ irq_rman.rm_descr = "Hardware IRQs"; if (rman_init(&irq_rman) != 0 || rman_manage_region(&irq_rman, 0, NUM_MIPS_IRQS - 1) != 0) { - panic("nexus_probe irq_rman"); + panic("%s: irq_rman", __func__); } mem_rman.rm_start = 0; @@ -163,8 +163,9 @@ mem_rman.rm_type = RMAN_ARRAY; mem_rman.rm_descr = "Memory addresses"; if (rman_init(&mem_rman) != 0 || - rman_manage_region(&mem_rman, 0, ~0) != 0) - panic("nexus_probe mem_rman"); + rman_manage_region(&mem_rman, 0, ~0) != 0) { + panic("%s: mem_rman", __func__); + } return (0); } ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#5 (text+ko) ==== @@ -42,12 +42,10 @@ #include /* - * TODO: cpu clock calculation. + * TODO: cpu clock calculation. -> move to siba_cc instance * TODO: De-mipsify this code. * TODO: Move siba to a machine independent location. - * TODO: Attempt to attach the children. - * TODO: resource manager for children (proxy it to nexus) - * TODO: Put the information into ivars like PCI does. + * TODO: Hardwire IRQs for attached cores on siba at probe time. * TODO: Support detach. * TODO: Power management. * TODO: code cleanup. @@ -58,6 +56,10 @@ #define MIPS_MEM_RID 0x20 #endif +extern int rman_debug; + +static struct rman mem_rman; /* XXX move to softc */ + static int siba_debug = 1; static const char descfmt[] = "Sonics SiliconBackplane rev %s"; #define SIBA_DEVDESCLEN sizeof(descfmt) + 8 @@ -97,6 +99,8 @@ static void siba_destroy_devinfo(struct siba_devinfo *); static struct siba_devid * siba_dev_match(uint16_t, uint16_t, uint8_t); +static struct resource_list * + siba_get_reslist(device_t, device_t); static uint8_t siba_getncores(uint16_t); static int siba_print_all_resources(device_t dev); static int siba_print_child(device_t, device_t); @@ -141,6 +145,8 @@ sc->sc_dev = dev; + //rman_debug = 1; /* XXX */ + /* * Map the ChipCommon register set using the hints the kernel * was compiled with. @@ -255,21 +261,40 @@ } bus_set_resource(dev, SYS_RES_MEMORY, rid, sc->sc_maddr, sc->sc_msize); + /* + * We need a manager for the space we claim on nexus to + * satisfy requests from children. + * We need to keep the source reservation we took because + * otherwise it may be claimed elsewhere. + * XXX move to softc + */ + mem_rman.rm_start = sc->sc_maddr; + mem_rman.rm_end = sc->sc_maddr + sc->sc_msize - 1; + mem_rman.rm_type = RMAN_ARRAY; + mem_rman.rm_descr = "Memory addresses"; + if (rman_init(&mem_rman) != 0 || + rman_manage_region(&mem_rman, mem_rman.rm_start, mem_rman.rm_end) != 0) { + panic("%s: mem_rman", __func__); + } + return (0); } static int siba_attach(device_t dev) { - struct siba_softc *sc = device_get_softc(dev); + struct siba_softc *sc = device_get_softc(dev); + struct siba_devinfo *sdi; uint32_t idlo, idhi; + uint32_t rev; + uint16_t vendorid; uint16_t ccid; - uint32_t rev; + int idx; if (siba_debug) printf("%s: entry\n", __func__); - bus_generic_probe(dev); + bus_generic_probe(dev); /* XXX should this happen here ? */ /* * Now that all bus space is mapped and visible to the CPU, @@ -277,12 +302,7 @@ * Note that only one core may be mapped at any time if the siba * bus is the child of a PCI or PCMCIA bus. */ - uint16_t vendorid; - int idx; - for (idx = 0; idx < sc->sc_ncores; idx++) { - struct siba_devid *sd; - idlo = siba_read_4(sc, idx, SIBA_CORE_IDLO); idhi = siba_read_4(sc, idx, SIBA_CORE_IDHI); ccid = ((idhi & 0x8ff0) >> 4); @@ -290,8 +310,8 @@ rev = (idhi & SSB_IDHIGH_RCLO); rev |= (idhi & SSB_IDHIGH_RCHI) >> SSB_IDHIGH_RCHI_SHIFT; - struct siba_devinfo *sdi; - + /* XXX setup devinfo should read the values from + * the core on the bus. */ sdi = siba_setup_devinfo(NULL, 0); sdi->sdi_vid = vendorid; sdi->sdi_devid = ccid; @@ -299,20 +319,6 @@ sdi->sdi_idx = idx; sdi->sdi_irq = 0; /* XXX notyet */ - sd = siba_dev_match(vendorid, ccid, rev); - (void)sd; -#if 0 - /* we do this the newbus way now */ - if (sd != NULL) { - device_printf(dev, "core %d: %s rev %02x\n", - idx, sd->sd_desc, rev); - } else { - device_printf(dev, - "core %d: vid %04x pid %04x rev %02x\n", - idx, vendorid, ccid, rev); - } -#endif - /* * Try to attach the child. * We need to set resources for the child from here; @@ -320,34 +326,29 @@ * instance variables like children of pcib do. */ device_t child; + child = device_add_child(dev, NULL, -1); if (child == NULL) { /* XXX should panic */ device_printf(dev, "could not add child\n"); siba_destroy_devinfo(sdi); } else { - /* Set memory window for immediate child. */ + /* + * Set resources for child. + * TODO: IRQs. + * Clean this up... + */ device_set_ivars(child, sdi); + resource_list_init(&sdi->sdi_rl); bus_addr_t baseaddr; baseaddr = sc->sc_maddr + (idx * SIBA_CORE_LEN); - bus_set_resource(child, SYS_RES_MEMORY, MIPS_MEM_RID, - baseaddr, baseaddr + SIBA_CORE_LEN - 1); + resource_list_add(&sdi->sdi_rl, SYS_RES_MEMORY, + MIPS_MEM_RID, /* XXX */ + baseaddr, baseaddr + SIBA_CORE_LEN - 1, + SIBA_CORE_LEN); } } - /* - * Release our memory window before children are attached. - */ - int result; - int rid; - rid = MIPS_MEM_RID; - result = bus_release_resource(dev, SYS_RES_MEMORY, rid, - sc->sc_mem); - if (result != 0) { - device_printf(dev, "error %d releasing resource\n", result); - return (ENXIO); - } - return (bus_generic_attach(dev)); } @@ -390,11 +391,67 @@ siba_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 *rv; + struct resource_list *rl; + struct resource_list_entry *rle; + int isdefault, needactivate; +#if 0 if (siba_debug) printf("%s: entry\n", __func__); +#endif - return (NULL); + isdefault = (start == 0UL && end == ~0UL && count == 1); + needactivate = flags & RF_ACTIVE; + rl = BUS_GET_RESOURCE_LIST(bus, child); + rle = NULL; + + if (isdefault) { + rle = resource_list_find(rl, type, *rid); + if (rle == NULL) + return (NULL); + if (rle->res != NULL) + panic("%s: resource entry is busy", __func__); + start = rle->start; + end = rle->end; + count = rle->count; + } + + /* + * If the request is for a resource which we manage, + * attempt to satisfy the allocation ourselves. + */ + if (type == SYS_RES_MEMORY && + start >= mem_rman.rm_start && end <= mem_rman.rm_end) { + + rv = rman_reserve_resource(&mem_rman, start, end, count, + flags, child); + if (rv == 0) { + printf("%s: could not reserve resource\n", __func__); + return (0); + } + + rman_set_rid(rv, *rid); + + if (needactivate) { + if (bus_activate_resource(child, type, *rid, rv)) { + printf("%s: could not activate resource\n", + __func__); + rman_release_resource(rv); + return (0); + } + } + + return (rv); + } + + /* + * Pass the request to the parent, usually MIPS nexus. + */ + if (siba_debug) + printf("%s: passing to parent", __func__); + return (resource_list_alloc(rl, bus, child, type, rid, + start, end, count, flags)); } static int @@ -402,12 +459,16 @@ struct resource *r) { - if (siba_debug) - printf("%s: entry\n", __func__); +// if (siba_debug) +// printf("%s: entry\n", __func__); - return (ENXIO); + /* + * Pass it to parent. + */ + return (rman_activate_resource(r)); } +/* XXX this should read the info from the core being probed */ static struct siba_devinfo * siba_setup_devinfo(device_t dev, uint8_t idx) { @@ -485,21 +546,25 @@ static void siba_probe_nomatch(device_t dev, device_t child) { - struct siba_devid *sd; - sd = siba_dev_match(siba_get_vendor(child), siba_get_device(child), - SIBA_REV_ANY); - device_printf(dev, "<0x%04x, 0x%04x \"%s\"> not attached\n", - siba_get_vendor(child), siba_get_device(child), - sd != NULL ? sd->sd_desc : "unknown"); + /* + * Announce devices which weren't attached after we probed the bus. + */ + if (siba_debug) { + struct siba_devid *sd; + sd = siba_dev_match(siba_get_vendor(child), + siba_get_device(child), SIBA_REV_ANY); + device_printf(dev, "<0x%04x, 0x%04x \"%s\"> not attached\n", + siba_get_vendor(child), siba_get_device(child), + sd != NULL ? sd->sd_desc : "unknown"); + } } static int siba_print_all_resources(device_t dev) { -#if 0 - struct siba_device *ndev = DEVTONX(dev); - struct resource_list *rl = &ndev->nx_resources; + struct siba_devinfo *sdi = device_get_ivars(dev); + struct resource_list *rl = &sdi->sdi_rl; int retval = 0; if (STAILQ_FIRST(rl)) @@ -509,9 +574,14 @@ retval += resource_list_print_type(rl, "irq", SYS_RES_IRQ, "%ld"); return (retval); -#else - return (0); -#endif +} + +static struct resource_list * +siba_get_reslist(device_t dev, device_t child) +{ + struct siba_devinfo *sdi = device_get_ivars(child); + + return (&sdi->sdi_rl); } static device_method_t siba_methods[] = { @@ -527,6 +597,7 @@ DEVMETHOD(bus_activate_resource,siba_activate_resource), DEVMETHOD(bus_add_child, siba_add_child), DEVMETHOD(bus_alloc_resource, siba_alloc_resource), + DEVMETHOD(bus_get_resource_list,siba_get_reslist), DEVMETHOD(bus_print_child, siba_print_child), DEVMETHOD(bus_probe_nomatch, siba_probe_nomatch), DEVMETHOD(bus_read_ivar, siba_read_ivar), ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_cc.c#3 (text+ko) ==== @@ -54,6 +54,7 @@ if (siba_get_vendor(dev) == SIBA_VID_BROADCOM && siba_get_device(dev) == SIBA_DEVID_CHIPCOMMON) { + device_set_desc(dev, "ChipCommon core"); return (BUS_PROBE_DEFAULT); } @@ -84,10 +85,12 @@ device_printf(dev, "unable to allocate memory\n"); return (ENXIO); } +#if 0 device_printf(dev, "start %08lx size %04lx\n", rman_get_start(mem), rman_get_size(mem)); +#endif - device_set_desc(dev, "ChipCommon core"); + /* TODO: attach uart child */ return (0); } ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_mips.c#2 (text+ko) ==== @@ -54,6 +54,7 @@ if (siba_get_vendor(dev) == SIBA_VID_BROADCOM && siba_get_device(dev) == SIBA_DEVID_MIPS_3302) { + device_set_desc(dev, "MIPS 3302 processor"); return (BUS_PROBE_DEFAULT); } @@ -84,10 +85,10 @@ device_printf(dev, "unable to allocate memory\n"); return (ENXIO); } +#if 0 device_printf(dev, "start %08lx size %04lx\n", rman_get_start(mem), rman_get_size(mem)); - - device_set_desc(dev, "MIPS 3302 processor"); +#endif return (0); } ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_pcib.c#2 (text+ko) ==== @@ -54,6 +54,7 @@ if (siba_get_vendor(dev) == SIBA_VID_BROADCOM && siba_get_device(dev) == SIBA_DEVID_PCI) { + device_set_desc(dev, "SiBa-to-PCI host bridge"); return (BUS_PROBE_DEFAULT); } @@ -84,10 +85,10 @@ device_printf(dev, "unable to allocate memory\n"); return (ENXIO); } +#if 0 device_printf(dev, "start %08lx size %04lx\n", rman_get_start(mem), rman_get_size(mem)); - - device_set_desc(dev, "SiBa-to-PCI host bridge"); +#endif return (0); } ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_sdram.c#2 (text+ko) ==== @@ -54,6 +54,7 @@ if (siba_get_vendor(dev) == SIBA_VID_BROADCOM && siba_get_device(dev) == SIBA_DEVID_SDRAMDDR) { + device_set_desc(dev, "SDRAM/DDR core"); return (BUS_PROBE_DEFAULT); } @@ -84,10 +85,11 @@ device_printf(dev, "unable to allocate memory\n"); return (ENXIO); } + +#if 0 device_printf(dev, "start %08lx size %04lx\n", rman_get_start(mem), rman_get_size(mem)); - - device_set_desc(dev, "SDRAM/DDR core"); +#endif return (0); } From owner-p4-projects@FreeBSD.ORG Wed May 9 22:02:29 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DB49916A408; Wed, 9 May 2007 22:02:28 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8C7B816A403 for ; Wed, 9 May 2007 22:02:28 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 7D7D213C465 for ; Wed, 9 May 2007 22:02:28 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49M2SgT083233 for ; Wed, 9 May 2007 22:02:28 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49M2SWJ083229 for perforce@freebsd.org; Wed, 9 May 2007 22:02:28 GMT (envelope-from bms@incunabulum.net) Date: Wed, 9 May 2007 22:02:28 GMT Message-Id: <200705092202.l49M2SWJ083229@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119602 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 22:02:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=119602 Change 119602 by bms@bms_anglepoise on 2007/05/09 22:02:18 Clean up bus enumeration slightly by moving the code which initializes the devinfo into siba_setup_devinfo(), and reading it from the currently mapped core. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#6 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#6 (text+ko) ==== @@ -96,7 +96,9 @@ siba_alloc_resource(device_t, device_t, int, int *, u_long, u_long, u_long, u_int); static int siba_attach(device_t); +#ifdef notyet static void siba_destroy_devinfo(struct siba_devinfo *); +#endif static struct siba_devid * siba_dev_match(uint16_t, uint16_t, uint8_t); static struct resource_list * @@ -285,68 +287,26 @@ { struct siba_softc *sc = device_get_softc(dev); struct siba_devinfo *sdi; - uint32_t idlo, idhi; - uint32_t rev; - uint16_t vendorid; - uint16_t ccid; - int idx; + device_t child; + int idx; if (siba_debug) printf("%s: entry\n", __func__); - bus_generic_probe(dev); /* XXX should this happen here ? */ + bus_generic_probe(dev); /* * Now that all bus space is mapped and visible to the CPU, * enumerate its children. - * Note that only one core may be mapped at any time if the siba - * bus is the child of a PCI or PCMCIA bus. + * NB: only one core may be mapped at any time if the siba bus + * is the child of a PCI or PCMCIA bus. */ for (idx = 0; idx < sc->sc_ncores; idx++) { - idlo = siba_read_4(sc, idx, SIBA_CORE_IDLO); - idhi = siba_read_4(sc, idx, SIBA_CORE_IDHI); - ccid = ((idhi & 0x8ff0) >> 4); - vendorid = (idhi & SSB_IDHIGH_VC) >> SSB_IDHIGH_VC_SHIFT; - rev = (idhi & SSB_IDHIGH_RCLO); - rev |= (idhi & SSB_IDHIGH_RCHI) >> SSB_IDHIGH_RCHI_SHIFT; - - /* XXX setup devinfo should read the values from - * the core on the bus. */ - sdi = siba_setup_devinfo(NULL, 0); - sdi->sdi_vid = vendorid; - sdi->sdi_devid = ccid; - sdi->sdi_rev = rev; - sdi->sdi_idx = idx; - sdi->sdi_irq = 0; /* XXX notyet */ - - /* - * Try to attach the child. - * We need to set resources for the child from here; - * drivers which attach to siba will need to use the - * instance variables like children of pcib do. - */ - device_t child; - + sdi = siba_setup_devinfo(dev, idx); child = device_add_child(dev, NULL, -1); - if (child == NULL) { - /* XXX should panic */ - device_printf(dev, "could not add child\n"); - siba_destroy_devinfo(sdi); - } else { - /* - * Set resources for child. - * TODO: IRQs. - * Clean this up... - */ - device_set_ivars(child, sdi); - resource_list_init(&sdi->sdi_rl); - bus_addr_t baseaddr; - baseaddr = sc->sc_maddr + (idx * SIBA_CORE_LEN); - resource_list_add(&sdi->sdi_rl, SYS_RES_MEMORY, - MIPS_MEM_RID, /* XXX */ - baseaddr, baseaddr + SIBA_CORE_LEN - 1, - SIBA_CORE_LEN); - } + if (child == NULL) + panic("%s: device_add_child() failed\n", __func__); + device_set_ivars(child, sdi); } return (bus_generic_attach(dev)); @@ -454,32 +414,55 @@ start, end, count, flags)); } +/* + * The parent bus is responsible for resource activation; in the + * case of MIPS, this boils down to setting the virtual address and + * bus handle by mapping the physical address into KSEG1. + */ static int siba_activate_resource(device_t bus, device_t child, int type, int rid, struct resource *r) { -// if (siba_debug) -// printf("%s: entry\n", __func__); - - /* - * Pass it to parent. - */ return (rman_activate_resource(r)); } -/* XXX this should read the info from the core being probed */ static struct siba_devinfo * siba_setup_devinfo(device_t dev, uint8_t idx) { + struct siba_softc *sc = device_get_softc(dev); struct siba_devinfo *sdi; + uint32_t idlo, idhi, rev; + uint16_t vendorid, devid; sdi = malloc(sizeof(*sdi), M_DEVBUF, M_WAITOK | M_ZERO); resource_list_init(&sdi->sdi_rl); + idlo = siba_read_4(sc, idx, SIBA_CORE_IDLO); + idhi = siba_read_4(sc, idx, SIBA_CORE_IDHI); + + vendorid = (idhi & SSB_IDHIGH_VC) >> SSB_IDHIGH_VC_SHIFT; + devid = ((idhi & 0x8ff0) >> 4); + rev = (idhi & SSB_IDHIGH_RCLO); + rev |= (idhi & SSB_IDHIGH_RCHI) >> SSB_IDHIGH_RCHI_SHIFT; + + sdi->sdi_vid = vendorid; + sdi->sdi_devid = devid; + sdi->sdi_rev = rev; + sdi->sdi_idx = idx; + sdi->sdi_irq = 0; /* XXX notyet */ + + bus_addr_t baseaddr; + baseaddr = sc->sc_maddr + (idx * SIBA_CORE_LEN); + resource_list_add(&sdi->sdi_rl, SYS_RES_MEMORY, + MIPS_MEM_RID, /* XXX */ + baseaddr, baseaddr + SIBA_CORE_LEN - 1, + SIBA_CORE_LEN); + return (sdi); } +#ifdef notyet static void siba_destroy_devinfo(struct siba_devinfo *sdi) { @@ -487,7 +470,9 @@ resource_list_free(&sdi->sdi_rl); free(sdi, M_DEVBUF); } +#endif +/* XXX is this needed? */ static device_t siba_add_child(device_t dev, int order, const char *name, int unit) { From owner-p4-projects@FreeBSD.ORG Wed May 9 22:22:54 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A1A7316A406; Wed, 9 May 2007 22:22:54 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7675216A400 for ; Wed, 9 May 2007 22:22:54 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 6782E13C448 for ; Wed, 9 May 2007 22:22:54 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49MMsU3087799 for ; Wed, 9 May 2007 22:22:54 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49MMsxp087796 for perforce@freebsd.org; Wed, 9 May 2007 22:22:54 GMT (envelope-from bms@incunabulum.net) Date: Wed, 9 May 2007 22:22:54 GMT Message-Id: <200705092222.l49MMsxp087796@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119603 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 22:22:55 -0000 http://perforce.freebsd.org/chv.cgi?CH=119603 Change 119603 by bms@bms_anglepoise on 2007/05/09 22:22:17 add irq allocations; currently hardwired on sentry5. interrupts are not routed yet. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#7 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#7 (text+ko) ==== @@ -103,6 +103,7 @@ siba_dev_match(uint16_t, uint16_t, uint8_t); static struct resource_list * siba_get_reslist(device_t, device_t); +static uint8_t siba_getirq(uint16_t); static uint8_t siba_getncores(uint16_t); static int siba_print_all_resources(device_t dev); static int siba_print_child(device_t, device_t); @@ -137,6 +138,49 @@ return (ncores); } +/* + * On the Sentry5, the system bus IRQs are the same as the + * MIPS IRQs. Particular cores are hardwired to certain IRQ lines. + */ +static uint8_t +siba_getirq(uint16_t devid) +{ + uint8_t irq; + + switch (devid) { + case SIBA_DEVID_CHIPCOMMON: + irq = 0; + break; + case SIBA_DEVID_ETHERNET: + irq = 1; + break; + case SIBA_DEVID_IPSEC: + irq = 2; + break; + case SIBA_DEVID_USB: + irq = 3; + break; + case SIBA_DEVID_PCI: + irq = 4; + break; +#if 0 + /* + * 5 is reserved for the MIPS on-chip timer interrupt; + * it is hard-wired by the tick driver. + */ + case SIBA_DEVID_MIPS: + case SIBA_DEVID_MIPS_3302: + irq = 5; + break; +#endif + default: + irq = 0xFF; /* this core does not need an irq */ + break; + } + + return (irq); +} + static int siba_probe(device_t dev) { @@ -409,7 +453,7 @@ * Pass the request to the parent, usually MIPS nexus. */ if (siba_debug) - printf("%s: passing to parent", __func__); + printf("%s: proxying request to parent\n", __func__); return (resource_list_alloc(rl, bus, child, type, rid, start, end, count, flags)); } @@ -434,6 +478,7 @@ struct siba_devinfo *sdi; uint32_t idlo, idhi, rev; uint16_t vendorid, devid; + bus_addr_t baseaddr; sdi = malloc(sizeof(*sdi), M_DEVBUF, M_WAITOK | M_ZERO); resource_list_init(&sdi->sdi_rl); @@ -450,14 +495,20 @@ sdi->sdi_devid = devid; sdi->sdi_rev = rev; sdi->sdi_idx = idx; - sdi->sdi_irq = 0; /* XXX notyet */ + sdi->sdi_irq = siba_getirq(devid); - bus_addr_t baseaddr; + /* + * Determine memory window on bus and irq if one is needed. + */ baseaddr = sc->sc_maddr + (idx * SIBA_CORE_LEN); resource_list_add(&sdi->sdi_rl, SYS_RES_MEMORY, MIPS_MEM_RID, /* XXX */ - baseaddr, baseaddr + SIBA_CORE_LEN - 1, - SIBA_CORE_LEN); + baseaddr, baseaddr + SIBA_CORE_LEN - 1, SIBA_CORE_LEN); + + if (sdi->sdi_irq != 0xff) { + resource_list_add(&sdi->sdi_rl, SYS_RES_IRQ, + 0, sdi->sdi_irq, sdi->sdi_irq, 1); + } return (sdi); } From owner-p4-projects@FreeBSD.ORG Wed May 9 22:34:09 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D317016A407; Wed, 9 May 2007 22:34:08 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9196716A405 for ; Wed, 9 May 2007 22:34:08 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 82CFA13C469 for ; Wed, 9 May 2007 22:34:08 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49MY8e3089811 for ; Wed, 9 May 2007 22:34:08 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49MY8F6089808 for perforce@freebsd.org; Wed, 9 May 2007 22:34:08 GMT (envelope-from bms@incunabulum.net) Date: Wed, 9 May 2007 22:34:08 GMT Message-Id: <200705092234.l49MY8F6089808@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119604 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 22:34:09 -0000 http://perforce.freebsd.org/chv.cgi?CH=119604 Change 119604 by bms@bms_anglepoise on 2007/05/09 22:33:20 Try to route an interrupt. It looks like this request got proxied to nexus. I haven't tested this to make sure if it worked or not yet. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_cc.c#4 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_cc.c#4 (text+ko) ==== @@ -47,6 +47,7 @@ static int siba_cc_attach(device_t); static int siba_cc_probe(device_t); +static void siba_cc_intr(void *v); static int siba_cc_probe(device_t dev) @@ -70,6 +71,7 @@ { //struct siba_cc_softc *sc = device_get_softc(dev); struct resource *mem; + struct resource *irq; int rid; /* @@ -79,22 +81,47 @@ */ #define MIPS_MEM_RID 0x20 rid = MIPS_MEM_RID; - mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, - RF_ACTIVE); + mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); if (mem == NULL) { device_printf(dev, "unable to allocate memory\n"); return (ENXIO); } -#if 0 - device_printf(dev, "start %08lx size %04lx\n", - rman_get_start(mem), rman_get_size(mem)); -#endif + + rid = 0; + irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, 0); + if (irq == NULL) { + device_printf(dev, "unable to allocate irq\n"); + return (ENXIO); + } + + /* now setup the interrupt */ + /* may be fast, exclusive or mpsafe at a later date */ + + /* + * XXX is this interrupt line in ChipCommon used for anything + * other than the uart? in that case we shouldn't hog it ourselves + * and let uart claim it to avoid polled mode. + */ + int err; + void *cookie; + err = bus_setup_intr(dev, irq, INTR_TYPE_TTY, NULL, siba_cc_intr, NULL, + &cookie); + if (err != 0) { + device_printf(dev, "unable to setup intr\n"); + return (ENXIO); + } /* TODO: attach uart child */ return (0); } +static void +siba_cc_intr(void *v) +{ + +} + static device_method_t siba_cc_methods[] = { /* Device interface */ DEVMETHOD(device_attach, siba_cc_attach), From owner-p4-projects@FreeBSD.ORG Wed May 9 22:38:15 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D5FDA16A402; Wed, 9 May 2007 22:38:14 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 96FB016A404 for ; Wed, 9 May 2007 22:38:14 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 8859A13C448 for ; Wed, 9 May 2007 22:38:14 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l49McEbw090046 for ; Wed, 9 May 2007 22:38:14 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l49McET1090043 for perforce@freebsd.org; Wed, 9 May 2007 22:38:14 GMT (envelope-from bms@incunabulum.net) Date: Wed, 9 May 2007 22:38:14 GMT Message-Id: <200705092238.l49McET1090043@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119606 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 22:38:15 -0000 http://perforce.freebsd.org/chv.cgi?CH=119606 Change 119606 by bms@bms_anglepoise on 2007/05/09 22:38:10 add copyright Affected files ... .. //depot/projects/mips2/src/sys/dev/cfe/cfe_resource.c#2 edit Differences ... ==== //depot/projects/mips2/src/sys/dev/cfe/cfe_resource.c#2 (text+ko) ==== @@ -1,4 +1,27 @@ /*- + * Copyright (c) 2007 Bruce M. Simpson. + * 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 AUTHOR 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 AUTHOR 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. */ /* From owner-p4-projects@FreeBSD.ORG Thu May 10 01:13:26 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 023B316A404; Thu, 10 May 2007 01:13:26 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B523416A414 for ; Thu, 10 May 2007 01:13:25 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id A6A5513C483 for ; Thu, 10 May 2007 01:13:25 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4A1DPTS029571 for ; Thu, 10 May 2007 01:13:25 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4A1DPum029562 for perforce@freebsd.org; Thu, 10 May 2007 01:13:25 GMT (envelope-from bms@incunabulum.net) Date: Thu, 10 May 2007 01:13:25 GMT Message-Id: <200705100113.l4A1DPum029562@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119610 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 May 2007 01:13:26 -0000 http://perforce.freebsd.org/chv.cgi?CH=119610 Change 119610 by bms@bms_anglepoise on 2007/05/10 01:13:00 Make 'device pci' bring in the siba bridge for the SENTRY5 target Affected files ... .. //depot/projects/mips2/src/sys/mips/conf/SENTRY5#5 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/files.sentry5#7 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/conf/SENTRY5#5 (text+ko) ==== @@ -1,6 +1,6 @@ # # $FreeBSD$ -# $P4: //depot/projects/mips2/src/sys/mips/conf/SENTRY5#4 $ +# $P4: //depot/projects/mips2/src/sys/mips/conf/SENTRY5#5 $ # # The Broadcom Sentry5 series of processors and boards is very commonly # used in COTS hardware including the Netgear WGT634U. @@ -66,10 +66,10 @@ options INVARIANTS options INVARIANT_SUPPORT -device siba +device siba # Sonics SiliconBackplane +device pci # siba_pcib -# XXX notyet; need to be auto probed children of siba0. -#device pci +# XXX notyet; need to be auto probed children of siba. #device uart #device uart_ns8250 ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/files.sentry5#7 (text+ko) ==== @@ -6,9 +6,13 @@ # for USB 1.1 OHCI, Ethernet and IPSEC cores # which are believed to be devices we have drivers for # which just need to be tweaked for attachment to an SSB system bus. -# TODO: Add pci host bridge support. + mips/mips32/sentry5/siba.c optional siba mips/mips32/sentry5/siba_cc.c optional siba + +# PCI host bridge +mips/mips32/sentry5/siba_pcib.c optional pci + +# neither of these are actually need yet. mips/mips32/sentry5/siba_mips.c optional siba mips/mips32/sentry5/siba_sdram.c optional siba -mips/mips32/sentry5/siba_pcib.c optional siba From owner-p4-projects@FreeBSD.ORG Thu May 10 01:14:28 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C94C116A407; Thu, 10 May 2007 01:14:27 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8F9D816A404 for ; Thu, 10 May 2007 01:14:27 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 7F44513C457 for ; Thu, 10 May 2007 01:14:27 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4A1ERIb029833 for ; Thu, 10 May 2007 01:14:27 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4A1ERl3029827 for perforce@freebsd.org; Thu, 10 May 2007 01:14:27 GMT (envelope-from bms@incunabulum.net) Date: Thu, 10 May 2007 01:14:27 GMT Message-Id: <200705100114.l4A1ERl3029827@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119611 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 May 2007 01:14:28 -0000 http://perforce.freebsd.org/chv.cgi?CH=119611 Change 119611 by bms@bms_anglepoise on 2007/05/10 01:13:27 update comments - a lot of stuff lives in this core Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_cc.c#5 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_cc.c#5 (text+ko) ==== @@ -26,6 +26,17 @@ /* * Child driver for ChipCommon core. + * Two 16C550 compatible UARTs live here. On the WGT634U, uart1 is the + * system console, and uart0 is not pinned out. + * Because their presence is conditional, they should probably + * be attached from here. + * GPIO lives here. + * The hardware watchdog lives here. + * Clock control registers live here. + * Flash config registers live here. There may or may not be system flash. + * The external interface bus lives here (conditionally). + * There is a JTAG interface here which may be used to attach probes to + * the SoC for debugging. */ #include From owner-p4-projects@FreeBSD.ORG Thu May 10 01:14:28 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 31D5616A532; Thu, 10 May 2007 01:14:28 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E02F716A47F for ; Thu, 10 May 2007 01:14:27 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id CB82513C469 for ; Thu, 10 May 2007 01:14:27 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4A1ERMm029841 for ; Thu, 10 May 2007 01:14:27 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4A1ERup029836 for perforce@freebsd.org; Thu, 10 May 2007 01:14:27 GMT (envelope-from bms@incunabulum.net) Date: Thu, 10 May 2007 01:14:27 GMT Message-Id: <200705100114.l4A1ERup029836@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119612 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 May 2007 01:14:28 -0000 http://perforce.freebsd.org/chv.cgi?CH=119612 Change 119612 by bms@bms_anglepoise on 2007/05/10 01:14:15 update comments; these two drivers are unlikely to be needed; they are mostly here to represent straw men for making the newbus attachment work Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_mips.c#3 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_sdram.c#3 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_mips.c#3 (text+ko) ==== @@ -26,6 +26,8 @@ /* * Child driver for MIPS 3302 core. + * Interrupt controller registers live here. Interrupts may not be routed + * to the MIPS core if they are masked out. */ #include ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_sdram.c#3 (text+ko) ==== @@ -26,6 +26,8 @@ /* * Child driver for SDRAM/DDR controller core. + * Generally the OS should not need to access this device unless the + * firmware has not configured the SDRAM controller. */ #include From owner-p4-projects@FreeBSD.ORG Thu May 10 01:15:30 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0E80616A405; Thu, 10 May 2007 01:15:30 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D296516A400 for ; Thu, 10 May 2007 01:15:29 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id C4E9A13C46A for ; Thu, 10 May 2007 01:15:29 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4A1FT1n030054 for ; Thu, 10 May 2007 01:15:29 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4A1FTWh030051 for perforce@freebsd.org; Thu, 10 May 2007 01:15:29 GMT (envelope-from bms@incunabulum.net) Date: Thu, 10 May 2007 01:15:29 GMT Message-Id: <200705100115.l4A1FTWh030051@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119613 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 May 2007 01:15:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=119613 Change 119613 by bms@bms_anglepoise on 2007/05/10 01:14:47 update resource manager description for the memory range which siba manages. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#8 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba.c#8 (text+ko) ==== @@ -317,7 +317,7 @@ mem_rman.rm_start = sc->sc_maddr; mem_rman.rm_end = sc->sc_maddr + sc->sc_msize - 1; mem_rman.rm_type = RMAN_ARRAY; - mem_rman.rm_descr = "Memory addresses"; + mem_rman.rm_descr = "SiBa I/O memory addresses"; if (rman_init(&mem_rman) != 0 || rman_manage_region(&mem_rman, mem_rman.rm_start, mem_rman.rm_end) != 0) { panic("%s: mem_rman", __func__); From owner-p4-projects@FreeBSD.ORG Thu May 10 01:16:32 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id F1A1116A406; Thu, 10 May 2007 01:16:31 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CF75C16A402 for ; Thu, 10 May 2007 01:16:31 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id C0BED13C458 for ; Thu, 10 May 2007 01:16:31 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4A1GVTJ030115 for ; Thu, 10 May 2007 01:16:31 GMT (envelope-from bms@incunabulum.net) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4A1GVvj030112 for perforce@freebsd.org; Thu, 10 May 2007 01:16:31 GMT (envelope-from bms@incunabulum.net) Date: Thu, 10 May 2007 01:16:31 GMT Message-Id: <200705100116.l4A1GVvj030112@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bms@incunabulum.net using -f From: Bruce M Simpson To: Perforce Change Reviews Cc: Subject: PERFORCE change 119614 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 May 2007 01:16:32 -0000 http://perforce.freebsd.org/chv.cgi?CH=119614 Change 119614 by bms@bms_anglepoise on 2007/05/10 01:15:48 Bring in stubs for PCI host bridge. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_pcib.c#3 edit .. //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_pcibvar.h#1 add Differences ... ==== //depot/projects/mips2/src/sys/mips/mips32/sentry5/siba_pcib.c#3 (text+ko) ==== @@ -39,14 +39,62 @@ #include #include +#include +#include +#include + #include +#include +#include +#include + +#include +#include +#include + +#include "pcib_if.h" #include #include #include +#include +#ifndef MIPS_MEM_RID +#define MIPS_MEM_RID 0x20 +#endif + +/* + * TODO: interrupt routing. + * TODO: implement configuration space access. + * TODO: map pci i/o windows. + * TODO: fully implement bus allocation. + * TODO: implement resource managers. + */ + +static int siba_pcib_activate_resource(device_t, device_t, int, + int, struct resource *); +static struct resource * + siba_pcib_alloc_resource(device_t, device_t, int, int *, + u_long , u_long, u_long, u_int); static int siba_pcib_attach(device_t); +static int siba_pcib_deactivate_resource(device_t, device_t, int, + int, struct resource *); +static int siba_pcib_maxslots(device_t); static int siba_pcib_probe(device_t); +static u_int32_t + siba_pcib_read_config(device_t, u_int, u_int, u_int, u_int, + int); +static int siba_pcib_read_ivar(device_t, device_t, int, uintptr_t *); +static int siba_pcib_release_resource(device_t, device_t, int, int, + struct resource *); +static int siba_pcib_route_interrupt(device_t, device_t, int); +static int siba_pcib_setup_intr(device_t, device_t, struct resource *, + int, driver_filter_t *, driver_intr_t *, void *, void **); +static int siba_pcib_teardown_intr(device_t, device_t, struct resource *, + void *); +static void siba_pcib_write_config(device_t, u_int, u_int, u_int, u_int, + u_int32_t, int); +static int siba_pcib_write_ivar(device_t, device_t, int, uintptr_t); static int siba_pcib_probe(device_t dev) @@ -61,10 +109,6 @@ return (ENXIO); } -struct siba_pcib_softc { - void *notused; -}; - static int siba_pcib_attach(device_t dev) { @@ -75,9 +119,7 @@ /* * Allocate the resources which the parent bus has already * determined for us. - * TODO: interrupt routing */ -#define MIPS_MEM_RID 0x20 rid = MIPS_MEM_RID; mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); @@ -85,12 +127,175 @@ device_printf(dev, "unable to allocate memory\n"); return (ENXIO); } + + device_add_child(dev, "pci", -1); + return (bus_generic_attach(dev)); +} + +/* bus functions */ + +static int +siba_pcib_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) +{ + struct siba_pcib_softc *sc; + + sc = device_get_softc(dev); + switch (which) { + case PCIB_IVAR_BUS: + *result = sc->sc_bus; + return (0); + } + + return (ENOENT); +} + +static int +siba_pcib_write_ivar(device_t dev, device_t child, int which, uintptr_t value) +{ + struct siba_pcib_softc *sc; + + sc = device_get_softc(dev); + switch (which) { + case PCIB_IVAR_BUS: + sc->sc_bus = value; + return (0); + } + + return (ENOENT); +} + +static int +siba_pcib_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) +{ + + return (BUS_SETUP_INTR(device_get_parent(dev), child, ires, flags, + filt, intr, arg, cookiep)); +} + +static int +siba_pcib_teardown_intr(device_t dev, device_t child, struct resource *vec, + void *cookie) +{ + + return (BUS_TEARDOWN_INTR(device_get_parent(dev), child, vec, cookie)); +} + +static struct resource * +siba_pcib_alloc_resource(device_t bus, device_t child, int type, int *rid, + u_long start, u_long end, u_long count, u_int flags) +{ +#if 1 + + device_printf(bus, "%s: not yet implemented\n", __func__); + return (NULL); +#else + bus_space_tag_t tag; + struct siba_pcib_softc *sc = device_get_softc(bus); + struct rman *rmanp; + struct resource *rv; + + tag = 0; + rv = NULL; + switch (type) { + case SYS_RES_IRQ: + rmanp = &sc->sc_irq_rman; + break; + + case SYS_RES_MEMORY: + rmanp = &sc->sc_mem_rman; + tag = &sc->sc_pci_memt; + break; + + default: + return (rv); + } + + rv = rman_reserve_resource(rmanp, start, end, count, flags, child); + if (rv != NULL) { + rman_set_rid(rv, *rid); + if (type == SYS_RES_MEMORY) { #if 0 - device_printf(dev, "start %08lx size %04lx\n", - rman_get_start(mem), rman_get_size(mem)); + rman_set_bustag(rv, tag); + rman_set_bushandle(rv, rman_get_bushandle(sc->sc_mem) + + (rman_get_start(rv) - IXP425_PCI_MEM_HWBASE)); +#endif + } + } + + return (rv); #endif +} + +static int +siba_pcib_activate_resource(device_t bus, device_t child, int type, int rid, + struct resource *r) +{ + + device_printf(bus, "%s: not yet implemented\n", __func__); + device_printf(bus, "%s called activate_resource\n", + device_get_nameunit(child)); + return (ENXIO); +} + +static int +siba_pcib_deactivate_resource(device_t bus, device_t child, int type, int rid, + struct resource *r) +{ - return (0); + device_printf(bus, "%s: not yet implemented\n", __func__); + device_printf(bus, "%s called deactivate_resource\n", + device_get_nameunit(child)); + return (ENXIO); +} + +static int +siba_pcib_release_resource(device_t bus, device_t child, int type, int rid, + struct resource *r) +{ + + device_printf(bus, "%s: not yet implemented\n", __func__); + device_printf(bus, "%s called release_resource\n", + device_get_nameunit(child)); + return (ENXIO); +} + +/* pcib interface functions */ + +static int +siba_pcib_maxslots(device_t dev) +{ + + //return (PCI_SLOTMAX); + return (1); +} + +static u_int32_t +siba_pcib_read_config(device_t dev, u_int bus, u_int slot, + u_int func, u_int reg, int bytes) +{ + + /* read from pci configuration space */ + device_printf(dev, "%s: not yet implemented\n", __func__); + return (-1); +} + +static void +siba_pcib_write_config(device_t dev, u_int bus, u_int slot, + u_int func, u_int reg, u_int32_t val, int bytes) +{ + + /* write to pci configuration space */ + device_printf(dev, "%s: not yet implemented\n", __func__); +} + +static int +siba_pcib_route_interrupt(device_t bridge, device_t device, int pin) +{ + + device_printf(bridge, "%s: not yet implemented\n", __func__); + return (-1); } static device_method_t siba_pcib_methods[] = { @@ -98,11 +303,28 @@ DEVMETHOD(device_attach, siba_pcib_attach), DEVMETHOD(device_probe, siba_pcib_probe), + /* Bus interface */ + DEVMETHOD(bus_print_child, bus_generic_print_child), + DEVMETHOD(bus_read_ivar, siba_pcib_read_ivar), + DEVMETHOD(bus_write_ivar, siba_pcib_write_ivar), + DEVMETHOD(bus_setup_intr, siba_pcib_setup_intr), + DEVMETHOD(bus_teardown_intr, siba_pcib_teardown_intr), + DEVMETHOD(bus_alloc_resource, siba_pcib_alloc_resource), + DEVMETHOD(bus_activate_resource, siba_pcib_activate_resource), + DEVMETHOD(bus_deactivate_resource, siba_pcib_deactivate_resource), + DEVMETHOD(bus_release_resource, siba_pcib_release_resource), + + /* pcib interface */ + DEVMETHOD(pcib_maxslots, siba_pcib_maxslots), + DEVMETHOD(pcib_read_config, siba_pcib_read_config), + DEVMETHOD(pcib_write_config, siba_pcib_write_config), + DEVMETHOD(pcib_route_interrupt, siba_pcib_route_interrupt), + {0, 0}, }; static driver_t siba_pcib_driver = { - "siba_pcib", + "pcib", siba_pcib_methods, sizeof(struct siba_softc), }; From owner-p4-projects@FreeBSD.ORG Thu May 10 15:28:23 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A209216A406; Thu, 10 May 2007 15:28:23 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3B62416A405 for ; Thu, 10 May 2007 15:28:23 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2BEC713C455 for ; Thu, 10 May 2007 15:28:23 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4AFSNgZ016565 for ; Thu, 10 May 2007 15:28:23 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4AFSM8A016562 for perforce@freebsd.org; Thu, 10 May 2007 15:28:23 GMT (envelope-from jhb@freebsd.org) Date: Thu, 10 May 2007 15:28:23 GMT Message-Id: <200705101528.l4AFSM8A016562@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Cc: Subject: PERFORCE change 119631 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 May 2007 15:28:24 -0000 http://perforce.freebsd.org/chv.cgi?CH=119631 Change 119631 by jhb@jhb_mutex on 2007/05/10 15:28:19 Move cpu_exit() sooner. There's no need to make this happen this late (most of them are nops, the others all deal with stuff that only affects userland). Moving it allows us to avoid dropping the proc lock and parent proc lock after notifying other processes of our exit via kevent(2) or SIGCHLD but before setting PRS_ZOMBIE. As a result, if the other process tried to do a waitpid(W_NOHANG) during that window, it wouldn't see the process as a zombie yet and would fail. Affected files ... .. //depot/projects/smpng/sys/kern/kern_exit.c#122 edit Differences ... ==== //depot/projects/smpng/sys/kern/kern_exit.c#122 (text+ko) ==== @@ -406,6 +406,16 @@ sx_xunlock(&allproc_lock); /* + * Call machine-dependent code to release any + * machine-dependent resources other than the address space. + * The address space is released by "vmspace_exitfree(p)" in + * vm_waitproc(). + */ + cpu_exit(td); + + WITNESS_WARN(WARN_PANIC, NULL, "process (pid %d) exiting", p->p_pid); + + /* * Reparent all of our children to init. */ sx_xlock(&proctree_lock); @@ -484,22 +494,6 @@ else /* LINUX thread */ psignal(p->p_pptr, p->p_sigparent); } - PROC_UNLOCK(p->p_pptr); - PROC_UNLOCK(p); - - /* - * Finally, call machine-dependent code to release the remaining - * resources including address space. - * The address space is released by "vmspace_exitfree(p)" in - * vm_waitproc(). - */ - cpu_exit(td); - - WITNESS_WARN(WARN_PANIC, &proctree_lock.lock_object, - "process (pid %d) exiting", p->p_pid); - - PROC_LOCK(p); - PROC_LOCK(p->p_pptr); sx_xunlock(&proctree_lock); /* From owner-p4-projects@FreeBSD.ORG Thu May 10 15:56:06 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id F241A16A406; Thu, 10 May 2007 15:56:05 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id AB1DB16A400 for ; Thu, 10 May 2007 15:56:05 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 9AEC313C44C for ; Thu, 10 May 2007 15:56:05 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4AFu531021624 for ; Thu, 10 May 2007 15:56:05 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4AFu50L021621 for perforce@freebsd.org; Thu, 10 May 2007 15:56:05 GMT (envelope-from sam@freebsd.org) Date: Thu, 10 May 2007 15:56:05 GMT Message-Id: <200705101556.l4AFu50L021621@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 119635 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 May 2007 15:56:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=119635 Change 119635 by sam@sam_ebb on 2007/05/10 15:56:00 add compat shims for in-tree hal Affected files ... .. //depot/projects/wifi/sys/dev/ath/if_ath.c#141 edit .. //depot/projects/wifi/sys/dev/ath/if_athvar.h#56 edit Differences ... ==== //depot/projects/wifi/sys/dev/ath/if_ath.c#141 (text+ko) ==== @@ -3444,6 +3444,7 @@ rix = rs->rs_rate; sc->sc_rx_th.wr_rate = sc->sc_hwmap[rix].ieeerate; sc->sc_rx_th.wr_flags = sc->sc_hwmap[rix].rxflags; +#if HAL_ABI_VERSION >= 0x07050400 if (sc->sc_curchan.channelFlags & CHANNEL_HT) { /* * For HT operation we must specify the channel @@ -3462,6 +3463,7 @@ IEEE80211_RADIOTAP_F_SHORTGI; } } +#endif sc->sc_rx_th.wr_tsf = htole64(ath_extend_tsf(rs->rs_tstamp, tsf)); if (rs->rs_status & HAL_RXERR_CRC) sc->sc_rx_th.wr_flags |= IEEE80211_RADIOTAP_F_BADFCS; ==== //depot/projects/wifi/sys/dev/ath/if_athvar.h#56 (text+ko) ==== @@ -586,6 +586,14 @@ #define ath_hal_isgsmsku(ah) \ ((ah)->ah_countryCode == 843) #endif +#if HAL_ABI_VERSION < 0x07050400 +/* compat shims so code compilers--it won't work though */ +#define CHANNEL_HT20 0x10000 +#define CHANNEL_HT40PLUS 0x20000 +#define CHANNEL_HT40MINUS 0x40000 +#define HAL_MODE_11NG_HT20 0x008000 +#define HAL_MODE_11NA_HT20 0x010000 +#endif #define ath_hal_setuprxdesc(_ah, _ds, _size, _intreq) \ ((*(_ah)->ah_setupRxDesc)((_ah), (_ds), (_size), (_intreq))) From owner-p4-projects@FreeBSD.ORG Fri May 11 14:57:31 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5140416A409; Fri, 11 May 2007 14:57:31 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 1B85716A400 for ; Fri, 11 May 2007 14:57:31 +0000 (UTC) (envelope-from taleks@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 099B513C4AD for ; Fri, 11 May 2007 14:57:31 +0000 (UTC) (envelope-from taleks@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4BEvV2X055036 for ; Fri, 11 May 2007 14:57:31 GMT (envelope-from taleks@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4BEvUfs055031 for perforce@freebsd.org; Fri, 11 May 2007 14:57:30 GMT (envelope-from taleks@FreeBSD.org) Date: Fri, 11 May 2007 14:57:30 GMT Message-Id: <200705111457.l4BEvUfs055031@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to taleks@FreeBSD.org using -f From: Alexey Tarasov To: Perforce Change Reviews Cc: Subject: PERFORCE change 119672 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 May 2007 14:57:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=119672 Change 119672 by taleks@taleks_th on 2007/05/11 14:56:54 Updated ISR handler for real/vm86 mode, udated pxe_core code with PXE API calls. Affected files ... .. //depot/projects/soc2007/taleks-pxe_http/btx_mod/btx/btx.S#4 edit .. //depot/projects/soc2007/taleks-pxe_http/pxe_core.c#5 edit .. //depot/projects/soc2007/taleks-pxe_http/pxe_core.h#5 edit .. //depot/projects/soc2007/taleks-pxe_http/pxe_icmp.c#4 edit .. //depot/projects/soc2007/taleks-pxe_http/pxe_icmp.h#3 edit .. //depot/projects/soc2007/taleks-pxe_http/pxe_isr.S#2 edit Differences ... ==== //depot/projects/soc2007/taleks-pxe_http/btx_mod/btx/btx.S#4 (text+ko) ==== @@ -402,7 +402,6 @@ popl %es # data movl %esp,%ebx # Stack frame movl $dmpfmt,%esi # Dump format string - movl $MEM_BUF,%edi # Buffer pushl %edi # Dump to call dump # buffer popl %esi # and @@ -707,10 +706,14 @@ jmp int_hw # V86 int 0x70 push $0x71 # Int 0x29: IRQ9 jmp int_hw # V86 int 0x71 - push $0x72 # Int 0x2a: IRQ10 - jmp int_hw # V86 int 0x72 +# push $0x72 # Int 0x2a: IRQ10 +# jmp int_hw # V86 int 0x72 +# just to test, my NIC's IRQ + nop + jmp user_isr_call push $0x73 # Int 0x2b: IRQ11 jmp int_hw # V86 int 0x73 + jmp user_isr_call push $0x74 # Int 0x2c: IRQ12 jmp int_hw # V86 int 0x74 push $0x75 # Int 0x2d: IRQ13 @@ -874,58 +877,101 @@ * will be run user_isr_call, which role is to run provided function * in user space. */ -intx30.2: xorl %eax,%eax # clear eax + + +intx30.2: + cli + pushl %edi + pushl %ebx + pushw %ds + pushw %dx + + pushl %ss # Set up + popl %ds # registers + + + movl $MEM_USR,%ebx # User base address + addl 0x18(%esp,1),%ebx # getting user stack head + addl $0x04, %ebx # first parameter + + movl (%ebx), %eax + movw 0x2(%ebx), %dx + xchgw %dx, %bx /* * updating call gate */ - mov gdtdesc,%edi # calculating descriptors entry - add $SEL_CALLGATE,%edi # pointing callgate selector - - popl %eax # got 32bit offset to handler - - movw %ax,(%edi) # +0: store offset 00..15 - shr $0x10,%eax # getting high word - add $0x06,%edi # +6: - mov %ax,(%edi) # handler offset 16..31 + movl $callgate, %edi + movw %ax, (%edi) # +0: store offset 00..15 + shr $0x10 ,%eax # getting high word + movw %ax, 0x06(%edi) # +6: handler offset 16..31 /* * installing handler - */ - xor %ax,%ax # clear ax - pop %ax # getting interrupt number - mov $0x08, %bl # - mulb %bl # - - mov $MEM_IDT,%di # point to IDT. - add %ax,%di # calculate entry - - mov $SEL_SCODE,%dh # supervisor code selector - mov user_isr_call,%ax # tramp address - - mov $0x8e,%dl # i386+ interrupt gate, DPL=0 - - mov %ax,(%edi) # 0: handler offset 0..15 - mov %dh,0x2(%edi) # +2: dest selector - # +4: 000:word_count=0 - mov %dl,0x5(%edi) # +5: P:DPL:type - # +6: handler offset 16..31 + */ +# xorl %eax, %eax # clear +# movw %bx, %ax # getting interrupt number +# mov $0x08, %bl # calculating offset +# mulb %bl # to IDT entry +# # +# movl $MEM_IDT,%edi # base address of IDT. +# addl %eax, %edi # calculate address of entry +# +# movb $SEL_SCODE, %dh # supervisor code selector +# mov user_isr_call, %ax # tramp address +# movb $0x8e, %dl # i386+ interrupt gate, DPL=0 +# +# movw %ax,(%edi) # 0: handler offset 0..15 +# movb %dh, 0x2(%edi) # +2: dest selector +# # +4: 000:word_count=0 +# movb %dl, 0x5(%edi) # +5: P:DPL:type + # +6: handler offset 16..31 /* * NOTE: it seems nothing else must be done */ + + popw %dx + popw %ds + popl %ebx + popl %edi + sti iret # return from syscall user_isr_call: /* * NOTE: isr must use lret to return and restore SS, ESP, CS, EIP. */ - push %ds # saving ds - mov $SEL_UDATA,%ax # - mov %ax,%ds # setting it to userspace data - # cs is updated from selector + pushl %ds # saving ds + pushl %edi + movl $SEL_SDATA, %eax # + movl %eax, %ds + + movl $callgate, %edi + movw (%edi), %ax + popl %edi + + cmpw $0x0000, %ax + je isr_ret + +# movl $SEL_UDATA, %eax +# movl %eax, %ds +# pushl %ds +# popl %fs +# pushl %fs +# popl %gs +# pushl %gs +# popl %es + + lcall $SEL_CALLGATE,$0x00000000 # far call via callgate selector # offset is ignored - pop %ds # restore data segment + +isr_ret: + + + popl %ds + iret # return from interrupt handler + /* * Dump structure [EBX] to [EDI], using format string [ESI]. @@ -1159,8 +1205,10 @@ .word 0xffff,0x0,0x9200,0x0 # SEL_RDATA .word 0xffff,MEM_USR,0xfa00,0xcf# SEL_UCODE .word 0xffff,MEM_USR,0xf200,0xcf# SEL_UDATA +# .word 0xffff,MEM_USR,0xba00,0xcf# SEL_UCODE +# .word 0xffff,MEM_USR,0xb200,0xcf# SEL_UDATA .word _TSSLM,MEM_TSS,0x8900,0x0 # SEL_TSS - .word 0x5, 0x0, 0xec00,0x0 # SEL_CALLGATE +callgate: .word 0x0, SEL_UCODE,0xec00,0x0 # SEL_CALLGATE gdt.1: /* * Pseudo-descriptors. @@ -1228,6 +1276,7 @@ .ascii "ss:esp" # "ss:esp=" .byte 0x80|DMP_MEM|DMP_EOL,0x0 # "00 00 ... 00 00\n" .asciz "BTX halted\n" # End +#save_esp: .word 0x0000,0x0000 /* * End of BTX memory. ==== //depot/projects/soc2007/taleks-pxe_http/pxe_core.c#5 (text+ko) ==== @@ -174,7 +174,43 @@ void pxe_core_install_isr() { + t_PXENV_UNDI_GET_INFORMATION *undi_info = + (t_PXENV_UNDI_GET_INFORMATION *)scratch_buffer; + +#ifdef PXE_DEBUG + printf("pxe_isr_install() called\n"); +#endif + bzero(undi_info, sizeof(*undi_info)); + + pxe_core_call(PXENV_UNDI_GET_INFORMATION); + + if (undi_info->Status != 0) { + printf("pxe_isr_install: failed %x\n", undi_info->Status); + return; + } + + irq=(uint8_t)(undi_info->IntNumber); + +#ifdef PXE_DEBUG + printf("pxe_isr_install() info:\n"); + printf("IRQ: %d\n", undi_info->IntNumber); + printf("Base io: %d\n", undi_info->BaseIo); + printf("MTU: %d\n", undi_info->MaxTranUnit); + printf("RX buffer queue: %d\n", undi_info->RxBufCt); + printf("TX buffer queue: %d\n", undi_info->TxBufCt); + printf("installing ISR\n"); +#endif + uint16_t int_num=(irq < 8) ? irq + 0x08 : irq + 0x68; + + caddr_t isr_addr=pxe_isr-__base; + printf("setting interrupt: %d for 0x%x (0x%x, base = 0x%x)\n", + int_num, pxe_isr, isr_addr, __base); + __isr_install(isr_addr, int_num); + +#ifdef PXE_DEBUG + printf("pxe_isr_install(): success\n"); +#endif } void @@ -239,10 +275,39 @@ int pxe_core_transmit(pxe_packet *pack) { + t_PXENV_UNDI_TRANSMIT *undi_send = + (t_PXENV_UNDI_TRANSMIT *)scratch_buffer; + + bzero(undi_send, sizeof(*undi_info)); + + /* media address */ + uint_8_t media_addr[6] = {0,0,0,0,0,0}; + + t_PXENV_UNDI_TBD tbd; + tbd.ImmedLength = pack->data_size; /* packet length */ + tbd.Xmit.segment = VTOPSEG(pack->data); /* immediate transmit buffer */ + tbd.Xmit.offset = VTOPOFF(pack->data); + tbd.DataBlkCount = 1 ; /* one block */ + tbd.DataBlk[0].TDPtrType = 1; /* segment:offset type */ + tbd.DataBlk[0].TDRsvdByte = 0; /* reserved */ + + /* NOTE: if it will work? Check params*/ + tbd.DataBlk[0].TDDataLen=tbd.ImmedLength; /* size of packet*/ + tbd.DataBlk[0].TDDataPtr.segment = VTOPSEG(pack->data);; + tbd.DataBlk[0].TDDataPtr.offset = VTOPOFF(pack->data);; - /* UNDI transmit ip packet call*/ + undi_send->Protocol = P_IP; + undi_send->DestAddr.segment = VTOPSEG(media_addr); + undi_send->DestAddr.offset = VTOPOFF(media_addr); + + pxe_core_call(PXENV_UNDI_GET_INFORMATION); + + if (undi_send->Status != 0) { + printf("pxe_core_transmit(): failed %x\n", undi_info->Status); + return (0); + } - return (0); + return (1); } /* flushes pending, aborted, wrong and etc packets */ @@ -267,9 +332,98 @@ return (1); } +/* + * checks if interrupt handler was executed for our NIC + * (in case of shared IRQs) + * in: + * none + * out: + * 0 - not our interrupt, return + * 1 - our, must handle receiving + */ +int +pxe_core_is_our() +{ + /* + * NOTE: best idea to do it in real mode interrupt handler, + * The PXE specs suggest fast interrupt handling, + * starting handler thread and returning + */ + t_PXENV_UNDI_ISR *undi_isr = + (t_PXENV_UNDI_ISR *)scratch_buffer; + + bzero(undi_isr, sizeof(*undi_isr)); + + undi_isr->FuncFlag=PXENV_UNDI_ISR_IN_START; + pxe_core_call(PXENV_UNDI_ISR); + + if (undi_isr->Status != 0) { /* pxe_core_call() failed */ + /* pretend, failed cause not ours interrupt */ + return (0); + } + + if (undi_isr->FuncFlag == PXENV_UNDI_ISR_OUT_OURS) + return (1); + + return (0); +} + +/* + 0 - failed + 1 - success +*/ +int +pxe_core_get_packet(int func, t_PXENV_UNDI_ISR *undi_isr ) +{ + + undi_isr->FuncFlag = func; + + while(1) { /* cycle to handle busy flag */ + + undi_isr->Status = 0; + + pxe_core_call(PXENV_UNDI_ISR); + + if (undi_isr->Status != 0) { + /* something gone wrong */ + return (0); + } + + if (undi_isr->FuncFlag == PXENV_UNDI_ISR_OUT_DONE) { + /* nothing to de */ + break; + } + + if (undi_isr->FuncFlag == PXENV_UNDI_ISR_OUT_BUSY) { + /* NIC is busy, wait */ + sleep(1); + continue; + } + + if (undi_isr->FuncFlag == PXENV_UNDI_ISR_OUT_RECIEVE) { + /* that's what we are waiting for */ + break; + } + + if (undi_isr->FuncFlag == PXENV_UNDI_ISR_OUT_TRANSMIT) { + /* transmitted packet */ + return (0); + } + } + + return (1); +} + void pxe_core_isr() { + /* + * NOTE: code here it must be redone to separate receiving thread + * and interrupt handler. + * in fact real mode ISR implements pxe_core_is_ours() + * and modifies __pxe_isr_occured, which must be checked + * in receiving queue. + */ int buffer_size = 0; /* total size of packet*/ int protocol = 0; /* protocol */ int recieved = 0; /* bytes received to buffer */ @@ -282,9 +436,27 @@ * real packet struct */ - /* - * TODO: UNDI get buffer size & etc - */ + if (!pxe_core_is_ours()) { + return; /* not ours interrupt, handling is over */ + } + + + t_PXENV_UNDI_ISR *undi_isr = + (t_PXENV_UNDI_ISR *)scratch_buffer; + + bzero(undi_isr, sizeof(*undi_isr)); + + /* starting packet receive cycle */ + if (0 -- pxe_core_get_packet(PXENV_UNDI_ISR_IN_PROCESS, undi_isr)) { + return; + } + + buffer_size = undi_isr->BufferLength; + protocol = undi_isr->ProtType; + frame_size = undi_isr->FrameLength; + +/* how to get in this address from userspace, which starts at 0xa800?*/ +/* frame_data = undi_isr->Frame.segment << 4 + undi_isr->Frame.offset; */ /* we are yet not interested in non-ip packets */ @@ -298,25 +470,26 @@ * and memblock copy */ -/* if (buffer_size==frame_size) { +/* if (buffer_size == frame_size) {*/ - pxe_ip *iphdr = (pxe_ip *)frame_data; + pxe_ip *iphdr = (pxe_ip *)frame_data; - dummy_pack.protocol = protocol; - dummy_pack.state = PXE_PACKET_STATE_USING; - dummy_pack.data = frame_data; - dummy_pack.data_size = frame_size; - dummy_pack.user_data = NULL; + dummy_pack.protocol = protocol; + dummy_pack.state = PXE_PACKET_STATE_USING; + dummy_pack.data = frame_data; + dummy_pack.data_size = frame_size; + dummy_pack.user_data = NULL; - /* TODO: calc ip checksum / + /* TODO: calc ip checksum */ - if (core_protocol[iphdr->protocol]) { - if (core_protocol[iphdr->protocol](&dummy_pack, PXE_CORE_FRAG, - NULL)) { + if (core_protocol[iphdr->protocol]) { + if (core_protocol[iphdr->protocol](&dummy_pack, + PXE_CORE_FRAG, NULL)) { return; } } -*/ +/* }*/ + pack = pxe_core_alloc_packet(buffer_size); if (pack == NULL) { @@ -339,17 +512,25 @@ pack->user_data = pack->data; while (recieved < buffer_size) { - /* - * UNDI get frame - */ + + if (!pxe_core_get_packet(PXENV_UNDI_ISR_GET_NEXT, undi_isr)) + break; + + frame_size = undi_isr->FrameLength; +/* how to get in this address from userspace, which starts at 0xa800?*/ +/* frame_data = undi_isr->Frame.segment << 4 + undi_isr->Frame.offset; */ - frame_size=0; pxe_core_recieve(pack, frame_data, frame_size); recieved += frame_size; } + if (recieved < buffer_size) { /* pxe_core_get_packet() in cycle failed */ + pxe_core_drop(pack); + return; + } + pack->user_data = NULL; ++packets_received; ==== //depot/projects/soc2007/taleks-pxe_http/pxe_core.h#5 (text+ko) ==== ==== //depot/projects/soc2007/taleks-pxe_http/pxe_icmp.c#4 (text+ko) ==== ==== //depot/projects/soc2007/taleks-pxe_http/pxe_icmp.h#3 (text+ko) ==== ==== //depot/projects/soc2007/taleks-pxe_http/pxe_isr.S#2 (text+ko) ==== @@ -39,6 +39,7 @@ chained_irq_seg: .word 0x0000 # stores original handler for interrupt original_mask: .byte 0x00 # stores interrupt mask +save_int_mask: .byte 0x00 # stores interrupt mask base_ds: .word 0x0000 # data segment s_pxenv_undi_isr: .word 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 @@ -57,6 +58,11 @@ .word 0x0000 # PXE API entry point segment add $6, %sp # restore stack ret +/* + * NOTES to think: + * 1. it seems BTX programms PIC with ICW4 = 2 (Auto EOI), so half of this code may be omited + * 2. do we really need to save chained handler + */ /* * Adopted from Intel PXE SDK @@ -98,19 +104,23 @@ * ACK to each hardware PIC needing ACK. */ - movw __pxe_nic_irq, %ax # getting irq number - movb %al, %dl # moving it to dl - movb $I8259_EOI, %al # set EOI control word - - cmpb $0x8, %dl # is IRQ8-IRQ15? - jb pxe_isr.master # no, use pic1 - - movw $I8259_AT_INTR_CTRL_REG,%dx # send EOI to PIC2 - outb %al, %dx # - -pxe_isr.master: movw $I8259_EOI_REG, %dx # send EOI to master - outb %al, %dx # - +/* + * hope AEOI'programmed pic will do it work itself + ** + * movw __pxe_nic_irq, %ax # getting irq number + * movb %al, %dl # moving it to dl + * movb $I8259_EOI, %al # set EOI control word + * + * cmpb $0x8, %dl # is IRQ8-IRQ15? + * jb pxe_isr.master # no, use pic1 + * + * movw $I8259_AT_INTR_CTRL_REG,%dx # send EOI to PIC2 + * outb %al, %dx # + * + * pxe_isr.master: + * movw $I8259_EOI_REG, %dx # send EOI to master + * outb %al, %dx # + */ pxe_isr.exit: popw %es # restore affected registers popw %di # popw %dx # @@ -126,42 +136,44 @@ sti # enable interrupts pushf # push flags -# pushw %es - -# movw chained_irq_off+2, %ax -# movw %ax, %es -# movw chained_irq_off, %bx - movl chained_irq_off, %eax - -# call %es:(%bx) # call chained handler - call *%eax - -# popw %es +/* + * here is calling of chained interrupt handler. Don't think it' srelly needed now + ** + * pushw %es + * movw chained_irq_off+2, %ax + * movw %ax, %es + * movw chained_irq_off, %bx + * call %es:(%bx) # call chained handler + * popw %es + */ - /* * If say "not my interrupt" by passing control to next in handler list, may * end up invoking the BIOS, which will turn off the interrupt at the PIC. * In case this happens, on return from next-handler call, see if must restore. * This only executes when an interrupt is fielded which is not ours to handle. */ - movw $I8259_PC_INTR_MASK_REG, %dx # use master - movw __pxe_nic_irq, %bx - cmpb $0x8, %bl # is IRQ8-IRQ15? - jb pxe_isr.1 # no - movw $I8259_AT_INTR_MASK_REG, %dx # use PIC2 - -pxe_isr.1: movb original_mask, %bl # restore original mask - inb %dx, %al - notb %bl - testb %bl, %al - jz pxe_isr.2 - notb %bl - andb %bl, %al - outb %al, %dx - +/* + * rely all PIC related actions on BTX + ** + * movw $I8259_PC_INTR_MASK_REG, %dx # use master + * movw __pxe_nic_irq, %bx + * cmpb $0x8, %bl # is IRQ8-IRQ15? + * jb pxe_isr.1 # no + * movw $I8259_AT_INTR_MASK_REG, %dx # use PIC2 + * + * pxe_isr.1: movb save_int_mask, %bl # get saved mask + * inb %dx, %al + * notb %bl + * testb %bl, %al + * jz pxe_isr.2 + * + * notb %bl + * andb %bl, %al + * outb %al, %dx + */ pxe_isr.2: jmp pxe_isr.exit @@ -202,8 +214,11 @@ popw %es # restore affected register -# call pxe_mask_int # TODO: implement - +/* + * Masking is not our task + ** + * call mask_int # masking + */ popf # restore flags popw %cx # restore affected registers @@ -254,7 +269,11 @@ isr_remove.3: movl chained_irq_off, %eax # getting old chained handler movl %eax, %es:(%bx) # restore it -# call pxe_unmask_int # TODO: implement +/* + * Forget about unmasking for now + ** + * call unmask_int # unmasking + */ isr_remove.fin: movl $0x0, chained_irq_off @@ -262,3 +281,90 @@ popf clc ret + +/* + * Adopted from Intel PXE SDK + * masks hardware interrupt + */ +mask_int: pushw %ax # saving all affected + pushw %cx # registers + pushw %dx # + + movw __pxe_nic_irq, %bx # getting irq number + cmpw $0x7, %bx # see if this master PIC + jbe mask_int.master # yes, it's PIC1 + + subw $0x08, %bx # getting 3bits value + movw $I8259_AT_INTR_MASK_REG, %dx # setting PIC register to PIC2 + jmp mask_int.1 + +mask_int.master: + movw I8259_PC_INTR_MASK_REG, %dx # setting master PIC register + +mask_int.1: movw %bx, %cx + andw $0x07, %cx + movw $0x1, %bl + shlb %cl, %bl + andb original_mask, %bl # get the original bit for this irq + + pushf # saving FLAGS register + cli # stop interrupts (IF=0) + inb %dx, %al + + orb %bl, %al # change the bit to the orig value + outb %al, %dx + popw %ax # popping FLAGS + + testw $0x200, %ax # checking interrupt flag + jz mask_int.2 # IF=1 + sti # starting interrupts +mask_int.2: + popw %dx + popw %cx + popw %ax + ret + +/* + * Adopted from Intel PXE SDK + * unmasks hardware interrupt + */ +unmask_int: pushw %ax # save all affected + pushw %cx # registers + pushw %dx # + + movw __pxe_nic_irq, %bx # getting irq number + cmpw $0x07, %bx # is it PIC2? + jbe unmask_int.master # no, it's master + + subw $0x08, %bx + mov $I8259_AT_INTR_MASK_REG, %dx # setting slave PIC register + jmp unmask_int.2 + +unmask_int.master: + mov $I8259_PC_INTR_MASK_REG, %dx # setting master PIC register + +unmask_int.2: movw %bx, %cx + andw $0x07, %cx # masking first 3 bits + movb $0x01, %bl # + shlb %cl, %bl # shifting 1 bit to left + notb %bl + + movb %bl, save_int_mask # saving mask + + pushf # saving FLAGS register + cli + + inb %dx, %al # sending control word + movb %al, original_mask # saving mask + andb %bl, %al # and it with saved + outb %al, %dx # out result + + popw %ax # popping flags + testw $0x200, %ax # IF==1 ? + jz unmask_int.3 # yes + sti # set IF=1 + +unmask_int.3: popw %dx # restore all affected registers + popw %cx # + popw %ax # + ret From owner-p4-projects@FreeBSD.ORG Fri May 11 15:20:03 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3949F16A408; Fri, 11 May 2007 15:20:03 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 0703016A403 for ; Fri, 11 May 2007 15:20:03 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id E718C13C45B for ; Fri, 11 May 2007 15:20:02 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4BFK2j3064751 for ; Fri, 11 May 2007 15:20:02 GMT (envelope-from rpaulo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4BFK0Fv064734 for perforce@freebsd.org; Fri, 11 May 2007 15:20:00 GMT (envelope-from rpaulo@FreeBSD.org) Date: Fri, 11 May 2007 15:20:00 GMT Message-Id: <200705111520.l4BFK0Fv064734@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rpaulo@FreeBSD.org using -f From: Rui Paulo To: Perforce Change Reviews Cc: Subject: PERFORCE change 119676 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 May 2007 15:20:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=119676 Change 119676 by rpaulo@rpaulo_epsilon on 2007/05/11 15:19:47 IFC Affected files ... .. //depot/projects/soc2007/rpaulo-macbook/amd64/acpica/madt.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/intr_machdep.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/io_apic.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/local_apic.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/mp_machdep.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/mptable.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/msi.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/nexus.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/amd64/conf/GENERIC#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/amd64/conf/NOTES#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/amd64/include/apicvar.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/amd64/include/intr_machdep.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/amd64/isa/atpic.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/amd64/linux32/linux32_machdep.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/boot/common/loader.8#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/conf/NOTES#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/conf/files#8 integrate .. //depot/projects/soc2007/rpaulo-macbook/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/crypto/camellia/camellia-api.c#1 branch .. //depot/projects/soc2007/rpaulo-macbook/crypto/camellia/camellia.c#1 branch .. //depot/projects/soc2007/rpaulo-macbook/crypto/camellia/camellia.h#1 branch .. //depot/projects/soc2007/rpaulo-macbook/dev/em/if_em.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/firewire/sbp_targ.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/hptiop/hptiop.c#1 branch .. //depot/projects/soc2007/rpaulo-macbook/dev/hptiop/hptiop.h#1 branch .. //depot/projects/soc2007/rpaulo-macbook/dev/isp/isp_pci.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/isp/isp_sbus.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mfi/mfi.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mfi/mfi_disk.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mfi/mfi_ioctl.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mfi/mfi_pci.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mfi/mfivar.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/mxge/if_mxge.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/sk/if_sk.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/sound/pci/hda/hdac.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_cl.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_cl_externs.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_cl_fwif.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_cl_fwimg.c#2 delete .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_cl_init.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_cl_intr.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_cl_io.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_cl_ioctl.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_cl_misc.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_cl_share.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_osl.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_osl_cam.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_osl_externs.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_osl_freebsd.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_osl_includes.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_osl_inline.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_osl_ioctl.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_osl_share.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/twa/tw_osl_types.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/if_ural.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/if_uralvar.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/ubsa.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/dev/usb/usbdevs#5 integrate .. //depot/projects/soc2007/rpaulo-macbook/geom/part/g_part.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/geom/part/g_part.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/geom/part/g_part_apm.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/geom/part/g_part_gpt.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/acpica/madt.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/conf/GENERIC#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/conf/NOTES#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/i386/intr_machdep.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/i386/io_apic.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/i386/local_apic.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/i386/mp_machdep.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/i386/mptable.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/i386/msi.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/i386/nexus.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/include/apicvar.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/include/intr_machdep.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/isa/atpic.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/i386/linux/linux_machdep.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/kern/kern_condvar.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/kern/kern_mutex.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/kern/kern_rwlock.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/kern/kern_sx.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/kern/kern_synch.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/kern/uipc_usrreq.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/modules/Makefile#5 integrate .. //depot/projects/soc2007/rpaulo-macbook/modules/crypto/Makefile#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/modules/hptiop/Makefile#1 branch .. //depot/projects/soc2007/rpaulo-macbook/modules/twa/Makefile#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/net/pfkeyv2.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netatalk/ddp_usrreq.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netgraph/ng_mppc.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netgraph/ng_socket.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/if_ether.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/in.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/in_cksum.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/in_gif.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/in_pcb.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/in_pcb.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/in_rmx.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/ip.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/ip_divert.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/ip_dummynet.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/ip_ecn.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/ip_encap.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/ip_fw2.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/ip_icmp.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/ip_id.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/ip_input.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/ip_ipsec.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/ip_mroute.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/ip_options.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/ip_options.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/ip_output.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/raw_ip.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp.h#5 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_asconf.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_asconf.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_auth.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_auth.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_bsd_addr.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_bsd_addr.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_constants.h#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_crc32.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_crc32.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_header.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_indata.c#5 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_indata.h#5 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_input.c#5 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_input.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_lock_bsd.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_os.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_os_bsd.h#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_output.c#5 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_output.h#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_pcb.c#5 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_pcb.h#5 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_peeloff.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_peeloff.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_structs.h#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_sysctl.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_sysctl.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_timer.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_timer.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_uio.h#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_usrreq.c#5 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctp_var.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctputil.c#5 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/sctputil.h#5 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_fsm.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_input.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_output.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_sack.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_subr.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_timer.c#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/tcp_usrreq.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet/udp_usrreq.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet6/esp_camellia.c#1 branch .. //depot/projects/soc2007/rpaulo-macbook/netinet6/esp_camellia.h#1 branch .. //depot/projects/soc2007/rpaulo-macbook/netinet6/esp_core.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet6/in6_pcb.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet6/in6_pcb.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet6/in6_proto.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet6/raw_ip6.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet6/sctp6_usrreq.c#4 integrate .. //depot/projects/soc2007/rpaulo-macbook/netinet6/sctp6_var.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netipsec/xform_esp.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netipx/ipx.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netipx/ipx.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netipx/ipx_cksum.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netipx/ipx_if.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netipx/ipx_input.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netipx/ipx_outputfl.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netipx/ipx_pcb.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netipx/ipx_pcb.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netipx/ipx_usrreq.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netipx/ipx_var.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netipx/spx_debug.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/netipx/spx_debug.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/opencrypto/cryptodev.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/opencrypto/cryptodev.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/opencrypto/cryptosoft.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/opencrypto/xform.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/opencrypto/xform.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/pc98/conf/GENERIC#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/pci/if_tl.c#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/sys/param.h#3 integrate .. //depot/projects/soc2007/rpaulo-macbook/sys/rwlock.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/sys/sx.h#2 integrate .. //depot/projects/soc2007/rpaulo-macbook/vm/uma_int.h#2 integrate Differences ... ==== //depot/projects/soc2007/rpaulo-macbook/amd64/acpica/madt.c#2 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/acpica/madt.c,v 1.23 2007/03/22 18:16:38 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/acpica/madt.c,v 1.24 2007/05/08 22:01:02 jhb Exp $"); #include #include @@ -53,21 +53,18 @@ #include #include -#define NIOAPICS 32 /* Max number of I/O APICs */ -#define NLAPICS 32 /* Max number of local APICs */ - typedef void madt_entry_handler(ACPI_SUBTABLE_HEADER *entry, void *arg); /* These two arrays are indexed by APIC IDs. */ struct ioapic_info { void *io_apic; UINT32 io_vector; -} ioapics[NIOAPICS]; +} ioapics[MAX_APIC_ID + 1]; struct lapic_info { u_int la_enabled:1; u_int la_acpi_id:8; -} lapics[NLAPICS]; +} lapics[MAX_APIC_ID + 1]; static int madt_found_sci_override; static ACPI_TABLE_MADT *madt; @@ -393,7 +390,7 @@ } /* Third, we register all the I/O APIC's. */ - for (i = 0; i < NIOAPICS; i++) + for (i = 0; i <= MAX_APIC_ID; i++) if (ioapics[i].io_apic != NULL) ioapic_register(ioapics[i].io_apic); @@ -450,7 +447,7 @@ "enabled" : "disabled"); if (!(proc->LapicFlags & ACPI_MADT_ENABLED)) break; - if (proc->Id >= NLAPICS) + if (proc->Id > MAX_APIC_ID) panic("%s: CPU ID %u too high", __func__, proc->Id); la = &lapics[proc->Id]; KASSERT(la->la_enabled == 0, @@ -479,7 +476,7 @@ "MADT: Found IO APIC ID %u, Interrupt %u at %p\n", apic->Id, apic->GlobalIrqBase, (void *)(uintptr_t)apic->Address); - if (apic->Id >= NIOAPICS) + if (apic->Id > MAX_APIC_ID) panic("%s: I/O APIC ID %u too high", __func__, apic->Id); if (ioapics[apic->Id].io_apic != NULL) @@ -545,7 +542,7 @@ { int i; - for (i = 0; i < NLAPICS; i++) { + for (i = 0; i <= MAX_APIC_ID; i++) { if (!lapics[i].la_enabled) continue; if (lapics[i].la_acpi_id != acpi_id) @@ -566,7 +563,7 @@ int i, best; best = -1; - for (i = 0; i < NIOAPICS; i++) { + for (i = 0; i <= MAX_APIC_ID; i++) { if (ioapics[i].io_apic == NULL || ioapics[i].io_vector > intr) continue; ==== //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/intr_machdep.c#3 (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/amd64/intr_machdep.c,v 1.31 2007/05/06 17:02:49 piso Exp $ + * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.32 2007/05/08 21:29:12 jhb Exp $ */ /* @@ -43,13 +43,14 @@ #include #include #include -#include #include #include +#include #include #include #include #include +#include #include #include #include @@ -71,7 +72,8 @@ static int intrcnt_index; static struct intsrc *interrupt_sources[NUM_IO_INTS]; -static struct mtx intr_table_lock; +static struct sx intr_table_lock; +static struct mtx intrcnt_lock; static STAILQ_HEAD(, pic) pics; #ifdef INTR_FILTER @@ -115,14 +117,14 @@ { int error; - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); if (intr_pic_registered(pic)) error = EBUSY; else { STAILQ_INSERT_TAIL(&pics, pic, pics); error = 0; } - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); return (error); } @@ -150,16 +152,16 @@ #endif if (error) return (error); - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); if (interrupt_sources[vector] != NULL) { - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); intr_event_destroy(isrc->is_event); return (EEXIST); } intrcnt_register(isrc); interrupt_sources[vector] = isrc; - isrc->is_enabled = 0; - mtx_unlock_spin(&intr_table_lock); + isrc->is_handlers = 0; + sx_xunlock(&intr_table_lock); return (0); } @@ -183,19 +185,18 @@ error = intr_event_add_handler(isrc->is_event, name, filter, handler, arg, intr_priority(flags), flags, cookiep); if (error == 0) { + sx_xlock(&intr_table_lock); intrcnt_updatename(isrc); - mtx_lock_spin(&intr_table_lock); - if (!isrc->is_enabled) { - isrc->is_enabled = 1; + isrc->is_handlers++; + if (isrc->is_handlers == 1) { #ifdef SMP if (assign_cpu) intr_assign_next_cpu(isrc); #endif - mtx_unlock_spin(&intr_table_lock); isrc->is_pic->pic_enable_intr(isrc); - } else - mtx_unlock_spin(&intr_table_lock); - isrc->is_pic->pic_enable_source(isrc); + isrc->is_pic->pic_enable_source(isrc); + } + sx_xunlock(&intr_table_lock); } return (error); } @@ -208,8 +209,16 @@ isrc = intr_handler_source(cookie); error = intr_event_remove_handler(cookie); - if (error == 0) + if (error == 0) { + sx_xlock(&intr_table_lock); + isrc->is_handlers--; + if (isrc->is_handlers == 0) { + isrc->is_pic->pic_disable_source(isrc, PIC_NO_EOI); + isrc->is_pic->pic_disable_intr(isrc); + } intrcnt_updatename(isrc); + sx_xunlock(&intr_table_lock); + } return (error); } @@ -391,12 +400,12 @@ #ifndef DEV_ATPIC atpic_reset(); #endif - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); STAILQ_FOREACH(pic, &pics, pics) { if (pic->pic_resume != NULL) pic->pic_resume(pic); } - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); } void @@ -404,12 +413,12 @@ { struct pic *pic; - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); STAILQ_FOREACH(pic, &pics, pics) { if (pic->pic_suspend != NULL) pic->pic_suspend(pic); } - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); } static void @@ -432,8 +441,8 @@ { char straystr[MAXCOMLEN + 1]; - /* mtx_assert(&intr_table_lock, MA_OWNED); */ KASSERT(is->is_event != NULL, ("%s: isrc with no event", __func__)); + mtx_lock_spin(&intrcnt_lock); is->is_index = intrcnt_index; intrcnt_index += 2; snprintf(straystr, MAXCOMLEN + 1, "stray irq%d", @@ -442,17 +451,18 @@ is->is_count = &intrcnt[is->is_index]; intrcnt_setname(straystr, is->is_index + 1); is->is_straycount = &intrcnt[is->is_index + 1]; + mtx_unlock_spin(&intrcnt_lock); } void intrcnt_add(const char *name, u_long **countp) { - mtx_lock_spin(&intr_table_lock); + mtx_lock_spin(&intrcnt_lock); *countp = &intrcnt[intrcnt_index]; intrcnt_setname(name, intrcnt_index); intrcnt_index++; - mtx_unlock_spin(&intr_table_lock); + mtx_unlock_spin(&intrcnt_lock); } static void @@ -462,7 +472,8 @@ intrcnt_setname("???", 0); intrcnt_index = 1; STAILQ_INIT(&pics); - mtx_init(&intr_table_lock, "intr table", NULL, MTX_SPIN); + sx_init(&intr_table_lock, "intr sources"); + mtx_init(&intrcnt_lock, "intrcnt", NULL, MTX_SPIN); } SYSINIT(intr_init, SI_SUB_INTR, SI_ORDER_FIRST, intr_init, NULL) @@ -570,14 +581,14 @@ return; /* Round-robin assign a CPU to each enabled source. */ - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); assign_cpu = 1; for (i = 0; i < NUM_IO_INTS; i++) { isrc = interrupt_sources[i]; - if (isrc != NULL && isrc->is_enabled) + if (isrc != NULL && isrc->is_handlers > 0) intr_assign_next_cpu(isrc); } - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); } SYSINIT(intr_shuffle_irqs, SI_SUB_SMP, SI_ORDER_SECOND, intr_shuffle_irqs, NULL) #endif ==== //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/io_apic.c#2 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.29 2007/03/20 21:53:30 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.30 2007/05/08 21:29:12 jhb Exp $"); #include "opt_isa.h" @@ -114,6 +114,7 @@ static void ioapic_disable_source(struct intsrc *isrc, int eoi); static void ioapic_eoi_source(struct intsrc *isrc); static void ioapic_enable_intr(struct intsrc *isrc); +static void ioapic_disable_intr(struct intsrc *isrc); static int ioapic_vector(struct intsrc *isrc); static int ioapic_source_pending(struct intsrc *isrc); static int ioapic_config_intr(struct intsrc *isrc, enum intr_trigger trig, @@ -125,8 +126,8 @@ static STAILQ_HEAD(,ioapic) ioapic_list = STAILQ_HEAD_INITIALIZER(ioapic_list); struct pic ioapic_template = { ioapic_enable_source, ioapic_disable_source, ioapic_eoi_source, ioapic_enable_intr, - ioapic_vector, ioapic_source_pending, - NULL, ioapic_resume, + ioapic_disable_intr, ioapic_vector, + ioapic_source_pending, NULL, ioapic_resume, ioapic_config_intr, ioapic_assign_cpu }; static int next_ioapic_base; @@ -359,6 +360,23 @@ } } +static void +ioapic_disable_intr(struct intsrc *isrc) +{ + struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; + u_int vector; + + if (intpin->io_vector != 0) { + /* Mask this interrupt pin and free its APIC vector. */ + vector = intpin->io_vector; + apic_disable_vector(vector); + intpin->io_masked = 1; + intpin->io_vector = 0; + ioapic_program_intpin(intpin); + apic_free_vector(vector, intpin->io_irq); + } +} + static int ioapic_vector(struct intsrc *isrc) { ==== //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/local_apic.c#3 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.38 2007/04/25 19:58:41 ariff Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.40 2007/05/08 22:01:02 jhb Exp $"); #include "opt_hwpmc_hooks.h" @@ -65,13 +65,6 @@ #include #endif -/* - * We can handle up to 60 APICs via our logical cluster IDs, but currently - * the physical IDs on Intel processors up to the Pentium 4 are limited to - * 16. - */ -#define MAX_APICID 16 - /* Sanity checks on IDT vectors. */ CTASSERT(APIC_IO_INTS + APIC_NUM_IOINTS == APIC_TIMER_INT); CTASSERT(APIC_TIMER_INT < APIC_LOCAL_INTS); @@ -114,7 +107,7 @@ u_long la_hard_ticks; u_long la_stat_ticks; u_long la_prof_ticks; -} static lapics[MAX_APICID]; +} static lapics[MAX_APIC_ID + 1]; /* XXX: should thermal be an NMI? */ @@ -147,6 +140,8 @@ APIC_TDCR_32, APIC_TDCR_64, APIC_TDCR_128 }; +extern inthand_t IDTVEC(rsvd); + volatile lapic_t *lapic; vm_paddr_t lapic_paddr; static u_long lapic_timer_divisor, lapic_timer_period, lapic_timer_hz; @@ -238,7 +233,7 @@ { int i; - if (apic_id >= MAX_APICID) { + if (apic_id > MAX_APIC_ID) { printf("APIC: Ignoring local APIC with ID %d\n", apic_id); if (boot_cpu) panic("Can't ignore BSP"); @@ -837,6 +832,16 @@ setidt(vector, ioint_handlers[vector / 32], SDT_SYSIGT, SEL_KPL, 0); } +void +apic_disable_vector(u_int vector) +{ + + KASSERT(vector != IDT_SYSCALL, ("Attempt to overwrite syscall entry")); + KASSERT(ioint_handlers[vector / 32] != NULL, + ("No ISR handler for vector %u", vector)); + setidt(vector, &IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0); +} + /* Release an APIC vector when it's no longer in use. */ void apic_free_vector(u_int vector, u_int irq) ==== //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/mp_machdep.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.283 2007/03/06 17:16:46 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.284 2007/05/08 22:01:02 jhb Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -151,7 +151,7 @@ int cpu_present:1; int cpu_bsp:1; int cpu_disabled:1; -} static cpu_info[MAXCPU]; +} static cpu_info[MAX_APIC_ID + 1]; int cpu_apic_ids[MAXCPU]; /* Holds pending bitmap based IPIs per CPU */ @@ -159,6 +159,7 @@ static u_int boot_address; +static void assign_cpu_ids(void); static void set_interrupt_apic_ids(void); static int start_all_aps(void); static int start_ap(int apic_id); @@ -204,7 +205,7 @@ } group = &mp_groups[0]; groups = 1; - for (cpu = 0, apic_id = 0; apic_id < MAXCPU; apic_id++) { + for (cpu = 0, apic_id = 0; apic_id <= MAX_APIC_ID; apic_id++) { if (!cpu_info[apic_id].cpu_present) continue; /* @@ -246,9 +247,8 @@ cpu_add(u_int apic_id, char boot_cpu) { - if (apic_id >= MAXCPU) { - printf("SMP: CPU %d exceeds maximum CPU %d, ignoring\n", - apic_id, MAXCPU - 1); + if (apic_id > MAX_APIC_ID) { + panic("SMP: APIC ID %d too high", apic_id); return; } KASSERT(cpu_info[apic_id].cpu_present == 0, ("CPU %d added twice", @@ -261,13 +261,13 @@ boot_cpu_id = apic_id; cpu_info[apic_id].cpu_bsp = 1; } - mp_ncpus++; - if (apic_id > mp_maxid) - mp_maxid = apic_id; + if (mp_ncpus < MAXCPU) { + mp_ncpus++; + mp_maxid = mp_ncpus -1; + } if (bootverbose) printf("SMP: Added CPU %d (%s)\n", apic_id, boot_cpu ? "BSP" : "AP"); - } void @@ -286,8 +286,7 @@ else KASSERT(mp_maxid >= mp_ncpus - 1, ("%s: counters out of sync: max %d, count %d", __func__, - mp_maxid, mp_ncpus)); - + mp_maxid, mp_ncpus)); } int @@ -365,6 +364,8 @@ ("BSP's APIC ID doesn't match boot_cpu_id")); cpu_apic_ids[0] = boot_cpu_id; + assign_cpu_ids(); + /* Start each Application Processor */ start_all_aps(); @@ -429,7 +430,7 @@ /* List CPUs */ printf(" cpu0 (BSP): APIC ID: %2d\n", boot_cpu_id); - for (i = 1, x = 0; x < MAXCPU; x++) { + for (i = 1, x = 0; x <= MAX_APIC_ID; x++) { if (!cpu_info[x].cpu_present || cpu_info[x].cpu_bsp) continue; if (cpu_info[x].cpu_disabled) @@ -646,6 +647,48 @@ } /* + * Assign logical CPU IDs to local APICs. + */ +static void +assign_cpu_ids(void) +{ + u_int i; + + /* Check for explicitly disabled CPUs. */ + for (i = 0; i <= MAX_APIC_ID; i++) { + if (!cpu_info[i].cpu_present || cpu_info[i].cpu_bsp) + continue; + + /* Don't use this CPU if it has been disabled by a tunable. */ + if (resource_disabled("lapic", i)) { + cpu_info[i].cpu_disabled = 1; + continue; + } + } + + /* + * Assign CPU IDs to local APIC IDs and disable any CPUs + * beyond MAXCPU. CPU 0 has already been assigned to the BSP, + * so we only have to assign IDs for APs. + */ + mp_ncpus = 1; + for (i = 0; i <= MAX_APIC_ID; i++) { + if (!cpu_info[i].cpu_present || cpu_info[i].cpu_bsp || + cpu_info[i].cpu_disabled) + continue; + + if (mp_ncpus < MAXCPU) { + cpu_apic_ids[mp_ncpus] = i; + mp_ncpus++; + } else + cpu_info[i].cpu_disabled = 1; + } + KASSERT(mp_maxid >= mp_ncpus - 1, + ("%s: counters out of sync: max %d, count %d", __func__, mp_maxid, + mp_ncpus)); +} + +/* * start each AP in our list */ static int @@ -696,24 +739,8 @@ outb(CMOS_DATA, BIOS_WARM); /* 'warm-start' */ /* start each AP */ - for (cpu = 0, apic_id = 0; apic_id < MAXCPU; apic_id++) { - - /* Ignore non-existent CPUs and the BSP. */ - if (!cpu_info[apic_id].cpu_present || - cpu_info[apic_id].cpu_bsp) - continue; - - /* Don't use this CPU if it has been disabled by a tunable. */ - if (resource_disabled("lapic", apic_id)) { - cpu_info[apic_id].cpu_disabled = 1; - mp_ncpus--; - continue; - } - - cpu++; - - /* save APIC ID for this logical ID */ - cpu_apic_ids[cpu] = apic_id; + for (cpu = 1; cpu < mp_ncpus; cpu++) { + apic_id = cpu_apic_ids[cpu]; /* allocate and set up an idle stack data page */ bootstacks[cpu] = (void *)kmem_alloc(kernel_map, KSTACK_PAGES * PAGE_SIZE); ==== //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/mptable.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable.c,v 1.239 2007/03/09 15:49:57 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable.c,v 1.240 2007/05/08 22:01:02 jhb Exp $"); #include #include @@ -50,7 +50,7 @@ /* string defined by the Intel MP Spec as identifying the MP table */ #define MP_SIG 0x5f504d5f /* _MP_ */ -#define NAPICID 32 /* Max number of APIC's */ +#define MAX_LAPIC_ID 63 /* Max local APIC ID for HTT fixup */ #define BIOS_BASE (0xf0000) #define BIOS_SIZE (0x10000) @@ -136,7 +136,7 @@ static mpfps_t mpfps; static mpcth_t mpct; -static void *ioapics[NAPICID]; +static void *ioapics[MAX_APIC_ID + 1]; static bus_datum *busses; static int mptable_nioapics, mptable_nbusses, mptable_maxbusid; static int pci0 = -1; @@ -152,7 +152,7 @@ static void mptable_count_items(void); static void mptable_count_items_handler(u_char *entry, void *arg); #ifdef MPTABLE_FORCE_HTT -static void mptable_hyperthread_fixup(u_int id_mask); +static void mptable_hyperthread_fixup(u_long id_mask); #endif static void mptable_parse_apics_and_busses(void); static void mptable_parse_apics_and_busses_handler(u_char *entry, @@ -294,7 +294,7 @@ static int mptable_probe_cpus(void) { - u_int cpu_mask; + u_long cpu_mask; /* Is this a pre-defined config? */ if (mpfps->config_type != 0) { @@ -356,7 +356,7 @@ mptable_parse_ints(); /* Fourth, we register all the I/O APIC's. */ - for (i = 0; i < NAPICID; i++) + for (i = 0; i <= MAX_APIC_ID; i++) if (ioapics[i] != NULL) ioapic_register(ioapics[i]); @@ -414,7 +414,7 @@ mptable_probe_cpus_handler(u_char *entry, void *arg) { proc_entry_ptr proc; - u_int *cpu_mask; + u_long *cpu_mask; switch (*entry) { case MPCT_ENTRY_PROCESSOR: @@ -422,8 +422,10 @@ if (proc->cpu_flags & PROCENTRY_FLAG_EN) { lapic_create(proc->apic_id, proc->cpu_flags & PROCENTRY_FLAG_BP); - cpu_mask = (u_int *)arg; - *cpu_mask |= (1 << proc->apic_id); + if (proc->apic_id < MAX_LAPIC_ID) { + cpu_mask = (u_long *)arg; + *cpu_mask |= (1ul << proc->apic_id); + } } break; } @@ -510,7 +512,7 @@ apic = (io_apic_entry_ptr)entry; if (!(apic->apic_flags & IOAPICENTRY_FLAG_EN)) break; - if (apic->apic_id >= NAPICID) + if (apic->apic_id > MAX_APIC_ID) panic("%s: I/O APIC ID %d too high", __func__, apic->apic_id); if (ioapics[apic->apic_id] != NULL) @@ -655,7 +657,7 @@ return; } } - if (apic_id >= NAPICID) { + if (apic_id > MAX_APIC_ID) { printf("MPTable: Ignoring interrupt entry for ioapic%d\n", intr->dst_apic_id); return; @@ -868,7 +870,7 @@ * with the number of logical CPU's in the processor. */ static void -mptable_hyperthread_fixup(u_int id_mask) +mptable_hyperthread_fixup(u_long id_mask) { u_int i, id, logical_cpus; @@ -885,7 +887,7 @@ * physical processor. If any of those ID's are * already in the table, then kill the fixup. */ - for (id = 0; id < NAPICID; id++) { + for (id = 0; id <= MAX_LAPIC_ID; id++) { if ((id_mask & 1 << id) == 0) continue; /* First, make sure we are on a logical_cpus boundary. */ @@ -900,7 +902,7 @@ * Ok, the ID's checked out, so perform the fixup by * adding the logical CPUs. */ - while ((id = ffs(id_mask)) != 0) { + while ((id = ffsl(id_mask)) != 0) { id--; for (i = id + 1; i < id + logical_cpus; i++) { if (bootverbose) ==== //depot/projects/soc2007/rpaulo-macbook/amd64/amd64/msi.c#3 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.5 2007/05/02 17:50:34 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.6 2007/05/08 21:29:13 jhb Exp $"); #include #include @@ -112,11 +112,12 @@ u_int msi_count:8; /* Messages in this group. (g) */ }; -static struct msi_intsrc *msi_create_source(u_int irq); +static void msi_create_source(void); static void msi_enable_source(struct intsrc *isrc); static void msi_disable_source(struct intsrc *isrc, int eoi); static void msi_eoi_source(struct intsrc *isrc); static void msi_enable_intr(struct intsrc *isrc); +static void msi_disable_intr(struct intsrc *isrc); static int msi_vector(struct intsrc *isrc); static int msi_source_pending(struct intsrc *isrc); static int msi_config_intr(struct intsrc *isrc, enum intr_trigger trig, @@ -124,11 +125,13 @@ static void msi_assign_cpu(struct intsrc *isrc, u_int apic_id); struct pic msi_pic = { msi_enable_source, msi_disable_source, msi_eoi_source, - msi_enable_intr, msi_vector, msi_source_pending, - NULL, NULL, msi_config_intr, msi_assign_cpu }; + msi_enable_intr, msi_disable_intr, msi_vector, + msi_source_pending, NULL, NULL, msi_config_intr, + msi_assign_cpu }; static int msi_enabled; -static struct sx msi_sx; +static int msi_last_irq; +static struct mtx msi_lock; static void msi_enable_source(struct intsrc *isrc) @@ -158,6 +161,14 @@ apic_enable_vector(msi->msi_vector); } +static void +msi_disable_intr(struct intsrc *isrc) +{ + struct msi_intsrc *msi = (struct msi_intsrc *)isrc; + + apic_disable_vector(msi->msi_vector); +} + static int msi_vector(struct intsrc *isrc) { @@ -191,8 +202,7 @@ printf("msi: Assigning %s IRQ %d to local APIC %u\n", msi->msi_msix ? "MSI-X" : "MSI", msi->msi_irq, msi->msi_cpu); - if (isrc->is_enabled) - pci_remap_msi_irq(msi->msi_dev, msi->msi_irq); + pci_remap_msi_irq(msi->msi_dev, msi->msi_irq); } void @@ -206,19 +216,29 @@ msi_enabled = 1; intr_register_pic(&msi_pic); - sx_init(&msi_sx, "msi"); + mtx_init(&msi_lock, "msi", NULL, MTX_DEF); } -struct msi_intsrc * -msi_create_source(u_int irq) +void +msi_create_source(void) { struct msi_intsrc *msi; + u_int irq; - msi = malloc(sizeof(struct msi_intsrc), M_MSI, M_WAITOK | M_ZERO); + mtx_lock(&msi_lock); + if (msi_last_irq >= NUM_MSI_INTS) { + mtx_unlock(&msi_lock); + return; + } + irq = msi_last_irq + FIRST_MSI_INT; + msi_last_irq++; + mtx_unlock(&msi_lock); + >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Fri May 11 18:26:53 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D5C4C16A405; Fri, 11 May 2007 18:26:52 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A7C7116A400 for ; Fri, 11 May 2007 18:26:52 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 96F7213C457 for ; Fri, 11 May 2007 18:26:52 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4BIQqRm011718 for ; Fri, 11 May 2007 18:26:52 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4BIQqrU011714 for perforce@freebsd.org; Fri, 11 May 2007 18:26:52 GMT (envelope-from fli@FreeBSD.org) Date: Fri, 11 May 2007 18:26:52 GMT Message-Id: <200705111826.l4BIQqrU011714@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119680 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 May 2007 18:26:53 -0000 http://perforce.freebsd.org/chv.cgi?CH=119680 Change 119680 by fli@fli_genesis on 2007/05/11 18:26:40 Fix faulty assert logic. Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_buf.c#4 edit .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_packet.c#4 edit Differences ... ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_buf.c#4 (text+ko) ==== @@ -44,9 +44,7 @@ { struct mdns_bufpool *bp; - assert((lock != NULL && unlock == NULL) || - (lock == NULL && unlock != NULL) || - (lock == NULL && unlock == NULL)); + assert((lock == NULL && unlock == NULL) || (lock != unlock)); bp = malloc(sizeof(struct mdns_bufpool)); bzero(bp, sizeof(struct mdns_bufpool)); ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_packet.c#4 (text+ko) ==== @@ -121,9 +121,7 @@ int flags, md_lock lock, md_unlock unlock, void *arg) { - assert((lock != NULL && unlock == NULL) || - (lock == NULL && unlock != NULL) || - (lock == NULL && unlock == NULL)); + assert((lock == NULL && unlock == NULL) || (lock != unlock)); pc->pc_md = md; pc->pc_lock = lock; From owner-p4-projects@FreeBSD.ORG Fri May 11 18:29:57 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4111116A407; Fri, 11 May 2007 18:29:57 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E04F116A402 for ; Fri, 11 May 2007 18:29:56 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id CFBC213C44B for ; Fri, 11 May 2007 18:29:56 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4BITuER011954 for ; Fri, 11 May 2007 18:29:56 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4BITu87011951 for perforce@freebsd.org; Fri, 11 May 2007 18:29:56 GMT (envelope-from fli@FreeBSD.org) Date: Fri, 11 May 2007 18:29:56 GMT Message-Id: <200705111829.l4BITu87011951@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119681 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 May 2007 18:29:57 -0000 http://perforce.freebsd.org/chv.cgi?CH=119681 Change 119681 by fli@fli_genesis on 2007/05/11 18:29:23 o Remove unused variables from structure o Re-arrange include statements o Change some comments to reflect reality Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/mdns.h#3 edit Differences ... ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/mdns.h#3 (text+ko) ==== @@ -27,11 +27,12 @@ #ifndef _MDNS_H_ #define _MDNS_H_ +#include +#include +#include +#include +#include #include -#include -#include -#include -#include #include "stack_buf.h" @@ -49,28 +50,27 @@ #define MDNS_UDP6 0x0004 /* udp inet6 socket open */ #define MDNS_TCP6 0x0008 /* tcp inet6 socket open */ int md_udp4; /* udp4 socket */ - int md_udp4_snd; /* send udp4 socket */ int *md_tcp4; /* array of open tcp4 sockets */ int md_tcp4_sz; /* size of array */ struct sockaddr_in md_sin4; #ifdef INET6 int md_udp6; /* udp6 socket */ - int md_udp6_snd; /* send udp4 socket */ int *md_tcp6; /* array of open tcp6 sockets */ int md_tcp6_sz; /* size of array */ struct sockaddr_in6 md_sin6; #endif uint16_t md_maxpkgsz; /* max (udp) packet size */ struct mdns_bufpool *md_bp; /* buffer pool */ - TAILQ_HEAD(, mdns_packet) md_pkglist; /* free list */ - int md_pkgfree; - int md_pkgtotal; + TAILQ_HEAD(, mdns_packet) md_pkglist; /* packet free list */ + int md_pkgfree; /* free packets */ + int md_pkgtotal; /* total number of packets */ }; /* * Transport types - * Multicast is always done over UDP, only unicast queries/responses - * may be sent over TCP if they do not fit a UDP packet. + * UDP is the common transport type, and should be used in most cases. + * TCP may only be used if the source port of a client is different from + * 5353 and the response is too large to fit a legacy sized DNS UDP packet. */ enum { MDNS_UDP, MDNS_TCP }; From owner-p4-projects@FreeBSD.ORG Fri May 11 18:34:03 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6F42A16A409; Fri, 11 May 2007 18:34:03 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4358E16A405 for ; Fri, 11 May 2007 18:34:03 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2AEF313C45D for ; Fri, 11 May 2007 18:34:03 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4BIY3YB013462 for ; Fri, 11 May 2007 18:34:03 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4BIY2ON013458 for perforce@freebsd.org; Fri, 11 May 2007 18:34:02 GMT (envelope-from fli@FreeBSD.org) Date: Fri, 11 May 2007 18:34:02 GMT Message-Id: <200705111834.l4BIY2ON013458@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119683 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 May 2007 18:34:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=119683 Change 119683 by fli@fli_genesis on 2007/05/11 18:33:21 o Check if we actually managed to allocate a buffer o Make mdns_tcp_recv return bytes read (as mdns_udp_recv does) o Remove false unused attribute o mdns_tcp_client have to return the new socket, not 0 Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_mdns.c#3 edit Differences ... ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_mdns.c#3 (text+ko) ==== @@ -730,13 +730,14 @@ return (-1); } - pkg = pc->pc_pkg; + pkg = pc->pc_pkg != NULL ? pc->pc_pkg : pkg_alloc(pc); if (pkg == NULL) - pkg = pkg_alloc(pc); + return (-1); - buf = MDNS_BUFH(&pkg->p_buflist); + buf = MDNS_BUFH(&pkg->p_buflist) != NULL ? MDNS_BUFH(&pkg->p_buflist) : + mdns_buf_alloc(md->md_bp, &pkg->p_buflist, 0, 0); if (buf == NULL) - buf = mdns_buf_alloc(md->md_bp, &pkg->p_buflist, 0, 1); + return (-1); iov[0].iov_base = MDNS_BUF(buf); iov[0].iov_len = MDNS_BUFSZ(buf); @@ -780,7 +781,7 @@ if (nsock < 0) return (-1); fcntl(nsock, F_SETFL, O_NONBLOCK); - return (0); + return (nsock); } /* @@ -847,8 +848,7 @@ * pc - Destination packet chain */ int -mdns_tcp_recv(__attribute__((unused)) struct mdns *md, int sock, - struct mdns_pkgchain *pc) +mdns_tcp_recv(struct mdns *md, int sock, struct mdns_pkgchain *pc) { struct mdns_packet *pkg; struct mdns_buf *buf; @@ -857,13 +857,14 @@ MDNS_INIT_ASSERT(md, md_magic); MDNS_INIT_ASSERT(pc, pc_magic); - pkg = pc->pc_pkg; + pkg = pc->pc_pkg != NULL ? pc->pc_pkg : pkg_alloc(pc); if (pkg == NULL) - pkg = pkg_alloc(pc); + return (-1); - buf = MDNS_BUFH(&pkg->p_buflist); + buf = MDNS_BUFH(&pkg->p_buflist) != NULL ? MDNS_BUFH(&pkg->p_buflist) : + mdns_buf_alloc(md->md_bp, &pkg->p_buflist, 0, 0); if (buf == NULL) - buf = mdns_buf_alloc(md->md_bp, &pkg->p_buflist, 0, 1); + return (-1); for (;;) { n = read(sock, MDNS_BUF(buf), MDNS_BUFSZ(buf)); @@ -873,7 +874,9 @@ } if ((unsigned int)n < MDNS_BUFSZ(buf)) break; - buf = mdns_buf_alloc(md->md_bp, &pkg->p_buflist, 0, 1); + buf = mdns_buf_alloc(md->md_bp, &pkg->p_buflist, 0, 0); + if (buf == NULL) + return (-1); } /* @@ -883,8 +886,10 @@ * with legacy clients. */ buf = mdns_buf_merge(md->md_bp, &pkg->p_buflist, 1); + if (buf == NULL) + return (-1); - return (0); + return (pkg->p_len); } /* From owner-p4-projects@FreeBSD.ORG Fri May 11 18:37:07 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B279216A406; Fri, 11 May 2007 18:37:07 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 878F816A405 for ; Fri, 11 May 2007 18:37:07 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 5EA9B13C4BD for ; Fri, 11 May 2007 18:37:07 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4BIb7Ip013694 for ; Fri, 11 May 2007 18:37:07 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4BIb7CS013691 for perforce@freebsd.org; Fri, 11 May 2007 18:37:07 GMT (envelope-from fli@FreeBSD.org) Date: Fri, 11 May 2007 18:37:07 GMT Message-Id: <200705111837.l4BIb7CS013691@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119684 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 May 2007 18:37:08 -0000 http://perforce.freebsd.org/chv.cgi?CH=119684 Change 119684 by fli@fli_genesis on 2007/05/11 18:37:02 Add a generalized event system built around kqueue(2) Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/event.c#1 add .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/event.h#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Fri May 11 18:40:12 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D399416A407; Fri, 11 May 2007 18:40:11 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A9E6A16A404 for ; Fri, 11 May 2007 18:40:11 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 80A8913C489 for ; Fri, 11 May 2007 18:40:11 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4BIeB9W015190 for ; Fri, 11 May 2007 18:40:11 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4BIeBpY015184 for perforce@freebsd.org; Fri, 11 May 2007 18:40:11 GMT (envelope-from fli@FreeBSD.org) Date: Fri, 11 May 2007 18:40:11 GMT Message-Id: <200705111840.l4BIeBpY015184@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119685 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 May 2007 18:40:12 -0000 http://perforce.freebsd.org/chv.cgi?CH=119685 Change 119685 by fli@fli_genesis on 2007/05/11 18:40:02 Add a threaded work queue framework. Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/wqueue.c#1 add .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/wqueue.h#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Fri May 11 18:43:16 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3A59F16A408; Fri, 11 May 2007 18:43:16 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id ED2E216A402 for ; Fri, 11 May 2007 18:43:15 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id C3F9613C48C for ; Fri, 11 May 2007 18:43:15 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4BIhFWV018122 for ; Fri, 11 May 2007 18:43:15 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4BIhFwY018099 for perforce@freebsd.org; Fri, 11 May 2007 18:43:15 GMT (envelope-from fli@FreeBSD.org) Date: Fri, 11 May 2007 18:43:15 GMT Message-Id: <200705111843.l4BIhFwY018099@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119686 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 May 2007 18:43:16 -0000 http://perforce.freebsd.org/chv.cgi?CH=119686 Change 119686 by fli@fli_genesis on 2007/05/11 18:42:27 Syslog and stdout logging functions (and debugging macros) Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/log.c#1 add .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/log.h#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Fri May 11 18:48:24 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2A7B516A407; Fri, 11 May 2007 18:48:24 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id F0FBB16A400 for ; Fri, 11 May 2007 18:48:23 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id C7BA213C45A for ; Fri, 11 May 2007 18:48:23 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4BImN06021501 for ; Fri, 11 May 2007 18:48:23 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4BImNx1021492 for perforce@freebsd.org; Fri, 11 May 2007 18:48:23 GMT (envelope-from fli@FreeBSD.org) Date: Fri, 11 May 2007 18:48:23 GMT Message-Id: <200705111848.l4BImNx1021492@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119688 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 May 2007 18:48:24 -0000 http://perforce.freebsd.org/chv.cgi?CH=119688 Change 119688 by fli@fli_genesis on 2007/05/11 18:47:44 Add a skeleton application. It's currently only able to initialize all sub-systems, bring up active interfaces and listen for packets. Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/mdnsd.c#1 add .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/mdnsd.h#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Fri May 11 20:22:17 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9F22516A407; Fri, 11 May 2007 20:22:17 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7070216A405 for ; Fri, 11 May 2007 20:22:17 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 5F82213C44C for ; Fri, 11 May 2007 20:22:17 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4BKMH1G091134 for ; Fri, 11 May 2007 20:22:17 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4BKMG3i091127 for perforce@freebsd.org; Fri, 11 May 2007 20:22:16 GMT (envelope-from hselasky@FreeBSD.org) Date: Fri, 11 May 2007 20:22:16 GMT Message-Id: <200705112022.l4BKMG3i091127@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 119690 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 May 2007 20:22:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=119690 Change 119690 by hselasky@hselasky_mini_itx on 2007/05/11 20:22:08 Resolve some locking issues in the USB network stack when passing packets up via "if_input". Affected files ... .. //depot/projects/usb/src/sys/dev/usb/if_aue.c#24 edit .. //depot/projects/usb/src/sys/dev/usb/if_axe.c#23 edit .. //depot/projects/usb/src/sys/dev/usb/if_cdce.c#16 edit .. //depot/projects/usb/src/sys/dev/usb/if_cue.c#19 edit .. //depot/projects/usb/src/sys/dev/usb/if_kue.c#21 edit .. //depot/projects/usb/src/sys/dev/usb/if_rue.c#20 edit .. //depot/projects/usb/src/sys/dev/usb/if_rum.c#3 edit .. //depot/projects/usb/src/sys/dev/usb/if_udav.c#20 edit .. //depot/projects/usb/src/sys/dev/usb/if_ural.c#26 edit .. //depot/projects/usb/src/sys/dev/usb/usb_port.h#14 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/if_aue.c#24 (text+ko) ==== @@ -1079,7 +1079,7 @@ { struct aue_softc *sc = xfer->priv_sc; struct ifnet *ifp = sc->sc_ifp; - struct mbuf *m; + struct mbuf *m = NULL; USBD_CHECK_STATUS(xfer); @@ -1142,8 +1142,6 @@ m->m_pkthdr.rcvif = ifp; m->m_pkthdr.len = m->m_len = xfer->actlen; - (ifp->if_input)(ifp, m); - tr_setup: if (sc->sc_flags & AUE_FLAG_READ_STALL) { @@ -1151,6 +1149,17 @@ } else { usbd_start_hardware(xfer); } + + /* At the end of a USB callback it is always safe + * to unlock the private mutex of a device! That + * is why we do the "if_input" here, and not + * some lines up! + */ + if (m) { + mtx_unlock(&(sc->sc_mtx)); + (ifp->if_input)(ifp, m); + mtx_lock(&(sc->sc_mtx)); + } return; } ==== //depot/projects/usb/src/sys/dev/usb/if_axe.c#23 (text+ko) ==== @@ -1059,6 +1059,11 @@ struct axe_sframe_hdr hdr; struct ifnet *ifp = sc->sc_ifp; struct mbuf *m; + struct { /* mini-queue */ + struct mbuf *ifq_head; + struct mbuf *ifq_tail; + uint16_t ifq_len; + } mq = { NULL, NULL, 0 }; uint16_t pos; uint16_t len; uint16_t adjust; @@ -1117,7 +1122,6 @@ } m = usbd_ether_get_mbuf(); - if (m == NULL) { /* we are out of memory */ break; @@ -1133,7 +1137,8 @@ m->m_pkthdr.rcvif = ifp; m->m_pkthdr.len = m->m_len; - (ifp->if_input)(ifp, m); + /* enqueue */ + _IF_ENQUEUE(&(mq), m); skip: @@ -1159,6 +1164,27 @@ } else { usbd_start_hardware(xfer); } + + /* At the end of a USB callback it is always safe + * to unlock the private mutex of a device! That + * is why we do the "if_input" here, and not + * some lines up! + */ + if (mq.ifq_head) { + + mtx_unlock(&(sc->sc_mtx)); + + while (1) { + + _IF_DEQUEUE(&(mq), m); + + if (m == NULL) break; + + (ifp->if_input)(ifp, m); + } + + mtx_lock(&(sc->sc_mtx)); + } return; } ==== //depot/projects/usb/src/sys/dev/usb/if_cdce.c#16 (text+ko) ==== @@ -717,7 +717,7 @@ { struct cdce_softc *sc = xfer->priv_sc; struct ifnet *ifp = sc->sc_ifp; - struct mbuf *m; + struct mbuf *m = NULL; USBD_CHECK_STATUS(xfer); @@ -761,8 +761,6 @@ m->m_pkthdr.rcvif = ifp; m->m_pkthdr.len = m->m_len = xfer->actlen; - (ifp->if_input)(ifp, m); - tr_setup: if (sc->sc_flags & CDCE_FLAG_READ_STALL) { @@ -770,6 +768,17 @@ } else { usbd_start_hardware(xfer); } + + /* At the end of a USB callback it is always safe + * to unlock the private mutex of a device! That + * is why we do the "if_input" here, and not + * some lines up! + */ + if (m) { + mtx_unlock(&(sc->sc_mtx)); + (ifp->if_input)(ifp, m); + mtx_lock(&(sc->sc_mtx)); + } return; } ==== //depot/projects/usb/src/sys/dev/usb/if_cue.c#19 (text+ko) ==== @@ -650,7 +650,7 @@ { struct cue_softc *sc = xfer->priv_sc; struct ifnet *ifp = sc->sc_ifp; - struct mbuf *m; + struct mbuf *m = NULL; u_int8_t buf[2]; u_int16_t len; @@ -695,8 +695,6 @@ m->m_pkthdr.rcvif = ifp; m->m_pkthdr.len = m->m_len = xfer->actlen; - (ifp->if_input)(ifp, m); - tr_setup: if (sc->sc_flags & CUE_FLAG_READ_STALL) { @@ -704,6 +702,17 @@ } else { usbd_start_hardware(xfer); } + + /* At the end of a USB callback it is always safe + * to unlock the private mutex of a device! That + * is why we do the "if_input" here, and not + * some lines up! + */ + if (m) { + mtx_unlock(&(sc->sc_mtx)); + (ifp->if_input)(ifp, m); + mtx_lock(&(sc->sc_mtx)); + } return; } ==== //depot/projects/usb/src/sys/dev/usb/if_kue.c#21 (text+ko) ==== @@ -690,7 +690,7 @@ { struct kue_softc *sc = xfer->priv_sc; struct ifnet *ifp = sc->sc_ifp; - struct mbuf *m; + struct mbuf *m = NULL; u_int8_t buf[2]; u_int16_t len; @@ -735,8 +735,6 @@ m->m_pkthdr.rcvif = ifp; m->m_pkthdr.len = m->m_len = xfer->actlen; - (ifp->if_input)(ifp, m); - tr_setup: if (sc->sc_flags & KUE_FLAG_READ_STALL) { @@ -744,6 +742,17 @@ } else { usbd_start_hardware(xfer); } + + /* At the end of a USB callback it is always safe + * to unlock the private mutex of a device! That + * is why we do the "if_input" here, and not + * some lines up! + */ + if (m) { + mtx_unlock(&(sc->sc_mtx)); + (ifp->if_input)(ifp, m); + mtx_lock(&(sc->sc_mtx)); + } return; } ==== //depot/projects/usb/src/sys/dev/usb/if_rue.c#20 (text+ko) ==== @@ -968,7 +968,7 @@ struct rue_softc *sc = xfer->priv_sc; struct ifnet *ifp = sc->sc_ifp; u_int16_t status; - struct mbuf *m; + struct mbuf *m = NULL; USBD_CHECK_STATUS(xfer); @@ -1023,8 +1023,6 @@ m->m_pkthdr.rcvif = ifp; m->m_pkthdr.len = m->m_len = xfer->actlen; - (ifp->if_input)(ifp, m); - tr_setup: if (sc->sc_flags & RUE_FLAG_READ_STALL) { @@ -1032,6 +1030,17 @@ } else { usbd_start_hardware(xfer); } + + /* At the end of a USB callback it is always safe + * to unlock the private mutex of a device! That + * is why we do the "if_input" here, and not + * some lines up! + */ + if (m) { + mtx_unlock(&(sc->sc_mtx)); + (ifp->if_input)(ifp, m); + mtx_lock(&(sc->sc_mtx)); + } return; } ==== //depot/projects/usb/src/sys/dev/usb/if_rum.c#3 (text+ko) ==== @@ -1009,11 +1009,11 @@ struct rum_softc *sc = xfer->priv_sc; struct ieee80211com *ic = &(sc->sc_ic); struct ifnet *ifp = ic->ic_ifp; - struct ieee80211_node *ni; + struct ieee80211_node *ni = NULL; struct mbuf *m = NULL; uint32_t flags; uint32_t max_len; - uint8_t rssi; + uint8_t rssi = 0; USBD_CHECK_STATUS(xfer); @@ -1074,6 +1074,8 @@ "descriptor, %u bytes, received %u bytes\n", m->m_len, max_len); ifp->if_ierrors++; + m_freem(m); + m = NULL; goto tr_setup; } @@ -1096,34 +1098,30 @@ ni = ieee80211_find_rxnode(ic, (void *)(m->m_data)); - mtx_unlock(&(sc->sc_mtx)); + tr_setup: + + if (sc->sc_flags & RUM_FLAG_READ_STALL) { + usbd_transfer_start(sc->sc_xfer[3]); + } else { + usbd_start_hardware(xfer); + } - /* XXX it is possibly not safe - * to do the following unlocked: - * --hps + /* At the end of a USB callback it is always safe + * to unlock the private mutex of a device! That + * is why we do the "ieee80211_input" here, and not + * some lines up! */ + if (m) { + mtx_unlock(&(sc->sc_mtx)); - /* send the frame to the 802.11 layer */ - ieee80211_input(ic, m, ni, rssi, 0); + /* send the frame to the 802.11 layer */ + ieee80211_input(ic, m, ni, rssi, 0); - mtx_lock(&(sc->sc_mtx)); + mtx_lock(&(sc->sc_mtx)); - /* node is no longer needed */ - ieee80211_free_node(ni); - - m = NULL; - - tr_setup: - if (m) { - m_freem(m); + /* node is no longer needed */ + ieee80211_free_node(ni); } - - if (sc->sc_flags & RUM_FLAG_READ_STALL) { - usbd_transfer_start(sc->sc_xfer[3]); - return; - } - - usbd_start_hardware(xfer); return; } ==== //depot/projects/usb/src/sys/dev/usb/if_udav.c#20 (text+ko) ==== @@ -1009,7 +1009,7 @@ struct ifnet *ifp = sc->sc_ifp; u_int8_t status; u_int16_t total_len; - struct mbuf *m; + struct mbuf *m = NULL; USBD_CHECK_STATUS(xfer); @@ -1074,8 +1074,6 @@ m->m_pkthdr.rcvif = ifp; m->m_pkthdr.len = m->m_len = xfer->actlen; - (ifp->if_input)(ifp, m); - tr_setup: if (sc->sc_flags & UDAV_FLAG_READ_STALL) { @@ -1083,6 +1081,17 @@ } else { usbd_start_hardware(xfer); } + + /* At the end of a USB callback it is always safe + * to unlock the private mutex of a device! That + * is why we do the "if_input" here, and not + * some lines up! + */ + if (m) { + mtx_unlock(&(sc->sc_mtx)); + (ifp->if_input)(ifp, m); + mtx_lock(&(sc->sc_mtx)); + } return; } ==== //depot/projects/usb/src/sys/dev/usb/if_ural.c#26 (text+ko) ==== @@ -1090,11 +1090,11 @@ struct ural_softc *sc = xfer->priv_sc; struct ieee80211com *ic = &(sc->sc_ic); struct ifnet *ifp = ic->ic_ifp; - struct ieee80211_node *ni; + struct ieee80211_node *ni = NULL; struct mbuf *m = NULL; u_int32_t flags; u_int32_t max_len; - uint8_t rssi; + uint8_t rssi = 0; USBD_CHECK_STATUS(xfer); @@ -1142,6 +1142,8 @@ */ DPRINTF(sc, 5, "PHY or CRC error\n"); ifp->if_ierrors++; + m_freem(m); + m = NULL; goto tr_setup; } @@ -1155,6 +1157,8 @@ "descriptor, %u bytes, received %u bytes\n", m->m_len, max_len); ifp->if_ierrors++; + m_freem(m); + m = NULL; goto tr_setup; } @@ -1177,35 +1181,30 @@ ni = ieee80211_find_rxnode(ic, (struct ieee80211_frame_min *) (m->m_data)); + tr_setup: - mtx_unlock(&(sc->sc_mtx)); + if (sc->sc_flags & URAL_FLAG_READ_STALL) { + usbd_transfer_start(sc->sc_xfer[3]); + } else { + usbd_start_hardware(xfer); + } - /* XXX it is possibly not safe - * to do the following unlocked: - * --hps + /* At the end of a USB callback it is always safe + * to unlock the private mutex of a device! That + * is why we do the "ieee80211_input" here, and not + * some lines up! */ + if (m) { + mtx_unlock(&(sc->sc_mtx)); - /* send the frame to the 802.11 layer */ - ieee80211_input(ic, m, ni, rssi, 0); + /* send the frame to the 802.11 layer */ + ieee80211_input(ic, m, ni, rssi, 0); - mtx_lock(&(sc->sc_mtx)); + mtx_lock(&(sc->sc_mtx)); - /* node is no longer needed */ - ieee80211_free_node(ni); - - m = NULL; - - tr_setup: - if (m) { - m_freem(m); + /* node is no longer needed */ + ieee80211_free_node(ni); } - - if (sc->sc_flags & URAL_FLAG_READ_STALL) { - usbd_transfer_start(sc->sc_xfer[3]); - return; - } - - usbd_start_hardware(xfer); return; } ==== //depot/projects/usb/src/sys/dev/usb/usb_port.h#14 (text+ko) ==== @@ -111,7 +111,6 @@ #endif #define Ether_ifattach ether_ifattach -#define IF_INPUT(ifp, m) (*(ifp)->if_input)((ifp), (m)) #elif defined(__OpenBSD__) /* @@ -167,13 +166,6 @@ #define Ether_ifattach(ifp, eaddr) ether_ifattach(ifp) #define if_deactivate(x) -#define IF_INPUT(ifp, m) do { \ - struct ether_header *eh; \ - \ - eh = mtod(m, struct ether_header *); \ - m_adj(m, sizeof(struct ether_header)); \ - ether_input((ifp), (eh), (m)); \ -} while (0) #define powerhook_establish(fn, sc) (fn) #define powerhook_disestablish(hdl) From owner-p4-projects@FreeBSD.ORG Fri May 11 20:52:55 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BDF2616A408; Fri, 11 May 2007 20:52:55 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7028F16A405 for ; Fri, 11 May 2007 20:52:55 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 5F63E13C457 for ; Fri, 11 May 2007 20:52:55 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4BKqt6g006360 for ; Fri, 11 May 2007 20:52:55 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4BKqsrG006347 for perforce@freebsd.org; Fri, 11 May 2007 20:52:54 GMT (envelope-from hselasky@FreeBSD.org) Date: Fri, 11 May 2007 20:52:54 GMT Message-Id: <200705112052.l4BKqsrG006347@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 119692 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 May 2007 20:52:56 -0000 http://perforce.freebsd.org/chv.cgi?CH=119692 Change 119692 by hselasky@hselasky_mini_itx on 2007/05/11 20:52:01 This is a multi patch. I'm sorry I could not split it into three, but I was offline working on this for too long. The first part of this patch opens up the possibility for split control transfers. That means you can allocate any buffer greater or equal to wMaxPacketSize, to transfer any control transfer. This removes the need to allocate a 65535+8 bytes buffer to be able to process any control transfer. If a control transfer is not complete, it will block other control transfers from sending data. The block is removed when the USB transfer is stopped, freed, or has a short packet. The second part of this patch very much improves the synchronization mechanism that is used to make sure that the callbacks of stopped transfers are not called. Before a refcount was incremented to ensure that callbacks were not errornously called. This method has a problem, and that is if there is a flood of USB start/stop calls (+4GB), then the refcount might wrap so that the callback is called anyway. To make this system bullet proof, against this kind of attack, I now use the pointer returned by "curthread" as refcount. If another thread has taken over the callback, then simply the "usb_thread" variable will change, but never back to "curthread", because only the executing thread is allowed to set "usb_thread" equal to "curthread". The trick is to check that the "usb_thread" value is the same before doing the actual callback. The third part of this patch moves the control transfers into a config thread. This has the advantage that DELAY() calls become "msleep()" calls. It is obvious that this will improve the USB stack a little bit. Otherwise: Some code simplifications. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/ehci.c#29 edit .. //depot/projects/usb/src/sys/dev/usb/ehci.h#12 edit .. //depot/projects/usb/src/sys/dev/usb/ehci_pci.c#17 edit .. //depot/projects/usb/src/sys/dev/usb/ohci.c#23 edit .. //depot/projects/usb/src/sys/dev/usb/ohci.h#10 edit .. //depot/projects/usb/src/sys/dev/usb/ohci_pci.c#17 edit .. //depot/projects/usb/src/sys/dev/usb/uhci.c#24 edit .. //depot/projects/usb/src/sys/dev/usb/uhci.h#10 edit .. //depot/projects/usb/src/sys/dev/usb/uhci_pci.c#16 edit .. //depot/projects/usb/src/sys/dev/usb/usb_subr.h#37 edit .. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#23 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/ehci.c#29 (text+ko) ==== @@ -63,6 +63,8 @@ #include #define INCLUDE_PCIXXX_H +#define usbd_config_td_cc ehci_config_copy +#define usbd_config_td_softc ehci_softc #include #include @@ -101,6 +103,9 @@ extern struct usbd_pipe_methods ehci_root_ctrl_methods; extern struct usbd_pipe_methods ehci_root_intr_methods; +static usbd_config_td_command_t ehci_root_ctrl_task; +static void ehci_root_ctrl_task_td(struct ehci_softc *sc, struct thread *ctd); + #define SC_HW_PHYSADDR(sc,what) \ ((sc)->sc_hw_page.physaddr + \ POINTER_TO_UNSIGNED(&(((struct ehci_hw_softc *)0)->what))) @@ -1267,9 +1272,12 @@ static void ehci_pcd_enable(ehci_softc_t *sc) { - struct usbd_callback_info info[1]; + struct thread *td; struct usbd_xfer *xfer; + struct usbd_xfer *xlist[2]; + td = curthread; + mtx_assert(&sc->sc_bus.mtx, MA_OWNED); sc->sc_eintrs |= EHCI_STS_PCD; @@ -1286,14 +1294,15 @@ ehci_device_done(xfer, USBD_NORMAL_COMPLETION); /* queue callback */ - info[0].xfer = xfer; - info[0].refcount = xfer->usb_refcount; + xlist[0] = xfer; + xlist[1] = NULL; + xfer->usb_thread = td; xfer->usb_root->memory_refcount++; mtx_unlock(&sc->sc_bus.mtx); - usbd_do_callback(&info[0],&info[1]); + usbd_do_callback(xlist, td); } else { @@ -1307,12 +1316,15 @@ { enum { FINISH_LIST_MAX = 16 }; - struct usbd_callback_info info[FINISH_LIST_MAX]; - struct usbd_callback_info *ptr = &info[0]; + struct usbd_xfer *xlist[FINISH_LIST_MAX+1]; + struct usbd_xfer **xptr = xlist; struct usbd_xfer *xfer; + struct thread *td; u_int32_t status; u_int8_t need_repeat = 0; + td = ctd; /* default value */ + mtx_lock(&sc->sc_bus.mtx); /* @@ -1338,6 +1350,8 @@ goto repeat; } + td = curthread; /* NULL is not a valid thread */ + sc->sc_bus.no_intrs++; DPRINTFN(15,("%s: real interrupt\n", @@ -1392,10 +1406,10 @@ ehci_device_done(xfer, USBD_NORMAL_COMPLETION); /* queue callback */ - ptr->xfer = xfer; - ptr->refcount = xfer->usb_refcount; - ptr++; + + *(xptr++) = xfer; + xfer->usb_thread = td; xfer->usb_root->memory_refcount++; } @@ -1431,14 +1445,14 @@ if(ehci_check_transfer(xfer, ctd)) { /* queue callback */ - ptr->xfer = xfer; - ptr->refcount = xfer->usb_refcount; - ptr++; + + *(xptr++) = xfer; + xfer->usb_thread = td; xfer->usb_root->memory_refcount++; /* check queue length */ - if(ptr >= &info[FINISH_LIST_MAX]) + if (xptr >= &xlist[FINISH_LIST_MAX]) { need_repeat = 1; break; @@ -1449,11 +1463,14 @@ done: mtx_unlock(&sc->sc_bus.mtx); - usbd_do_callback(&info[0],ptr); + /* zero terminate the callback list */ + *(xptr) = NULL; + + usbd_do_callback(xlist, td); if(need_repeat) { - ptr = &info[0]; + xptr = xlist; need_repeat = 0; @@ -1477,9 +1494,12 @@ static void ehci_timeout(struct usbd_xfer *xfer) { - struct usbd_callback_info info[1]; + struct thread *td; + struct usbd_xfer *xlist[2]; ehci_softc_t *sc = xfer->usb_sc; + td = curthread; + DPRINTF(("xfer=%p\n", xfer)); mtx_assert(&sc->sc_bus.mtx, MA_OWNED); @@ -1488,14 +1508,15 @@ ehci_device_done(xfer, USBD_TIMEOUT); /* queue callback */ - info[0].xfer = xfer; - info[0].refcount = xfer->usb_refcount; + xlist[0] = xfer; + xlist[1] = NULL; + xfer->usb_thread = td; xfer->usb_root->memory_refcount++; mtx_unlock(&sc->sc_bus.mtx); - usbd_do_callback(&info[0],&info[1]); + usbd_do_callback(xlist, td); return; } @@ -1503,7 +1524,12 @@ static void ehci_do_poll(struct usbd_bus *bus) { - ehci_interrupt_td(EHCI_BUS2SC(bus), curthread); + struct ehci_softc *sc = EHCI_BUS2SC(bus); + struct thread *ctd = curthread; + ehci_interrupt_td(sc, ctd); + mtx_lock(&(sc->sc_bus.mtx)); + ehci_root_ctrl_task_td(sc, ctd); + mtx_unlock(&(sc->sc_bus.mtx)); return; } @@ -1532,7 +1558,7 @@ uint32_t qh_endp; uint32_t qh_endphub; u_int32_t buf_offset; - u_int32_t len = xfer->length; + u_int32_t len; u_int32_t c_error = (xfer->udev->speed == USB_SPEED_HIGH) ? 0 : htole32(EHCI_QTD_SET_CERR(3)); @@ -1555,16 +1581,14 @@ force_short = (xfer->flags & USBD_FORCE_SHORT_XFER) ? 1 : 0; + len = xfer->length; + if(xfer->pipe->methods == &ehci_device_ctrl_methods) { - /* the first byte is "bmRequestType" */ + isread = xfer->control_isread; - isread = *((u_int8_t *)(buf_res.buffer)); - isread &= UT_READ; + if (xfer->flags & USBD_DEV_CONTROL_HEADER) { - /* - * check length ? - */ xfer->pipe->toggle_next = 1; usbd_page_dma_exit(td->page); @@ -1601,12 +1625,23 @@ } usbd_page_dma_enter(td_last->page); + } else { + if (len == 0) { + /* When the length is zero we + * queue a short packet! + * This also makes "td_last" + * non-zero. + */ + DPRINTFN(0, ("short transfer!\n")); + force_short = 1; + } + } } else { isread = (UE_GET_DIR(xfer->endpoint) == UE_DIR_IN); - if (xfer->length == 0) { + if (len == 0) { /* When the length is zero we * queue a short packet! * This also makes "td_last" @@ -1713,6 +1748,8 @@ if(xfer->pipe->methods == &ehci_device_ctrl_methods) { + if (xfer->control_remainder == 0) { + usbd_page_dma_exit(td->page); /* STATUS message */ @@ -1732,10 +1769,14 @@ td->qtd_buffer[0] = 0; td->qtd_buffer_hi[0] = 0; + td->qtd_buffer[1] = 0; + td->qtd_buffer_hi[1] = 0; + td->len = 0; td_last = td; usbd_page_dma_enter(td_last->page); + } } usbd_page_dma_exit(td_last->page); @@ -1840,7 +1881,7 @@ u_int16_t i; u_int16_t m; - if(sc->sc_intrxfer) + if (sc->sc_intrxfer == xfer) { /* disable further interrupts */ sc->sc_intrxfer = NULL; @@ -2022,6 +2063,7 @@ static void ehci_device_done(struct usbd_xfer *xfer, usbd_status error) { + struct usbd_pipe_methods *methods = xfer->pipe->methods; ehci_softc_t *sc = xfer->usb_sc; u_int8_t need_delay; @@ -2044,8 +2086,8 @@ } } - if((xfer->pipe->methods == &ehci_device_bulk_methods) || - (xfer->pipe->methods == &ehci_device_ctrl_methods)) + if ((methods == &ehci_device_bulk_methods) || + (methods == &ehci_device_ctrl_methods)) { #ifdef USB_DEBUG if(ehcidebug > 8) @@ -2059,7 +2101,7 @@ EHCI_REMOVE_QH(xfer->qh_start, sc->sc_async_p_last); } - if(xfer->pipe->methods == &ehci_device_intr_methods) + if (methods == &ehci_device_intr_methods) { EHCI_REMOVE_QH(xfer->qh_start, sc->sc_intr_p_last[xfer->qh_pos]); } @@ -2071,7 +2113,7 @@ if(xfer->td_transfer_first && xfer->td_transfer_last) { - if(xfer->pipe->methods == &ehci_device_isoc_fs_methods) + if (methods == &ehci_device_isoc_fs_methods) { if(ehci_isoc_fs_done(sc, xfer)) { @@ -2079,7 +2121,7 @@ } } - if(xfer->pipe->methods == &ehci_device_isoc_hs_methods) + if (methods == &ehci_device_isoc_hs_methods) { if(ehci_isoc_hs_done(sc, xfer)) { @@ -2094,7 +2136,7 @@ /* finish root interrupt transfer * (will update xfer->buffer and xfer->actlen) */ - if(xfer->pipe->methods == &ehci_root_intr_methods) + if (methods == &ehci_root_intr_methods) { ehci_root_intr_done(sc, xfer); } @@ -2105,11 +2147,11 @@ /* remove interrupt info (if any) */ ehci_remove_interrupt_info(xfer); - if ((xfer->pipe->methods != &ehci_root_ctrl_methods) && - (xfer->pipe->methods != &ehci_root_intr_methods)) { + if ((methods != &ehci_root_ctrl_methods) && + (methods != &ehci_root_intr_methods)) { - if(((xfer->pipe->methods == &ehci_device_ctrl_methods) || - (xfer->pipe->methods == &ehci_device_bulk_methods)) && + if(((methods == &ehci_device_ctrl_methods) || + (methods == &ehci_device_bulk_methods)) && (sc->sc_doorbell_disable == 0)) { u_int32_t to = 100*1000; @@ -2259,6 +2301,11 @@ static void ehci_device_ctrl_enter(struct usbd_xfer *xfer) { + if (usbd_std_ctrl_enter(xfer)) { + /* error */ + return; + } + /* enqueue transfer */ usbd_transfer_enqueue(xfer); return; @@ -2985,6 +3032,12 @@ static void ehci_root_ctrl_close(struct usbd_xfer *xfer) { + ehci_softc_t *sc = xfer->usb_sc; + + if (sc->sc_hub_xfer == xfer) { + sc->sc_hub_xfer = NULL; + } + ehci_device_done(xfer, USBD_CANCELLED); return; } @@ -3022,9 +3075,8 @@ 0 }; -static const -usb_config_descriptor_t ehci_confd = -{ +static const struct ehci_config_desc ehci_confd = { + .confd = { sizeof(usb_config_descriptor_t), UDESC_CONFIG, {USB_CONFIG_DESCRIPTOR_SIZE + @@ -3035,11 +3087,9 @@ 0, UC_SELF_POWERED, 0 /* max power */ -}; + }, -static const -usb_interface_descriptor_t ehci_ifcd = -{ + .ifcd = { sizeof(usb_interface_descriptor_t), UDESC_INTERFACE, 0, @@ -3049,17 +3099,16 @@ UISUBCLASS_HUB, UIPROTO_HSHUBSTT, 0 -}; + }, -static const -usb_endpoint_descriptor_t ehci_endpd = -{ + .endpd = { sizeof(usb_endpoint_descriptor_t), UDESC_ENDPOINT, UE_DIR_IN | EHCI_INTR_ENDPT, UE_INTERRUPT, {8, 0}, /* max packet */ 255 + }, }; static const @@ -3075,7 +3124,7 @@ }; static void -ehci_disown(ehci_softc_t *sc, int index, int lowspeed) +ehci_disown(ehci_softc_t *sc, uint16_t index, uint8_t lowspeed) { u_int32_t port; u_int32_t v; @@ -3090,60 +3139,123 @@ static void ehci_root_ctrl_enter(struct usbd_xfer *xfer) { + if (usbd_std_ctrl_enter(xfer)) { + /* error */ + return; + } + + /* enqueue transfer */ + usbd_transfer_enqueue(xfer); + return; +} + +static void +ehci_root_ctrl_start(struct usbd_xfer *xfer) +{ ehci_softc_t *sc = xfer->usb_sc; + + sc->sc_hub_xfer = xfer; + + usbd_config_td_queue_command + (&(sc->sc_config_td), NULL, &ehci_root_ctrl_task, 0, 0); + + return; +} + +static void +ehci_root_ctrl_task(struct ehci_softc *sc, + struct ehci_config_copy *cc, uint16_t refcount) +{ + ehci_root_ctrl_task_td(sc, NULL); + return; +} + +static void +ehci_root_ctrl_task_td(struct ehci_softc *sc, struct thread *ctd) +{ + usb_device_request_t req; + struct usbd_xfer *xlist[2]; + struct usbd_xfer *xfer; + struct thread *td; + char *ptr; u_int32_t port; u_int32_t v; u_int16_t i; u_int16_t len; u_int16_t value; u_int16_t index; - u_int16_t l; - u_int16_t totlen = 0; - union { - usb_status_t stat; - usb_port_status_t ps; - usb_device_request_t req; - usb_hub_descriptor_t hubd; - usb_device_descriptor_t devd; - usb_device_qualifier_t odevd; - usb_config_descriptor_t confd; - usb_interface_descriptor_t ifcd; - usb_endpoint_descriptor_t endpd; - u_int8_t str_temp[128]; - u_int8_t byte_temp; - } u; + u_int8_t l; usbd_status err; mtx_assert(&sc->sc_bus.mtx, MA_OWNED); - if (xfer->length < sizeof(u.req)) { - err = USBD_INVAL; - goto done; + xfer = sc->sc_hub_xfer; + if (xfer == NULL) { + /* the transfer is gone */ + return; + } + + if (xfer->usb_thread != ctd) { + /* we should not call this transfer back */ + return; + } + + sc->sc_hub_xfer = NULL; + + td = ctd; + if (td == NULL) { + td = curthread; } - /* set default actual length */ - xfer->actlen = sizeof(u.req); + /* queue callback */ + xlist[0] = xfer; + xlist[1] = NULL; + + /* make sure that the memory does not disappear! */ + xfer->usb_thread = td; + xfer->usb_root->memory_refcount++; + + if (!(xfer->flags & USBD_DEV_CONTROL_HEADER)) { + + len = MIN(xfer->length, sc->sc_hub_len); + + /* set actual length */ + xfer->actlen = len; + + if (len) { - /* copy out "request" */ - usbd_copy_out(&(xfer->buf_data), 0, &u.req, sizeof(u.req)); + /* copy in data */ + usbd_copy_in(&(xfer->buf_data), 0, sc->sc_hub_ptr, len); - len = (xfer->length - sizeof(u.req)); + /* update pointer and length */ + sc->sc_hub_ptr += len; + sc->sc_hub_len -= len; + } - if (len != UGETW(u.req.wLength)) { - err = USBD_INVAL; + err = USBD_NORMAL_COMPLETION; goto done; } - value = UGETW(u.req.wValue); - index = UGETW(u.req.wIndex); + /* set default actual length, in case of error */ + xfer->actlen = sizeof(req); + + /* buffer reset */ + sc->sc_hub_ptr = sc->sc_hub_desc.temp; + sc->sc_hub_len = 0; + + /* copy out the USB request */ + usbd_copy_out(&(xfer->buf_data), 0, &req, sizeof(req)); + + value = UGETW(req.wValue); + index = UGETW(req.wIndex); DPRINTFN(2,("type=0x%02x request=0x%02x wLen=0x%04x " "wValue=0x%04x wIndex=0x%04x\n", - u.req.bmRequestType, u.req.bRequest, - len, value, index)); + req.bmRequestType, req.bRequest, + UGETW(req.wLength), value, index)); #define C(x,y) ((x) | ((y) << 8)) - switch(C(u.req.bRequest, u.req.bmRequestType)) { + switch(C(req.bRequest, req.bmRequestType)) { case C(UR_CLEAR_FEATURE, UT_WRITE_DEVICE): case C(UR_CLEAR_FEATURE, UT_WRITE_INTERFACE): case C(UR_CLEAR_FEATURE, UT_WRITE_ENDPOINT): @@ -3153,13 +3265,8 @@ */ break; case C(UR_GET_CONFIG, UT_READ_DEVICE): - if(len > 0) - { - u.byte_temp = sc->sc_conf; - totlen = 1; - usbd_copy_in(&(xfer->buf_data), sizeof(u.req), - &u, totlen); - } + sc->sc_hub_len = 1; + sc->sc_hub_desc.temp[0] = sc->sc_conf; break; case C(UR_GET_DESCRIPTOR, UT_READ_DEVICE): switch(value >> 8) { @@ -3169,15 +3276,8 @@ err = USBD_IOERROR; goto done; } - totlen = min(len, sizeof(u.devd)); - - u.devd = ehci_devd; -#if 0 - USETW(u.devd.idVendor, - sc->sc_id_vendor); -#endif - usbd_copy_in(&(xfer->buf_data), sizeof(u.req), - &u, totlen); + sc->sc_hub_len = sizeof(ehci_devd); + sc->sc_hub_desc.devd = ehci_devd; break; /* * We can't really operate at another speed, @@ -3190,9 +3290,8 @@ err = USBD_IOERROR; goto done; } - totlen = min(len, sizeof(ehci_odevd)); - usbd_copy_in(&(xfer->buf_data), sizeof(u.req), - &ehci_odevd, totlen); + sc->sc_hub_len = sizeof(ehci_odevd); + sc->sc_hub_desc.odevd = ehci_odevd; break; /* * We can't really operate at another speed, @@ -3206,67 +3305,35 @@ err = USBD_IOERROR; goto done; } - totlen = l = min(len, sizeof(u.confd)); - len -= l; - - u.confd = ehci_confd; - u.confd.bDescriptorType = (value >> 8); - - usbd_copy_in(&(xfer->buf_data), sizeof(u.req), - &u, l); - - l = min(len, sizeof(ehci_ifcd)); - totlen += l; - len -= l; - - usbd_copy_in(&(xfer->buf_data), sizeof(u.req) + - sizeof(u.confd), &ehci_ifcd, l); - - l = min(len, sizeof(ehci_endpd)); - totlen += l; - len -= l; - - usbd_copy_in(&(xfer->buf_data), sizeof(u.req) + - sizeof(u.confd) + sizeof(u.ifcd), - &ehci_endpd, l); + sc->sc_hub_len = sizeof(ehci_confd); + sc->sc_hub_desc.confd = ehci_confd; + sc->sc_hub_desc.confd.confd.bDescriptorType = + (value >> 8); break; case UDESC_STRING: - if(len == 0) - { - break; - } - switch (value & 0xff) { case 0: /* Language table */ - totlen = usbd_make_str_desc - (u.str_temp, sizeof(u.str_temp), - "\001"); + ptr = "\001"; break; case 1: /* Vendor */ - totlen = usbd_make_str_desc - (u.str_temp, sizeof(u.str_temp), - sc->sc_vendor); + ptr = sc->sc_vendor; break; case 2: /* Product */ - totlen = usbd_make_str_desc - (u.str_temp, sizeof(u.str_temp), - "EHCI root hub"); + ptr = "EHCI root hub"; break; default: - totlen = usbd_make_str_desc - (u.str_temp, sizeof(u.str_temp), - ""); + ptr = ""; break; } - if (totlen > len) { - totlen = len; - } - usbd_copy_in(&(xfer->buf_data), sizeof(u.req), - &u, totlen); + + sc->sc_hub_len = usbd_make_str_desc + (sc->sc_hub_desc.temp, + sizeof(sc->sc_hub_desc.temp), + ptr); break; default: err = USBD_IOERROR; @@ -3274,32 +3341,17 @@ } break; case C(UR_GET_INTERFACE, UT_READ_INTERFACE): - if(len > 0) - { - u.byte_temp = 0; - totlen = 1; - usbd_copy_in(&(xfer->buf_data), sizeof(u.req), - &u, totlen); - } + sc->sc_hub_len = 1; + sc->sc_hub_desc.temp[0] = 0; break; case C(UR_GET_STATUS, UT_READ_DEVICE): - if(len > 1) - { - USETW(u.stat.wStatus,UDS_SELF_POWERED); - totlen = 2; - usbd_copy_in(&(xfer->buf_data), sizeof(u.req), - &u, totlen); - } + sc->sc_hub_len = 2; + USETW(sc->sc_hub_desc.stat.wStatus,UDS_SELF_POWERED); break; case C(UR_GET_STATUS, UT_READ_INTERFACE): case C(UR_GET_STATUS, UT_READ_ENDPOINT): - if(len > 1) - { - USETW(u.stat.wStatus, 0); - totlen = 2; - usbd_copy_in(&(xfer->buf_data), sizeof(u.req), - &u, totlen); - } + sc->sc_hub_len = 2; + USETW(sc->sc_hub_desc.stat.wStatus, 0); break; case C(UR_SET_ADDRESS, UT_WRITE_DEVICE): if(value >= USB_MAX_DEVICES) @@ -3340,7 +3392,6 @@ err = USBD_IOERROR; goto done; } - port = EHCI_PORTSC(index); v = EOREAD4(sc, port) &~ EHCI_PS_CLEAR; switch(value) { @@ -3409,31 +3460,24 @@ v = EOREAD4(sc, EHCI_HCSPARAMS); - u.hubd = ehci_hubd; - u.hubd.bNbrPorts = sc->sc_noport; - USETW(u.hubd.wHubCharacteristics, + sc->sc_hub_desc.hubd = ehci_hubd; + sc->sc_hub_desc.hubd.bNbrPorts = sc->sc_noport; + USETW(sc->sc_hub_desc.hubd.wHubCharacteristics, (EHCI_HCS_PPC(v) ? UHD_PWR_INDIVIDUAL : UHD_PWR_NO_SWITCH) | (EHCI_HCS_P_INDICATOR(EREAD4(sc, EHCI_HCSPARAMS)) ? UHD_PORT_IND : 0)); - u.hubd.bPwrOn2PwrGood = 200; /* XXX can't find out? */ + sc->sc_hub_desc.hubd.bPwrOn2PwrGood = 200; /* XXX can't find out? */ for(l = 0; l < sc->sc_noport; l++) { /* XXX can't find out? */ - u.hubd.DeviceRemovable[l/8] &= ~(1 << (l % 8)); + sc->sc_hub_desc.hubd.DeviceRemovable[l/8] &= ~(1 << (l % 8)); } - u.hubd.bDescLength = (USB_HUB_DESCRIPTOR_SIZE-1) + ((sc->sc_noport + 7)/8); - totlen = min(len, u.hubd.bDescLength); - usbd_copy_in(&(xfer->buf_data), sizeof(u.req), - &u, totlen); + sc->sc_hub_desc.hubd.bDescLength = (USB_HUB_DESCRIPTOR_SIZE-1) + ((sc->sc_noport + 7)/8); + sc->sc_hub_len = sc->sc_hub_desc.hubd.bDescLength; break; case C(UR_GET_STATUS, UT_READ_CLASS_DEVICE): - if(len < 4) - { - err = USBD_IOERROR; - goto done; - } - usbd_bzero(&(xfer->buf_data), sizeof(u.req), len); - totlen = len; + sc->sc_hub_len = 16; + bzero(sc->sc_hub_desc.temp, 16); break; case C(UR_GET_STATUS, UT_READ_CLASS_OTHER): DPRINTFN(8,("get port status i=%d\n", @@ -3444,11 +3488,6 @@ err = USBD_IOERROR; goto done; } - if(len < 4) - { - err = USBD_IOERROR; - goto done; - } v = EOREAD4(sc, EHCI_PORTSC(index)); DPRINTFN(8,("port status=0x%04x\n", v)); i = UPS_HIGH_SPEED; @@ -3458,16 +3497,14 @@ if(v & EHCI_PS_OCA) i |= UPS_OVERCURRENT_INDICATOR; if(v & EHCI_PS_PR) i |= UPS_RESET; if(v & EHCI_PS_PP) i |= UPS_PORT_POWER; - USETW(u.ps.wPortStatus, i); + USETW(sc->sc_hub_desc.ps.wPortStatus, i); i = 0; if(v & EHCI_PS_CSC) i |= UPS_C_CONNECT_STATUS; if(v & EHCI_PS_PEC) i |= UPS_C_PORT_ENABLED; if(v & EHCI_PS_OCC) i |= UPS_C_OVERCURRENT_INDICATOR; if(sc->sc_isreset) i |= UPS_C_PORT_RESET; - USETW(u.ps.wPortChange, i); - totlen = min(len, sizeof(u.ps)); - usbd_copy_in(&(xfer->buf_data), sizeof(u.req), - &u, totlen); + USETW(sc->sc_hub_desc.ps.wPortChange, i); + sc->sc_hub_len = sizeof(sc->sc_hub_desc.ps); break; case C(UR_SET_DESCRIPTOR, UT_WRITE_CLASS_DEVICE): err = USBD_IOERROR; @@ -3501,13 +3538,30 @@ /* Start reset sequence. */ v &= ~ (EHCI_PS_PE | EHCI_PS_PR); EOWRITE4(sc, port, v | EHCI_PS_PR); - /* Wait for reset to complete. */ - DELAY(1000*USB_PORT_ROOT_RESET_DELAY); + + if (ctd) { + /* polling */ + DELAY(USB_PORT_ROOT_RESET_DELAY * 1000); + } else { + /* Wait for reset to complete. */ + l = usbd_config_td_sleep + (&(sc->sc_config_td), + (hz * USB_PORT_ROOT_RESET_DELAY) / 1000); + } /* Terminate reset sequence. */ EOWRITE4(sc, port, v); - /* Wait for HC to complete reset. */ - DELAY(1000*EHCI_PORT_RESET_COMPLETE); + + if (ctd) { + /* polling */ + DELAY(EHCI_PORT_RESET_COMPLETE * 1000); + } else { + /* Wait for HC to complete reset. */ + l = usbd_config_td_sleep + (&(sc->sc_config_td), + (hz * EHCI_PORT_RESET_COMPLETE) / 1000); + } + v = EOREAD4(sc, port); DPRINTF(("ehci after reset, status=0x%08x\n", v)); if(v & EHCI_PS_PR) @@ -3559,23 +3613,46 @@ goto done; } - xfer->actlen = totlen + sizeof(u.req); + if (xfer->usb_thread != td) { + /* do nothing */ + return; + } + + len = xfer->length - sizeof(req); + if (len > sc->sc_hub_len) { + len = sc->sc_hub_len; + } + + /* update actual length */ + xfer->actlen += len; + + if (len) { + + /* copy in data, if any */ + usbd_copy_in(&(xfer->buf_data), sizeof(req), + sc->sc_hub_ptr, len); + + /* update pointer and length */ + sc->sc_hub_ptr += len; + sc->sc_hub_len -= len; + } err = USBD_NORMAL_COMPLETION; done: + if (xfer->usb_thread != td) { + /* do nothing */ + return; + } + /* transfer transferred */ ehci_device_done(xfer, err); - /* call callback recursively */ - __usbd_callback(xfer); + mtx_unlock(&(sc->sc_bus.mtx)); + + usbd_do_callback(xlist, td); - return; -} + mtx_lock(&(sc->sc_bus.mtx)); -static void -ehci_root_ctrl_start(struct usbd_xfer *xfer) -{ - /* not used */ return; } ==== //depot/projects/usb/src/sys/dev/usb/ehci.h#12 (text+ko) ==== @@ -395,21 +395,41 @@ ehci_sitd_t isoc_fs_start[EHCI_VIRTUAL_FRAMELIST_COUNT]; }; +struct ehci_config_desc { + usb_config_descriptor_t confd; + usb_interface_descriptor_t ifcd; + usb_endpoint_descriptor_t endpd; +} __packed; + +union ehci_hub_desc { + usb_status_t stat; + usb_port_status_t ps; + usb_device_descriptor_t devd; + usb_device_qualifier_t odevd; + usb_hub_descriptor_t hubd; + struct ehci_config_desc confd; + uint8_t temp[128]; +}; + typedef struct ehci_softc { struct usbd_page sc_hw_page; struct usbd_bus sc_bus; /* base device */ + struct usbd_config_td sc_config_td; struct __callout sc_tmo_pcd; LIST_HEAD(, usbd_xfer) sc_interrupt_list_head; + union ehci_hub_desc sc_hub_desc; struct ehci_hw_softc *sc_hw_ptr; struct resource *sc_io_res; struct resource *sc_irq_res; struct usbd_xfer *sc_intrxfer; + struct usbd_xfer *sc_hub_xfer; struct ehci_qh *sc_async_p_last; struct ehci_qh *sc_intr_p_last[EHCI_VIRTUAL_FRAMELIST_COUNT]; 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; >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Fri May 11 20:53:58 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 731F216A469; Fri, 11 May 2007 20:53:58 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 33B4B16A40A for ; Fri, 11 May 2007 20:53:58 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 096CA13C45A for ; Fri, 11 May 2007 20:53:58 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4BKrvY6006610 for ; Fri, 11 May 2007 20:53:57 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4BKrvtA006606 for perforce@freebsd.org; Fri, 11 May 2007 20:53:57 GMT (envelope-from hselasky@FreeBSD.org) Date: Fri, 11 May 2007 20:53:57 GMT Message-Id: <200705112053.l4BKrvtA006606@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 119695 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 May 2007 20:53:58 -0000 http://perforce.freebsd.org/chv.cgi?CH=119695 Change 119695 by hselasky@hselasky_mini_itx on 2007/05/11 20:53:55 Fix a small bug in "umass" where the wrong USB config structure was used. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/umass.c#16 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/umass.c#16 (text+ko) ==== @@ -1193,7 +1193,7 @@ err = usbd_transfer_setup (uaa->device, uaa->iface_index, sc->sc_xfer, - umass_bbb_config, + umass_cbi_config, (sc->sc_proto & UMASS_PROTO_CBI_I) ? UMASS_T_CBI_MAX : (UMASS_T_CBI_MAX-2), sc, &(sc->sc_mtx)); From owner-p4-projects@FreeBSD.ORG Fri May 11 22:48:30 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5EF2D16A406; Fri, 11 May 2007 22:48:30 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 0D29016A404 for ; Fri, 11 May 2007 22:48:30 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id DB78313C46C for ; Fri, 11 May 2007 22:48:29 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4BMmTvf032356 for ; Fri, 11 May 2007 22:48:29 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4BMmTRA032353 for perforce@freebsd.org; Fri, 11 May 2007 22:48:29 GMT (envelope-from fli@FreeBSD.org) Date: Fri, 11 May 2007 22:48:29 GMT Message-Id: <200705112248.l4BMmTRA032353@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 119704 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 May 2007 22:48:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=119704 Change 119704 by fli@fli_genesis on 2007/05/11 22:48:27 Add Makefile (all debugging is enabled) Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/Makefile#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Sat May 12 02:20:16 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1229716A406; Sat, 12 May 2007 02:20:16 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CF66916A402 for ; Sat, 12 May 2007 02:20:15 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id BF30613C459 for ; Sat, 12 May 2007 02:20:15 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4C2KFWb080246 for ; Sat, 12 May 2007 02:20:15 GMT (envelope-from mjacob@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4C2K3AP080188 for perforce@freebsd.org; Sat, 12 May 2007 02:20:03 GMT (envelope-from mjacob@freebsd.org) Date: Sat, 12 May 2007 02:20:03 GMT Message-Id: <200705120220.l4C2K3AP080188@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mjacob@freebsd.org using -f From: Matt Jacob To: Perforce Change Reviews Cc: Subject: PERFORCE change 119709 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 May 2007 02:20:16 -0000 http://perforce.freebsd.org/chv.cgi?CH=119709 Change 119709 by mjacob@mjexp on 2007/05/12 02:19:43 IFC Affected files ... .. //depot/projects/mjexp/ObsoleteFiles.inc#15 integrate .. //depot/projects/mjexp/bin/df/df.c#4 integrate .. //depot/projects/mjexp/bin/sh/var.c#2 integrate .. //depot/projects/mjexp/cddl/lib/libzfs/Makefile#3 integrate .. //depot/projects/mjexp/compat/opensolaris/include/devid.h#2 integrate .. //depot/projects/mjexp/compat/opensolaris/misc/deviceid.c#1 branch .. //depot/projects/mjexp/contrib/gdb/gdb/ppcfbsd-nat.c#2 integrate .. //depot/projects/mjexp/contrib/opensolaris/cmd/zpool/zpool_vdev.c#2 integrate .. //depot/projects/mjexp/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h#5 integrate .. //depot/projects/mjexp/contrib/top/commands.c#3 integrate .. //depot/projects/mjexp/contrib/top/machine.h#3 integrate .. //depot/projects/mjexp/contrib/top/top.X#4 integrate .. //depot/projects/mjexp/contrib/top/top.c#4 integrate .. //depot/projects/mjexp/contrib/traceroute/traceroute.c#3 integrate .. //depot/projects/mjexp/etc/rc.d/netoptions#3 integrate .. //depot/projects/mjexp/etc/rc.d/routing#2 integrate .. //depot/projects/mjexp/gnu/usr.bin/gdb/arch/powerpc/Makefile#2 integrate .. //depot/projects/mjexp/gnu/usr.bin/gdb/arch/powerpc/init.c#2 integrate .. //depot/projects/mjexp/include/stdlib.h#2 integrate .. //depot/projects/mjexp/lib/libarchive/Makefile#10 integrate .. //depot/projects/mjexp/lib/libarchive/archive.h.in#11 integrate .. //depot/projects/mjexp/lib/libc/Versions.def#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/arm/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/db/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/gdtoa/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/gdtoa/_hdtoa.c#3 integrate .. //depot/projects/mjexp/lib/libc/gen/Symbol.map#5 integrate .. //depot/projects/mjexp/lib/libc/gmon/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/i386/Symbol.map#3 integrate .. //depot/projects/mjexp/lib/libc/ia64/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/inet/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/locale/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/locale/isdigit.3#3 integrate .. //depot/projects/mjexp/lib/libc/nameser/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/net/Symbol.map#3 integrate .. //depot/projects/mjexp/lib/libc/nls/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/posix1e/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/powerpc/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/quad/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/regex/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/resolv/Symbol.map#3 integrate .. //depot/projects/mjexp/lib/libc/rpc/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/softfloat/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/vfprintf.c#4 integrate .. //depot/projects/mjexp/lib/libc/stdlib/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/getenv.3#4 integrate .. //depot/projects/mjexp/lib/libc/stdlib/getenv.c#3 integrate .. //depot/projects/mjexp/lib/libc/stdlib/putenv.c#3 integrate .. //depot/projects/mjexp/lib/libc/stdlib/setenv.c#3 integrate .. //depot/projects/mjexp/lib/libc/stdtime/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/string/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/sys/Makefile.inc#4 integrate .. //depot/projects/mjexp/lib/libc/sys/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/uuid/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/xdr/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libc/yp/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libelf/Version.map#3 integrate .. //depot/projects/mjexp/lib/libfetch/http.c#2 integrate .. //depot/projects/mjexp/lib/libgeom/Makefile#2 integrate .. //depot/projects/mjexp/lib/libgeom/geom_getxml.c#2 integrate .. //depot/projects/mjexp/lib/libgeom/geom_util.c#1 branch .. //depot/projects/mjexp/lib/libgeom/libgeom.3#2 integrate .. //depot/projects/mjexp/lib/libgeom/libgeom.h#2 integrate .. //depot/projects/mjexp/lib/libipsec/pfkey_dump.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/pthread.map#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_private.h#3 integrate .. //depot/projects/mjexp/lib/librt/Makefile#2 integrate .. //depot/projects/mjexp/lib/librt/Version.map#1 branch .. //depot/projects/mjexp/lib/libthr/pthread.map#2 integrate .. //depot/projects/mjexp/lib/libthr/thread/thr_init.c#4 integrate .. //depot/projects/mjexp/lib/libthr/thread/thr_mutex.c#5 integrate .. //depot/projects/mjexp/lib/libthr/thread/thr_umtx.c#5 integrate .. //depot/projects/mjexp/lib/libthread_db/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/libthread_db/arch/powerpc/libpthread_md.c#2 integrate .. //depot/projects/mjexp/lib/libutil/Makefile#2 integrate .. //depot/projects/mjexp/lib/libutil/flopen.3#1 branch .. //depot/projects/mjexp/lib/libutil/flopen.c#1 branch .. //depot/projects/mjexp/lib/libutil/libutil.h#2 integrate .. //depot/projects/mjexp/lib/libutil/login_class.c#2 integrate .. //depot/projects/mjexp/lib/libutil/pidfile.c#2 integrate .. //depot/projects/mjexp/lib/msun/Symbol.map#3 integrate .. //depot/projects/mjexp/lib/msun/amd64/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/msun/arm/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/msun/bsdsrc/b_tgamma.c#2 integrate .. //depot/projects/mjexp/lib/msun/i387/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/msun/ia64/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/msun/powerpc/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/msun/sparc64/Symbol.map#2 integrate .. //depot/projects/mjexp/lib/msun/src/e_lgamma_r.c#2 integrate .. //depot/projects/mjexp/lib/msun/src/e_lgammaf_r.c#2 integrate .. //depot/projects/mjexp/libexec/pppoed/pppoed.c#2 integrate .. //depot/projects/mjexp/libexec/rtld-elf/Makefile#4 integrate .. //depot/projects/mjexp/libexec/rtld-elf/Symbol.map#3 integrate .. //depot/projects/mjexp/libexec/rtld-elf/Versions.def#3 delete .. //depot/projects/mjexp/libexec/rtld-elf/i386/Symbol.map#3 integrate .. //depot/projects/mjexp/libexec/rtld-elf/rtld.c#5 integrate .. //depot/projects/mjexp/release/Makefile#7 integrate .. //depot/projects/mjexp/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml#6 integrate .. //depot/projects/mjexp/release/doc/en_US.ISO8859-1/installation/common/install.sgml#3 integrate .. //depot/projects/mjexp/release/doc/en_US.ISO8859-1/relnotes/article.sgml#15 integrate .. //depot/projects/mjexp/release/doc/share/misc/dev.archlist.txt#6 integrate .. //depot/projects/mjexp/sbin/fdisk/fdisk.8#4 integrate .. //depot/projects/mjexp/sbin/fdisk/fdisk.c#2 integrate .. //depot/projects/mjexp/sbin/fdisk_pc98/fdisk.8#3 integrate .. //depot/projects/mjexp/sbin/geom/class/eli/geom_eli.c#5 integrate .. //depot/projects/mjexp/sbin/geom/class/multipath/gmultipath.8#2 integrate .. //depot/projects/mjexp/sbin/ipfw/ipfw.8#5 integrate .. //depot/projects/mjexp/sbin/ipfw/ipfw2.c#5 integrate .. //depot/projects/mjexp/sbin/mdmfs/mdmfs.c#5 integrate .. //depot/projects/mjexp/sbin/setkey/setkey.8#2 integrate .. //depot/projects/mjexp/sbin/setkey/token.l#2 integrate .. //depot/projects/mjexp/secure/lib/libcrypto/Makefile#4 integrate .. //depot/projects/mjexp/secure/lib/libcrypto/Makefile.inc#4 integrate .. //depot/projects/mjexp/secure/lib/libcrypto/opensslconf-amd64.h#3 integrate .. //depot/projects/mjexp/secure/lib/libcrypto/opensslconf-i386.h#3 integrate .. //depot/projects/mjexp/share/man/man4/Makefile#13 integrate .. //depot/projects/mjexp/share/man/man4/altq.4#6 integrate .. //depot/projects/mjexp/share/man/man4/hptiop.4#1 branch .. //depot/projects/mjexp/share/man/man4/rum.4#1 branch .. //depot/projects/mjexp/share/man/man4/snd_hda.4#7 integrate .. //depot/projects/mjexp/share/man/man4/twa.4#2 integrate .. //depot/projects/mjexp/share/man/man4/ubsa.4#4 integrate .. //depot/projects/mjexp/share/man/man4/uftdi.4#4 integrate .. //depot/projects/mjexp/share/man/man4/vlan.4#4 integrate .. //depot/projects/mjexp/share/man/man5/passwd.5#2 integrate .. //depot/projects/mjexp/share/man/man9/disk.9#4 integrate .. //depot/projects/mjexp/share/man/man9/g_bio.9#3 integrate .. //depot/projects/mjexp/share/man/man9/make_dev.9#3 integrate .. //depot/projects/mjexp/share/man/man9/rman.9#3 integrate .. //depot/projects/mjexp/share/misc/bsd-family-tree#5 integrate .. //depot/projects/mjexp/share/misc/committers-ports.dot#7 integrate .. //depot/projects/mjexp/share/misc/committers-src.dot#5 integrate .. //depot/projects/mjexp/share/mk/bsd.symver.mk#2 integrate .. //depot/projects/mjexp/share/mklocale/ja_JP.eucJP.src#2 integrate .. //depot/projects/mjexp/sys/amd64/acpica/madt.c#4 integrate .. //depot/projects/mjexp/sys/amd64/amd64/intr_machdep.c#7 integrate .. //depot/projects/mjexp/sys/amd64/amd64/io_apic.c#7 integrate .. //depot/projects/mjexp/sys/amd64/amd64/local_apic.c#8 integrate .. //depot/projects/mjexp/sys/amd64/amd64/mp_machdep.c#7 integrate .. //depot/projects/mjexp/sys/amd64/amd64/mptable.c#3 integrate .. //depot/projects/mjexp/sys/amd64/amd64/mptable_pci.c#5 integrate .. //depot/projects/mjexp/sys/amd64/amd64/msi.c#4 integrate .. //depot/projects/mjexp/sys/amd64/amd64/nexus.c#7 integrate .. //depot/projects/mjexp/sys/amd64/conf/GENERIC#9 integrate .. //depot/projects/mjexp/sys/amd64/conf/NOTES#4 integrate .. //depot/projects/mjexp/sys/amd64/include/apicvar.h#7 integrate .. //depot/projects/mjexp/sys/amd64/include/intr_machdep.h#8 integrate .. //depot/projects/mjexp/sys/amd64/include/vmparam.h#3 integrate .. //depot/projects/mjexp/sys/amd64/isa/atpic.c#4 integrate .. //depot/projects/mjexp/sys/amd64/linux32/linux32_machdep.c#14 integrate .. //depot/projects/mjexp/sys/amd64/pci/pci_bus.c#5 integrate .. //depot/projects/mjexp/sys/arm/include/vmparam.h#2 integrate .. //depot/projects/mjexp/sys/arm/xscale/i80321/ep80219_machdep.c#5 integrate .. //depot/projects/mjexp/sys/arm/xscale/i80321/iq31244_machdep.c#5 integrate .. //depot/projects/mjexp/sys/arm/xscale/ixp425/avila_machdep.c#4 integrate .. //depot/projects/mjexp/sys/boot/common/loader.8#5 integrate .. //depot/projects/mjexp/sys/compat/freebsd32/freebsd32_misc.c#4 integrate .. //depot/projects/mjexp/sys/compat/linprocfs/linprocfs.c#12 integrate .. //depot/projects/mjexp/sys/compat/opensolaris/kern/opensolaris_kobj.c#3 integrate .. //depot/projects/mjexp/sys/compat/opensolaris/kern/opensolaris_vfs.c#4 integrate .. //depot/projects/mjexp/sys/conf/NOTES#20 integrate .. //depot/projects/mjexp/sys/conf/files#23 integrate .. //depot/projects/mjexp/sys/conf/kern.pre.mk#4 integrate .. //depot/projects/mjexp/sys/conf/options#17 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/dbuf.c#3 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/dnode.c#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#3 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c#3 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#5 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#6 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#5 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/zio.c#3 integrate .. //depot/projects/mjexp/sys/crypto/camellia/camellia-api.c#1 branch .. //depot/projects/mjexp/sys/crypto/camellia/camellia.c#1 branch .. //depot/projects/mjexp/sys/crypto/camellia/camellia.h#1 branch .. //depot/projects/mjexp/sys/dev/acpica/acpi.c#6 integrate .. //depot/projects/mjexp/sys/dev/acpica/acpi_pcib_acpi.c#5 integrate .. //depot/projects/mjexp/sys/dev/acpica/acpi_pcib_pci.c#4 integrate .. //depot/projects/mjexp/sys/dev/ata/ata-disk.c#5 integrate .. //depot/projects/mjexp/sys/dev/ata/atapi-cam.c#7 integrate .. //depot/projects/mjexp/sys/dev/bce/if_bce.c#12 integrate .. //depot/projects/mjexp/sys/dev/bce/if_bcefw.h#2 integrate .. //depot/projects/mjexp/sys/dev/bce/if_bcereg.h#6 integrate .. //depot/projects/mjexp/sys/dev/bge/if_bge.c#13 integrate .. //depot/projects/mjexp/sys/dev/bge/if_bgereg.h#8 integrate .. //depot/projects/mjexp/sys/dev/ciss/ciss.c#7 integrate .. //depot/projects/mjexp/sys/dev/ciss/cissvar.h#2 integrate .. //depot/projects/mjexp/sys/dev/em/LICENSE#2 integrate .. //depot/projects/mjexp/sys/dev/em/README#2 integrate .. //depot/projects/mjexp/sys/dev/em/e1000_80003es2lan.c#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_80003es2lan.h#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_82540.c#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_82541.c#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_82541.h#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_82542.c#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_82543.c#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_82543.h#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_82571.c#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_82571.h#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_82575.c#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_82575.h#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_api.c#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_api.h#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_defines.h#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_hw.h#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_ich8lan.c#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_ich8lan.h#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_mac.c#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_mac.h#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_manage.c#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_manage.h#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_nvm.c#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_nvm.h#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_osdep.h#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_phy.c#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_phy.h#1 branch .. //depot/projects/mjexp/sys/dev/em/e1000_regs.h#1 branch .. //depot/projects/mjexp/sys/dev/em/if_em.c#6 integrate .. //depot/projects/mjexp/sys/dev/em/if_em.h#4 integrate .. //depot/projects/mjexp/sys/dev/em/if_em_hw.c#3 delete .. //depot/projects/mjexp/sys/dev/em/if_em_hw.h#3 delete .. //depot/projects/mjexp/sys/dev/em/if_em_osdep.h#3 delete .. //depot/projects/mjexp/sys/dev/firewire/firewire.c#4 integrate .. //depot/projects/mjexp/sys/dev/firewire/firewirereg.h#3 integrate .. //depot/projects/mjexp/sys/dev/firewire/fwdev.c#5 integrate .. //depot/projects/mjexp/sys/dev/firewire/fwohci.c#4 integrate .. //depot/projects/mjexp/sys/dev/firewire/fwohcireg.h#2 integrate .. //depot/projects/mjexp/sys/dev/firewire/if_fwip.c#4 integrate .. //depot/projects/mjexp/sys/dev/firewire/sbp.c#7 integrate .. //depot/projects/mjexp/sys/dev/firewire/sbp_targ.c#4 integrate .. //depot/projects/mjexp/sys/dev/gem/if_gem.c#3 integrate .. //depot/projects/mjexp/sys/dev/gem/if_gem_pci.c#3 integrate .. //depot/projects/mjexp/sys/dev/gem/if_gemvar.h#3 integrate .. //depot/projects/mjexp/sys/dev/hme/if_hme.c#3 integrate .. //depot/projects/mjexp/sys/dev/hptiop/hptiop.c#1 branch .. //depot/projects/mjexp/sys/dev/hptiop/hptiop.h#1 branch .. //depot/projects/mjexp/sys/dev/ipmi/ipmi_smbios.c#2 integrate .. //depot/projects/mjexp/sys/dev/isp/isp.c#21 integrate .. //depot/projects/mjexp/sys/dev/isp/isp_freebsd.c#25 integrate .. //depot/projects/mjexp/sys/dev/isp/isp_freebsd.h#18 integrate .. //depot/projects/mjexp/sys/dev/isp/isp_pci.c#27 integrate .. //depot/projects/mjexp/sys/dev/isp/isp_sbus.c#15 integrate .. //depot/projects/mjexp/sys/dev/isp/isp_tpublic.h#7 integrate .. //depot/projects/mjexp/sys/dev/mfi/mfi.c#8 integrate .. //depot/projects/mjexp/sys/dev/mfi/mfi_disk.c#3 integrate .. //depot/projects/mjexp/sys/dev/mfi/mfi_ioctl.h#4 integrate .. //depot/projects/mjexp/sys/dev/mfi/mfi_pci.c#4 integrate .. //depot/projects/mjexp/sys/dev/mfi/mfivar.h#3 integrate .. //depot/projects/mjexp/sys/dev/mii/brgphy.c#10 integrate .. //depot/projects/mjexp/sys/dev/mii/mii.c#3 integrate .. //depot/projects/mjexp/sys/dev/mpt/mpt.c#8 integrate .. //depot/projects/mjexp/sys/dev/mpt/mpt.h#13 integrate .. //depot/projects/mjexp/sys/dev/mpt/mpt_cam.c#22 integrate .. //depot/projects/mjexp/sys/dev/mpt/mpt_cam.h#5 integrate .. //depot/projects/mjexp/sys/dev/mpt/mpt_pci.c#12 integrate .. //depot/projects/mjexp/sys/dev/mpt/mpt_raid.c#7 integrate .. //depot/projects/mjexp/sys/dev/mxge/eth_z8e.dat.gz.uu#3 integrate .. //depot/projects/mjexp/sys/dev/mxge/ethp_z8e.dat.gz.uu#3 integrate .. //depot/projects/mjexp/sys/dev/mxge/if_mxge.c#12 integrate .. //depot/projects/mjexp/sys/dev/mxge/mxge_mcp.h#2 integrate .. //depot/projects/mjexp/sys/dev/nve/if_nve.c#3 integrate .. //depot/projects/mjexp/sys/dev/pci/pci.c#16 integrate .. //depot/projects/mjexp/sys/dev/pci/pci_if.m#5 integrate .. //depot/projects/mjexp/sys/dev/pci/pci_pci.c#8 integrate .. //depot/projects/mjexp/sys/dev/pci/pci_private.h#6 integrate .. //depot/projects/mjexp/sys/dev/pci/pcib_if.m#4 integrate .. //depot/projects/mjexp/sys/dev/pci/pcib_private.h#6 integrate .. //depot/projects/mjexp/sys/dev/pci/pcivar.h#8 integrate .. //depot/projects/mjexp/sys/dev/sk/if_sk.c#7 integrate .. //depot/projects/mjexp/sys/dev/sound/pci/emu10kx.c#4 integrate .. //depot/projects/mjexp/sys/dev/sound/pci/hda/hdac.c#12 integrate .. //depot/projects/mjexp/sys/dev/sound/pci/hda/hdac_private.h#5 integrate .. //depot/projects/mjexp/sys/dev/sound/pci/ich.c#8 integrate .. //depot/projects/mjexp/sys/dev/sound/pcm/buffer.h#5 integrate .. //depot/projects/mjexp/sys/dev/sound/pcm/sound.h#5 integrate .. //depot/projects/mjexp/sys/dev/stge/if_stge.c#5 integrate .. //depot/projects/mjexp/sys/dev/stge/if_stgereg.h#2 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_cl.h#2 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_cl_externs.h#2 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_cl_fwif.h#2 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_cl_fwimg.c#2 delete .. //depot/projects/mjexp/sys/dev/twa/tw_cl_init.c#2 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_cl_intr.c#2 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_cl_io.c#2 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_cl_ioctl.h#2 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_cl_misc.c#2 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_cl_share.h#2 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_osl.h#2 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_osl_cam.c#5 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_osl_externs.h#2 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_osl_freebsd.c#4 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_osl_includes.h#3 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_osl_inline.h#3 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_osl_ioctl.h#2 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_osl_share.h#3 integrate .. //depot/projects/mjexp/sys/dev/twa/tw_osl_types.h#2 integrate .. //depot/projects/mjexp/sys/dev/uart/uart_kbd_sun.c#5 integrate .. //depot/projects/mjexp/sys/dev/usb/if_axe.c#4 integrate .. //depot/projects/mjexp/sys/dev/usb/if_axereg.h#2 integrate .. //depot/projects/mjexp/sys/dev/usb/if_rum.c#1 branch .. //depot/projects/mjexp/sys/dev/usb/if_rumreg.h#1 branch .. //depot/projects/mjexp/sys/dev/usb/if_rumvar.h#1 branch .. //depot/projects/mjexp/sys/dev/usb/if_ural.c#9 integrate .. //depot/projects/mjexp/sys/dev/usb/if_uralvar.h#2 integrate .. //depot/projects/mjexp/sys/dev/usb/rt2573_ucode.h#1 branch .. //depot/projects/mjexp/sys/dev/usb/ubsa.c#5 integrate .. //depot/projects/mjexp/sys/dev/usb/uftdi.c#2 integrate .. //depot/projects/mjexp/sys/dev/usb/usb_subr.c#5 integrate .. //depot/projects/mjexp/sys/dev/usb/usbdevs#10 integrate .. //depot/projects/mjexp/sys/fs/procfs/procfs_ioctl.c#4 integrate .. //depot/projects/mjexp/sys/geom/eli/g_eli_ctl.c#3 integrate .. //depot/projects/mjexp/sys/geom/geom.h#3 integrate .. //depot/projects/mjexp/sys/geom/geom_dev.c#5 integrate .. //depot/projects/mjexp/sys/geom/geom_disk.c#4 integrate .. //depot/projects/mjexp/sys/geom/geom_disk.h#3 integrate .. //depot/projects/mjexp/sys/geom/geom_io.c#6 integrate .. //depot/projects/mjexp/sys/geom/geom_slice.c#3 integrate .. //depot/projects/mjexp/sys/geom/geom_subr.c#2 integrate .. //depot/projects/mjexp/sys/geom/part/g_part.c#3 integrate .. //depot/projects/mjexp/sys/geom/part/g_part.h#2 integrate .. //depot/projects/mjexp/sys/geom/part/g_part_apm.c#2 integrate .. //depot/projects/mjexp/sys/geom/part/g_part_gpt.c#2 integrate .. //depot/projects/mjexp/sys/i386/acpica/madt.c#4 integrate .. //depot/projects/mjexp/sys/i386/conf/GENERIC#7 integrate .. //depot/projects/mjexp/sys/i386/conf/NOTES#5 integrate .. //depot/projects/mjexp/sys/i386/conf/PAE#2 integrate .. //depot/projects/mjexp/sys/i386/i386/intr_machdep.c#7 integrate .. //depot/projects/mjexp/sys/i386/i386/io_apic.c#7 integrate .. //depot/projects/mjexp/sys/i386/i386/local_apic.c#8 integrate .. //depot/projects/mjexp/sys/i386/i386/mp_machdep.c#8 integrate .. //depot/projects/mjexp/sys/i386/i386/mptable.c#3 integrate .. //depot/projects/mjexp/sys/i386/i386/mptable_pci.c#5 integrate .. //depot/projects/mjexp/sys/i386/i386/msi.c#4 integrate .. //depot/projects/mjexp/sys/i386/i386/nexus.c#8 integrate .. //depot/projects/mjexp/sys/i386/include/apicvar.h#7 integrate .. //depot/projects/mjexp/sys/i386/include/intr_machdep.h#8 integrate .. //depot/projects/mjexp/sys/i386/include/vmparam.h#4 integrate .. //depot/projects/mjexp/sys/i386/isa/atpic.c#4 integrate .. //depot/projects/mjexp/sys/i386/linux/linux_machdep.c#11 integrate .. //depot/projects/mjexp/sys/i386/pci/pci_bus.c#5 integrate .. //depot/projects/mjexp/sys/ia64/ia64/machdep.c#6 integrate .. //depot/projects/mjexp/sys/ia64/include/vmparam.h#3 integrate .. //depot/projects/mjexp/sys/kern/kern_condvar.c#5 integrate .. //depot/projects/mjexp/sys/kern/kern_descrip.c#11 integrate .. //depot/projects/mjexp/sys/kern/kern_intr.c#11 integrate .. //depot/projects/mjexp/sys/kern/kern_mutex.c#8 integrate .. //depot/projects/mjexp/sys/kern/kern_rwlock.c#7 integrate .. //depot/projects/mjexp/sys/kern/kern_sx.c#8 integrate .. //depot/projects/mjexp/sys/kern/kern_synch.c#12 integrate .. //depot/projects/mjexp/sys/kern/kern_timeout.c#3 integrate .. //depot/projects/mjexp/sys/kern/sys_generic.c#7 integrate .. //depot/projects/mjexp/sys/kern/uipc_debug.c#2 integrate .. //depot/projects/mjexp/sys/kern/uipc_sockbuf.c#3 integrate .. //depot/projects/mjexp/sys/kern/uipc_socket.c#11 integrate .. //depot/projects/mjexp/sys/kern/uipc_syscalls.c#10 integrate .. //depot/projects/mjexp/sys/kern/uipc_usrreq.c#11 integrate .. //depot/projects/mjexp/sys/kern/vfs_syscalls.c#12 integrate .. //depot/projects/mjexp/sys/modules/Makefile#12 integrate .. //depot/projects/mjexp/sys/modules/crypto/Makefile#3 integrate .. //depot/projects/mjexp/sys/modules/em/Makefile#2 integrate .. //depot/projects/mjexp/sys/modules/hptiop/Makefile#1 branch .. //depot/projects/mjexp/sys/modules/rum/Makefile#1 branch .. //depot/projects/mjexp/sys/modules/twa/Makefile#2 integrate .. //depot/projects/mjexp/sys/net/ieee8023ad_lacp.c#3 integrate .. //depot/projects/mjexp/sys/net/ieee8023ad_lacp.h#3 integrate .. //depot/projects/mjexp/sys/net/if.h#2 integrate .. //depot/projects/mjexp/sys/net/if_lagg.c#2 integrate .. //depot/projects/mjexp/sys/net/if_lagg.h#2 integrate .. //depot/projects/mjexp/sys/net/pfkeyv2.h#2 integrate .. //depot/projects/mjexp/sys/net80211/ieee80211_amrr.c#2 integrate .. //depot/projects/mjexp/sys/netatalk/ddp_usrreq.c#3 integrate .. //depot/projects/mjexp/sys/netgraph/ng_mppc.c#2 integrate .. //depot/projects/mjexp/sys/netgraph/ng_socket.c#4 integrate .. //depot/projects/mjexp/sys/netinet/if_ether.c#7 integrate .. //depot/projects/mjexp/sys/netinet/in.c#6 integrate .. //depot/projects/mjexp/sys/netinet/in_cksum.c#2 integrate .. //depot/projects/mjexp/sys/netinet/in_gif.c#2 integrate .. //depot/projects/mjexp/sys/netinet/in_pcb.c#8 integrate .. //depot/projects/mjexp/sys/netinet/in_pcb.h#5 integrate .. //depot/projects/mjexp/sys/netinet/in_rmx.c#2 integrate .. //depot/projects/mjexp/sys/netinet/ip.h#3 integrate .. //depot/projects/mjexp/sys/netinet/ip_divert.c#5 integrate .. //depot/projects/mjexp/sys/netinet/ip_dummynet.c#3 integrate .. //depot/projects/mjexp/sys/netinet/ip_ecn.c#2 integrate .. //depot/projects/mjexp/sys/netinet/ip_encap.c#2 integrate .. //depot/projects/mjexp/sys/netinet/ip_fw.h#3 integrate .. //depot/projects/mjexp/sys/netinet/ip_fw2.c#11 integrate .. //depot/projects/mjexp/sys/netinet/ip_icmp.c#3 integrate .. //depot/projects/mjexp/sys/netinet/ip_id.c#2 integrate .. //depot/projects/mjexp/sys/netinet/ip_input.c#5 integrate .. //depot/projects/mjexp/sys/netinet/ip_ipsec.c#2 integrate .. //depot/projects/mjexp/sys/netinet/ip_mroute.c#10 integrate .. //depot/projects/mjexp/sys/netinet/ip_options.c#3 integrate .. //depot/projects/mjexp/sys/netinet/ip_options.h#2 integrate .. //depot/projects/mjexp/sys/netinet/ip_output.c#7 integrate .. //depot/projects/mjexp/sys/netinet/libalias/alias_proxy.c#4 integrate .. //depot/projects/mjexp/sys/netinet/raw_ip.c#7 integrate .. //depot/projects/mjexp/sys/netinet/sctp.h#4 integrate .. //depot/projects/mjexp/sys/netinet/sctp_asconf.c#8 integrate .. //depot/projects/mjexp/sys/netinet/sctp_asconf.h#5 integrate .. //depot/projects/mjexp/sys/netinet/sctp_auth.c#7 integrate .. //depot/projects/mjexp/sys/netinet/sctp_auth.h#4 integrate .. //depot/projects/mjexp/sys/netinet/sctp_bsd_addr.c#5 integrate .. //depot/projects/mjexp/sys/netinet/sctp_bsd_addr.h#5 integrate .. //depot/projects/mjexp/sys/netinet/sctp_constants.h#8 integrate .. //depot/projects/mjexp/sys/netinet/sctp_crc32.c#5 integrate .. //depot/projects/mjexp/sys/netinet/sctp_crc32.h#3 integrate .. //depot/projects/mjexp/sys/netinet/sctp_header.h#3 integrate .. //depot/projects/mjexp/sys/netinet/sctp_indata.c#11 integrate .. //depot/projects/mjexp/sys/netinet/sctp_indata.h#4 integrate .. //depot/projects/mjexp/sys/netinet/sctp_input.c#11 integrate .. //depot/projects/mjexp/sys/netinet/sctp_input.h#3 integrate .. //depot/projects/mjexp/sys/netinet/sctp_lock_bsd.h#5 integrate .. //depot/projects/mjexp/sys/netinet/sctp_os.h#6 integrate .. //depot/projects/mjexp/sys/netinet/sctp_os_bsd.h#8 integrate .. //depot/projects/mjexp/sys/netinet/sctp_output.c#12 integrate .. //depot/projects/mjexp/sys/netinet/sctp_output.h#5 integrate .. //depot/projects/mjexp/sys/netinet/sctp_pcb.c#11 integrate .. //depot/projects/mjexp/sys/netinet/sctp_pcb.h#8 integrate .. //depot/projects/mjexp/sys/netinet/sctp_peeloff.c#7 integrate .. //depot/projects/mjexp/sys/netinet/sctp_peeloff.h#3 integrate .. //depot/projects/mjexp/sys/netinet/sctp_structs.h#11 integrate .. //depot/projects/mjexp/sys/netinet/sctp_sysctl.c#3 integrate .. //depot/projects/mjexp/sys/netinet/sctp_sysctl.h#3 integrate .. //depot/projects/mjexp/sys/netinet/sctp_timer.c#9 integrate .. //depot/projects/mjexp/sys/netinet/sctp_timer.h#3 integrate .. //depot/projects/mjexp/sys/netinet/sctp_uio.h#11 integrate .. //depot/projects/mjexp/sys/netinet/sctp_usrreq.c#11 integrate .. //depot/projects/mjexp/sys/netinet/sctp_var.h#9 integrate .. //depot/projects/mjexp/sys/netinet/sctputil.c#11 integrate .. //depot/projects/mjexp/sys/netinet/sctputil.h#9 integrate .. //depot/projects/mjexp/sys/netinet/tcp_debug.c#2 integrate .. //depot/projects/mjexp/sys/netinet/tcp_fsm.h#2 integrate .. //depot/projects/mjexp/sys/netinet/tcp_input.c#13 integrate .. //depot/projects/mjexp/sys/netinet/tcp_output.c#9 integrate .. //depot/projects/mjexp/sys/netinet/tcp_reass.c#1 branch .. //depot/projects/mjexp/sys/netinet/tcp_sack.c#5 integrate .. //depot/projects/mjexp/sys/netinet/tcp_subr.c#10 integrate .. //depot/projects/mjexp/sys/netinet/tcp_syncache.c#9 integrate .. //depot/projects/mjexp/sys/netinet/tcp_timer.c#6 integrate .. //depot/projects/mjexp/sys/netinet/tcp_timewait.c#1 branch .. //depot/projects/mjexp/sys/netinet/tcp_usrreq.c#8 integrate .. //depot/projects/mjexp/sys/netinet/tcp_var.h#7 integrate .. //depot/projects/mjexp/sys/netinet/udp_usrreq.c#9 integrate .. //depot/projects/mjexp/sys/netinet6/esp_camellia.c#1 branch .. //depot/projects/mjexp/sys/netinet6/esp_camellia.h#1 branch .. //depot/projects/mjexp/sys/netinet6/esp_core.c#2 integrate .. //depot/projects/mjexp/sys/netinet6/in6_pcb.c#4 integrate .. //depot/projects/mjexp/sys/netinet6/in6_pcb.h#2 integrate .. //depot/projects/mjexp/sys/netinet6/in6_proto.c#5 integrate .. //depot/projects/mjexp/sys/netinet6/in6_src.c#5 integrate .. //depot/projects/mjexp/sys/netinet6/nd6.c#7 integrate .. //depot/projects/mjexp/sys/netinet6/nd6_nbr.c#3 integrate .. //depot/projects/mjexp/sys/netinet6/raw_ip6.c#4 integrate .. //depot/projects/mjexp/sys/netinet6/sctp6_usrreq.c#9 integrate .. //depot/projects/mjexp/sys/netinet6/sctp6_var.h#4 integrate .. //depot/projects/mjexp/sys/netipsec/xform_esp.c#2 integrate .. //depot/projects/mjexp/sys/netipx/ipx.c#3 integrate .. //depot/projects/mjexp/sys/netipx/ipx.h#3 integrate .. //depot/projects/mjexp/sys/netipx/ipx_cksum.c#3 integrate .. //depot/projects/mjexp/sys/netipx/ipx_if.h#3 integrate .. //depot/projects/mjexp/sys/netipx/ipx_input.c#3 integrate .. //depot/projects/mjexp/sys/netipx/ipx_outputfl.c#3 integrate .. //depot/projects/mjexp/sys/netipx/ipx_pcb.c#4 integrate .. //depot/projects/mjexp/sys/netipx/ipx_pcb.h#3 integrate .. //depot/projects/mjexp/sys/netipx/ipx_usrreq.c#4 integrate .. //depot/projects/mjexp/sys/netipx/ipx_var.h#3 integrate .. //depot/projects/mjexp/sys/netipx/spx_debug.c#3 integrate .. //depot/projects/mjexp/sys/netipx/spx_debug.h#3 integrate .. //depot/projects/mjexp/sys/opencrypto/cryptodev.c#4 integrate .. //depot/projects/mjexp/sys/opencrypto/cryptodev.h#3 integrate .. //depot/projects/mjexp/sys/opencrypto/cryptosoft.c#3 integrate .. //depot/projects/mjexp/sys/opencrypto/xform.c#2 integrate .. //depot/projects/mjexp/sys/opencrypto/xform.h#2 integrate .. //depot/projects/mjexp/sys/pc98/conf/GENERIC#6 integrate .. //depot/projects/mjexp/sys/pci/if_tl.c#3 integrate .. //depot/projects/mjexp/sys/powerpc/include/vmparam.h#2 integrate .. //depot/projects/mjexp/sys/sparc64/include/profile.h#2 integrate .. //depot/projects/mjexp/sys/sparc64/include/vmparam.h#3 integrate .. //depot/projects/mjexp/sys/sparc64/sparc64/machdep.c#6 integrate .. //depot/projects/mjexp/sys/sparc64/sparc64/upa.c#5 integrate .. //depot/projects/mjexp/sys/sun4v/include/profile.h#2 integrate .. //depot/projects/mjexp/sys/sun4v/include/vmparam.h#3 integrate .. //depot/projects/mjexp/sys/sys/callout.h#2 integrate .. //depot/projects/mjexp/sys/sys/disk.h#2 integrate .. //depot/projects/mjexp/sys/sys/filedesc.h#3 integrate .. //depot/projects/mjexp/sys/sys/interrupt.h#5 integrate .. //depot/projects/mjexp/sys/sys/param.h#15 integrate .. //depot/projects/mjexp/sys/sys/rwlock.h#6 integrate .. //depot/projects/mjexp/sys/sys/socketvar.h#4 integrate .. //depot/projects/mjexp/sys/sys/sx.h#6 integrate .. //depot/projects/mjexp/sys/ufs/ffs/ffs_softdep.c#8 integrate .. //depot/projects/mjexp/sys/vm/uma_int.h#2 integrate .. //depot/projects/mjexp/sys/vm/vm_page.c#9 integrate .. //depot/projects/mjexp/sys/vm/vm_page.h#5 integrate .. //depot/projects/mjexp/tools/regression/sockets/sblock/Makefile#1 branch .. //depot/projects/mjexp/tools/regression/sockets/sblock/sblock.c#1 branch .. //depot/projects/mjexp/usr.bin/calendar/calendar.c#2 integrate .. //depot/projects/mjexp/usr.bin/calendar/calendar.h#2 integrate .. //depot/projects/mjexp/usr.bin/calendar/calendars/calendar.freebsd#12 integrate .. //depot/projects/mjexp/usr.bin/calendar/calendars/calendar.usholiday#2 integrate .. //depot/projects/mjexp/usr.bin/calendar/day.c#2 integrate .. //depot/projects/mjexp/usr.bin/calendar/io.c#2 integrate .. //depot/projects/mjexp/usr.bin/calendar/ostern.c#2 integrate .. //depot/projects/mjexp/usr.bin/calendar/paskha.c#2 integrate .. //depot/projects/mjexp/usr.bin/du/du.c#2 integrate .. //depot/projects/mjexp/usr.bin/env/env.c#2 integrate .. //depot/projects/mjexp/usr.bin/lastcomm/Makefile#2 integrate .. //depot/projects/mjexp/usr.bin/lastcomm/lastcomm.c#4 integrate .. //depot/projects/mjexp/usr.bin/limits/limits.c#2 integrate .. //depot/projects/mjexp/usr.bin/logger/Makefile#2 integrate .. //depot/projects/mjexp/usr.bin/logger/logger.c#2 integrate .. //depot/projects/mjexp/usr.bin/login/login.c#3 integrate .. //depot/projects/mjexp/usr.bin/login/login.h#3 integrate .. //depot/projects/mjexp/usr.bin/login/login_audit.c#2 integrate .. //depot/projects/mjexp/usr.bin/login/login_fbtab.c#2 integrate .. //depot/projects/mjexp/usr.bin/netstat/inet.c#3 integrate .. //depot/projects/mjexp/usr.bin/quota/quota.c#6 integrate .. //depot/projects/mjexp/usr.bin/su/su.c#3 integrate .. //depot/projects/mjexp/usr.bin/tar/read.c#7 integrate .. //depot/projects/mjexp/usr.bin/tar/write.c#10 integrate .. //depot/projects/mjexp/usr.bin/time/Makefile#2 integrate .. //depot/projects/mjexp/usr.bin/time/time.c#2 integrate .. //depot/projects/mjexp/usr.sbin/diskinfo/diskinfo.c#2 integrate .. //depot/projects/mjexp/usr.sbin/mixer/mixer.8#2 integrate .. //depot/projects/mjexp/usr.sbin/nologin/nologin.5#2 integrate .. //depot/projects/mjexp/usr.sbin/pstat/pstat.c#4 integrate .. //depot/projects/mjexp/usr.sbin/rpcbind/rpcbind.c#3 integrate .. //depot/projects/mjexp/usr.sbin/sade/main.c#2 integrate .. //depot/projects/mjexp/usr.sbin/sade/variable.c#2 integrate .. //depot/projects/mjexp/usr.sbin/sysinstall/main.c#2 integrate .. //depot/projects/mjexp/usr.sbin/sysinstall/variable.c#2 integrate .. //depot/projects/mjexp/usr.sbin/traceroute6/traceroute6.c#3 integrate Differences ... ==== //depot/projects/mjexp/ObsoleteFiles.inc#15 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/ObsoleteFiles.inc,v 1.81 2007/04/24 16:58:54 emax Exp $ +# $FreeBSD: src/ObsoleteFiles.inc,v 1.82 2007/05/10 13:25:27 roberto 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,9 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20070510: zpool/zfs moved to /sbin +OLD_FILES+=usr/sbin/zfs +OLD_FILES+=usr/sbin/zpool # 20070423: rc.bluetooth (examples) removed OLD_FILES+=usr/share/examples/netgraph/bluetooth/rc.bluetooth # 20070421: worm.4 removed ==== //depot/projects/mjexp/bin/df/df.c#4 (text+ko) ==== @@ -44,7 +44,7 @@ #endif /* not lint */ #endif #include -__FBSDID("$FreeBSD: src/bin/df/df.c,v 1.68 2007/04/06 15:36:43 kan Exp $"); +__FBSDID("$FreeBSD: src/bin/df/df.c,v 1.70 2007/05/01 16:02:44 ache Exp $"); #include #include ==== //depot/projects/mjexp/bin/sh/var.c#2 (text+ko) ==== @@ -36,7 +36,7 @@ #endif #endif /* not lint */ #include -__FBSDID("$FreeBSD: src/bin/sh/var.c,v 1.32 2006/06/15 07:00:49 stefanf Exp $"); +__FBSDID("$FreeBSD: src/bin/sh/var.c,v 1.35 2007/05/01 16:02:43 ache Exp $"); #include #include ==== //depot/projects/mjexp/cddl/lib/libzfs/Makefile#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/cddl/lib/libzfs/Makefile,v 1.2 2007/04/16 21:20:25 ru Exp $ +# $FreeBSD: src/cddl/lib/libzfs/Makefile,v 1.3 2007/05/06 01:39:38 pjd Exp $ .PATH: ${.CURDIR}/../../../compat/opensolaris/misc .PATH: ${.CURDIR}/../../../sys/contrib/opensolaris/common/zfs @@ -9,7 +9,8 @@ DPADD= ${LIBUTIL} LDADD= -lutil -SRCS= mnttab.c \ +SRCS= deviceid.c \ + mnttab.c \ mkdirp.c \ zmount.c \ fsshare.c \ ==== //depot/projects/mjexp/compat/opensolaris/include/devid.h#2 (text+ko) ==== @@ -27,23 +27,28 @@ #ifndef _OPENSOLARIS_DEVID_H_ #define _OPENSOLARIS_DEVID_H_ -#include +#include +#include #include -typedef int ddi_devid_t; +typedef struct ddi_devid { + char devid[DISK_IDENT_SIZE]; +} ddi_devid_t; typedef struct devid_nmlist { - char *devname; + char devname[MAXPATHLEN]; dev_t dev; } devid_nmlist_t; -static inline int devid_str_decode(char *devidstr, ddi_devid_t *retdevid, char **retminor_name) { abort(); } -static inline int devid_deviceid_to_nmlist(char *search_path, ddi_devid_t devid, char *minor_name, devid_nmlist_t **retlist) { abort(); } -static inline void devid_str_free(char *str) { abort(); } -static inline void devid_free(ddi_devid_t devid) { abort(); } -static inline void devid_free_nmlist(devid_nmlist_t *list) { abort(); } -static inline int devid_get(int fd, ddi_devid_t *retdevid) { return -1; } -static inline int devid_get_minor_name(int fd, char **retminor_name) { abort(); } -static inline char *devid_str_encode(ddi_devid_t devid, char *minor_name) { abort(); } +int devid_str_decode(char *devidstr, ddi_devid_t *retdevid, + char **retminor_name); +int devid_deviceid_to_nmlist(char *search_path, ddi_devid_t devid, + char *minor_name, devid_nmlist_t **retlist); +void devid_str_free(char *str); +void devid_free(ddi_devid_t devid); +void devid_free_nmlist(devid_nmlist_t *list); +int devid_get(int fd, ddi_devid_t *retdevid); +int devid_get_minor_name(int fd, char **retminor_name); +char *devid_str_encode(ddi_devid_t devid, char *minor_name); #endif /* !_OPENSOLARIS_DEVID_H_ */ ==== //depot/projects/mjexp/contrib/gdb/gdb/ppcfbsd-nat.c#2 (text+ko) ==== @@ -143,11 +143,23 @@ } void +supply_gregset (char *regs) +{ + ppcfbsd_supply_reg (regs, -1); +} + +void fill_fpregset (char *fpregs, int regnum) { ppcfbsd_fill_fpreg (fpregs, regnum); } +void +supply_fpregset (char *fpregs) +{ + ppcfbsd_supply_fpreg (fpregs, -1); +} + /* Provide a prototype to silence -Wmissing-prototypes. */ void _initialize_ppcfbsd_nat (void); ==== //depot/projects/mjexp/contrib/opensolaris/cmd/zpool/zpool_vdev.c#2 (text+ko) ==== @@ -159,18 +159,14 @@ static boolean_t is_provider(const char *name) { - off_t mediasize; int fd; - fd = open(name, O_RDONLY); - if (fd == -1) - return (B_FALSE); - if (ioctl(fd, DIOCGMEDIASIZE, &mediasize) == -1) { - close(fd); - return (B_FALSE); + fd = g_open(name, 0); + if (fd >= 0) { + g_close(fd); + return (B_TRUE); } - close(fd); - return (B_TRUE); + return (B_FALSE); } /* @@ -183,9 +179,11 @@ nvlist_t * make_leaf_vdev(const char *arg) { - char path[MAXPATHLEN]; + char ident[DISK_IDENT_SIZE], path[MAXPATHLEN]; + struct stat64 statbuf; nvlist_t *vdev = NULL; char *type = NULL; + boolean_t wholedisk = B_FALSE; if (strncmp(arg, _PATH_DEV, sizeof(_PATH_DEV) - 1) == 0) strlcpy(path, arg, sizeof (path)); @@ -212,6 +210,41 @@ verify(nvlist_add_uint64(vdev, ZPOOL_CONFIG_WHOLE_DISK, (uint64_t)B_FALSE) == 0); + /* + * For a whole disk, defer getting its devid until after labeling it. + */ + if (1 || (S_ISBLK(statbuf.st_mode) && !wholedisk)) { + /* + * Get the devid for the device. + */ + int fd; + ddi_devid_t devid; + char *minor = NULL, *devid_str = NULL; + + if ((fd = open(path, O_RDONLY)) < 0) { + (void) fprintf(stderr, gettext("cannot open '%s': " + "%s\n"), path, strerror(errno)); + nvlist_free(vdev); + return (NULL); + } + + if (devid_get(fd, &devid) == 0) { + if (devid_get_minor_name(fd, &minor) == 0 && + (devid_str = devid_str_encode(devid, minor)) != + NULL) { + verify(nvlist_add_string(vdev, + ZPOOL_CONFIG_DEVID, devid_str) == 0); + } + if (devid_str != NULL) + devid_str_free(devid_str); + if (minor != NULL) + devid_str_free(minor); + devid_free(devid); + } + + (void) close(fd); + } + return (vdev); } ==== //depot/projects/mjexp/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h#5 (text+ko) ==== @@ -446,10 +446,6 @@ extern int ddi_strtoul(const char *str, char **nptr, int base, unsigned long *result); -#ifdef __cplusplus -} -#endif - /* ZFS Boot Related stuff. */ struct _buf { @@ -508,4 +504,8 @@ #define ERESTART (-1) #endif +#ifdef __cplusplus +} +#endif + #endif /* _SYS_ZFS_CONTEXT_H */ ==== //depot/projects/mjexp/contrib/top/commands.c#3 (text+ko) ==== @@ -8,7 +8,7 @@ * Copyright (c) 1984, 1989, William LeFebvre, Rice University * Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University * - * $FreeBSD: src/contrib/top/commands.c,v 1.13 2007/04/17 03:12:39 rafan Exp $ + * $FreeBSD: src/contrib/top/commands.c,v 1.15 2007/05/04 15:42:58 rafan Exp $ */ /* @@ -73,7 +73,7 @@ e - list errors generated by last \"kill\" or \"renice\" command\n\ H - toggle the displaying of threads\n\ i or I - toggle the displaying of idle processes\n\ -j - toggle the displaying of jail id\n\ +j - toggle the displaying of jail ID\n\ k - kill processes; send a signal to a list of processes\n\ m - toggle the display between 'cpu' and 'io' modes\n\ n or # - change number of processes to display\n", stdout); @@ -89,6 +89,7 @@ r - renice a process\n\ s - change number of seconds to delay between updates\n\ S - toggle the displaying of system processes\n\ +a - toggle the displaying of process titles\n\ t - toggle the display of this process\n\ u - display processes for only one user (+ selects all users)\n\ \n\ ==== //depot/projects/mjexp/contrib/top/machine.h#3 (text+ko) ==== @@ -1,5 +1,5 @@ /* - * $FreeBSD: src/contrib/top/machine.h,v 1.8 2007/04/17 03:12:39 rafan Exp $ + * $FreeBSD: src/contrib/top/machine.h,v 1.9 2007/05/04 15:42:58 rafan Exp $ */ /* @@ -62,7 +62,7 @@ int thread; /* show threads */ int uid; /* only this uid (unless uid == -1) */ int wcpu; /* show weighted cpu */ - int jail; /* show jail id */ + int jail; /* show jail ID */ char *command; /* only this command (unless == NULL) */ }; ==== //depot/projects/mjexp/contrib/top/top.X#4 (text+ko) ==== @@ -1,6 +1,6 @@ .\" NOTE: changes to the manual page for "top" should be made in the .\" file "top.X" and NOT in the file "top.1". -.\" $FreeBSD: src/contrib/top/top.X,v 1.18 2007/04/17 03:12:39 rafan Exp $ +.\" $FreeBSD: src/contrib/top/top.X,v 1.20 2007/05/04 15:42:58 rafan Exp $ .nr N %topn% .nr D %delay% .TH TOP 1 Local @@ -105,7 +105,7 @@ .B \-j Display the .IR jail (8) -id. +ID. .TP .B \-t Do not display the @@ -255,6 +255,9 @@ .B S Toggle the display of system processes. .TP +.B a +Toggle the display of process titles. +.TP .B k Send a signal (\*(lqkill\*(rq by default) to a list of processes. This acts similarly to the command @@ -291,7 +294,7 @@ .B j Toggle the display of .IR jail (8) -id. +ID. .TP .B t Toggle the display of the ==== //depot/projects/mjexp/contrib/top/top.c#4 (text+ko) ==== @@ -13,7 +13,7 @@ * Copyright (c) 1994, 1995, William LeFebvre, Argonne National Laboratory * Copyright (c) 1996, William LeFebvre, Group sys Consulting * - * $FreeBSD: src/contrib/top/top.c,v 1.22 2007/04/19 14:24:54 rafan Exp $ + * $FreeBSD: src/contrib/top/top.c,v 1.23 2007/05/04 15:42:58 rafan Exp $ */ /* @@ -1064,7 +1064,7 @@ case CMD_jidtog: ps.jail = !ps.jail; new_message(MT_standout | MT_delayed, - " %sisplaying jail id.", + " %sisplaying jail ID.", ps.jail ? "D" : "Not d"); header_text = format_header(uname_field); reset_display(); ==== //depot/projects/mjexp/contrib/traceroute/traceroute.c#3 (text+ko) ==== @@ -28,7 +28,7 @@ "@(#)$Id: traceroute.c,v 1.68 2000/12/14 08:04:33 leres Exp $ (LBL)"; #endif static const char rcsid[] = - "$FreeBSD: src/contrib/traceroute/traceroute.c,v 1.32 2006/10/15 17:44:49 dwmalone Exp $"; + "$FreeBSD: src/contrib/traceroute/traceroute.c,v 1.33 2007/04/30 19:08:12 maxim Exp $"; #endif /* @@ -630,7 +630,7 @@ case 'w': waittime = str2val(optarg, "wait time", - 2, 24 * 60 * 60); + 1, 24 * 60 * 60); break; case 'z': ==== //depot/projects/mjexp/etc/rc.d/netoptions#3 (text+ko) ==== @@ -1,17 +1,17 @@ #!/bin/sh # -# $FreeBSD: src/etc/rc.d/netoptions,v 1.142 2007/04/09 10:09:39 des Exp $ +# $FreeBSD: src/etc/rc.d/netoptions,v 1.144 2007/05/02 15:49:30 mtm Exp $ # # PROVIDE: netoptions -# REQUIRE: localpkg +# REQUIRE: FILESYSTEMS # KEYWORD: nojail . /etc/rc.subr load_rc_config 'XXX' -echo -n 'Additional TCP options:' +echo -n 'Additional IP options:' case ${log_in_vain} in [Nn][Oo] | '') log_in_vain=0 @@ -32,4 +32,46 @@ sysctl net.inet.tcp.log_in_vain="${log_in_vain}" >/dev/null sysctl net.inet.udp.log_in_vain="${log_in_vain}" >/dev/null ) + +case ${tcp_extensions} in +[Yy][Ee][Ss] | '') + ;; +*) + echo -n ' tcp extensions=NO' + sysctl net.inet.tcp.rfc1323=0 >/dev/null + ;; +esac + +case ${tcp_keepalive} in +[Nn][Oo]) + echo -n ' TCP keepalive=NO' + sysctl net.inet.tcp.always_keepalive=0 >/dev/null + ;; +esac + +case ${tcp_drop_synfin} in +[Yy][Ee][Ss]) + echo -n ' drop SYN+FIN packets=YES' + sysctl net.inet.tcp.drop_synfin=1 >/dev/null + ;; +esac + +case ${ip_portrange_first} in +[Nn][Oo] | '') + ;; +*) + echo -n " ip_portrange_first=$ip_portrange_first" + sysctl net.inet.ip.portrange.first=$ip_portrange_first >/dev/null + ;; +esac + +case ${ip_portrange_last} in +[Nn][Oo] | '') + ;; +*) + echo -n " ip_portrange_last=$ip_portrange_last" + sysctl net.inet.ip.portrange.last=$ip_portrange_last >/dev/null + ;; +esac + echo '.' ==== //depot/projects/mjexp/etc/rc.d/routing#2 (text+ko) ==== @@ -2,7 +2,7 @@ # # Configure routing and miscellaneous network tunables # -# $FreeBSD: src/etc/rc.d/routing,v 1.142 2005/10/28 16:07:52 yar Exp $ +# $FreeBSD: src/etc/rc.d/routing,v 1.143 2007/05/02 15:49:30 mtm Exp $ # # PROVIDE: routing @@ -61,15 +61,6 @@ options_start() >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat May 12 06:43:00 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 65A6116A407; Sat, 12 May 2007 06:43:00 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 1A1BE16A400 for ; Sat, 12 May 2007 06:43:00 +0000 (UTC) (envelope-from cdjones@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 088CF13C448 for ; Sat, 12 May 2007 06:43:00 +0000 (UTC) (envelope-from cdjones@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4C6gxkk045696 for ; Sat, 12 May 2007 06:43:00 GMT (envelope-from cdjones@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4C6gxKu045692 for perforce@freebsd.org; Sat, 12 May 2007 06:42:59 GMT (envelope-from cdjones@FreeBSD.org) Date: Sat, 12 May 2007 06:42:59 GMT Message-Id: <200705120642.l4C6gxKu045692@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to cdjones@FreeBSD.org using -f From: Chris Jones To: Perforce Change Reviews Cc: Subject: PERFORCE change 119714 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 May 2007 06:43:00 -0000 http://perforce.freebsd.org/chv.cgi?CH=119714 Change 119714 by cdjones@cdjones_iconoclast on 2007/05/12 06:41:59 Forget cdjones_jail; the branch seems to be messed up beyond my understanding of what's where. Start with a fresh branch from //depot/vendor/freebsd and patch that instead of trying to incrementally move from //depot/vendor/freebsd6 over. Affected files ... .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/Make.tags.inc#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/Makefile#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/bus_if.m#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/clock_if.m#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/cpufreq_if.m#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/device_if.m#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/genassym.sh#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/imgact_aout.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/imgact_elf.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/imgact_elf32.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/imgact_elf64.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/imgact_gzip.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/imgact_shell.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/inflate.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/init_main.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/init_sysent.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_acct.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_alq.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_clock.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_condvar.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_conf.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_context.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_cpu.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_descrip.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_environment.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_event.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_exec.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_exit.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_fork.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_idle.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_intr.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_jail.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_kse.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_kthread.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_ktr.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_ktrace.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_linker.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_lock.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_lockf.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_malloc.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_mbuf.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_mib.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_module.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_mtxpool.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_mutex.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_ntptime.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_physio.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_pmc.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_poll.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_priv.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_proc.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_prot.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_resource.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_rwlock.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_sema.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_shutdown.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_sig.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_subr.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_switch.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_sx.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_synch.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_syscalls.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_sysctl.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_tc.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_thr.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_thread.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_time.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_timeout.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_umtx.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_uuid.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/kern_xxx.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/ksched.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/link_elf.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/link_elf_obj.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/linker_if.m#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/makesyscalls.sh#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/md4c.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/md5c.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/p1003_1b.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/posix4_mib.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/sched_4bsd.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/sched_core.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/sched_ule.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/serdev_if.m#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_acl_posix1e.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_autoconf.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_blist.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_bus.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_clock.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_devstat.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_disk.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_eventhandler.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_fattime.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_firmware.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_hints.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_kdb.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_kobj.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_lock.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_log.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_mbpool.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_mchain.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_module.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_msgbuf.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_param.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_pcpu.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_power.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_prf.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_prof.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_rman.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_rtc.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_sbuf.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_scanf.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_sleepqueue.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_smp.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_stack.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_taskqueue.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_trap.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_turnstile.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_unit.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/subr_witness.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/sys_generic.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/sys_pipe.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/sys_process.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/sys_socket.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/syscalls.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/syscalls.master#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/systrace_args.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/sysv_ipc.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/sysv_msg.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/sysv_sem.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/sysv_shm.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/tty.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/tty_compat.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/tty_conf.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/tty_cons.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/tty_pts.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/tty_pty.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/tty_subr.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/tty_tty.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/uipc_accf.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/uipc_cow.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/uipc_debug.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/uipc_domain.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/uipc_mbuf.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/uipc_mbuf2.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/uipc_mqueue.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/uipc_sem.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/uipc_sockbuf.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/uipc_socket.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/uipc_syscalls.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/uipc_usrreq.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_acl.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_aio.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_bio.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_cache.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_cluster.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_default.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_export.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_extattr.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_hash.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_init.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_lookup.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_mount.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_subr.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_syscalls.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vfs_vnops.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/kern/vnode_if.src#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/default_pager.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/device_pager.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/memguard.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/memguard.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/phys_pager.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/pmap.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/redzone.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/redzone.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/swap_pager.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/swap_pager.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/uma.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/uma_core.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/uma_dbg.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/uma_dbg.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/uma_int.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_contig.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_extern.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_fault.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_glue.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_init.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_kern.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_kern.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_map.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_map.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_meter.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_mmap.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_object.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_object.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_page.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_page.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_pageout.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_pageout.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_pageq.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_pager.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_pager.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_param.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_unix.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vm_zeroidle.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vnode_pager.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/vm/vnode_pager.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/usr.sbin/jail/Makefile#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/usr.sbin/jail/jail.8#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/usr.sbin/jail/jail.c#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/usr.sbin/jls/Makefile#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/usr.sbin/jls/jls.8#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/usr.sbin/jls/jls.c#1 branch Differences ... From owner-p4-projects@FreeBSD.ORG Sat May 12 07:08:35 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E9FDF16A406; Sat, 12 May 2007 07:08:34 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A089E16A403 for ; Sat, 12 May 2007 07:08:34 +0000 (UTC) (envelope-from cdjones@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 8EBA513C44B for ; Sat, 12 May 2007 07:08:34 +0000 (UTC) (envelope-from cdjones@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4C78YNM050615 for ; Sat, 12 May 2007 07:08:34 GMT (envelope-from cdjones@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4C78YWJ050612 for perforce@freebsd.org; Sat, 12 May 2007 07:08:34 GMT (envelope-from cdjones@FreeBSD.org) Date: Sat, 12 May 2007 07:08:34 GMT Message-Id: <200705120708.l4C78YWJ050612@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to cdjones@FreeBSD.org using -f From: Chris Jones To: Perforce Change Reviews Cc: Subject: PERFORCE change 119716 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 May 2007 07:08:35 -0000 http://perforce.freebsd.org/chv.cgi?CH=119716 Change 119716 by cdjones@cdjones_iconoclast on 2007/05/12 07:07:55 Integrate /src/sys/sys. Affected files ... .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_bus_dma.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_elf_solaris.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_iovec.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_lock.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_mutex.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_null.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_pthreadtypes.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_rwlock.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_semaphore.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_sigset.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_sx.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_task.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_timespec.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_timeval.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/_types.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/aac_ioctl.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/acct.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/acl.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/agpio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/aio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/alq.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/apm.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/assym.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ata.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/bio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/bitstring.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/blist.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/buf.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/bufobj.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/bus.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/bus_dma.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/callout.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/cdefs.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/cdio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/cdrio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/chio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/clist.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/clock.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/condvar.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/conf.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/cons.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/consio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/copyright.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/cpu.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ctype.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/dataacq.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/device_port.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/devicestat.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/digiio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/dir.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/dirent.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/disk.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/disklabel.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/diskmbr.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/diskpc98.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/dkstat.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/domain.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/dvdio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/elf.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/elf32.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/elf64.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/elf_common.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/elf_generic.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/endian.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/errno.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/eui64.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/event.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/eventhandler.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/eventvar.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/exec.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/extattr.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/fbio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/fcntl.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/fdcio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/file.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/filedesc.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/filio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/firmware.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/fnv_hash.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/gmon.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/gpt.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/hash.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/iconv.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/imgact.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/imgact_aout.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/imgact_elf.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/inflate.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/interrupt.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ioccom.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ioctl.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ioctl_compat.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ipc.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ipmi.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/jail.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/joystick.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/kbio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/kdb.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/kenv.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/kernel.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/kerneldump.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/kobj.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/kse.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ksem.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/kthread.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ktr.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ktrace.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/libkern.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/limits.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/linedisc.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/link_aout.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/link_elf.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/linker.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/linker_set.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/lock.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/lock_profile.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/lockf.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/lockmgr.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/mac.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/malloc.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/mbpool.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/mbuf.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/mchain.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/md4.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/md5.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/mdioctl.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/memrange.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/mman.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/module.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/mount.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/mouse.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/mqueue.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/msg.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/msgbuf.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/mtio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/mutex.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/namei.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/nlist_aout.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/param.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/pciio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/pcpu.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/pioctl.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/pipe.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/pmc.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/pmckern.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/pmclog.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/poll.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/posix4.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/power.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/priority.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/priv.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/proc.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/procfs.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/protosw.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ptio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ptrace.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/queue.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/random.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/reboot.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/refcount.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/regression.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/resource.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/resourcevar.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/rman.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/rtprio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/runq.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/rwlock.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/sbuf.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/sched.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/select.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/selinfo.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/sem.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/sema.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/semaphore.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/serial.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/sf_buf.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/shm.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/sigio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/signal.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/signalvar.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/sleepqueue.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/smp.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/snoop.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/socket.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/socketvar.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/sockio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/soundcard.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/stack.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/stat.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/statvfs.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/stddef.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/stdint.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/sun_disklabel.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/sx.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/syscall.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/syscall.mk#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/syscallsubr.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/sysctl.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/sysent.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/syslimits.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/syslog.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/sysproto.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/systm.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/taskqueue.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/termios.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/thr.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/tiio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/time.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/timeb.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/timepps.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/timers.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/times.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/timespec.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/timetc.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/timex.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/tree.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/tty.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ttychars.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ttycom.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ttydefaults.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ttydev.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/turnstile.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/types.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ucontext.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/ucred.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/uio.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/umtx.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/un.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/unistd.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/unpcb.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/user.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/utsname.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/uuid.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/vmmeter.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/vnode.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/wait.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/watchdog.h#1 branch .. //depot/projects/soc2006/cdjones_jail_current/src/sys/sys/xrpuio.h#1 branch Differences ... From owner-p4-projects@FreeBSD.ORG Sat May 12 08:49:40 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1134D16A408; Sat, 12 May 2007 08:49:40 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A195C16A403 for ; Sat, 12 May 2007 08:49:39 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 90C4313C45D for ; Sat, 12 May 2007 08:49:39 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4C8nd6m079881 for ; Sat, 12 May 2007 08:49:39 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4C8ndlC079878 for perforce@freebsd.org; Sat, 12 May 2007 08:49:39 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sat, 12 May 2007 08:49:39 GMT Message-Id: <200705120849.l4C8ndlC079878@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 119718 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 May 2007 08:49:40 -0000 http://perforce.freebsd.org/chv.cgi?CH=119718 Change 119718 by rdivacky@rdivacky_witten on 2007/05/12 08:49:14 Linux32_support.s WIP. Affected files ... .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/linux32/linux32_support.s#3 edit Differences ... ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/linux32/linux32_support.s#3 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 1993 The Regents of the University of California. + * Copyright (c) 2007 The FreeBSD Project * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -29,8 +29,8 @@ * $FreeBSD$ */ -#include "linux32_assym.h" /* system definitions */ -#include /* miscellaneous asm macros */ +#include "linux32_assym.h" /* system definitions */ +#include /* miscellaneous asm macros */ #include "assym.s" @@ -39,96 +39,87 @@ /*****************************************************************************/ futex_fault: - movq $0,PCB_ONFAULT(%rcx) - movq $-EFAULT,%rax + movq $0,PCB_ONFAULT(%r8) + movl $-EFAULT,%eax ret ENTRY(futex_xchgl) - movq PCPU(CURPCB),%rcx - movq $futex_fault,PCB_ONFAULT(%rcx) - + movq PCPU(CURPCB),%r8 + movq $futex_fault,PCB_ONFAULT(%r8) movq $VM_MAXUSER_ADDRESS-4,%rax cmpq %rax,%rsi ja futex_fault - - movl (%rsi),%eax - movl %eax,(%rdx) -#ifdef SMP - lock -#endif xchgl %edi,(%rsi) + movl %edi,(%rdx) xorl %eax,%eax - movq %rax,PCB_ONFAULT(%rcx) + movq %rax,PCB_ONFAULT(%r8) ret ENTRY(futex_addl) - movq PCPU(CURPCB),%rcx - movq $futex_fault,PCB_ONFAULT(%rcx) - + movq PCPU(CURPCB),%r8 + movq $futex_fault,PCB_ONFAULT(%r8) movq $VM_MAXUSER_ADDRESS-4,%rax cmpq %rax,%rsi ja futex_fault - - movl (%rsi),%eax - movl %eax,(%rdx) #ifdef SMP lock #endif xaddl %edi,(%rsi) + movl %edi,(%rdx) xorl %eax,%eax - movq %rax,PCB_ONFAULT(%rcx) + movq %rax,PCB_ONFAULT(%r8) ret ENTRY(futex_orl) - movq PCPU(CURPCB),%rcx - movq $futex_fault,PCB_ONFAULT(%rcx) - + movq PCPU(CURPCB),%r8 + movq $futex_fault,PCB_ONFAULT(%r8) movq $VM_MAXUSER_ADDRESS-4,%rax cmpq %rax,%rsi ja futex_fault - movl (%rsi),%eax - movl %eax,(%rdx) +1: movl %eax,%ecx + orl %edi,%ecx #ifdef SMP lock #endif - orl %edi,(%rsi) + cmpxchgl %ecx,(%rsi) + jnz 1b xorl %eax,%eax - movq %rax,PCB_ONFAULT(%rcx) + movq %rax,PCB_ONFAULT(%r8) ret ENTRY(futex_andl) - movq PCPU(CURPCB),%rcx - movq $futex_fault,PCB_ONFAULT(%rcx) - + movq PCPU(CURPCB),%r8 + movq $futex_fault,PCB_ONFAULT(%r8) movq $VM_MAXUSER_ADDRESS-4,%rax cmpq %rax,%rsi ja futex_fault - movl (%rsi),%eax - movl %eax,(%rdx) +1: movl %eax,%ecx + andl %edi,%ecx #ifdef SMP lock #endif - andl %edi,(%rsi) + cmpxchgl %ecx,(%rsi) + jnz 1b xorl %eax,%eax - movq %rax,PCB_ONFAULT(%rcx) + movq %rax,PCB_ONFAULT(%r8) ret ENTRY(futex_xorl) - movq PCPU(CURPCB),%rcx - movq $futex_fault,PCB_ONFAULT(%rcx) - + movq PCPU(CURPCB),%r8 + movq $futex_fault,PCB_ONFAULT(%r8) movq $VM_MAXUSER_ADDRESS-4,%rax cmpq %rax,%rsi ja futex_fault - movl (%rsi),%eax - movl %eax,(%rdx) +1: movl %eax,%ecx + xorl %edi,%ecx #ifdef SMP lock #endif - xorl %edi,(%rsi) + cmpxchgl %ecx,(%rsi) + jnz 1b xorl %eax,%eax - movq %rax,PCB_ONFAULT(%rcx) + movq %rax,PCB_ONFAULT(%r8) ret From owner-p4-projects@FreeBSD.ORG Sat May 12 08:58:03 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7204416A403; Sat, 12 May 2007 08:58:03 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2383216A400 for ; Sat, 12 May 2007 08:58:03 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 10DFA13C43E for ; Sat, 12 May 2007 08:58:03 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4C8w2Gx081407 for ; Sat, 12 May 2007 08:58:02 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4C8vnVb081390 for perforce@freebsd.org; Sat, 12 May 2007 08:57:49 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sat, 12 May 2007 08:57:49 GMT Message-Id: <200705120857.l4C8vnVb081390@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 119719 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 May 2007 08:58:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=119719 Change 119719 by rdivacky@rdivacky_witten on 2007/05/12 08:57:25 IFC Affected files ... .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/acpica/madt.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/amd64/intr_machdep.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/amd64/io_apic.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/amd64/local_apic.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/amd64/mp_machdep.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/amd64/mptable.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/amd64/mptable_pci.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/amd64/msi.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/amd64/nexus.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/conf/GENERIC#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/conf/NOTES#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/include/apicvar.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/include/intr_machdep.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/include/vmparam.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/isa/atpic.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/linux32/linux32_machdep.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/pci/pci_bus.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/arm/include/vmparam.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/arm/xscale/i80321/ep80219_machdep.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/arm/xscale/i80321/iq31244_machdep.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/arm/xscale/ixp425/avila_machdep.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/boot/common/loader.8#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/freebsd32/freebsd32_misc.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/linprocfs/linprocfs.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/opensolaris/kern/opensolaris_kobj.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/compat/opensolaris/kern/opensolaris_vfs.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/conf/NOTES#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/conf/files#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/conf/kern.pre.mk#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/conf/options#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/contrib/opensolaris/uts/common/fs/gfs.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/contrib/opensolaris/uts/common/fs/zfs/dbuf.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/contrib/opensolaris/uts/common/fs/zfs/dnode.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/contrib/opensolaris/uts/common/fs/zfs/zio.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/crypto/camellia/camellia-api.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/crypto/camellia/camellia.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/crypto/camellia/camellia.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/acpica/acpi.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/acpica/acpi_pcib_acpi.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/acpica/acpi_pcib_pci.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/ata/ata-disk.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/ata/atapi-cam.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/bce/if_bce.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/bce/if_bcefw.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/bce/if_bcereg.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/bge/if_bge.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/bge/if_bgereg.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/ciss/ciss.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/ciss/cissvar.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/LICENSE#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/README#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_80003es2lan.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_80003es2lan.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_82540.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_82541.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_82541.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_82542.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_82543.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_82543.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_82571.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_82571.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_82575.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_82575.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_api.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_api.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_defines.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_hw.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_ich8lan.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_ich8lan.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_mac.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_mac.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_manage.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_manage.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_nvm.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_nvm.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_osdep.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_phy.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_phy.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/e1000_regs.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/if_em.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/if_em.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/if_em_hw.c#2 delete .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/if_em_hw.h#2 delete .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/em/if_em_osdep.h#2 delete .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/firewire/firewire.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/firewire/firewirereg.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/firewire/fwdev.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/firewire/fwohci.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/firewire/fwohcireg.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/firewire/if_fwip.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/firewire/sbp.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/firewire/sbp_targ.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/gem/if_gem.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/gem/if_gem_pci.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/gem/if_gemvar.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/hme/if_hme.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/hptiop/hptiop.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/hptiop/hptiop.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/ipmi/ipmi_smbios.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/isp/isp.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/isp/isp_freebsd.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/isp/isp_freebsd.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/isp/isp_pci.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/isp/isp_sbus.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/isp/isp_tpublic.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mfi/mfi.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mfi/mfi_disk.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mfi/mfi_ioctl.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mfi/mfi_pci.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mfi/mfivar.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mii/brgphy.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mii/mii.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mpt/mpt.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mpt/mpt.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mpt/mpt_cam.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mpt/mpt_cam.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mpt/mpt_pci.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mpt/mpt_raid.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mxge/eth_z8e.dat.gz.uu#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mxge/ethp_z8e.dat.gz.uu#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mxge/if_mxge.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/mxge/mxge_mcp.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/nve/if_nve.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/pci/pci.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/pci/pci_if.m#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/pci/pci_pci.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/pci/pci_private.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/pci/pcib_if.m#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/pci/pcib_private.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/pci/pcivar.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/sk/if_sk.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/sound/pci/emu10kx.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/sound/pci/hda/hdac.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/sound/pci/hda/hdac_private.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/sound/pci/ich.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/sound/pcm/buffer.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/sound/pcm/sound.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/stge/if_stge.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/stge/if_stgereg.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_cl.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_cl_externs.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_cl_fwif.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_cl_fwimg.c#2 delete .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_cl_init.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_cl_intr.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_cl_io.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_cl_ioctl.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_cl_misc.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_cl_share.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_osl.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_osl_cam.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_osl_externs.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_osl_freebsd.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_osl_includes.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_osl_inline.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_osl_ioctl.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_osl_share.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/twa/tw_osl_types.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/uart/uart_kbd_sun.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/if_axe.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/if_axereg.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/if_cue.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/if_cuereg.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/if_kue.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/if_kuereg.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/if_rue.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/if_ruereg.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/if_rum.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/if_rumreg.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/if_rumvar.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/if_udav.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/if_ural.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/if_uralvar.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/rt2573_ucode.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/ubsa.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/uftdi.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/uhid.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/ukbd.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/ums.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/usb.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/usb_mem.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/usb_subr.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/dev/usb/usbdevs#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/fs/procfs/procfs_ioctl.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/geom/eli/g_eli_ctl.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/geom/geom.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/geom/geom_dev.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/geom/geom_disk.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/geom/geom_disk.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/geom/geom_io.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/geom/geom_slice.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/geom/geom_subr.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/geom/part/g_part.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/geom/part/g_part.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/geom/part/g_part_apm.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/geom/part/g_part_gpt.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/acpica/madt.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/conf/GENERIC#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/conf/NOTES#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/conf/PAE#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/i386/intr_machdep.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/i386/io_apic.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/i386/local_apic.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/i386/mp_machdep.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/i386/mptable.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/i386/mptable_pci.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/i386/msi.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/i386/nexus.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/include/apicvar.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/include/intr_machdep.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/include/vmparam.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/isa/atpic.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/linux/linux_machdep.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/pci/pci_bus.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/ia64/ia64/machdep.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/ia64/include/vmparam.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/kern_condvar.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/kern_descrip.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/kern_intr.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/kern_mutex.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/kern_rwlock.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/kern_sx.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/kern_synch.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/kern_timeout.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/subr_rman.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/sys_generic.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/uipc_debug.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/uipc_sockbuf.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/uipc_socket.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/uipc_syscalls.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/uipc_usrreq.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/kern/vfs_syscalls.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/modules/Makefile#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/modules/crypto/Makefile#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/modules/em/Makefile#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/modules/hptiop/Makefile#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/modules/rum/Makefile#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/modules/twa/Makefile#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/net/ieee8023ad_lacp.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/net/ieee8023ad_lacp.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/net/if.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/net/if_lagg.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/net/if_lagg.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/net/pfkeyv2.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/net80211/ieee80211_amrr.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netatalk/ddp_usrreq.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netgraph/ng_mppc.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netgraph/ng_socket.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/if_ether.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/in.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/in_cksum.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/in_gif.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/in_pcb.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/in_pcb.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/in_rmx.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip_divert.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip_dummynet.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip_ecn.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip_encap.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip_fw.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip_fw2.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip_icmp.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip_id.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip_input.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip_ipsec.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip_mroute.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip_options.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip_options.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/ip_output.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/libalias/alias_proxy.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/raw_ip.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_asconf.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_asconf.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_auth.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_auth.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_bsd_addr.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_bsd_addr.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_constants.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_crc32.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_crc32.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_header.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_indata.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_indata.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_input.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_input.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_lock_bsd.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_os.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_os_bsd.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_output.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_output.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_pcb.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_pcb.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_peeloff.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_peeloff.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_structs.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_sysctl.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_sysctl.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_timer.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_timer.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_uio.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_usrreq.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctp_var.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctputil.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/sctputil.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/tcp_debug.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/tcp_fsm.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/tcp_input.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/tcp_output.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/tcp_reass.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/tcp_sack.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/tcp_subr.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/tcp_syncache.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/tcp_timer.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/tcp_timewait.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/tcp_usrreq.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/tcp_var.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet/udp_usrreq.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet6/esp_camellia.c#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet6/esp_camellia.h#1 branch .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet6/esp_core.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet6/in6_pcb.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet6/in6_pcb.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet6/in6_proto.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet6/in6_src.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet6/nd6.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet6/nd6_nbr.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet6/raw_ip6.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet6/sctp6_usrreq.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netinet6/sctp6_var.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netipsec/xform_esp.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netipx/ipx.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netipx/ipx.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netipx/ipx_cksum.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netipx/ipx_if.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netipx/ipx_input.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netipx/ipx_outputfl.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netipx/ipx_pcb.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netipx/ipx_pcb.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netipx/ipx_usrreq.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netipx/ipx_var.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netipx/spx_debug.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/netipx/spx_debug.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/opencrypto/cryptodev.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/opencrypto/cryptodev.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/opencrypto/cryptosoft.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/opencrypto/xform.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/opencrypto/xform.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/pc98/conf/GENERIC#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/pci/if_tl.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/powerpc/include/vmparam.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/security/audit/audit_ioctl.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sparc64/include/profile.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sparc64/include/vmparam.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sparc64/sparc64/machdep.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sparc64/sparc64/upa.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sun4v/include/profile.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sun4v/include/vmparam.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sys/callout.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sys/disk.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sys/filedesc.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sys/interrupt.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sys/param.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sys/rwlock.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sys/socketvar.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/sys/sx.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/ufs/ffs/ffs_softdep.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/vm/uma_int.h#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/vm/vm_page.c#2 integrate .. //depot/projects/soc2007/rdivacky/linux_futex/sys/vm/vm_page.h#2 integrate Differences ... ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/acpica/madt.c#2 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/acpica/madt.c,v 1.23 2007/03/22 18:16:38 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/acpica/madt.c,v 1.24 2007/05/08 22:01:02 jhb Exp $"); #include #include @@ -53,21 +53,18 @@ #include #include -#define NIOAPICS 32 /* Max number of I/O APICs */ -#define NLAPICS 32 /* Max number of local APICs */ - typedef void madt_entry_handler(ACPI_SUBTABLE_HEADER *entry, void *arg); /* These two arrays are indexed by APIC IDs. */ struct ioapic_info { void *io_apic; UINT32 io_vector; -} ioapics[NIOAPICS]; +} ioapics[MAX_APIC_ID + 1]; struct lapic_info { u_int la_enabled:1; u_int la_acpi_id:8; -} lapics[NLAPICS]; +} lapics[MAX_APIC_ID + 1]; static int madt_found_sci_override; static ACPI_TABLE_MADT *madt; @@ -393,7 +390,7 @@ } /* Third, we register all the I/O APIC's. */ - for (i = 0; i < NIOAPICS; i++) + for (i = 0; i <= MAX_APIC_ID; i++) if (ioapics[i].io_apic != NULL) ioapic_register(ioapics[i].io_apic); @@ -450,7 +447,7 @@ "enabled" : "disabled"); if (!(proc->LapicFlags & ACPI_MADT_ENABLED)) break; - if (proc->Id >= NLAPICS) + if (proc->Id > MAX_APIC_ID) panic("%s: CPU ID %u too high", __func__, proc->Id); la = &lapics[proc->Id]; KASSERT(la->la_enabled == 0, @@ -479,7 +476,7 @@ "MADT: Found IO APIC ID %u, Interrupt %u at %p\n", apic->Id, apic->GlobalIrqBase, (void *)(uintptr_t)apic->Address); - if (apic->Id >= NIOAPICS) + if (apic->Id > MAX_APIC_ID) panic("%s: I/O APIC ID %u too high", __func__, apic->Id); if (ioapics[apic->Id].io_apic != NULL) @@ -545,7 +542,7 @@ { int i; - for (i = 0; i < NLAPICS; i++) { + for (i = 0; i <= MAX_APIC_ID; i++) { if (!lapics[i].la_enabled) continue; if (lapics[i].la_acpi_id != acpi_id) @@ -566,7 +563,7 @@ int i, best; best = -1; - for (i = 0; i < NIOAPICS; i++) { + for (i = 0; i <= MAX_APIC_ID; i++) { if (ioapics[i].io_apic == NULL || ioapics[i].io_vector > intr) continue; ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/amd64/intr_machdep.c#2 (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/amd64/intr_machdep.c,v 1.30 2007/03/06 17:16:46 jhb Exp $ + * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.32 2007/05/08 21:29:12 jhb Exp $ */ /* @@ -43,13 +43,14 @@ #include #include #include -#include #include #include +#include #include #include #include #include +#include #include #include #include @@ -71,9 +72,16 @@ static int intrcnt_index; static struct intsrc *interrupt_sources[NUM_IO_INTS]; -static struct mtx intr_table_lock; +static struct sx intr_table_lock; +static struct mtx intrcnt_lock; static STAILQ_HEAD(, pic) pics; +#ifdef INTR_FILTER +static void intr_eoi_src(void *arg); +static void intr_disab_eoi_src(void *arg); +static void intr_event_stray(void *cookie); +#endif + #ifdef SMP static int assign_cpu; @@ -109,14 +117,14 @@ { int error; - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); if (intr_pic_registered(pic)) error = EBUSY; else { STAILQ_INSERT_TAIL(&pics, pic, pics); error = 0; } - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); return (error); } @@ -134,20 +142,26 @@ vector = isrc->is_pic->pic_vector(isrc); if (interrupt_sources[vector] != NULL) return (EEXIST); +#ifdef INTR_FILTER error = intr_event_create(&isrc->is_event, isrc, 0, + (mask_fn)isrc->is_pic->pic_enable_source, + intr_eoi_src, intr_disab_eoi_src, "irq%d:", vector); +#else + error = intr_event_create(&isrc->is_event, isrc, 0, (mask_fn)isrc->is_pic->pic_enable_source, "irq%d:", vector); +#endif if (error) return (error); - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); if (interrupt_sources[vector] != NULL) { - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); intr_event_destroy(isrc->is_event); return (EEXIST); } intrcnt_register(isrc); interrupt_sources[vector] = isrc; - isrc->is_enabled = 0; - mtx_unlock_spin(&intr_table_lock); + isrc->is_handlers = 0; + sx_xunlock(&intr_table_lock); return (0); } @@ -171,19 +185,18 @@ error = intr_event_add_handler(isrc->is_event, name, filter, handler, arg, intr_priority(flags), flags, cookiep); if (error == 0) { + sx_xlock(&intr_table_lock); intrcnt_updatename(isrc); - mtx_lock_spin(&intr_table_lock); - if (!isrc->is_enabled) { - isrc->is_enabled = 1; + isrc->is_handlers++; + if (isrc->is_handlers == 1) { #ifdef SMP if (assign_cpu) intr_assign_next_cpu(isrc); #endif - mtx_unlock_spin(&intr_table_lock); isrc->is_pic->pic_enable_intr(isrc); - } else - mtx_unlock_spin(&intr_table_lock); - isrc->is_pic->pic_enable_source(isrc); + isrc->is_pic->pic_enable_source(isrc); + } + sx_xunlock(&intr_table_lock); } return (error); } @@ -196,8 +209,16 @@ isrc = intr_handler_source(cookie); error = intr_event_remove_handler(cookie); - if (error == 0) + if (error == 0) { + sx_xlock(&intr_table_lock); + isrc->is_handlers--; + if (isrc->is_handlers == 0) { + isrc->is_pic->pic_disable_source(isrc, PIC_NO_EOI); + isrc->is_pic->pic_disable_intr(isrc); + } intrcnt_updatename(isrc); + sx_xunlock(&intr_table_lock); + } return (error); } @@ -212,11 +233,82 @@ return (isrc->is_pic->pic_config_intr(isrc, trig, pol)); } +#ifdef INTR_FILTER void intr_execute_handlers(struct intsrc *isrc, struct trapframe *frame) { struct thread *td; struct intr_event *ie; + int vector; + + td = curthread; + + /* + * We count software interrupts when we process them. The + * code here follows previous practice, but there's an + * argument for counting hardware interrupts when they're + * processed too. + */ + (*isrc->is_count)++; + PCPU_LAZY_INC(cnt.v_intr); + + ie = isrc->is_event; + + /* + * XXX: We assume that IRQ 0 is only used for the ISA timer + * device (clk). + */ + vector = isrc->is_pic->pic_vector(isrc); + if (vector == 0) + clkintr_pending = 1; + + if (intr_event_handle(ie, frame) != 0) + intr_event_stray(isrc); +} + +static void +intr_event_stray(void *cookie) +{ + struct intsrc *isrc; + + isrc = cookie; + /* + * For stray interrupts, mask and EOI the source, bump the + * stray count, and log the condition. + */ + isrc->is_pic->pic_disable_source(isrc, PIC_EOI); + (*isrc->is_straycount)++; + if (*isrc->is_straycount < MAX_STRAY_LOG) + log(LOG_ERR, "stray irq%d\n", isrc->is_pic->pic_vector(isrc)); + else if (*isrc->is_straycount == MAX_STRAY_LOG) + log(LOG_CRIT, + "too many stray irq %d's: not logging anymore\n", + isrc->is_pic->pic_vector(isrc)); +} + +static void +intr_eoi_src(void *arg) +{ + struct intsrc *isrc; + + isrc = arg; + isrc->is_pic->pic_eoi_source(isrc); +} + +static void +intr_disab_eoi_src(void *arg) +{ + struct intsrc *isrc; + + isrc = arg; + isrc->is_pic->pic_disable_source(isrc, PIC_EOI); +} +#else +void +intr_execute_handlers(struct intsrc *isrc, struct trapframe *frame) +{ + struct thread *td; + struct intr_event *ie; struct intr_handler *ih; int error, vector, thread; @@ -298,6 +390,7 @@ } td->td_intr_nesting_level--; } +#endif void intr_resume(void) @@ -307,12 +400,12 @@ #ifndef DEV_ATPIC atpic_reset(); #endif - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); STAILQ_FOREACH(pic, &pics, pics) { if (pic->pic_resume != NULL) pic->pic_resume(pic); } - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); } void @@ -320,12 +413,12 @@ { struct pic *pic; - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); STAILQ_FOREACH(pic, &pics, pics) { if (pic->pic_suspend != NULL) pic->pic_suspend(pic); } - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); } static void @@ -348,8 +441,8 @@ { char straystr[MAXCOMLEN + 1]; - /* mtx_assert(&intr_table_lock, MA_OWNED); */ KASSERT(is->is_event != NULL, ("%s: isrc with no event", __func__)); + mtx_lock_spin(&intrcnt_lock); is->is_index = intrcnt_index; intrcnt_index += 2; snprintf(straystr, MAXCOMLEN + 1, "stray irq%d", @@ -358,17 +451,18 @@ is->is_count = &intrcnt[is->is_index]; intrcnt_setname(straystr, is->is_index + 1); is->is_straycount = &intrcnt[is->is_index + 1]; + mtx_unlock_spin(&intrcnt_lock); } void intrcnt_add(const char *name, u_long **countp) { - mtx_lock_spin(&intr_table_lock); + mtx_lock_spin(&intrcnt_lock); *countp = &intrcnt[intrcnt_index]; intrcnt_setname(name, intrcnt_index); intrcnt_index++; - mtx_unlock_spin(&intr_table_lock); + mtx_unlock_spin(&intrcnt_lock); } static void @@ -378,7 +472,8 @@ intrcnt_setname("???", 0); intrcnt_index = 1; STAILQ_INIT(&pics); - mtx_init(&intr_table_lock, "intr table", NULL, MTX_SPIN); + sx_init(&intr_table_lock, "intr sources"); + mtx_init(&intrcnt_lock, "intrcnt", NULL, MTX_SPIN); } SYSINIT(intr_init, SI_SUB_INTR, SI_ORDER_FIRST, intr_init, NULL) @@ -486,14 +581,14 @@ return; /* Round-robin assign a CPU to each enabled source. */ - mtx_lock_spin(&intr_table_lock); + sx_xlock(&intr_table_lock); assign_cpu = 1; for (i = 0; i < NUM_IO_INTS; i++) { isrc = interrupt_sources[i]; - if (isrc != NULL && isrc->is_enabled) + if (isrc != NULL && isrc->is_handlers > 0) intr_assign_next_cpu(isrc); } - mtx_unlock_spin(&intr_table_lock); + sx_xunlock(&intr_table_lock); } SYSINIT(intr_shuffle_irqs, SI_SUB_SMP, SI_ORDER_SECOND, intr_shuffle_irqs, NULL) #endif ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/amd64/io_apic.c#2 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.29 2007/03/20 21:53:30 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.30 2007/05/08 21:29:12 jhb Exp $"); #include "opt_isa.h" @@ -114,6 +114,7 @@ static void ioapic_disable_source(struct intsrc *isrc, int eoi); static void ioapic_eoi_source(struct intsrc *isrc); static void ioapic_enable_intr(struct intsrc *isrc); +static void ioapic_disable_intr(struct intsrc *isrc); static int ioapic_vector(struct intsrc *isrc); static int ioapic_source_pending(struct intsrc *isrc); static int ioapic_config_intr(struct intsrc *isrc, enum intr_trigger trig, @@ -125,8 +126,8 @@ static STAILQ_HEAD(,ioapic) ioapic_list = STAILQ_HEAD_INITIALIZER(ioapic_list); struct pic ioapic_template = { ioapic_enable_source, ioapic_disable_source, ioapic_eoi_source, ioapic_enable_intr, - ioapic_vector, ioapic_source_pending, - NULL, ioapic_resume, + ioapic_disable_intr, ioapic_vector, + ioapic_source_pending, NULL, ioapic_resume, ioapic_config_intr, ioapic_assign_cpu }; static int next_ioapic_base; @@ -359,6 +360,23 @@ } } +static void +ioapic_disable_intr(struct intsrc *isrc) +{ + struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; + u_int vector; + + if (intpin->io_vector != 0) { + /* Mask this interrupt pin and free its APIC vector. */ + vector = intpin->io_vector; + apic_disable_vector(vector); + intpin->io_masked = 1; + intpin->io_vector = 0; + ioapic_program_intpin(intpin); + apic_free_vector(vector, intpin->io_irq); + } +} + static int ioapic_vector(struct intsrc *isrc) { ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/amd64/local_apic.c#2 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.38 2007/04/25 19:58:41 ariff Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.40 2007/05/08 22:01:02 jhb Exp $"); #include "opt_hwpmc_hooks.h" @@ -65,13 +65,6 @@ #include #endif -/* - * We can handle up to 60 APICs via our logical cluster IDs, but currently - * the physical IDs on Intel processors up to the Pentium 4 are limited to - * 16. - */ -#define MAX_APICID 16 - /* Sanity checks on IDT vectors. */ CTASSERT(APIC_IO_INTS + APIC_NUM_IOINTS == APIC_TIMER_INT); CTASSERT(APIC_TIMER_INT < APIC_LOCAL_INTS); @@ -114,7 +107,7 @@ u_long la_hard_ticks; u_long la_stat_ticks; u_long la_prof_ticks; -} static lapics[MAX_APICID]; +} static lapics[MAX_APIC_ID + 1]; /* XXX: should thermal be an NMI? */ @@ -147,6 +140,8 @@ APIC_TDCR_32, APIC_TDCR_64, APIC_TDCR_128 }; +extern inthand_t IDTVEC(rsvd); + volatile lapic_t *lapic; vm_paddr_t lapic_paddr; static u_long lapic_timer_divisor, lapic_timer_period, lapic_timer_hz; @@ -238,7 +233,7 @@ { int i; - if (apic_id >= MAX_APICID) { + if (apic_id > MAX_APIC_ID) { printf("APIC: Ignoring local APIC with ID %d\n", apic_id); if (boot_cpu) panic("Can't ignore BSP"); @@ -837,6 +832,16 @@ setidt(vector, ioint_handlers[vector / 32], SDT_SYSIGT, SEL_KPL, 0); } +void +apic_disable_vector(u_int vector) +{ + + KASSERT(vector != IDT_SYSCALL, ("Attempt to overwrite syscall entry")); + KASSERT(ioint_handlers[vector / 32] != NULL, + ("No ISR handler for vector %u", vector)); + setidt(vector, &IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0); +} + /* Release an APIC vector when it's no longer in use. */ void apic_free_vector(u_int vector, u_int irq) ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/amd64/mp_machdep.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.283 2007/03/06 17:16:46 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.284 2007/05/08 22:01:02 jhb Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -151,7 +151,7 @@ int cpu_present:1; int cpu_bsp:1; int cpu_disabled:1; -} static cpu_info[MAXCPU]; +} static cpu_info[MAX_APIC_ID + 1]; int cpu_apic_ids[MAXCPU]; /* Holds pending bitmap based IPIs per CPU */ @@ -159,6 +159,7 @@ static u_int boot_address; +static void assign_cpu_ids(void); static void set_interrupt_apic_ids(void); static int start_all_aps(void); static int start_ap(int apic_id); @@ -204,7 +205,7 @@ } group = &mp_groups[0]; groups = 1; - for (cpu = 0, apic_id = 0; apic_id < MAXCPU; apic_id++) { + for (cpu = 0, apic_id = 0; apic_id <= MAX_APIC_ID; apic_id++) { if (!cpu_info[apic_id].cpu_present) continue; /* @@ -246,9 +247,8 @@ cpu_add(u_int apic_id, char boot_cpu) { - if (apic_id >= MAXCPU) { - printf("SMP: CPU %d exceeds maximum CPU %d, ignoring\n", - apic_id, MAXCPU - 1); + if (apic_id > MAX_APIC_ID) { + panic("SMP: APIC ID %d too high", apic_id); return; } KASSERT(cpu_info[apic_id].cpu_present == 0, ("CPU %d added twice", @@ -261,13 +261,13 @@ boot_cpu_id = apic_id; cpu_info[apic_id].cpu_bsp = 1; } - mp_ncpus++; - if (apic_id > mp_maxid) - mp_maxid = apic_id; + if (mp_ncpus < MAXCPU) { + mp_ncpus++; + mp_maxid = mp_ncpus -1; + } if (bootverbose) printf("SMP: Added CPU %d (%s)\n", apic_id, boot_cpu ? "BSP" : "AP"); - } void @@ -286,8 +286,7 @@ else KASSERT(mp_maxid >= mp_ncpus - 1, ("%s: counters out of sync: max %d, count %d", __func__, - mp_maxid, mp_ncpus)); - + mp_maxid, mp_ncpus)); } int @@ -365,6 +364,8 @@ ("BSP's APIC ID doesn't match boot_cpu_id")); cpu_apic_ids[0] = boot_cpu_id; + assign_cpu_ids(); + /* Start each Application Processor */ start_all_aps(); @@ -429,7 +430,7 @@ >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat May 12 09:07:15 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B6EC916A405; Sat, 12 May 2007 09:07:15 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3B01616A400 for ; Sat, 12 May 2007 09:07:15 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2A7BE13C447 for ; Sat, 12 May 2007 09:07:15 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4C97FLO084007 for ; Sat, 12 May 2007 09:07:15 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4C97EXa084003 for perforce@freebsd.org; Sat, 12 May 2007 09:07:14 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sat, 12 May 2007 09:07:14 GMT Message-Id: <200705120907.l4C97EXa084003@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 119720 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 May 2007 09:07:16 -0000 http://perforce.freebsd.org/chv.cgi?CH=119720 Change 119720 by rdivacky@rdivacky_witten on 2007/05/12 09:06:31 more WIP Affected files ... .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/linux32/linux32_support.s#4 edit Differences ... ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/linux32/linux32_support.s#4 (text+ko) ==== @@ -84,6 +84,7 @@ #endif cmpxchgl %ecx,(%rsi) jnz 1b + movl %edi,(%rdx) xorl %eax,%eax movq %rax,PCB_ONFAULT(%r8) ret @@ -102,6 +103,7 @@ #endif cmpxchgl %ecx,(%rsi) jnz 1b + movl %edi,(%rdx) xorl %eax,%eax movq %rax,PCB_ONFAULT(%r8) ret @@ -120,6 +122,7 @@ #endif cmpxchgl %ecx,(%rsi) jnz 1b + movl %edi,(%rdx) xorl %eax,%eax movq %rax,PCB_ONFAULT(%r8) ret From owner-p4-projects@FreeBSD.ORG Sat May 12 11:22:03 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E563616A408; Sat, 12 May 2007 11:22:02 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7DC7F16A40D for ; Sat, 12 May 2007 11:22:02 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 6D63913C45D for ; Sat, 12 May 2007 11:22:02 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4CBM2BV008617 for ; Sat, 12 May 2007 11:22:02 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4CBM2Lh008614 for perforce@freebsd.org; Sat, 12 May 2007 11:22:02 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sat, 12 May 2007 11:22:02 GMT Message-Id: <200705121122.l4CBM2Lh008614@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 119723 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 May 2007 11:22:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=119723 Change 119723 by rdivacky@rdivacky_witten on 2007/05/12 11:21:38 Copy out oldval before the OPERATION loop and include the copying in of oldval to the (possible) loop. Affected files ... .. //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/linux32/linux32_support.s#5 edit Differences ... ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/amd64/linux32/linux32_support.s#5 (text+ko) ==== @@ -76,15 +76,15 @@ movq $VM_MAXUSER_ADDRESS-4,%rax cmpq %rax,%rsi ja futex_fault - movl (%rsi),%eax -1: movl %eax,%ecx +1: movl (%rsi),%eax + movl %eax,(%rdx) + movl %eax,%ecx orl %edi,%ecx #ifdef SMP lock #endif cmpxchgl %ecx,(%rsi) jnz 1b - movl %edi,(%rdx) xorl %eax,%eax movq %rax,PCB_ONFAULT(%r8) ret @@ -95,15 +95,15 @@ movq $VM_MAXUSER_ADDRESS-4,%rax cmpq %rax,%rsi ja futex_fault - movl (%rsi),%eax -1: movl %eax,%ecx +1: movl (%rsi),%eax + movl %eax,(%rdx) + movl %eax,%ecx andl %edi,%ecx #ifdef SMP lock #endif cmpxchgl %ecx,(%rsi) jnz 1b - movl %edi,(%rdx) xorl %eax,%eax movq %rax,PCB_ONFAULT(%r8) ret @@ -114,15 +114,15 @@ movq $VM_MAXUSER_ADDRESS-4,%rax cmpq %rax,%rsi ja futex_fault - movl (%rsi),%eax -1: movl %eax,%ecx +1: movl (%rsi),%eax + movl %eax,(%rdx) + movl %eax,%ecx xorl %edi,%ecx #ifdef SMP lock #endif cmpxchgl %ecx,(%rsi) jnz 1b - movl %edi,(%rdx) xorl %eax,%eax movq %rax,PCB_ONFAULT(%r8) ret From owner-p4-projects@FreeBSD.ORG Sat May 12 11:26:08 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BC47816A408; Sat, 12 May 2007 11:26:08 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6B06816A403 for ; Sat, 12 May 2007 11:26:08 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 5B47313C457 for ; Sat, 12 May 2007 11:26:08 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4CBQ8Ek009398 for ; Sat, 12 May 2007 11:26:08 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4CBQ7Hj009390 for perforce@freebsd.org; Sat, 12 May 2007 11:26:07 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sat, 12 May 2007 11:26:07 GMT Message-Id: <200705121126.l4CBQ7Hj009390@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 119724 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 May 2007 11:26:09 -0000 http://perforce.freebsd.org/chv.cgi?CH=119724 Change 119724 by rdivacky@rdivacky_witten on 2007/05/12 11:25:16 Include the copy in in the loop. Affected files ... .. //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/linux/linux_support.s#4 edit Differences ... ==== //depot/projects/soc2007/rdivacky/linux_futex/sys/i386/linux/linux_support.s#4 (text+ko) ==== @@ -82,8 +82,8 @@ movl 8(%esp),%edx cmpl $VM_MAXUSER_ADDRESS-4,%edx ja futex_fault - movl (%edx),%eax -1: movl %eax,%ecx +1: movl (%edx),%eax + movl %eax,%ecx orl 4(%esp),%ecx #ifdef SMP lock @@ -104,8 +104,8 @@ movl 8(%esp),%edx cmpl $VM_MAXUSER_ADDRESS-4,%edx ja futex_fault - movl (%edx),%eax -1: movl %eax,%ecx +1: movl (%edx),%eax + movl %eax,%ecx andl 4(%esp),%ecx #ifdef SMP lock @@ -120,8 +120,8 @@ movl 8(%esp),%edx cmpl $VM_MAXUSER_ADDRESS-4,%edx ja futex_fault - movl (%edx),%eax -1: movl %eax,%ecx +1: movl (%edx),%eax + movl %eax,%ecx xorl 4(%esp),%ecx #ifdef SMP lock From owner-p4-projects@FreeBSD.ORG Sat May 12 15:52:54 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3DAFB16A406; Sat, 12 May 2007 15:52:54 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D533916A403 for ; Sat, 12 May 2007 15:52:53 +0000 (UTC) (envelope-from taleks@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id C691C13C480 for ; Sat, 12 May 2007 15:52:53 +0000 (UTC) (envelope-from taleks@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4CFqr4B070363 for ; Sat, 12 May 2007 15:52:53 GMT (envelope-from taleks@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4CFqrNQ070356 for perforce@freebsd.org; Sat, 12 May 2007 15:52:53 GMT (envelope-from taleks@FreeBSD.org) Date: Sat, 12 May 2007 15:52:53 GMT Message-Id: <200705121552.l4CFqrNQ070356@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to taleks@FreeBSD.org using -f From: Alexey Tarasov To: Perforce Change Reviews Cc: Subject: PERFORCE change 119729 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 May 2007 15:52:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=119729 Change 119729 by taleks@taleks_th on 2007/05/12 15:52:16 Added modules for working with ARP packets, updated pxe_core (function code and added MAC_ADDR member to pxe_packet structure). Now ISR and receiving cycle are separated. First is done in pxe_isr in vm86 mode (there is also stub pxe_core_isr(), that is for experiments only). Receiving cycle is started by pxe_core_recv_packets() call. Current ideas of packet receiving mechanism may be seen in pxe_arp_ip4mac() function. Affected files ... .. //depot/projects/soc2007/taleks-pxe_http/pxe_arp.c#1 add .. //depot/projects/soc2007/taleks-pxe_http/pxe_arp.h#1 add .. //depot/projects/soc2007/taleks-pxe_http/pxe_core.c#6 edit .. //depot/projects/soc2007/taleks-pxe_http/pxe_core.h#6 edit Differences ... ==== //depot/projects/soc2007/taleks-pxe_http/pxe_core.c#6 (text+ko) ==== @@ -4,15 +4,15 @@ #include "btxv86.h" #include "pxe.h" +#include "pxe_arp.h" #include "pxe_core.h" #include "pxe_ip.h" +#include "pxe_isr.h" #include "pxe_mem.h" #include "pxe_mutex.h" /* PXE API calls here will be made in same way as in pxeboot. * the only difference - installation of isr, that was not needed in pxe.c. - * main problem is that, v86 monitors reflects interrupts, - * we need to change IDT, for correct irq and call pxe_core_isr() from it. */ /* NOTE: to think about using of this buffers */ @@ -39,6 +39,7 @@ /* NIC info */ pxe_ipaddr nic_ip = {0}; +MAC_ADDR nic_mac; /* may be init it also by zero? */ /* core packet statistics */ uint32_t packets_dropped = 0; @@ -168,6 +169,11 @@ /* 3. additional start UNDI */ + /* saving information about NIC */ + nic_ip.ip=bootplayer.yip; /* my ip */ + /* my MAC */ + pxe_memcpy(&nic_mac, bootplayer.CAddr, MAC_ADDR_LEN); + return (1); } @@ -185,31 +191,52 @@ pxe_core_call(PXENV_UNDI_GET_INFORMATION); if (undi_info->Status != 0) { - printf("pxe_isr_install: failed %x\n", undi_info->Status); + printf("pxe_core_install_isr(): failed %x\n", undi_info->Status); return; } - irq=(uint8_t)(undi_info->IntNumber); + __pxe_nic_irq=(uint16_t)(undi_info->IntNumber); #ifdef PXE_DEBUG - printf("pxe_isr_install() info:\n"); + printf("pxe_core_install_isr() info:\n"); printf("IRQ: %d\n", undi_info->IntNumber); printf("Base io: %d\n", undi_info->BaseIo); printf("MTU: %d\n", undi_info->MaxTranUnit); printf("RX buffer queue: %d\n", undi_info->RxBufCt); printf("TX buffer queue: %d\n", undi_info->TxBufCt); - printf("installing ISR\n"); #endif + +#ifndef PXE_PMBRANCH + /* main branch - ISR is handled in vm86, so installed also there + * __isr_install uses __pxe_nic_irq to determine interrupt number. + * Well, it may be simplified, cause interrupt number may be got + * in this code (as bellow int_num for PM). + * TODO: simplify pxe_isr.S code. + */ + bzero(&v86, sizeof(v86)); + + v86.ctl = V86_ADDR | V86_CALLF | V86_FLAGS; + v86.addr = (VTOPSEG(__isr_install) << 16) | VTOPOFF(__isr_install); + v86.ebx = func; + v86int(); + v86.ctl = V86_FLAGS; +#else uint16_t int_num=(irq < 8) ? irq + 0x08 : irq + 0x68; caddr_t isr_addr=pxe_isr-__base; printf("setting interrupt: %d for 0x%x (0x%x, base = 0x%x)\n", int_num, pxe_isr, isr_addr, __base); + /* PMBRANCH - is subproject, which goal to use ISR in PM + * it's not main branch, so just for my own interests + * this __isr_install is syscall + */ __isr_install(isr_addr, int_num); +#endif + #ifdef PXE_DEBUG - printf("pxe_isr_install(): success\n"); + printf("pxe_core_install_isr(): success\n"); #endif } @@ -217,6 +244,19 @@ pxe_core_remove_isr() { +#ifdef PXE_PMBRANCH + /* here must be something */ +#else + + bzero(&v86, sizeof(v86)); + + v86.ctl = V86_ADDR | V86_CALLF | V86_FLAGS; + v86.addr = (VTOPSEG(__isr_uninstall) << 16) | VTOPOFF(__isr_uninstall); + v86.ebx = func; + v86int(); + v86.ctl = V86_FLAGS; + +#endif } int @@ -275,32 +315,37 @@ int pxe_core_transmit(pxe_packet *pack) { + /* NOTE:all provided data must be in base segment of PXE, + * if it's not here, it must be copied here (TO IMPLEMENT) + */ t_PXENV_UNDI_TRANSMIT *undi_send = (t_PXENV_UNDI_TRANSMIT *)scratch_buffer; bzero(undi_send, sizeof(*undi_info)); - /* media address */ - uint_8_t media_addr[6] = {0,0,0,0,0,0}; - t_PXENV_UNDI_TBD tbd; tbd.ImmedLength = pack->data_size; /* packet length */ tbd.Xmit.segment = VTOPSEG(pack->data); /* immediate transmit buffer */ tbd.Xmit.offset = VTOPOFF(pack->data); - tbd.DataBlkCount = 1 ; /* one block */ - tbd.DataBlk[0].TDPtrType = 1; /* segment:offset type */ - tbd.DataBlk[0].TDRsvdByte = 0; /* reserved */ + tbd.DataBlkCount = 0 ; /* only immediate data */ + + undi_send->Protocol = pack->protocol; + undi_send->DestAddr.segment = VTOPSEG(pack->dest_mac); + undi_send->DestAddr.offset = VTOPOFF(pack->dest_mac); + undi_send->TBD.segment = VTOPSEG(&tbd); /* SEGOFF16 to xmit block data*/ + undi_send->TBD.offset = VTOPOFF(&tbd); + +/* NOTE: is it needed? we use only immediate block */ - /* NOTE: if it will work? Check params*/ +/* we've inited undi_info with zero, so two lines below are not needed */ +/* tbd.DataBlk[0].TDRsvdByte = 0; /* reserved */ +/* tbd.DataBlk[1].TDRsvdByte = 0; /* reserved */ tbd.DataBlk[0].TDDataLen=tbd.ImmedLength; /* size of packet*/ + tbd.DataBlk[0].TDPtrType = 1; /* segment:offset type */ tbd.DataBlk[0].TDDataPtr.segment = VTOPSEG(pack->data);; tbd.DataBlk[0].TDDataPtr.offset = VTOPOFF(pack->data);; - undi_send->Protocol = P_IP; - undi_send->DestAddr.segment = VTOPSEG(media_addr); - undi_send->DestAddr.offset = VTOPOFF(media_addr); - - pxe_core_call(PXENV_UNDI_GET_INFORMATION); + pxe_core_call(PXENV_UNDI_TRANSMIT_PACKET); if (undi_send->Status != 0) { printf("pxe_core_transmit(): failed %x\n", undi_info->Status); @@ -414,32 +459,48 @@ return (1); } +/* NOTE: now it's handled in real mode ISR, look pxe_isr.S */ void pxe_core_isr() { + + if (!pxe_core_is_ours()) { + return; /* not ours interrupt, handling is over */ + } +} + +/* + * recieves one packet, if there is any waiting in receiving queue. + * in: + * none + * out: + * 0 - there is no packets in receiving queue, or it's not interesting for us. + * positive - there were packets in queue and some protocol handler was interested in it. + */ +int +pxe_core_recv_packets() +{ + /* - * NOTE: code here it must be redone to separate receiving thread - * and interrupt handler. - * in fact real mode ISR implements pxe_core_is_ours() - * and modifies __pxe_isr_occured, which must be checked - * in receiving queue. + * TODO: make it simplier to understand, too many ifs, many lines. */ int buffer_size = 0; /* total size of packet*/ int protocol = 0; /* protocol */ - int recieved = 0; /* bytes received to buffer */ + int received = 0; /* bytes received to buffer */ void *frame_data = NULL;/* pointer to frame data */ int frame_size = 0; /* size of frame */ + int drop_flag = 0; + int processed_packets = 0; pxe_packet *pack=NULL; /* allocated packet */ pxe_packet dummy_pack; /* temporary struct, used to mimic * real packet struct */ + if (__pxe_isr_occured == 0) /* there are no packets for us to handle */ + return (0); - if (!pxe_core_is_ours()) { - return; /* not ours interrupt, handling is over */ - } - + __pxe_isr_occured = 0; t_PXENV_UNDI_ISR *undi_isr = (t_PXENV_UNDI_ISR *)scratch_buffer; @@ -447,8 +508,17 @@ bzero(undi_isr, sizeof(*undi_isr)); /* starting packet receive cycle */ - if (0 -- pxe_core_get_packet(PXENV_UNDI_ISR_IN_PROCESS, undi_isr)) { - return; + /* NOTE: pxe_core_recv_packet() name is similar tp pxe_core_get_packet(), + * may be renaming is needed. + */ + int func = PXENV_UNDI_ISR_IN_PROCESS; + +packet_start: + + drop_flag = 0; + + if (0 == pxe_core_get_packet(func, undi_isr)) { + return (processed_packets); } buffer_size = undi_isr->BufferLength; @@ -458,60 +528,75 @@ /* how to get in this address from userspace, which starts at 0xa800?*/ /* frame_data = undi_isr->Frame.segment << 4 + undi_isr->Frame.offset; */ + /* we are interested in ARP & IP packets */ - /* we are yet not interested in non-ip packets */ + if ( (protocol == PXE_PROTOCOL_UNKNOWN) || (protocol == PXE_PROTOCOL_RARP) ) { - if (protocol != PXE_PROTOCOL_IP) { ++packets_dropped; - return; + drop_flag = 1; /* clear queue, receiving all frames of packet */ } /* checking first fragment, this may help to avoid memory allocation * and memblock copy */ -/* if (buffer_size == frame_size) {*/ + if (!drop_flag) { + + pxe_ip *iphdr = (pxe_ip *)frame_data; + + dummy_pack.protocol = protocol; + dummy_pack.state = PXE_PACKET_STATE_USING; + dummy_pack.data = frame_data; + dummy_pack.data_size = frame_size; + dummy_pack.user_data = NULL; + + if (protocol == PXE_PROTOCOL_ARP) { + + pxe_arp_protocol(&dummy_pack, PXE_CORE_FRAG, NULL); + ++processed_packets; - pxe_ip *iphdr = (pxe_ip *)frame_data; + /* aasume ARP packet always in opne fragment */ + + func = PXE_UNDI_ISR_IN_GET_NEXT; - dummy_pack.protocol = protocol; - dummy_pack.state = PXE_PACKET_STATE_USING; - dummy_pack.data = frame_data; - dummy_pack.data_size = frame_size; - dummy_pack.user_data = NULL; + goto packet_start; + } /* TODO: calc ip checksum */ - if (core_protocol[iphdr->protocol]) { - if (core_protocol[iphdr->protocol](&dummy_pack, - PXE_CORE_FRAG, NULL)) { - return; - } - } -/* }*/ + if ( (!core_protocol[iphdr->protocol]) || + (!core_protocol[iphdr->protocol](&dummy_pack, + PXE_CORE_FRAG, NULL)) ) { + + drop_flag = 1; + } else { + + pack = pxe_core_alloc_packet(buffer_size); - pack = pxe_core_alloc_packet(buffer_size); + if (pack == NULL) { + pxe_core_flush_packets(); - if (pack == NULL) { - pxe_core_flush_packets(); + /* trying to get free packets by sending and dropping */ + pack = pxe_core_alloc_packet(buffer_size); - /* trying to get free packets by sending and dropping */ - pack = pxe_core_alloc_packet(buffer_size); + /* failed to alloc packet, dropping packet */ + if (pack == NULL) { + ++packets_dropped; + drop_flag = 1; + } + } - /* failed to alloc packet, dropping packet */ - if (pack == NULL) { - ++packets_dropped; - return; - } - } /* pointing user_data to beginning of data. * It's used by pxe_core_receive() during receiving packet. */ - pack->user_data = pack->data; + if (pack != NULL) + pack->user_data = pack->data; + } + } - while (recieved < buffer_size) { + while (received < buffer_size) { if (!pxe_core_get_packet(PXENV_UNDI_ISR_GET_NEXT, undi_isr)) break; @@ -521,33 +606,46 @@ /* frame_data = undi_isr->Frame.segment << 4 + undi_isr->Frame.offset; */ - pxe_core_recieve(pack, frame_data, frame_size); + if (!drop_flag) + pxe_core_recieve(pack, frame_data, frame_size); - recieved += frame_size; + received += frame_size; } - if (recieved < buffer_size) { /* pxe_core_get_packet() in cycle failed */ - pxe_core_drop(pack); - return; + if (received < buffer_size) { /* pxe_core_get_packet() in cycle failed */ + + if (!drop_flag) + pxe_core_drop(pack); + + return (processed_packets); /* it's failed, finish receive cycle */ } - pack->user_data = NULL; - ++packets_received; + if (!drop_flag) { + + pack->user_data = NULL; + ++packets_received; - pxe_ip *iphdr=(pxe_ip *)pack->data; + pxe_ip *iphdr=(pxe_ip *)pack->data; - /* TODO: calc ip checksum */ - pack->protocol = protocol; + /* TODO: calc ip checksum */ + pack->protocol = protocol; - if (core_protocol[iphdr->protocol]) { /* protocol registered */ - if (core_protocol[iphdr->protocol](pack, PXE_CORE_HANDLE, - NULL)) { - return; + if ( (!core_protocol[iphdr->protocol]) || + (!core_protocol[iphdr->protocol](pack, PXE_CORE_HANDLE, NULL)) ) { + /* protocol not interested in it */ + pxe_core_drop(pack); } } - /* no such protocol registered or protocol not interested in it */ - pxe_core_drop(pack); + ++processed_packets; + /* received one or more packets, but need check if there are any others */ + + func = PXE_UNDI_ISR_IN_GET_NEXT; + + goto packet_start; + + /* never getting here */ + return (0); } /* @@ -638,5 +736,12 @@ pxe_get_myip32() { - return nic_ip.ip; + return nic_ip.ip; +} + +const MAC_ADDR* +pxe_get_mymac() +{ + return &nic_mac; } + ==== //depot/projects/soc2007/taleks-pxe_http/pxe_core.h#6 (text+ko) ==== @@ -35,6 +35,8 @@ void* data; /* pointer to buffer with packet data */ size_t data_size; /* size of packet data */ + + const MAC_ADDR *dest_mac; /* destination media address */ void* user_data; /* pointer to user data. * used by higher level protocols @@ -64,6 +66,8 @@ /* interrupt handler function, that used to get new packets */ void pxe_core_isr(); +/* recieves one packet if it's waiting */ +int pxe_core_recv_packets(); /* calls PXE/UNDI API, registers of processor must be filled in with * appropriate values. @@ -91,9 +95,11 @@ typedef int (*pxe_protocol_call)(pxe_packet *pack, uint8_t function, void *data); /* registers protocol */ -void pxe_core_register(uint8_t proto, pxe_protocol_call proc); +void pxe_core_register(uint8_t ip_proto, pxe_protocol_call proc); /* returns NIC ip */ uint32_t pxe_get_myip32(); +/* returns NIC MAC */ +const MAC_ADDR *pxe_get_mymac(); #endif // PXE_CORE_H_INCLUDED