PERFORCE change 138477 for review

Robert Watson rwatson at FreeBSD.org
Mon Mar 24 22:15:59 UTC 2008


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

Change 138477 by rwatson at rwatson_cinnamon on 2008/03/24 22:15:00

	Integrate zcopybpf branch, looping back zero-copy BPF buffer
	support.

Affected files ...

.. //depot/projects/zcopybpf/src/share/man/man4/bpf.4#11 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/acpica/madt.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/amd64/cpu_switch.S#6 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/amd64/genassym.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/amd64/intr_machdep.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/amd64/local_apic.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/amd64/machdep.c#10 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/amd64/mptable.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/amd64/nexus.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/amd64/pmap.c#15 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/ia32/ia32_signal.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/include/atomic.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/include/intr_machdep.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/include/pcb.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/isa/atpic.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/linux32/linux32_proto.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/linux32/linux32_syscall.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/linux32/linux32_sysent.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/linux32/syscalls.master#5 integrate
.. //depot/projects/zcopybpf/src/sys/arm/arm/elf_trampoline.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/arm/arm/intr.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/arm/arm/machdep.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/arm/arm/vm_machdep.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/arm/conf/AVILA#8 integrate
.. //depot/projects/zcopybpf/src/sys/arm/conf/AVILA.hints#2 integrate
.. //depot/projects/zcopybpf/src/sys/arm/xscale/ixp425/if_npe.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/arm/xscale/ixp425/ixdp425_pci.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/cam/scsi/scsi_ses.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/compat/linux/linux_futex.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/compat/linux/linux_futex.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/compat/linux/linux_misc.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/compat/svr4/svr4_fcntl.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/conf/NOTES#18 integrate
.. //depot/projects/zcopybpf/src/sys/conf/files#22 integrate
.. //depot/projects/zcopybpf/src/sys/conf/options#17 integrate
.. //depot/projects/zcopybpf/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/contrib/opensolaris/uts/common/os/callb.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/contrib/opensolaris/uts/common/os/taskq.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/aac/aac.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/aac/aac_cam.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/aac/aac_debug.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/aac/aac_disk.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/dev/aac/aac_pci.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/dev/aac/aacvar.h#4 integrate
.. //depot/projects/zcopybpf/src/sys/dev/ata/ata-all.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/dev/ata/ata-all.h#8 integrate
.. //depot/projects/zcopybpf/src/sys/dev/ata/ata-disk.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/dev/ata/ata-disk.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/ata/ata-raid.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/dev/ath/if_ath.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/common/cxgb_ael1002.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/common/cxgb_common.h#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/common/cxgb_version.h#4 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/cxgb_ioctl.h#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/cxgb_main.c#10 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/cxgb_offload.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/cxgb_sge.c#11 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/ulp/tom/cxgb_cpl_socket.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/ulp/tom/cxgb_ddp.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/ulp/tom/cxgb_defs.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/dc/if_dc.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/dev/dc/if_dcreg.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/drm/drm_pciids.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/drm/i915_dma.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/dev/fxp/if_fxp.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/dev/gem/if_gem.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/dev/gem/if_gem_pci.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/gem/if_gemreg.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/dev/gem/if_gemvar.h#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/hwpmc/hwpmc_amd.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/mfi/mfi.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/dev/ofw/ofw_console.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/re/if_re.c#12 integrate
.. //depot/projects/zcopybpf/src/sys/dev/syscons/syscons.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/syscons/sysmouse.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/ehci.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/if_rum.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/if_zyd.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/ohci.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/usbdevs#16 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/usbdi.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/usbdi.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/usbdivar.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/fs/devfs/devfs_rule.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/fs/msdosfs/msdosfs_vfsops.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/gdb/gdb_cons.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/geom/geom.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/geom/geom_subr.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/geom/part/g_part.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/geom/part/g_part.h#6 integrate
.. //depot/projects/zcopybpf/src/sys/geom/part/g_part_apm.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/geom/part/g_part_bsd.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/geom/part/g_part_gpt.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/geom/part/g_part_mbr.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/geom/part/g_part_vtoc8.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/geom/vinum/geom_vinum_drive.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/i386/acpica/acpi_wakeup.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/i386/acpica/madt.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/i386/cpufreq/est.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/i386/cpufreq/p4tcc.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/i386/i386/intr_machdep.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/i386/i386/local_apic.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/i386/i386/machdep.c#10 integrate
.. //depot/projects/zcopybpf/src/sys/i386/i386/mp_machdep.c#11 integrate
.. //depot/projects/zcopybpf/src/sys/i386/i386/mptable.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/i386/i386/nexus.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/i386/i386/pmap.c#14 integrate
.. //depot/projects/zcopybpf/src/sys/i386/i386/vm_machdep.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/i386/include/atomic.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/i386/include/intr_machdep.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/i386/isa/atpic.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/i386/linux/linux_proto.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/i386/linux/linux_syscall.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/i386/linux/linux_sysent.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/i386/linux/syscalls.master#5 integrate
.. //depot/projects/zcopybpf/src/sys/i386/xbox/xbox.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/ia64/ia64/interrupt.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/ia64/ia64/machdep.c#10 integrate
.. //depot/projects/zcopybpf/src/sys/ia64/ia64/sscdisk.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/ia64/include/atomic.h#4 integrate
.. //depot/projects/zcopybpf/src/sys/ia64/isa/isa_dma.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/kern/bus_if.m#3 integrate
.. //depot/projects/zcopybpf/src/sys/kern/init_main.c#10 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_alq.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_clock.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_conf.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_cpuset.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_descrip.c#13 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_event.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_exit.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_fork.c#11 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_idle.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_intr.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_kthread.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_linker.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_lockf.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_malloc.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_mbuf.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_module.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_ntptime.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_poll.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_proc.c#10 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_resource.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_shutdown.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_sig.c#12 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_switch.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_synch.c#11 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_tc.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_thr.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_thread.c#12 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_timeout.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/kern/link_elf.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/kern/link_elf_obj.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/sched_4bsd.c#12 integrate
.. //depot/projects/zcopybpf/src/sys/kern/sched_ule.c#18 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_autoconf.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_bus.c#10 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_eventhandler.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_log.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_prof.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_sleepqueue.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_smp.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_trap.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_witness.c#11 integrate
.. //depot/projects/zcopybpf/src/sys/kern/sys_generic.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/kern/sys_process.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/tty.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/tty_cons.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/tty_pts.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/kern/tty_pty.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/tty_subr.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/kern/tty_tty.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/kern/uipc_domain.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/kern/uipc_socket.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_acl.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_bio.c#12 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_cache.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_cluster.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_default.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_hash.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_lookup.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_mount.c#15 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_subr.c#13 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_vnops.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/modules/geom/geom_part/Makefile#2 integrate
.. //depot/projects/zcopybpf/src/sys/modules/geom/geom_part/geom_part_apm/Makefile#1 branch
.. //depot/projects/zcopybpf/src/sys/modules/geom/geom_part/geom_part_bsd/Makefile#1 branch
.. //depot/projects/zcopybpf/src/sys/modules/geom/geom_part/geom_part_gpt/Makefile#1 branch
.. //depot/projects/zcopybpf/src/sys/modules/geom/geom_part/geom_part_mbr/Makefile#1 branch
.. //depot/projects/zcopybpf/src/sys/modules/geom/geom_part/geom_part_vtoc8/Makefile#1 branch
.. //depot/projects/zcopybpf/src/sys/net/bpf.c#51 integrate
.. //depot/projects/zcopybpf/src/sys/net/bpf.h#26 integrate
.. //depot/projects/zcopybpf/src/sys/net/bpf_buffer.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/net/bpf_buffer.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/net/bpf_zerocopy.c#34 integrate
.. //depot/projects/zcopybpf/src/sys/net/bpf_zerocopy.h#12 integrate
.. //depot/projects/zcopybpf/src/sys/net/bpfdesc.h#13 integrate
.. //depot/projects/zcopybpf/src/sys/net/ieee8023ad_lacp.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/net/ieee8023ad_lacp.h#6 integrate
.. //depot/projects/zcopybpf/src/sys/net/if.c#10 integrate
.. //depot/projects/zcopybpf/src/sys/net/if_ethersubr.c#12 integrate
.. //depot/projects/zcopybpf/src/sys/net/if_gre.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/net/if_lagg.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/net/netisr.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/net/rtsock.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/netatm/ipatm/ipatm_load.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/netatm/sigpvc/sigpvc_if.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/netatm/spans/spans_if.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/netatm/uni/uni_load.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/netgraph/ng_base.c#10 integrate
.. //depot/projects/zcopybpf/src/sys/netgraph/ng_l2tp.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/netgraph/ng_tee.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/netinet/in_pcb.c#10 integrate
.. //depot/projects/zcopybpf/src/sys/netinet/in_pcb.h#8 integrate
.. //depot/projects/zcopybpf/src/sys/netinet/ip_fw2.c#13 integrate
.. //depot/projects/zcopybpf/src/sys/netinet/libalias/alias_irc.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/netipsec/ipsec.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/netipsec/key.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/netipsec/xform_tcp.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/nfs4client/nfs4_vfsops.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/nfs4client/nfs4_vnops.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/nfsclient/nfs_diskless.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/nfsclient/nfs_subs.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/nfsclient/nfs_vfsops.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/nfsclient/nfs_vnops.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/nfsserver/nfs_serv.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/nfsserver/nfs_srvsock.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/pc98/pc98/machdep.c#10 integrate
.. //depot/projects/zcopybpf/src/sys/pci/if_rlreg.h#8 integrate
.. //depot/projects/zcopybpf/src/sys/pci/if_xl.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/pci/if_xlreg.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/powerpc/aim/machdep.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/powerpc/booke/machdep.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/powerpc/booke/vm_machdep.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/powerpc/include/atomic.h#4 integrate
.. //depot/projects/zcopybpf/src/sys/powerpc/include/gdb_machdep.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/powerpc/powerpc/gdb_machdep.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/powerpc/powerpc/intr_machdep.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/security/audit/audit.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/sparc64/include/atomic.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/sparc64/include/bus.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/sparc64/sparc64/bus_machdep.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/sparc64/sparc64/intr_machdep.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/sparc64/sparc64/vm_machdep.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/sun4v/include/atomic.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/sun4v/sun4v/intr_machdep.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/sys/aac_ioctl.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/sys/ata.h#6 integrate
.. //depot/projects/zcopybpf/src/sys/sys/buf.h#6 integrate
.. //depot/projects/zcopybpf/src/sys/sys/bufobj.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/sys/bus.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/sys/bus_dma.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/sys/conf.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/sys/eventhandler.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/sys/interrupt.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/sys/kernel.h#7 integrate
.. //depot/projects/zcopybpf/src/sys/sys/mbuf.h#11 integrate
.. //depot/projects/zcopybpf/src/sys/sys/module.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/sys/param.h#16 integrate
.. //depot/projects/zcopybpf/src/sys/sys/proc.h#14 integrate
.. //depot/projects/zcopybpf/src/sys/sys/resourcevar.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/sys/runq.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/sys/rwlock.h#8 integrate
.. //depot/projects/zcopybpf/src/sys/sys/sched.h#6 integrate
.. //depot/projects/zcopybpf/src/sys/sys/sysctl.h#7 integrate
.. //depot/projects/zcopybpf/src/sys/sys/taskqueue.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/sys/vnode.h#8 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_inode.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_rawread.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_snapshot.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_softdep.c#13 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_vfsops.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_vnops.c#11 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_fault.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_glue.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_init.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_meter.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_mmap.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_page.c#12 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_page.h#7 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_pageout.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_pageq.c#5 delete
.. //depot/projects/zcopybpf/src/sys/vm/vm_zeroidle.c#6 integrate
.. //depot/projects/zcopybpf/src/usr.sbin/netstat/bpf.c#9 integrate
.. //depot/projects/zcopybpf/src/usr.sbin/netstat/inet6.c#5 integrate

Differences ...

==== //depot/projects/zcopybpf/src/share/man/man4/bpf.4#11 (text+ko) ====

@@ -47,7 +47,7 @@
 .\" This document is derived in part from the enet man page (enet.4)
 .\" distributed with 4.3BSD Unix.
 .\"
-.\" $FreeBSD: src/share/man/man4/bpf.4,v 1.48 2007/02/26 22:24:14 jkim Exp $
+.\" $FreeBSD: src/share/man/man4/bpf.4,v 1.49 2008/03/24 13:49:17 csjp Exp $
 .\"
 .Dd February 26, 2007
 .Dt BPF 4

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

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/acpica/madt.c,v 1.25 2008/01/31 16:51:42 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/acpica/madt.c,v 1.26 2008/03/16 10:58:02 rwatson Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -409,7 +409,7 @@
 	apic_register_enumerator(&madt_enumerator);
 }
 SYSINIT(madt_register, SI_SUB_TUNABLES - 1, SI_ORDER_FIRST,
-    madt_register, NULL)
+    madt_register, NULL);
 
 /*
  * Call the handler routine for each entry in the MADT table.
@@ -779,4 +779,4 @@
 			    la->la_acpi_id);
 	}
 }
-SYSINIT(madt_set_ids, SI_SUB_CPU, SI_ORDER_ANY, madt_set_ids, NULL)
+SYSINIT(madt_set_ids, SI_SUB_CPU, SI_ORDER_ANY, madt_set_ids, NULL);

==== //depot/projects/zcopybpf/src/sys/amd64/amd64/cpu_switch.S#6 (text+ko) ====

@@ -30,7 +30,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.160 2007/08/22 05:06:14 jkoshy Exp $
+ * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.161 2008/03/23 23:09:06 peter Exp $
  */
 
 #include <machine/asmacros.h>
@@ -69,16 +69,20 @@
  * %rsi = newtd
  */
 ENTRY(cpu_throw)
+	testq	%rdi,%rdi
+	jnz	1f
+	movq	PCPU(IDLETHREAD),%rdi
+1:
+	movq	TD_PCB(%rdi),%r8		/* Old pcb */
 	movl	PCPU(CPUID), %eax
-	testq	%rdi,%rdi			/* no thread? */
-	jz	1f
+	movq	PCB_FSBASE(%r8),%r9
+	movq	PCB_GSBASE(%r8),%r10
 	/* release bit from old pm_active */
 	movq	TD_PROC(%rdi), %rdx		/* oldtd->td_proc */
 	movq	P_VMSPACE(%rdx), %rdx		/* proc->p_vmspace */
 	LK btrl	%eax, VM_PMAP+PM_ACTIVE(%rdx)	/* clear old */
-1:
-	movq	TD_PCB(%rsi),%rdx		/* newtd->td_proc */
-	movq	PCB_CR3(%rdx),%rdx
+	movq	TD_PCB(%rsi),%r8		/* newtd->td_proc */
+	movq	PCB_CR3(%r8),%rdx
 	movq	%rdx,%cr3			/* new address space */
 	jmp	swact
 END(cpu_throw)
@@ -97,43 +101,24 @@
 	movq	TD_PCB(%rdi),%r8
 
 	movq	(%rsp),%rax			/* Hardware registers */
+	movq	%r15,PCB_R15(%r8)
+	movq	%r14,PCB_R14(%r8)
+	movq	%r13,PCB_R13(%r8)
+	movq	%r12,PCB_R12(%r8)
+	movq	%rbp,PCB_RBP(%r8)
+	movq	%rsp,PCB_RSP(%r8)
+	movq	%rbx,PCB_RBX(%r8)
 	movq	%rax,PCB_RIP(%r8)
-	movq	%rbx,PCB_RBX(%r8)
-	movq	%rsp,PCB_RSP(%r8)
-	movq	%rbp,PCB_RBP(%r8)
-	movq	%r12,PCB_R12(%r8)
-	movq	%r13,PCB_R13(%r8)
-	movq	%r14,PCB_R14(%r8)
-	movq	%r15,PCB_R15(%r8)
+	movq	PCB_FSBASE(%r8),%r9
+	movq	PCB_GSBASE(%r8),%r10
 
 	testl	$PCB_32BIT,PCB_FLAGS(%r8)
-	jz	1f				/* no, skip over */
-
-	/* Save userland %gs */
-	movl	%gs,PCB_GS(%r8)
-	movq	PCB_GS32P(%r8),%rax
-	movq	(%rax),%rax
-	movq	%rax,PCB_GS32SD(%r8)
+	jnz	store_gs			/* static predict not taken */
+done_store_gs:
 
-1:
-	/* Test if debug registers should be saved. */
 	testl	$PCB_DBREGS,PCB_FLAGS(%r8)
-	jz	1f				/* no, skip over */
-	movq	%dr7,%rax			/* yes, do the save */
-	movq	%rax,PCB_DR7(%r8)
-	andq	$0x0000fc00, %rax		/* disable all watchpoints */
-	movq	%rax,%dr7
-	movq	%dr6,%rax
-	movq	%rax,PCB_DR6(%r8)
-	movq	%dr3,%rax
-	movq	%rax,PCB_DR3(%r8)
-	movq	%dr2,%rax
-	movq	%rax,PCB_DR2(%r8)
-	movq	%dr1,%rax
-	movq	%rax,PCB_DR1(%r8)
-	movq	%dr0,%rax
-	movq	%rax,PCB_DR0(%r8)
-1:
+	jnz	store_dr			/* static predict not taken */
+done_store_dr:
 
 	/* have we used fp, and need a save? */
 	cmpq	%rdi,PCPU(FPCURTHREAD)
@@ -181,82 +166,138 @@
 	cmpq	%rcx, %rdx
 	pause
 	je	1b
-	lfence
 #endif
 	/*
 	 * At this point, we've switched address spaces and are ready
 	 * to load up the rest of the next context.
 	 */
-	movq	TD_PCB(%rsi),%r8
+
+	/* Skip loading user fsbase/gsbase for kthreads */
+	testl	$TDP_KTHREAD,TD_PFLAGS(%rsi)
+	jnz	do_kthread
 
+	cmpq	PCB_FSBASE(%r8),%r9
+	jz	1f
 	/* Restore userland %fs */
 	movl	$MSR_FSBASE,%ecx
 	movl	PCB_FSBASE(%r8),%eax
 	movl	PCB_FSBASE+4(%r8),%edx
 	wrmsr
+1:
 
+	cmpq	PCB_GSBASE(%r8),%r10
+	jz	2f
 	/* Restore userland %gs */
 	movl	$MSR_KGSBASE,%ecx
 	movl	PCB_GSBASE(%r8),%eax
 	movl	PCB_GSBASE+4(%r8),%edx
 	wrmsr
+2:
+do_tss:
 
 	/* Update the TSS_RSP0 pointer for the next interrupt */
 	movq	PCPU(TSSP), %rax
+	movq	%r8, PCPU(RSP0)
+	movq	%r8, PCPU(CURPCB)
 	addq	$COMMON_TSS_RSP0, %rax
-	leaq	-16(%r8), %rbx
-	movq	%rbx, (%rax)
-	movq	%rbx, PCPU(RSP0)
+	movq	%rsi, PCPU(CURTHREAD)		/* into next thread */
+	movq	%r8, (%rax)
 
-	movq	%r8, PCPU(CURPCB)
-	movq	%rsi, PCPU(CURTHREAD)		/* into next thread */
+	/* Test if debug registers should be restored. */
+	testl	$PCB_DBREGS,PCB_FLAGS(%r8)
+	jnz	load_dr				/* static predict not taken */
+done_load_dr:
 
 	testl	$PCB_32BIT,PCB_FLAGS(%r8)
-	jz	1f				/* no, skip over */
+	jnz	load_gs				/* static predict not taken */
+done_load_gs:
+
+	/* Restore context. */
+	movq	PCB_R15(%r8),%r15
+	movq	PCB_R14(%r8),%r14
+	movq	PCB_R13(%r8),%r13
+	movq	PCB_R12(%r8),%r12
+	movq	PCB_RBP(%r8),%rbp
+	movq	PCB_RSP(%r8),%rsp
+	movq	PCB_RBX(%r8),%rbx
+	movq	PCB_RIP(%r8),%rax
+	movq	%rax,(%rsp)
+	ret
+
+	/*
+	 * We order these strangely for several reasons.
+	 * 1: I wanted to use static branch prediction hints
+	 * 2: Most athlon64/opteron cpus don't have them.  They define
+	 *    a forward branch as 'predict not taken'.  Intel cores have
+	 *    the 'rep' prefix to invert this.
+	 * So, to make it work on both forms of cpu we do the detour.
+	 * We use jumps rather than call in order to avoid the stack.
+	 */
+
+do_kthread:
+	/*
+	 * Copy old fs/gsbase to new kthread pcb for future switches
+	 * This maintains curpcb->pcb_[fg]sbase as caches of the MSR
+	 */
+	movq	%r9,PCB_FSBASE(%r8)
+	movq	%r10,PCB_GSBASE(%r8)
+	jmp	do_tss
+
+store_gs:
+	movl	%gs,PCB_GS(%r8)
+	movq	PCB_GS32P(%r8),%rax
+	movq	(%rax),%rax
+	movq	%rax,PCB_GS32SD(%r8)
+	jmp	done_store_gs
 
+load_gs:
 	/* Restore userland %gs while preserving kernel gsbase */
 	movq	PCB_GS32P(%r8),%rax
-	movq	PCB_GS32SD(%r8),%rbx
-	movq	%rbx,(%rax)
+	movq	PCB_GS32SD(%r8),%rcx
+	movq	%rcx,(%rax)
 	movl	$MSR_GSBASE,%ecx
 	rdmsr
 	movl	PCB_GS(%r8),%gs
 	wrmsr
+	jmp	done_load_gs
 
-1:
-	/* Restore context. */
-	movq	PCB_RBX(%r8),%rbx
-	movq	PCB_RSP(%r8),%rsp
-	movq	PCB_RBP(%r8),%rbp
-	movq	PCB_R12(%r8),%r12
-	movq	PCB_R13(%r8),%r13
-	movq	PCB_R14(%r8),%r14
-	movq	PCB_R15(%r8),%r15
-	movq	PCB_RIP(%r8),%rax
-	movq	%rax,(%rsp)
+store_dr:
+	movq	%dr7,%rax			/* yes, do the save */
+	movq	%dr0,%r15
+	movq	%dr1,%r14
+	movq	%dr2,%r13
+	movq	%dr3,%r12
+	movq	%dr6,%r11
+	andq	$0x0000fc00, %rax		/* disable all watchpoints */
+	movq	%r15,PCB_DR0(%r8)
+	movq	%r14,PCB_DR1(%r8)
+	movq	%r13,PCB_DR2(%r8)
+	movq	%r12,PCB_DR3(%r8)
+	movq	%r11,PCB_DR6(%r8)
+	movq	%rax,PCB_DR7(%r8)
+	movq	%rax,%dr7
+	jmp	done_store_dr
 
-	/* Test if debug registers should be restored. */
-	testl	$PCB_DBREGS,PCB_FLAGS(%r8)
-	jz	1f
-	movq	PCB_DR6(%r8),%rax
-	movq	%rax,%dr6
-	movq	PCB_DR3(%r8),%rax
-	movq	%rax,%dr3
-	movq	PCB_DR2(%r8),%rax
-	movq	%rax,%dr2
-	movq	PCB_DR1(%r8),%rax
-	movq	%rax,%dr1
-	movq	PCB_DR0(%r8),%rax
-	movq	%rax,%dr0
-	/* But preserve reserved bits in %dr7 */
+load_dr:
 	movq	%dr7,%rax
+	movq	PCB_DR0(%r8),%r15
+	movq	PCB_DR1(%r8),%r14
+	movq	PCB_DR2(%r8),%r13
+	movq	PCB_DR3(%r8),%r12
+	movq	PCB_DR6(%r8),%r11
+	movq	PCB_DR7(%r8),%rcx
+	movq	%r15,%dr0
+	movq	%r14,%dr1
+	/* Preserve reserved bits in %dr7 */
 	andq	$0x0000fc00,%rax
-	movq	PCB_DR7(%r8),%rcx
 	andq	$~0x0000fc00,%rcx
+	movq	%r13,%dr2
+	movq	%r12,%dr3
 	orq	%rcx,%rax
+	movq	%r11,%dr6
 	movq	%rax,%dr7
-1:
-	ret
+	jmp	done_load_dr
+
 END(cpu_switch)
 	
 /*

==== //depot/projects/zcopybpf/src/sys/amd64/amd64/genassym.c#6 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/genassym.c,v 1.166 2007/11/23 03:03:29 jkoshy Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/genassym.c,v 1.167 2008/03/23 22:46:37 peter Exp $");
 
 #include "opt_compat.h"
 #include "opt_kstack_pages.h"
@@ -86,6 +86,7 @@
 ASSYM(TDF_NEEDRESCHED, TDF_NEEDRESCHED);
 
 ASSYM(TDP_CALLCHAIN, TDP_CALLCHAIN);
+ASSYM(TDP_KTHREAD, TDP_KTHREAD);
 
 ASSYM(V_TRAP, offsetof(struct vmmeter, v_trap));
 ASSYM(V_SYSCALL, offsetof(struct vmmeter, v_syscall));

==== //depot/projects/zcopybpf/src/sys/amd64/amd64/intr_machdep.c#8 (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.36 2008/03/14 03:44:41 jhb Exp $
+ * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.39 2008/03/17 22:42:00 jhb Exp $
  */
 
 /*
@@ -77,18 +77,17 @@
 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;
 
 static void	intr_assign_next_cpu(struct intsrc *isrc);
 #endif
 
+static int	intr_assign_cpu(void *arg, u_char cpu);
+static void	intr_disable_src(void *arg);
+#ifdef INTR_FILTER
+static void	intr_event_stray(void *cookie);
+#endif
 static void	intr_init(void *__dummy);
 static int	intr_pic_registered(struct pic *pic);
 static void	intrcnt_setname(const char *name, int index);
@@ -143,14 +142,10 @@
 	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
+	    intr_disable_src, (mask_fn)isrc->is_pic->pic_enable_source,
+	    (mask_fn)isrc->is_pic->pic_eoi_source, intr_assign_cpu, "irq%d:",
+	    vector);
 	if (error)
 		return (error);
 	sx_xlock(&intr_table_lock);
@@ -234,6 +229,15 @@
 	return (isrc->is_pic->pic_config_intr(isrc, trig, pol));
 }
 
+static void
+intr_disable_src(void *arg)
+{
+	struct intsrc *isrc;
+
+	isrc = arg;
+	isrc->is_pic->pic_disable_source(isrc, PIC_EOI);
+}
+
 #ifdef INTR_FILTER
 void
 intr_execute_handlers(struct intsrc *isrc, struct trapframe *frame)
@@ -286,24 +290,6 @@
 		    "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)
@@ -431,6 +417,28 @@
 	sx_xunlock(&intr_table_lock);
 }
 
+static int
+intr_assign_cpu(void *arg, u_char cpu)
+{
+#ifdef SMP
+	struct intsrc *isrc;	
+
+	/*
+	 * Don't do anything during early boot.  We will pick up the
+	 * assignment once the APs are started.
+	 */
+	if (assign_cpu && cpu != NOCPU) {
+		isrc = arg;
+		sx_xlock(&intr_table_lock);
+		isrc->is_pic->pic_assign_cpu(isrc, cpu_apic_ids[cpu]);
+		sx_xunlock(&intr_table_lock);
+	}
+	return (0);
+#else
+	return (EOPNOTSUPP);
+#endif
+}
+
 static void
 intrcnt_setname(const char *name, int index)
 {
@@ -485,7 +493,7 @@
 	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)
+SYSINIT(intr_init, SI_SUB_INTR, SI_ORDER_FIRST, intr_init, NULL);
 
 #ifndef DEV_ATPIC
 /* Initialize the two 8259A's to a known-good shutdown state. */
@@ -542,15 +550,11 @@
 static void
 intr_assign_next_cpu(struct intsrc *isrc)
 {
-	struct pic *pic;
-	u_int apic_id;
 
 	/*
 	 * Assign this source to a local APIC in a round-robin fashion.
 	 */
-	pic = isrc->is_pic;
-	apic_id = cpu_apic_ids[current_cpu];
-	pic->pic_assign_cpu(isrc, apic_id);
+	isrc->is_pic->pic_assign_cpu(isrc, cpu_apic_ids[current_cpu]);
 	do {
 		current_cpu++;
 		if (current_cpu > mp_maxid)
@@ -558,6 +562,18 @@
 	} while (!(intr_cpus & (1 << current_cpu)));
 }
 
+/* Attempt to bind the specified IRQ to the specified CPU. */
+int
+intr_bind(u_int vector, u_char cpu)
+{
+	struct intsrc *isrc;
+
+	isrc = intr_lookup_source(vector);
+	if (isrc == NULL)
+		return (EINVAL);
+	return (intr_event_bind(isrc->is_event, cpu));
+}
+
 /*
  * Add a CPU to our mask of valid CPUs that can be destinations of
  * interrupts.
@@ -594,10 +610,21 @@
 	assign_cpu = 1;
 	for (i = 0; i < NUM_IO_INTS; i++) {
 		isrc = interrupt_sources[i];
-		if (isrc != NULL && isrc->is_handlers > 0)
-			intr_assign_next_cpu(isrc);
+		if (isrc != NULL && isrc->is_handlers > 0) {
+			/*
+			 * If this event is already bound to a CPU,
+			 * then assign the source to that CPU instead
+			 * of picking one via round-robin.
+			 */
+			if (isrc->is_event->ie_cpu != NOCPU)
+				isrc->is_pic->pic_assign_cpu(isrc,
+				    cpu_apic_ids[isrc->is_event->ie_cpu]);
+			else
+				intr_assign_next_cpu(isrc);
+		}
 	}
 	sx_xunlock(&intr_table_lock);
 }
-SYSINIT(intr_shuffle_irqs, SI_SUB_SMP, SI_ORDER_SECOND, intr_shuffle_irqs, NULL)
+SYSINIT(intr_shuffle_irqs, SI_SUB_SMP, SI_ORDER_SECOND, intr_shuffle_irqs,
+    NULL);
 #endif

==== //depot/projects/zcopybpf/src/sys/amd64/amd64/local_apic.c#8 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.43 2007/10/27 13:34:53 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.44 2008/03/16 10:58:02 rwatson Exp $");
 
 #include "opt_hwpmc_hooks.h"
 
@@ -1039,7 +1039,7 @@
 		printf("%s: Failed to probe CPUs: returned %d\n",
 		    best_enum->apic_name, retval);
 }
-SYSINIT(apic_init, SI_SUB_TUNABLES - 1, SI_ORDER_SECOND, apic_init, NULL)
+SYSINIT(apic_init, SI_SUB_TUNABLES - 1, SI_ORDER_SECOND, apic_init, NULL);
 
 /*
  * Setup the local APIC.  We have to do this prior to starting up the APs
@@ -1057,7 +1057,8 @@
 		printf("%s: Failed to setup the local APIC: returned %d\n",
 		    best_enum->apic_name, retval);
 }
-SYSINIT(apic_setup_local, SI_SUB_CPU, SI_ORDER_SECOND, apic_setup_local, NULL)
+SYSINIT(apic_setup_local, SI_SUB_CPU, SI_ORDER_SECOND, apic_setup_local,
+    NULL);
 
 /*
  * Setup the I/O APICs.
@@ -1086,7 +1087,7 @@
 	/* Enable the MSI "pic". */
 	msi_init();
 }
-SYSINIT(apic_setup_io, SI_SUB_INTR, SI_ORDER_SECOND, apic_setup_io, NULL)
+SYSINIT(apic_setup_io, SI_SUB_INTR, SI_ORDER_SECOND, apic_setup_io, NULL);
 
 #ifdef SMP
 /*

==== //depot/projects/zcopybpf/src/sys/amd64/amd64/machdep.c#10 (text+ko) ====

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.682 2008/03/13 10:54:36 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.683 2008/03/16 10:58:02 rwatson Exp $");
 
 #include "opt_atalk.h"
 #include "opt_atpic.h"
@@ -149,7 +149,7 @@
 static void cpu_startup(void *);
 static void get_fpcontext(struct thread *td, mcontext_t *mcp);
 static int  set_fpcontext(struct thread *td, const mcontext_t *mcp);
-SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL)
+SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL);
 
 #ifdef DDB
 extern vm_offset_t ksym_start, ksym_end;

==== //depot/projects/zcopybpf/src/sys/amd64/amd64/mptable.c#4 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable.c,v 1.240 2007/05/08 22:01:02 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable.c,v 1.241 2008/03/16 10:58:02 rwatson Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -381,7 +381,7 @@
 	apic_register_enumerator(&mptable_enumerator);
 }
 SYSINIT(mptable_register, SI_SUB_TUNABLES - 1, SI_ORDER_FIRST,
-    mptable_register, NULL)
+    mptable_register, NULL);
 
 /*
  * Call the handler routine for each entry in the MP config table.

==== //depot/projects/zcopybpf/src/sys/amd64/amd64/nexus.c#7 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.79 2008/03/13 20:39:03 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.80 2008/03/20 21:24:32 jhb Exp $");
 
 /*
  * This code implements a `root nexus' for Intel Architecture
@@ -87,6 +87,9 @@
 				int unit);
 static	struct resource *nexus_alloc_resource(device_t, device_t, int, int *,
 					      u_long, u_long, u_long, u_int);
+#ifdef SMP
+static	int nexus_bind_intr(device_t, device_t, struct resource *, int);
+#endif
 static	int nexus_config_intr(device_t, int, enum intr_trigger,
 			      enum intr_polarity);
 static	int nexus_activate_resource(device_t, device_t, int, int,
@@ -128,6 +131,9 @@
 	DEVMETHOD(bus_deactivate_resource, nexus_deactivate_resource),
 	DEVMETHOD(bus_setup_intr,	nexus_setup_intr),
 	DEVMETHOD(bus_teardown_intr,	nexus_teardown_intr),
+#ifdef SMP
+	DEVMETHOD(bus_bind_intr,	nexus_bind_intr),
+#endif
 	DEVMETHOD(bus_config_intr,	nexus_config_intr),
 	DEVMETHOD(bus_get_resource_list, nexus_get_reslist),
 	DEVMETHOD(bus_set_resource,	nexus_set_resource),
@@ -458,6 +464,14 @@
 	return (intr_remove_handler(ih));
 }
 
+#ifdef SMP
+static int
+nexus_bind_intr(device_t dev, device_t child, struct resource *irq, int cpu)
+{
+	return (intr_bind(rman_get_start(irq), cpu));
+}
+#endif
+
 static int
 nexus_config_intr(device_t dev, int irq, enum intr_trigger trig,
     enum intr_polarity pol)

==== //depot/projects/zcopybpf/src/sys/amd64/amd64/pmap.c#15 (text+ko) ====

@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.606 2008/03/04 18:50:15 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.609 2008/03/23 23:04:09 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1861,12 +1861,8 @@
 			    ("pmap_collect: wired pte %#lx", tpte));
 			if (tpte & PG_A)
 				vm_page_flag_set(m, PG_REFERENCED);
-			if (tpte & PG_M) {
-				KASSERT((tpte & PG_RW),
-	("pmap_collect: modified page not writable: va: %#lx, pte: %#lx",
-				    va, tpte));
+			if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW))
 				vm_page_dirty(m);
-			}
 			free = NULL;
 			pmap_unuse_pt(pmap, va, *pde, &free);
 			pmap_invalidate_page(pmap, va);
@@ -2311,12 +2307,8 @@
 		eva = sva + NBPDR;
 		for (va = sva, m = PHYS_TO_VM_PAGE(oldpde & PG_FRAME);
 		    va < eva; va += PAGE_SIZE, m++) {
-			if (oldpde & PG_M) {
-				KASSERT((oldpde & PG_RW) != 0,
-	("pmap_remove_pde: modified 2mpage not writable: va: %#lx, pde: %#lx",
-				    va, oldpde));
+			if ((oldpde & (PG_M | PG_RW)) == (PG_M | PG_RW))
 				vm_page_dirty(m);
-			}
 			if (oldpde & PG_A)
 				vm_page_flag_set(m, PG_REFERENCED);
 			if (TAILQ_EMPTY(&m->md.pv_list) &&
@@ -2364,12 +2356,8 @@
 	pmap->pm_stats.resident_count -= 1;
 	if (oldpte & PG_MANAGED) {
 		m = PHYS_TO_VM_PAGE(oldpte & PG_FRAME);
-		if (oldpte & PG_M) {
-			KASSERT((oldpte & PG_RW),
-	("pmap_remove_pte: modified page not writable: va: %#lx, pte: %#lx",
-			    va, oldpte));
+		if ((oldpte & (PG_M | PG_RW)) == (PG_M | PG_RW))
 			vm_page_dirty(m);
-		}

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


More information about the p4-projects mailing list