PERFORCE change 120063 for review

Nate Lawson njl at FreeBSD.org
Sat May 19 17:53:37 UTC 2007


http://perforce.freebsd.org/chv.cgi?CH=120063

Change 120063 by njl at njl_deenlo on 2007/05/19 17:52:33

	Bring non-usb files up to -current.  Owner of branch should integrate
	usb files (sys/dev/usb) and resolve conflicts.

Affected files ...

.. //depot/projects/usb/src/sys/amd64/acpica/madt.c#4 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/intr_machdep.c#5 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/io_apic.c#4 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/local_apic.c#5 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/machdep.c#5 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/mp_machdep.c#5 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/mptable.c#3 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/mptable_pci.c#3 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/msi.c#3 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/nexus.c#5 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/pmap.c#5 integrate
.. //depot/projects/usb/src/sys/amd64/conf/GENERIC#6 integrate
.. //depot/projects/usb/src/sys/amd64/conf/NOTES#6 integrate
.. //depot/projects/usb/src/sys/amd64/include/apicvar.h#4 integrate
.. //depot/projects/usb/src/sys/amd64/include/intr_machdep.h#4 integrate
.. //depot/projects/usb/src/sys/amd64/include/vmparam.h#3 integrate
.. //depot/projects/usb/src/sys/amd64/isa/atpic.c#3 integrate
.. //depot/projects/usb/src/sys/amd64/linux32/linux32_machdep.c#5 integrate
.. //depot/projects/usb/src/sys/amd64/linux32/linux32_sysvec.c#5 integrate
.. //depot/projects/usb/src/sys/amd64/pci/pci_bus.c#4 integrate
.. //depot/projects/usb/src/sys/arm/arm/machdep.c#3 integrate
.. //depot/projects/usb/src/sys/arm/arm/pmap.c#5 integrate
.. //depot/projects/usb/src/sys/arm/include/vmparam.h#3 integrate
.. //depot/projects/usb/src/sys/arm/xscale/i80321/ep80219_machdep.c#3 integrate
.. //depot/projects/usb/src/sys/arm/xscale/i80321/iq31244_machdep.c#4 integrate
.. //depot/projects/usb/src/sys/arm/xscale/ixp425/avila_machdep.c#3 integrate
.. //depot/projects/usb/src/sys/boot/common/loader.8#5 integrate
.. //depot/projects/usb/src/sys/cam/cam_periph.c#4 integrate
.. //depot/projects/usb/src/sys/cam/cam_xpt.c#5 integrate
.. //depot/projects/usb/src/sys/cam/cam_xpt.h#4 integrate
.. //depot/projects/usb/src/sys/cam/scsi/scsi_cd.c#5 integrate
.. //depot/projects/usb/src/sys/cam/scsi/scsi_ch.c#4 integrate
.. //depot/projects/usb/src/sys/cam/scsi/scsi_da.c#5 integrate
.. //depot/projects/usb/src/sys/cam/scsi/scsi_pass.c#5 integrate
.. //depot/projects/usb/src/sys/cam/scsi/scsi_pt.c#4 integrate
.. //depot/projects/usb/src/sys/cam/scsi/scsi_sa.c#4 integrate
.. //depot/projects/usb/src/sys/cam/scsi/scsi_ses.c#4 integrate
.. //depot/projects/usb/src/sys/cam/scsi/scsi_sg.c#2 integrate
.. //depot/projects/usb/src/sys/cam/scsi/scsi_targ_bh.c#4 integrate
.. //depot/projects/usb/src/sys/coda/coda_vnops.c#4 integrate
.. //depot/projects/usb/src/sys/coda/coda_vnops.h#3 integrate
.. //depot/projects/usb/src/sys/compat/freebsd32/freebsd32_misc.c#4 integrate
.. //depot/projects/usb/src/sys/compat/ia32/ia32_sysvec.c#3 integrate
.. //depot/projects/usb/src/sys/compat/linprocfs/linprocfs.c#5 integrate
.. //depot/projects/usb/src/sys/compat/linux/linux_misc.c#5 integrate
.. //depot/projects/usb/src/sys/compat/opensolaris/kern/opensolaris_kobj.c#2 integrate
.. //depot/projects/usb/src/sys/compat/opensolaris/kern/opensolaris_vfs.c#2 integrate
.. //depot/projects/usb/src/sys/compat/svr4/svr4_misc.c#4 integrate
.. //depot/projects/usb/src/sys/conf/Makefile.amd64#2 integrate
.. //depot/projects/usb/src/sys/conf/Makefile.arm#3 integrate
.. //depot/projects/usb/src/sys/conf/Makefile.i386#2 integrate
.. //depot/projects/usb/src/sys/conf/Makefile.ia64#2 integrate
.. //depot/projects/usb/src/sys/conf/Makefile.pc98#2 integrate
.. //depot/projects/usb/src/sys/conf/Makefile.powerpc#2 integrate
.. //depot/projects/usb/src/sys/conf/Makefile.sparc64#2 integrate
.. //depot/projects/usb/src/sys/conf/Makefile.sun4v#2 integrate
.. //depot/projects/usb/src/sys/conf/NOTES#8 integrate
.. //depot/projects/usb/src/sys/conf/files#17 integrate
.. //depot/projects/usb/src/sys/conf/kern.pre.mk#4 integrate
.. //depot/projects/usb/src/sys/conf/options#5 integrate
.. //depot/projects/usb/src/sys/contrib/opensolaris/uts/common/fs/gfs.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/opensolaris/uts/common/fs/zfs/dbuf.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/opensolaris/uts/common/fs/zfs/dnode.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#2 integrate
.. //depot/projects/usb/src/sys/contrib/opensolaris/uts/common/fs/zfs/zio.c#2 integrate
.. //depot/projects/usb/src/sys/crypto/camellia/camellia-api.c#1 branch
.. //depot/projects/usb/src/sys/crypto/camellia/camellia.c#1 branch
.. //depot/projects/usb/src/sys/crypto/camellia/camellia.h#1 branch
.. //depot/projects/usb/src/sys/dev/acpica/acpi.c#6 integrate
.. //depot/projects/usb/src/sys/dev/acpica/acpi_hpet.c#4 integrate
.. //depot/projects/usb/src/sys/dev/acpica/acpi_pcib_acpi.c#3 integrate
.. //depot/projects/usb/src/sys/dev/acpica/acpi_pcib_pci.c#3 integrate
.. //depot/projects/usb/src/sys/dev/acpica/acpivar.h#5 integrate
.. //depot/projects/usb/src/sys/dev/ata/ata-disk.c#6 integrate
.. //depot/projects/usb/src/sys/dev/ata/atapi-cam.c#5 integrate
.. //depot/projects/usb/src/sys/dev/bce/if_bce.c#5 integrate
.. //depot/projects/usb/src/sys/dev/bce/if_bcefw.h#2 integrate
.. //depot/projects/usb/src/sys/dev/bce/if_bcereg.h#3 integrate
.. //depot/projects/usb/src/sys/dev/bge/if_bge.c#5 integrate
.. //depot/projects/usb/src/sys/dev/bge/if_bgereg.h#5 integrate
.. //depot/projects/usb/src/sys/dev/cardbus/cardbus.c#5 integrate
.. //depot/projects/usb/src/sys/dev/cardbus/cardbus_cis.c#3 integrate
.. //depot/projects/usb/src/sys/dev/ciss/ciss.c#5 integrate
.. //depot/projects/usb/src/sys/dev/ciss/cissvar.h#2 integrate
.. //depot/projects/usb/src/sys/dev/em/LICENSE#2 integrate
.. //depot/projects/usb/src/sys/dev/em/README#3 integrate
.. //depot/projects/usb/src/sys/dev/em/e1000_80003es2lan.c#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_80003es2lan.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_82540.c#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_82541.c#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_82541.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_82542.c#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_82543.c#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_82543.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_82571.c#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_82571.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_82575.c#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_82575.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_api.c#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_api.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_defines.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_hw.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_ich8lan.c#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_ich8lan.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_mac.c#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_mac.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_manage.c#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_manage.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_nvm.c#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_nvm.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_osdep.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_phy.c#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_phy.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/e1000_regs.h#1 branch
.. //depot/projects/usb/src/sys/dev/em/if_em.c#5 integrate
.. //depot/projects/usb/src/sys/dev/em/if_em.h#4 integrate
.. //depot/projects/usb/src/sys/dev/em/if_em_hw.c#4 delete
.. //depot/projects/usb/src/sys/dev/em/if_em_hw.h#4 delete
.. //depot/projects/usb/src/sys/dev/em/if_em_osdep.h#4 delete
.. //depot/projects/usb/src/sys/dev/firewire/firewire.c#3 integrate
.. //depot/projects/usb/src/sys/dev/firewire/firewirereg.h#3 integrate
.. //depot/projects/usb/src/sys/dev/firewire/fwdev.c#4 integrate
.. //depot/projects/usb/src/sys/dev/firewire/fwohci.c#3 integrate
.. //depot/projects/usb/src/sys/dev/firewire/fwohcireg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/firewire/if_fwip.c#4 integrate
.. //depot/projects/usb/src/sys/dev/firewire/sbp.c#4 integrate
.. //depot/projects/usb/src/sys/dev/firewire/sbp_targ.c#3 integrate
.. //depot/projects/usb/src/sys/dev/gem/if_gem.c#4 integrate
.. //depot/projects/usb/src/sys/dev/gem/if_gem_pci.c#3 integrate
.. //depot/projects/usb/src/sys/dev/gem/if_gemvar.h#3 integrate
.. //depot/projects/usb/src/sys/dev/hme/if_hme.c#4 integrate
.. //depot/projects/usb/src/sys/dev/hptiop/hptiop.c#1 branch
.. //depot/projects/usb/src/sys/dev/hptiop/hptiop.h#1 branch
.. //depot/projects/usb/src/sys/dev/ipmi/ipmi_smbios.c#3 integrate
.. //depot/projects/usb/src/sys/dev/isp/isp.c#5 integrate
.. //depot/projects/usb/src/sys/dev/isp/isp_freebsd.c#5 integrate
.. //depot/projects/usb/src/sys/dev/isp/isp_freebsd.h#5 integrate
.. //depot/projects/usb/src/sys/dev/isp/isp_pci.c#5 integrate
.. //depot/projects/usb/src/sys/dev/isp/isp_sbus.c#5 integrate
.. //depot/projects/usb/src/sys/dev/isp/isp_tpublic.h#5 integrate
.. //depot/projects/usb/src/sys/dev/mfi/mfi.c#5 integrate
.. //depot/projects/usb/src/sys/dev/mfi/mfi_cam.c#1 branch
.. //depot/projects/usb/src/sys/dev/mfi/mfi_disk.c#4 integrate
.. //depot/projects/usb/src/sys/dev/mfi/mfi_ioctl.h#3 integrate
.. //depot/projects/usb/src/sys/dev/mfi/mfi_pci.c#4 integrate
.. //depot/projects/usb/src/sys/dev/mfi/mfireg.h#4 integrate
.. //depot/projects/usb/src/sys/dev/mfi/mfivar.h#4 integrate
.. //depot/projects/usb/src/sys/dev/mii/brgphy.c#5 integrate
.. //depot/projects/usb/src/sys/dev/mii/mii.c#3 integrate
.. //depot/projects/usb/src/sys/dev/mmc/mmc.c#2 integrate
.. //depot/projects/usb/src/sys/dev/mmc/mmcsd.c#2 integrate
.. //depot/projects/usb/src/sys/dev/mmc/mmcvar.h#2 integrate
.. //depot/projects/usb/src/sys/dev/mpt/mpt.c#4 integrate
.. //depot/projects/usb/src/sys/dev/mpt/mpt.h#5 integrate
.. //depot/projects/usb/src/sys/dev/mpt/mpt_cam.c#5 integrate
.. //depot/projects/usb/src/sys/dev/mpt/mpt_cam.h#4 integrate
.. //depot/projects/usb/src/sys/dev/mpt/mpt_pci.c#5 integrate
.. //depot/projects/usb/src/sys/dev/mpt/mpt_raid.c#4 integrate
.. //depot/projects/usb/src/sys/dev/mxge/eth_z8e.dat.gz.uu#4 integrate
.. //depot/projects/usb/src/sys/dev/mxge/ethp_z8e.dat.gz.uu#4 integrate
.. //depot/projects/usb/src/sys/dev/mxge/if_mxge.c#4 integrate
.. //depot/projects/usb/src/sys/dev/mxge/mxge_mcp.h#3 integrate
.. //depot/projects/usb/src/sys/dev/nve/if_nve.c#3 integrate
.. //depot/projects/usb/src/sys/dev/pccbb/pccbb.c#5 integrate
.. //depot/projects/usb/src/sys/dev/pci/pci.c#6 integrate
.. //depot/projects/usb/src/sys/dev/pci/pci_if.m#3 integrate
.. //depot/projects/usb/src/sys/dev/pci/pci_pci.c#4 integrate
.. //depot/projects/usb/src/sys/dev/pci/pci_private.h#3 integrate
.. //depot/projects/usb/src/sys/dev/pci/pcib_if.m#3 integrate
.. //depot/projects/usb/src/sys/dev/pci/pcib_private.h#3 integrate
.. //depot/projects/usb/src/sys/dev/pci/pcireg.h#5 integrate
.. //depot/projects/usb/src/sys/dev/pci/pcivar.h#5 integrate
.. //depot/projects/usb/src/sys/dev/sk/if_sk.c#5 integrate
.. //depot/projects/usb/src/sys/dev/sound/pci/emu10kx.c#5 integrate
.. //depot/projects/usb/src/sys/dev/sound/pci/hda/hdac.c#3 integrate
.. //depot/projects/usb/src/sys/dev/sound/pci/hda/hdac_private.h#3 integrate
.. //depot/projects/usb/src/sys/dev/sound/pci/ich.c#5 integrate
.. //depot/projects/usb/src/sys/dev/sound/pcm/buffer.h#5 integrate
.. //depot/projects/usb/src/sys/dev/sound/pcm/sound.h#5 integrate
.. //depot/projects/usb/src/sys/dev/stge/if_stge.c#4 integrate
.. //depot/projects/usb/src/sys/dev/stge/if_stgereg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_cl.h#2 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_cl_externs.h#2 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_cl_fwif.h#2 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_cl_fwimg.c#2 delete
.. //depot/projects/usb/src/sys/dev/twa/tw_cl_init.c#2 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_cl_intr.c#2 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_cl_io.c#2 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_cl_ioctl.h#2 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_cl_misc.c#2 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_cl_share.h#2 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_osl.h#2 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_osl_cam.c#4 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_osl_externs.h#2 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_osl_freebsd.c#4 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_osl_includes.h#3 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_osl_inline.h#3 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_osl_ioctl.h#2 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_osl_share.h#3 integrate
.. //depot/projects/usb/src/sys/dev/twa/tw_osl_types.h#2 integrate
.. //depot/projects/usb/src/sys/dev/uart/uart_bus_pci.c#3 integrate
.. //depot/projects/usb/src/sys/dev/uart/uart_kbd_sun.c#4 integrate
.. //depot/projects/usb/src/sys/fs/nullfs/null_vnops.c#4 integrate
.. //depot/projects/usb/src/sys/fs/procfs/procfs_ioctl.c#4 integrate
.. //depot/projects/usb/src/sys/fs/smbfs/smbfs_io.c#3 integrate
.. //depot/projects/usb/src/sys/fs/umapfs/umap_vnops.c#3 integrate
.. //depot/projects/usb/src/sys/fs/unionfs/union_vnops.c#5 integrate
.. //depot/projects/usb/src/sys/geom/eli/g_eli_ctl.c#5 integrate
.. //depot/projects/usb/src/sys/geom/geom.h#4 integrate
.. //depot/projects/usb/src/sys/geom/geom_dev.c#4 integrate
.. //depot/projects/usb/src/sys/geom/geom_disk.c#4 integrate
.. //depot/projects/usb/src/sys/geom/geom_disk.h#3 integrate
.. //depot/projects/usb/src/sys/geom/geom_io.c#5 integrate
.. //depot/projects/usb/src/sys/geom/geom_slice.c#3 integrate
.. //depot/projects/usb/src/sys/geom/geom_subr.c#3 integrate
.. //depot/projects/usb/src/sys/geom/part/g_part.c#2 integrate
.. //depot/projects/usb/src/sys/geom/part/g_part.h#2 integrate
.. //depot/projects/usb/src/sys/geom/part/g_part_apm.c#2 integrate
.. //depot/projects/usb/src/sys/geom/part/g_part_gpt.c#2 integrate
.. //depot/projects/usb/src/sys/i386/Makefile#2 integrate
.. //depot/projects/usb/src/sys/i386/acpica/madt.c#4 integrate
.. //depot/projects/usb/src/sys/i386/conf/GENERIC#5 integrate
.. //depot/projects/usb/src/sys/i386/conf/NOTES#5 integrate
.. //depot/projects/usb/src/sys/i386/conf/PAE#3 integrate
.. //depot/projects/usb/src/sys/i386/i386/intr_machdep.c#5 integrate
.. //depot/projects/usb/src/sys/i386/i386/io_apic.c#4 integrate
.. //depot/projects/usb/src/sys/i386/i386/local_apic.c#5 integrate
.. //depot/projects/usb/src/sys/i386/i386/machdep.c#5 integrate
.. //depot/projects/usb/src/sys/i386/i386/mp_machdep.c#5 integrate
.. //depot/projects/usb/src/sys/i386/i386/mptable.c#3 integrate
.. //depot/projects/usb/src/sys/i386/i386/mptable_pci.c#3 integrate
.. //depot/projects/usb/src/sys/i386/i386/msi.c#3 integrate
.. //depot/projects/usb/src/sys/i386/i386/nexus.c#5 integrate
.. //depot/projects/usb/src/sys/i386/i386/pmap.c#5 integrate
.. //depot/projects/usb/src/sys/i386/include/apicvar.h#4 integrate
.. //depot/projects/usb/src/sys/i386/include/intr_machdep.h#4 integrate
.. //depot/projects/usb/src/sys/i386/include/vmparam.h#3 integrate
.. //depot/projects/usb/src/sys/i386/isa/atpic.c#3 integrate
.. //depot/projects/usb/src/sys/i386/linux/linux_machdep.c#5 integrate
.. //depot/projects/usb/src/sys/i386/pci/pci_bus.c#4 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/machdep.c#4 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/pmap.c#5 integrate
.. //depot/projects/usb/src/sys/ia64/include/vmparam.h#4 integrate
.. //depot/projects/usb/src/sys/kern/Make.tags.inc#4 integrate
.. //depot/projects/usb/src/sys/kern/imgact_elf.c#3 integrate
.. //depot/projects/usb/src/sys/kern/init_main.c#5 integrate
.. //depot/projects/usb/src/sys/kern/kern_condvar.c#4 integrate
.. //depot/projects/usb/src/sys/kern/kern_descrip.c#5 integrate
.. //depot/projects/usb/src/sys/kern/kern_exec.c#5 integrate
.. //depot/projects/usb/src/sys/kern/kern_exit.c#5 integrate
.. //depot/projects/usb/src/sys/kern/kern_fork.c#5 integrate
.. //depot/projects/usb/src/sys/kern/kern_intr.c#5 integrate
.. //depot/projects/usb/src/sys/kern/kern_lock.c#5 integrate
.. //depot/projects/usb/src/sys/kern/kern_malloc.c#5 integrate
.. //depot/projects/usb/src/sys/kern/kern_mib.c#3 integrate
.. //depot/projects/usb/src/sys/kern/kern_mutex.c#5 integrate
.. //depot/projects/usb/src/sys/kern/kern_resource.c#5 integrate
.. //depot/projects/usb/src/sys/kern/kern_rwlock.c#5 integrate
.. //depot/projects/usb/src/sys/kern/kern_sx.c#5 integrate
.. //depot/projects/usb/src/sys/kern/kern_synch.c#5 integrate
.. //depot/projects/usb/src/sys/kern/kern_thread.c#5 integrate
.. //depot/projects/usb/src/sys/kern/kern_timeout.c#3 integrate
.. //depot/projects/usb/src/sys/kern/subr_lock.c#4 integrate
.. //depot/projects/usb/src/sys/kern/subr_rman.c#5 integrate
.. //depot/projects/usb/src/sys/kern/subr_sleepqueue.c#3 integrate
.. //depot/projects/usb/src/sys/kern/subr_trap.c#4 integrate
.. //depot/projects/usb/src/sys/kern/subr_turnstile.c#4 integrate
.. //depot/projects/usb/src/sys/kern/sys_generic.c#5 integrate
.. //depot/projects/usb/src/sys/kern/uipc_debug.c#2 integrate
.. //depot/projects/usb/src/sys/kern/uipc_domain.c#3 integrate
.. //depot/projects/usb/src/sys/kern/uipc_mbuf.c#5 integrate
.. //depot/projects/usb/src/sys/kern/uipc_sockbuf.c#3 integrate
.. //depot/projects/usb/src/sys/kern/uipc_socket.c#5 integrate
.. //depot/projects/usb/src/sys/kern/uipc_syscalls.c#5 integrate
.. //depot/projects/usb/src/sys/kern/uipc_usrreq.c#5 integrate
.. //depot/projects/usb/src/sys/kern/vfs_bio.c#5 integrate
.. //depot/projects/usb/src/sys/kern/vfs_default.c#4 integrate
.. //depot/projects/usb/src/sys/kern/vfs_subr.c#5 integrate
.. //depot/projects/usb/src/sys/kern/vfs_syscalls.c#5 integrate
.. //depot/projects/usb/src/sys/kern/vfs_vnops.c#5 integrate
.. //depot/projects/usb/src/sys/kern/vnode_if.src#5 integrate
.. //depot/projects/usb/src/sys/modules/Makefile#6 integrate
.. //depot/projects/usb/src/sys/modules/crypto/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/em/Makefile#2 integrate
.. //depot/projects/usb/src/sys/modules/hptiop/Makefile#1 branch
.. //depot/projects/usb/src/sys/modules/mfi/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/mfi/mfip/Makefile#1 branch
.. //depot/projects/usb/src/sys/modules/netgraph/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/netgraph/car/Makefile#1 branch
.. //depot/projects/usb/src/sys/modules/twa/Makefile#2 integrate
.. //depot/projects/usb/src/sys/net/ethernet.h#4 integrate
.. //depot/projects/usb/src/sys/net/ieee8023ad_lacp.c#2 integrate
.. //depot/projects/usb/src/sys/net/ieee8023ad_lacp.h#2 integrate
.. //depot/projects/usb/src/sys/net/if.c#5 integrate
.. //depot/projects/usb/src/sys/net/if.h#3 integrate
.. //depot/projects/usb/src/sys/net/if_lagg.c#2 integrate
.. //depot/projects/usb/src/sys/net/if_lagg.h#2 integrate
.. //depot/projects/usb/src/sys/net/if_var.h#4 integrate
.. //depot/projects/usb/src/sys/net/pfkeyv2.h#2 integrate
.. //depot/projects/usb/src/sys/net80211/ieee80211_amrr.c#2 integrate
.. //depot/projects/usb/src/sys/netatalk/ddp_usrreq.c#4 integrate
.. //depot/projects/usb/src/sys/netgraph/ng_car.c#1 branch
.. //depot/projects/usb/src/sys/netgraph/ng_car.h#1 branch
.. //depot/projects/usb/src/sys/netgraph/ng_fec.c#3 integrate
.. //depot/projects/usb/src/sys/netgraph/ng_mppc.c#2 integrate
.. //depot/projects/usb/src/sys/netgraph/ng_socket.c#4 integrate
.. //depot/projects/usb/src/sys/netinet/icmp6.h#2 integrate
.. //depot/projects/usb/src/sys/netinet/if_ether.c#5 integrate
.. //depot/projects/usb/src/sys/netinet/in.c#4 integrate
.. //depot/projects/usb/src/sys/netinet/in_cksum.c#2 integrate
.. //depot/projects/usb/src/sys/netinet/in_gif.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/in_pcb.c#5 integrate
.. //depot/projects/usb/src/sys/netinet/in_pcb.h#4 integrate
.. //depot/projects/usb/src/sys/netinet/in_rmx.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/ip.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/ip_divert.c#4 integrate
.. //depot/projects/usb/src/sys/netinet/ip_dummynet.c#4 integrate
.. //depot/projects/usb/src/sys/netinet/ip_ecn.c#2 integrate
.. //depot/projects/usb/src/sys/netinet/ip_encap.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/ip_fw.h#4 integrate
.. //depot/projects/usb/src/sys/netinet/ip_fw2.c#5 integrate
.. //depot/projects/usb/src/sys/netinet/ip_icmp.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/ip_id.c#2 integrate
.. //depot/projects/usb/src/sys/netinet/ip_input.c#5 integrate
.. //depot/projects/usb/src/sys/netinet/ip_ipsec.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/ip_mroute.c#4 integrate
.. //depot/projects/usb/src/sys/netinet/ip_options.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/ip_options.h#2 integrate
.. //depot/projects/usb/src/sys/netinet/ip_output.c#5 integrate
.. //depot/projects/usb/src/sys/netinet/libalias/alias_proxy.c#4 integrate
.. //depot/projects/usb/src/sys/netinet/raw_ip.c#5 integrate
.. //depot/projects/usb/src/sys/netinet/sctp.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_asconf.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_asconf.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_auth.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_auth.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_bsd_addr.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_bsd_addr.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_constants.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_crc32.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_crc32.h#2 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_header.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_indata.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_indata.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_input.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_input.h#2 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_lock_bsd.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_os.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_os_bsd.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_output.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_output.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_pcb.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_pcb.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_peeloff.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_peeloff.h#2 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_structs.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_sysctl.c#2 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_sysctl.h#2 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_timer.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_timer.h#2 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_uio.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_usrreq.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_var.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctputil.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/sctputil.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/tcp.h#3 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_debug.c#2 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_fsm.h#2 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_input.c#5 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_output.c#5 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_reass.c#1 branch
.. //depot/projects/usb/src/sys/netinet/tcp_sack.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_subr.c#5 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_syncache.c#5 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_timer.c#4 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_timer.h#5 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_timewait.c#1 branch
.. //depot/projects/usb/src/sys/netinet/tcp_usrreq.c#5 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_var.h#4 integrate
.. //depot/projects/usb/src/sys/netinet/udp_usrreq.c#5 integrate
.. //depot/projects/usb/src/sys/netinet6/esp_camellia.c#1 branch
.. //depot/projects/usb/src/sys/netinet6/esp_camellia.h#1 branch
.. //depot/projects/usb/src/sys/netinet6/esp_core.c#3 integrate
.. //depot/projects/usb/src/sys/netinet6/icmp6.c#5 integrate
.. //depot/projects/usb/src/sys/netinet6/in6_pcb.c#5 integrate
.. //depot/projects/usb/src/sys/netinet6/in6_pcb.h#2 integrate
.. //depot/projects/usb/src/sys/netinet6/in6_proto.c#5 integrate
.. //depot/projects/usb/src/sys/netinet6/in6_src.c#5 integrate
.. //depot/projects/usb/src/sys/netinet6/ip6_input.c#5 integrate
.. //depot/projects/usb/src/sys/netinet6/nd6.c#5 integrate
.. //depot/projects/usb/src/sys/netinet6/nd6_nbr.c#4 integrate
.. //depot/projects/usb/src/sys/netinet6/raw_ip6.c#4 integrate
.. //depot/projects/usb/src/sys/netinet6/sctp6_usrreq.c#3 integrate
.. //depot/projects/usb/src/sys/netinet6/sctp6_var.h#3 integrate
.. //depot/projects/usb/src/sys/netipsec/xform_esp.c#2 integrate
.. //depot/projects/usb/src/sys/netipx/ipx.c#3 integrate
.. //depot/projects/usb/src/sys/netipx/ipx.h#3 integrate
.. //depot/projects/usb/src/sys/netipx/ipx_cksum.c#3 integrate
.. //depot/projects/usb/src/sys/netipx/ipx_if.h#3 integrate
.. //depot/projects/usb/src/sys/netipx/ipx_input.c#3 integrate
.. //depot/projects/usb/src/sys/netipx/ipx_outputfl.c#3 integrate
.. //depot/projects/usb/src/sys/netipx/ipx_pcb.c#3 integrate
.. //depot/projects/usb/src/sys/netipx/ipx_pcb.h#3 integrate
.. //depot/projects/usb/src/sys/netipx/ipx_usrreq.c#4 integrate
.. //depot/projects/usb/src/sys/netipx/ipx_var.h#3 integrate
.. //depot/projects/usb/src/sys/netipx/spx_debug.c#3 integrate
.. //depot/projects/usb/src/sys/netipx/spx_debug.h#3 integrate
.. //depot/projects/usb/src/sys/nfsclient/nfs_bio.c#4 integrate
.. //depot/projects/usb/src/sys/nfsclient/nfs_socket.c#5 integrate
.. //depot/projects/usb/src/sys/opencrypto/cryptodev.c#3 integrate
.. //depot/projects/usb/src/sys/opencrypto/cryptodev.h#4 integrate
.. //depot/projects/usb/src/sys/opencrypto/cryptosoft.c#4 integrate
.. //depot/projects/usb/src/sys/opencrypto/xform.c#3 integrate
.. //depot/projects/usb/src/sys/opencrypto/xform.h#2 integrate
.. //depot/projects/usb/src/sys/pc98/conf/GENERIC#6 integrate
.. //depot/projects/usb/src/sys/pc98/pc98/machdep.c#5 integrate
.. //depot/projects/usb/src/sys/pci/if_tl.c#4 integrate
.. //depot/projects/usb/src/sys/powerpc/include/vmparam.h#3 integrate
.. //depot/projects/usb/src/sys/powerpc/powerpc/machdep.c#5 integrate
.. //depot/projects/usb/src/sys/security/audit/audit_ioctl.h#3 integrate
.. //depot/projects/usb/src/sys/sparc64/include/profile.h#2 integrate
.. //depot/projects/usb/src/sys/sparc64/include/vmparam.h#3 integrate
.. //depot/projects/usb/src/sys/sparc64/sparc64/machdep.c#4 integrate
.. //depot/projects/usb/src/sys/sparc64/sparc64/pmap.c#4 integrate
.. //depot/projects/usb/src/sys/sparc64/sparc64/upa.c#3 integrate
.. //depot/projects/usb/src/sys/sun4v/include/profile.h#2 integrate
.. //depot/projects/usb/src/sys/sun4v/include/vmparam.h#3 integrate
.. //depot/projects/usb/src/sys/sun4v/sun4v/machdep.c#2 integrate
.. //depot/projects/usb/src/sys/sun4v/sun4v/pmap.c#2 integrate
.. //depot/projects/usb/src/sys/sun4v/sun4v/tsb.c#2 integrate
.. //depot/projects/usb/src/sys/sun4v/sun4v/tte_hash.c#2 integrate
.. //depot/projects/usb/src/sys/sys/callout.h#2 integrate
.. //depot/projects/usb/src/sys/sys/disk.h#2 integrate
.. //depot/projects/usb/src/sys/sys/filedesc.h#3 integrate
.. //depot/projects/usb/src/sys/sys/interrupt.h#4 integrate
.. //depot/projects/usb/src/sys/sys/ioctl_compat.h#2 integrate
.. //depot/projects/usb/src/sys/sys/lockf.h#2 integrate
.. //depot/projects/usb/src/sys/sys/param.h#5 integrate
.. //depot/projects/usb/src/sys/sys/rwlock.h#5 integrate
.. //depot/projects/usb/src/sys/sys/socketvar.h#4 integrate
.. //depot/projects/usb/src/sys/sys/sx.h#4 integrate
.. //depot/projects/usb/src/sys/sys/sysent.h#5 integrate
.. //depot/projects/usb/src/sys/sys/vmmeter.h#3 integrate
.. //depot/projects/usb/src/sys/sys/vnode.h#4 integrate
.. //depot/projects/usb/src/sys/ufs/ffs/ffs_softdep.c#4 integrate
.. //depot/projects/usb/src/sys/ufs/ffs/ffs_vnops.c#4 integrate
.. //depot/projects/usb/src/sys/vm/swap_pager.c#5 integrate
.. //depot/projects/usb/src/sys/vm/uma_core.c#5 integrate
.. //depot/projects/usb/src/sys/vm/uma_int.h#2 integrate
.. //depot/projects/usb/src/sys/vm/vm_contig.c#5 integrate
.. //depot/projects/usb/src/sys/vm/vm_fault.c#5 integrate
.. //depot/projects/usb/src/sys/vm/vm_glue.c#4 integrate
.. //depot/projects/usb/src/sys/vm/vm_map.c#5 integrate
.. //depot/projects/usb/src/sys/vm/vm_meter.c#4 integrate
.. //depot/projects/usb/src/sys/vm/vm_mmap.c#4 integrate
.. //depot/projects/usb/src/sys/vm/vm_object.c#5 integrate
.. //depot/projects/usb/src/sys/vm/vm_page.c#5 integrate
.. //depot/projects/usb/src/sys/vm/vm_page.h#5 integrate
.. //depot/projects/usb/src/sys/vm/vm_pageout.c#5 integrate
.. //depot/projects/usb/src/sys/vm/vm_pageq.c#4 integrate
.. //depot/projects/usb/src/sys/vm/vm_zeroidle.c#5 integrate
.. //depot/projects/usb/src/sys/vm/vnode_pager.c#4 integrate

Differences ...

==== //depot/projects/usb/src/sys/amd64/acpica/madt.c#4 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__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 <sys/param.h>
 #include <sys/systm.h>
@@ -53,21 +53,18 @@
 #include <dev/acpica/acpivar.h>
 #include <dev/pci/pcivar.h>
 
-#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/usb/src/sys/amd64/amd64/intr_machdep.c#5 (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 <sys/param.h>
 #include <sys/bus.h>
 #include <sys/interrupt.h>
-#include <sys/lock.h>
 #include <sys/ktr.h>
 #include <sys/kernel.h>
+#include <sys/lock.h>
 #include <sys/mutex.h>
 #include <sys/proc.h>
 #include <sys/syslog.h>
 #include <sys/systm.h>
+#include <sys/sx.h>
 #include <machine/clock.h>
 #include <machine/intr_machdep.h>
 #include <machine/smp.h>
@@ -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/usb/src/sys/amd64/amd64/io_apic.c#4 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__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/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.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 <ddb/ddb.h>
 #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. */

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list