From owner-p4-projects@FreeBSD.ORG Mon Mar 24 22:15:58 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9A0C21065677; Mon, 24 Mar 2008 22:15:58 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3E5D01065675 for ; Mon, 24 Mar 2008 22:15:58 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1DCAD8FC16 for ; Mon, 24 Mar 2008 22:15:58 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m2OMFwsD077704 for ; Mon, 24 Mar 2008 22:15:58 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m2OMFvkN077702 for perforce@freebsd.org; Mon, 24 Mar 2008 22:15:57 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Mon, 24 Mar 2008 22:15:57 GMT Message-Id: <200803242215.m2OMFvkN077702@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Cc: Subject: PERFORCE change 138477 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Mar 2008 22:15:59 -0000 http://perforce.freebsd.org/chv.cgi?CH=138477 Change 138477 by rwatson@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 -__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 #include @@ -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 @@ -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 -__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 -__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 -__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 -__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 #include @@ -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 -__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 -__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) <<<