Date: Wed, 8 Jul 2009 13:29:44 GMT From: Sylvestre Gallon <syl@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 165820 for review Message-ID: <200907081329.n68DTio7046736@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=165820 Change 165820 by syl@syl_pablo on 2009/07/08 13:29:06 MFC before USB Function improvment. Affected files ... .. //depot/projects/soc2009/syl_usb/src/lib/libc/Makefile#2 integrate .. //depot/projects/soc2009/syl_usb/src/lib/libc/gen/msgctl.3#2 integrate .. //depot/projects/soc2009/syl_usb/src/lib/libc/sys/Symbol.map#4 integrate .. //depot/projects/soc2009/syl_usb/src/lib/libc/sys/execve.2#2 integrate .. //depot/projects/soc2009/syl_usb/src/lib/libc/sys/getsockopt.2#2 integrate .. //depot/projects/soc2009/syl_usb/src/lib/libc/sys/semctl.2#2 integrate .. //depot/projects/soc2009/syl_usb/src/lib/libc/sys/shmctl.2#2 integrate .. //depot/projects/soc2009/syl_usb/src/lib/libc/sys/stack_protector.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/lib/libthr/thread/thr_rtld.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/lib/libthr/thread/thr_rwlock.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/genassym.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/identcpu.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/intr_machdep.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/io_apic.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/local_apic.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/machdep.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/msi.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/pmap.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/sys_machdep.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/amd64/conf/GENERIC#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/amd64/include/intr_machdep.h#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/amd64/include/param.h#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/amd64/isa/atpic.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/at91_machdep.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/arm/include/param.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/arm/mv/mv_machdep.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/arm/sa11x0/assabet_machdep.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/compat/freebsd32/freebsd32_misc.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/compat/linux/linux_signal.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/conf/files#7 integrate .. //depot/projects/soc2009/syl_usb/src/sys/conf/newvers.sh#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/conf/options#7 integrate .. //depot/projects/soc2009/syl_usb/src/sys/contrib/dev/mwl/mw88W8363.fw.uu#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/acpi_support/acpi_hp.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/acpi_support/acpi_wmi.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/acpi_support/acpi_wmi_if.m#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ale/if_ale.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ata/atapi-cd.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ata/chipsets/ata-ahci.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ata/chipsets/ata-nvidia.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ath/ah_osdep.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ath/ah_osdep.h#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ath/ath_hal/ah.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ath/ath_hal/ah.h#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ath/ath_hal/ah_internal.h#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ath/if_athvar.h#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/cpuctl/cpuctl.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/e1000/e1000_82542.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/e1000/if_em.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/ixgbe/ixgbe.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/mpt/mpt_cam.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/mwl/if_mwl.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/mwl/if_mwlvar.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/mwl/mwlhal.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/mwl/mwlhal.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/mwl/mwlreg.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/sound/pcm/feeder_rate.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/sound/usb/uaudio.c#7 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/at91dci.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/atmegadci.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/avr32dci.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/musb_otg.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/uss820dci.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/net/if_cdce.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/serial/usb_serial.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/storage/umass.c#7 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/storage/ustorage_fs.c#7 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_controller.h#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_device.c#7 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_handle_request.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_if.m#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_transfer.c#7 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usbdevs#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usbdi.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/wlan/if_urtw.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/fs/cd9660/cd9660_lookup.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/fs/fifofs/fifo_vnops.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/geom/geom.h#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/geom/geom_dev.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/geom/geom_io.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/geom/geom_subr.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/geom/geom_vfs.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/geom/journal/g_journal.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/geom/part/g_part.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/geom/part/g_part_if.m#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/i386/conf/GENERIC#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/i386/i386/genassym.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/i386/i386/intr_machdep.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/i386/i386/io_apic.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/i386/i386/local_apic.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/i386/i386/msi.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/i386/i386/pmap.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/i386/i386/sys_machdep.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/i386/include/intr_machdep.h#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/i386/include/param.h#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/i386/isa/atpic.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/i386/xen/pmap.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/ia64/conf/GENERIC#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/ia64/include/param.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/kern_descrip.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/kern_event.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/kern_exec.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/kern_exit.c#7 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/kern_fork.c#7 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/kern_intr.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/kern_linker.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/kern_prot.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/kern_sig.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/kern_thr.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/subr_param.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/sys_generic.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/sys_pipe.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/sys_process.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/sys_socket.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/tty.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/tty_pts.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/uipc_socket.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/uipc_syscalls.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/vfs_cluster.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/vfs_export.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/vfs_extattr.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/vfs_lookup.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/vfs_mount.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/vfs_subr.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/vfs_syscalls.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/kern/vfs_vnops.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/mips/include/param.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/mips/malta/yamon.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/mips/mips/busdma_machdep.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/mips/mips/dump_machdep.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/mips/mips/intr_machdep.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/modules/Makefile#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/modules/geom/geom_label/Makefile#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/modules/nfsclient/Makefile#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/modules/nfsserver/Makefile#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/modules/wlan/Makefile#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net/if.c#7 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net/if_var.h#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net/netisr.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net/vnet.h#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211.c#7 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211_action.c#1 branch .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211_action.h#1 branch .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211_adhoc.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211_ageq.c#1 branch .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211_ageq.h#1 branch .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211_freebsd.h#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211_hostap.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211_ht.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211_ht.h#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211_node.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211_node.h#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211_sta.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211_var.h#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/net80211/ieee80211_wds.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/netgraph/ng_iface.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/netgraph/ng_ksocket.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/netinet6/in6.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/netinet6/in6_var.h#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfs/nfs_common.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfs/nfs_nfssvc.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfs/rpcv2.h#2 delete .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/bootp_subr.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/krpc_subr.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/nfs.h#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/nfs_bio.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/nfs_diskless.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/nfs_krpc.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/nfs_lock.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/nfs_nfsiod.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/nfs_node.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/nfs_socket.c#4 delete .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/nfs_subs.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/nfs_vfsops.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/nfs_vnops.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/nfsm_subs.h#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsclient/nfsmount.h#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsserver/nfs.h#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsserver/nfs_fha.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsserver/nfs_serv.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsserver/nfs_srvcache.c#2 delete .. //depot/projects/soc2009/syl_usb/src/sys/nfsserver/nfs_srvkrpc.c#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsserver/nfs_srvsock.c#5 delete .. //depot/projects/soc2009/syl_usb/src/sys/nfsserver/nfs_srvsubs.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/nfsserver/nfs_syscalls.c#3 delete .. //depot/projects/soc2009/syl_usb/src/sys/nfsserver/nfsrvcache.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/pc98/conf/GENERIC#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/pc98/include/vm.h#1 branch .. //depot/projects/soc2009/syl_usb/src/sys/powerpc/conf/GENERIC#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/powerpc/include/param.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/rpc/clnt_dg.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/rpc/rpcsec_gss/rpcsec_gss.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/security/audit/audit.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/security/audit/audit.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/security/audit/audit_arg.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/security/audit/audit_bsm.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/security/audit/audit_private.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/security/audit/audit_syscalls.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sparc64/conf/GENERIC#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sparc64/include/param.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sparc64/include/pmap.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sparc64/sparc64/machdep.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sparc64/sparc64/pmap.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sun4v/conf/GENERIC#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sun4v/include/param.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sys/cpuctl.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sys/disk.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sys/event.h#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sys/filio.h#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sys/mount.h#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sys/param.h#8 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sys/priv.h#6 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sys/socketvar.h#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/sys/vnode.h#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/tools/sound/feeder_rate_mkfilter.awk#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/ufs/ffs/ffs_softdep.c#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/ufs/ffs/ffs_vnops.c#2 integrate .. //depot/projects/soc2009/syl_usb/src/sys/ufs/ufs/ufs_vnops.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/vm/vm_extern.h#3 integrate .. //depot/projects/soc2009/syl_usb/src/sys/vm/vm_fault.c#5 integrate .. //depot/projects/soc2009/syl_usb/src/sys/vm/vm_map.c#4 integrate .. //depot/projects/soc2009/syl_usb/src/sys/vm/vm_object.c#5 integrate Differences ... ==== //depot/projects/soc2009/syl_usb/src/lib/libc/Makefile#2 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 8.2 (Berkeley) 2/3/94 -# $FreeBSD: src/lib/libc/Makefile,v 1.75 2009/03/13 10:40:38 gabor Exp $ +# $FreeBSD: src/lib/libc/Makefile,v 1.77 2009/06/29 01:33:59 kan Exp $ SHLIBDIR?= /lib ==== //depot/projects/soc2009/syl_usb/src/lib/libc/gen/msgctl.3#2 (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/lib/libc/gen/msgctl.3,v 1.21 2008/04/03 16:21:43 ru Exp $ +.\" $FreeBSD: src/lib/libc/gen/msgctl.3,v 1.22 2009/06/29 18:54:17 kib Exp $ .\"/ .Dd April 3, 2008 .Dt MSGCTL 3 @@ -71,12 +71,8 @@ pid_t msg_lspid; /* pid of last msgsnd() */ pid_t msg_lrpid; /* pid of last msgrcv() */ time_t msg_stime; /* time of last msgsnd() */ - long msg_pad1; time_t msg_rtime; /* time of last msgrcv() */ - long msg_pad2; time_t msg_ctime; /* time of last msgctl() */ - long msg_pad3; - long msg_pad4[4]; }; .Ed .Pp @@ -89,11 +85,11 @@ and looks like this: .Bd -literal struct ipc_perm { - unsigned short cuid; /* creator user id */ - unsigned short cgid; /* creator group id */ - unsigned short uid; /* user id */ - unsigned short gid; /* group id */ - unsigned short mode; /* r/w permission */ + uid_t cuid; /* creator user id */ + gid_t cgid; /* creator group id */ + uid_t uid; /* user id */ + gid_t gid; /* group id */ + mode_t mode; /* r/w permission */ unsigned short seq; /* sequence # (to generate unique ipcid) */ key_t key; /* user specified msg/sem/shm key */ }; ==== //depot/projects/soc2009/syl_usb/src/lib/libc/sys/Symbol.map#4 (text) ==== @@ -1,5 +1,5 @@ /* - * $FreeBSD: src/lib/libc/sys/Symbol.map,v 1.24 2009/06/24 21:10:52 jhb Exp $ + * $FreeBSD: src/lib/libc/sys/Symbol.map,v 1.26 2009/06/29 01:33:59 kan Exp $ */ /* ==== //depot/projects/soc2009/syl_usb/src/lib/libc/sys/execve.2#2 (text+ko) ==== @@ -26,7 +26,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)execve.2 8.5 (Berkeley) 6/1/94 -.\" $FreeBSD: src/lib/libc/sys/execve.2,v 1.42 2008/08/26 10:53:32 kib Exp $ +.\" $FreeBSD: src/lib/libc/sys/execve.2,v 1.43 2009/07/05 20:20:09 pjd Exp $ .\" .Dd April 10, 2008 .Dt EXECVE 2 @@ -220,13 +220,11 @@ .Fn fexecve , the file descriptor .Fa fd -need not have been -opened with the +need not have been opened with the .Dv O_EXEC flag. -However, if the file to be executed denies read and write -permission for the process preparing to do the exec, the only way to -provide the +However, if the file to be executed denies read permission for the process +preparing to do the exec, the only way to provide the .Fa fd to .Fn fexecve @@ -234,6 +232,7 @@ .Dv O_EXEC flag when opening .Fa fd . +Note that the file to be executed can not be open for writing. .Sh RETURN VALUES As the .Fn execve @@ -277,7 +276,7 @@ permission, but has an invalid magic number in its header. .It Bq Er ETXTBSY The new process file is a pure procedure (shared text) -file that is currently open for writing or reading by some process. +file that is currently open for writing by some process. .It Bq Er ENOMEM The new process requires more virtual memory than is allowed by the imposed maximum ==== //depot/projects/soc2009/syl_usb/src/lib/libc/sys/getsockopt.2#2 (text+ko) ==== @@ -26,7 +26,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)getsockopt.2 8.4 (Berkeley) 5/2/95 -.\" $FreeBSD: src/lib/libc/sys/getsockopt.2,v 1.40 2008/06/12 22:58:35 wkoszek Exp $ +.\" $FreeBSD: src/lib/libc/sys/getsockopt.2,v 1.41 2009/06/30 20:53:56 trasz Exp $ .\" .Dd June 13, 2008 .Dt GETSOCKOPT 2 @@ -139,6 +139,11 @@ .In sys/time.h . .Pp The following options are recognized at the socket level. +For protocol-specific options, see protocol manual pages, +e.g. +.Xr ip 4 +or +.Xr tcp 4 . Except as noted, each may be examined with .Fn getsockopt and set with @@ -499,6 +504,10 @@ .Xr getprotoent 3 , .Xr mac 3 , .Xr sysctl 3 , +.Xr ip 4 , +.Xr ip6 4 , +.Xr sctp 4 , +.Xr tcp 4 , .Xr protocols 5 , .Xr sysctl 8 , .Xr accept_filter 9 , ==== //depot/projects/soc2009/syl_usb/src/lib/libc/sys/semctl.2#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/lib/libc/sys/semctl.2,v 1.20 2005/01/15 12:28:00 ru Exp $ +.\" $FreeBSD: src/lib/libc/sys/semctl.2,v 1.21 2009/06/29 18:54:17 kib Exp $ .\" .Dd September 12, 1995 .Dt SEMCTL 2 @@ -148,12 +148,9 @@ struct sem *sem_base; /* pointer to first semaphore in set */ u_short sem_nsems; /* number of sems in set */ time_t sem_otime; /* last operation time */ - long sem_pad1; /* SVABI/386 says I need this here */ time_t sem_ctime; /* last change time */ /* Times measured in secs since */ /* 00:00:00 GMT, Jan. 1, 1970 */ - long sem_pad2; /* SVABI/386 says I need this here */ - long sem_pad3[4]; /* SVABI/386 says I need this here */ }; .Ed .Sh RETURN VALUES ==== //depot/projects/soc2009/syl_usb/src/lib/libc/sys/shmctl.2#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/lib/libc/sys/shmctl.2,v 1.20 2009/03/05 12:04:42 kib Exp $ +.\" $FreeBSD: src/lib/libc/sys/shmctl.2,v 1.21 2009/06/29 18:54:17 kib Exp $ .\" .Dd July 17, 1995 .Dt SHMCTL 2 @@ -100,14 +100,13 @@ .Bd -literal struct shmid_ds { struct ipc_perm shm_perm; /* operation permission structure */ - int shm_segsz; /* size of segment in bytes */ + size_t shm_segsz; /* size of segment in bytes */ pid_t shm_lpid; /* process ID of last shared memory op */ pid_t shm_cpid; /* process ID of creator */ - short shm_nattch; /* number of current attaches */ + int shm_nattch; /* number of current attaches */ time_t shm_atime; /* time of last shmat() */ time_t shm_dtime; /* time of last shmdt() */ time_t shm_ctime; /* time of last change by shmctl() */ - void *shm_internal; /* sysv stupidity */ }; .Ed .Sh RETURN VALUES @@ -133,16 +132,6 @@ Permission denied due to mismatch between operation and mode of shared memory segment. .El -.Sh "BUGS" -The segment size has size_t type. -The shm_segsz member of the -.Vt shmid_ds -structure has type int, which is too short to represent the full range -of values for a segment size. -If shared memory limits are raised to allow segments with size > 2 GB -to be created, be aware that IPC_STAT call may return a truncated value -for shm_segsz. -.El .Sh "SEE ALSO" .Xr shmat 2 , .Xr shmdt 2 , ==== //depot/projects/soc2009/syl_usb/src/lib/libc/sys/stack_protector.c#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/lib/libc/sys/stack_protector.c,v 1.2 2007/06/05 08:24:34 des Exp $ */ +/* $FreeBSD: src/lib/libc/sys/stack_protector.c,v 1.4 2009/06/29 01:33:59 kan Exp $ */ /* $NetBSD: stack_protector.c,v 1.4 2006/11/22 17:23:25 christos Exp $ */ /* $OpenBSD: stack_protector.c,v 1.10 2006/03/31 05:34:44 deraadt Exp $ */ /* @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libc/sys/stack_protector.c,v 1.2 2007/06/05 08:24:34 des Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/sys/stack_protector.c,v 1.4 2009/06/29 01:33:59 kan Exp $"); #include <sys/param.h> #include <sys/sysctl.h> ==== //depot/projects/soc2009/syl_usb/src/lib/libthr/thread/thr_rtld.c#2 (text) ==== @@ -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/lib/libthr/thread/thr_rtld.c,v 1.11 2009/04/19 23:02:50 rwatson Exp $ + * $FreeBSD: src/lib/libthr/thread/thr_rtld.c,v 1.12 2009/07/06 09:31:04 attilio Exp $ * */ @@ -114,6 +114,7 @@ THR_CRITICAL_ENTER(curthread); while (_thr_rwlock_rdlock(&l->lock, 0, NULL) != 0) ; + curthread->rdlock_count++; RESTORE_ERRNO(); } @@ -148,6 +149,7 @@ state = l->lock.rw_state; if (_thr_rwlock_unlock(&l->lock) == 0) { + curthread->rdlock_count--; if ((state & URWLOCK_WRITE_OWNER) == 0) { THR_CRITICAL_LEAVE(curthread); } else { ==== //depot/projects/soc2009/syl_usb/src/lib/libthr/thread/thr_rwlock.c#2 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/libthr/thread/thr_rwlock.c,v 1.15 2008/04/14 08:08:40 davidxu Exp $ + * $FreeBSD: src/lib/libthr/thread/thr_rwlock.c,v 1.16 2009/07/06 09:31:04 attilio Exp $ */ #include <errno.h> @@ -177,10 +177,11 @@ /* if interrupted, try to lock it in userland again. */ if (_thr_rwlock_tryrdlock(&prwlock->lock, flags) == 0) { ret = 0; - curthread->rdlock_count++; break; } } + if (ret == 0) + curthread->rdlock_count++; return (ret); } ==== //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/genassym.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/genassym.c,v 1.175 2009/04/01 18:36:34 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/genassym.c,v 1.176 2009/07/01 07:34:28 dfr Exp $"); #include "opt_compat.h" #include "opt_hwpmc_hooks.h" @@ -64,7 +64,6 @@ #include <net/if.h> #include <netinet/in.h> #include <nfs/nfsproto.h> -#include <nfs/rpcv2.h> #include <nfsclient/nfs.h> #include <nfsclient/nfsdiskless.h> #include <machine/apicreg.h> ==== //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/identcpu.c#3 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.173 2009/05/04 18:05:27 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.174 2009/06/30 11:16:32 avg Exp $"); #include "opt_cpu.h" @@ -107,9 +107,6 @@ }; -extern int pq_l2size; -extern int pq_l2nways; - void printcpuinfo(void) { ==== //depot/projects/soc2009/syl_usb/src/sys/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.44 2009/06/25 20:35:46 jhb Exp $ + * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.45 2009/07/01 17:20:07 jhb Exp $ */ /* @@ -163,8 +163,8 @@ } int -intr_add_handler(const char *name, int vector, driver_filter_t filter, - driver_intr_t handler, void *arg, enum intr_type flags, void **cookiep) +intr_add_handler(const char *name, int vector, driver_filter_t filter, + driver_intr_t handler, void *arg, enum intr_type flags, void **cookiep) { struct intsrc *isrc; int error; @@ -302,7 +302,8 @@ intr_assign_cpu(void *arg, u_char cpu) { #ifdef SMP - struct intsrc *isrc; + struct intsrc *isrc; + int error; /* * Don't do anything during early boot. We will pick up the @@ -311,10 +312,11 @@ if (assign_cpu && cpu != NOCPU) { isrc = arg; mtx_lock(&intr_table_lock); - isrc->is_pic->pic_assign_cpu(isrc, cpu_apic_ids[cpu]); + error = isrc->is_pic->pic_assign_cpu(isrc, cpu_apic_ids[cpu]); mtx_unlock(&intr_table_lock); - } - return (0); + } else + error = 0; + return (error); #else return (EOPNOTSUPP); #endif @@ -371,7 +373,7 @@ intrcnt_setname("???", 0); intrcnt_index = 1; STAILQ_INIT(&pics); - mtx_init(&intr_table_lock, "intr sources", NULL, MTX_DEF | MTX_RECURSE); + mtx_init(&intr_table_lock, "intr sources", NULL, MTX_DEF); mtx_init(&intrcnt_lock, "intrcnt", NULL, MTX_SPIN); } SYSINIT(intr_init, SI_SUB_INTR, SI_ORDER_FIRST, intr_init, NULL); @@ -441,14 +443,14 @@ if (!assign_cpu) return (cpu_apic_ids[0]); - mtx_lock(&intr_table_lock); + mtx_lock_spin(&icu_lock); apic_id = cpu_apic_ids[current_cpu]; do { current_cpu++; if (current_cpu > mp_maxid) current_cpu = 0; } while (!(intr_cpus & (1 << current_cpu))); - mtx_unlock(&intr_table_lock); + mtx_unlock_spin(&icu_lock); return (apic_id); } @@ -489,7 +491,6 @@ intr_shuffle_irqs(void *arg __unused) { struct intsrc *isrc; - u_int apic_id; int i; /* Don't bother on UP. */ @@ -505,13 +506,17 @@ /* * If this event is already bound to a CPU, * then assign the source to that CPU instead - * of picking one via round-robin. + * of picking one via round-robin. Note that + * this is careful to only advance the + * round-robin if the CPU assignment succeeds. */ if (isrc->is_event->ie_cpu != NOCPU) - apic_id = isrc->is_event->ie_cpu; - else - apic_id = intr_next_cpu(); - isrc->is_pic->pic_assign_cpu(isrc, apic_id); + (void)isrc->is_pic->pic_assign_cpu(isrc, + isrc->is_event->ie_cpu); + else if (isrc->is_pic->pic_assign_cpu(isrc, + cpu_apic_ids[current_cpu]) == 0) + (void)intr_next_cpu(); + } } mtx_unlock(&intr_table_lock); ==== //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/io_apic.c#3 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.33 2009/06/25 18:13:46 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.35 2009/07/06 18:23:00 jhb Exp $"); #include "opt_isa.h" @@ -120,7 +120,7 @@ static int ioapic_config_intr(struct intsrc *isrc, enum intr_trigger trig, enum intr_polarity pol); static void ioapic_resume(struct pic *pic); -static void ioapic_assign_cpu(struct intsrc *isrc, u_int apic_id); +static int ioapic_assign_cpu(struct intsrc *isrc, u_int apic_id); static void ioapic_program_intpin(struct ioapic_intsrc *intpin); static STAILQ_HEAD(,ioapic) ioapic_list = STAILQ_HEAD_INITIALIZER(ioapic_list); @@ -322,12 +322,12 @@ mtx_unlock_spin(&icu_lock); } -static void +static int ioapic_assign_cpu(struct intsrc *isrc, u_int apic_id) { struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; struct ioapic *io = (struct ioapic *)isrc->is_pic; - u_int old_vector; + u_int old_vector, new_vector; u_int old_id; /* @@ -342,14 +342,20 @@ old_vector = intpin->io_vector; old_id = intpin->io_cpu; if (old_vector && apic_id == old_id) - return; + return (0); /* * Allocate an APIC vector for this interrupt pin. Once * we have a vector we program the interrupt pin. */ + new_vector = apic_alloc_vector(apic_id, intpin->io_irq); + if (new_vector == 0) + return (ENOSPC); + intpin->io_cpu = apic_id; - intpin->io_vector = apic_alloc_vector(apic_id, intpin->io_irq); + intpin->io_vector = new_vector; + if (isrc->is_handlers > 0) + apic_enable_vector(intpin->io_cpu, intpin->io_vector); if (bootverbose) { printf("ioapic%u: routing intpin %u (", io->io_id, intpin->io_intpin); @@ -362,8 +368,12 @@ * Free the old vector after the new one is established. This is done * to prevent races where we could miss an interrupt. */ - if (old_vector) + if (old_vector) { + if (isrc->is_handlers > 0) + apic_disable_vector(old_id, old_vector); apic_free_vector(old_id, old_vector, intpin->io_irq); + } + return (0); } static void @@ -372,7 +382,9 @@ struct ioapic_intsrc *intpin = (struct ioapic_intsrc *)isrc; if (intpin->io_vector == 0) - ioapic_assign_cpu(isrc, intr_next_cpu()); + if (ioapic_assign_cpu(isrc, intr_next_cpu()) != 0) + panic("Couldn't find an APIC vector for IRQ %d", + intpin->io_irq); apic_enable_vector(intpin->io_cpu, intpin->io_vector); } @@ -496,7 +508,7 @@ io->io_pic = ioapic_template; mtx_lock_spin(&icu_lock); io->io_id = next_id++; - io->io_apic_id = ioapic_read(apic, IOAPIC_ID) >> APIC_ID_SHIFT; + io->io_apic_id = ioapic_read(apic, IOAPIC_ID) >> APIC_ID_SHIFT; if (apic_id != -1 && io->io_apic_id != apic_id) { ioapic_write(apic, IOAPIC_ID, apic_id << APIC_ID_SHIFT); mtx_unlock_spin(&icu_lock); @@ -730,7 +742,7 @@ if (pin >= io->io_numintr || trigger == INTR_TRIGGER_CONFORM) return (EINVAL); if (io->io_pins[pin].io_irq >= NUM_IO_INTS) - return (EINVAL); + return (EINVAL); edgetrigger = (trigger == INTR_TRIGGER_EDGE); if (io->io_pins[pin].io_edgetrigger == edgetrigger) return (0); ==== //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/local_apic.c#5 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.57 2009/06/24 19:16:48 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.58 2009/07/01 17:20:07 jhb Exp $"); #include "opt_hwpmc_hooks.h" #include "opt_kdtrace.h" @@ -139,7 +139,7 @@ }; -static u_int32_t lapic_timer_divisors[] = { +static u_int32_t lapic_timer_divisors[] = { APIC_TDCR_1, APIC_TDCR_2, APIC_TDCR_4, APIC_TDCR_8, APIC_TDCR_16, APIC_TDCR_32, APIC_TDCR_64, APIC_TDCR_128 }; @@ -797,7 +797,7 @@ return (vector + APIC_IO_INTS); } mtx_unlock_spin(&icu_lock); - panic("Couldn't find an APIC vector for IRQ %u", irq); + return (0); } /* @@ -1058,7 +1058,7 @@ static SLIST_HEAD(, apic_enumerator) enumerators = SLIST_HEAD_INITIALIZER(enumerators); static struct apic_enumerator *best_enum; - + void apic_register_enumerator(struct apic_enumerator *enumerator) { ==== //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/machdep.c#6 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.703 2009/06/23 22:42:39 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.704 2009/07/06 18:10:27 jhb Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -100,8 +100,9 @@ #ifndef KDB #error KDB must be enabled in order for DDB to work! #endif +#include <ddb/ddb.h> +#include <ddb/db_sym.h> #endif -#include <ddb/ddb.h> #include <net/netisr.h> @@ -1083,6 +1084,30 @@ IDTVEC(xmm), IDTVEC(dblfault), IDTVEC(fast_syscall), IDTVEC(fast_syscall32); +#ifdef DDB +/* + * Display the index and function name of any IDT entries that don't use + * the default 'rsvd' entry point. + */ +DB_SHOW_COMMAND(idt, db_show_idt) +{ + struct gate_descriptor *ip; + int idx; + uintptr_t func; + + ip = idt; + for (idx = 0; idx < NIDT && !db_pager_quit; idx++) { + func = ((long)ip->gd_hioffset << 16 | ip->gd_looffset); + if (func != (uintptr_t)&IDTVEC(rsvd)) { + db_printf("%3d\t", idx); + db_printsym(func, DB_STGY_PROC); + db_printf("\n"); + } + ip++; + } +} +#endif + void sdtossd(sd, ssd) struct user_segment_descriptor *sd; ==== //depot/projects/soc2009/syl_usb/src/sys/amd64/amd64/msi.c#4 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.12 2009/06/25 18:13:46 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.14 2009/07/06 18:23:00 jhb Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -113,6 +113,8 @@ 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) */ + u_int msi_maxcount:8; /* Alignment for this group. (g) */ + int *msi_irqs; /* Group's IRQ list. (g) */ }; static void msi_create_source(void); @@ -125,7 +127,7 @@ static int msi_source_pending(struct intsrc *isrc); 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 int 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_disable_intr, msi_vector, @@ -195,39 +197,72 @@ return (ENODEV); } -static void +static int msi_assign_cpu(struct intsrc *isrc, u_int apic_id) { - struct msi_intsrc *msi = (struct msi_intsrc *)isrc; + struct msi_intsrc *sib, *msi = (struct msi_intsrc *)isrc; int old_vector; u_int old_id; - int vector; + int i, vector; + + /* + * Only allow CPUs to be assigned to the first message for an + * MSI group. + */ + if (msi->msi_first != msi) + return (EINVAL); /* Store information to free existing irq. */ old_vector = msi->msi_vector; old_id = msi->msi_cpu; if (old_id == apic_id) - return; - if (!msi->msi_msix && msi->msi_first->msi_count > 1) - return; + return (0); - /* Allocate IDT vector on this cpu. */ - vector = apic_alloc_vector(apic_id, msi->msi_irq); + /* Allocate IDT vectors on this cpu. */ + if (msi->msi_count > 1) { + KASSERT(msi->msi_msix == 0, ("MSI-X message group")); + vector = apic_alloc_vectors(apic_id, msi->msi_irqs, + msi->msi_count, msi->msi_maxcount); + } else + vector = apic_alloc_vector(apic_id, msi->msi_irq); if (vector == 0) - return; /* XXX alloc_vector panics on failure. */ + return (ENOSPC); + msi->msi_cpu = apic_id; msi->msi_vector = vector; + if (msi->msi_intsrc.is_handlers > 0) + apic_enable_vector(msi->msi_cpu, msi->msi_vector); if (bootverbose) printf("msi: Assigning %s IRQ %d to local APIC %u vector %u\n", msi->msi_msix ? "MSI-X" : "MSI", msi->msi_irq, msi->msi_cpu, msi->msi_vector); + for (i = 1; i < msi->msi_count; i++) { + sib = (struct msi_intsrc *)intr_lookup_source(msi->msi_irqs[i]); + sib->msi_cpu = apic_id; + sib->msi_vector = vector + i; + if (sib->msi_intsrc.is_handlers > 0) + apic_enable_vector(sib->msi_cpu, sib->msi_vector); + if (bootverbose) + printf( + "msi: Assigning MSI IRQ %d to local APIC %u vector %u\n", + sib->msi_irq, sib->msi_cpu, sib->msi_vector); + } pci_remap_msi_irq(msi->msi_dev, msi->msi_irq); /* * Free the old vector after the new one is established. This is done * to prevent races where we could miss an interrupt. */ + if (msi->msi_intsrc.is_handlers > 0) + apic_disable_vector(old_id, old_vector); apic_free_vector(old_id, old_vector, msi->msi_irq); + for (i = 1; i < msi->msi_count; i++) { + sib = (struct msi_intsrc *)intr_lookup_source(msi->msi_irqs[i]); + if (sib->msi_intsrc.is_handlers > 0) + apic_disable_vector(old_id, old_vector + i); + apic_free_vector(old_id, old_vector + i, msi->msi_irqs[i]); + } + return (0); } void @@ -268,7 +303,7 @@ msi_last_irq++; mtx_unlock(&msi_lock); - msi = malloc(sizeof(struct msi_intsrc), M_MSI, M_WAITOK | M_ZERO); + 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); @@ -276,21 +311,22 @@ } /* - * 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 - * the irqs[] array, with *newirq being the index of the first new IRQ value - * and *newcount being the number of new IRQ values added. + * Try to allocate 'count' interrupt sources with contiguous IDT values. */ int msi_alloc(device_t dev, int count, int maxcount, int *irqs) { struct msi_intsrc *msi, *fsrc; u_int cpu; - int cnt, i, vector; + int cnt, i, *mirqs, vector; >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907081329.n68DTio7046736>