PERFORCE change 75191 for review

John Baldwin jhb at FreeBSD.org
Thu Apr 14 11:55:42 PDT 2005


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

Change 75191 by jhb at jhb_slimer on 2005/04/14 18:55:16

	IFC @75190.

Affected files ...

.. //depot/projects/smpng/sys/alpha/alpha/interrupt.c#34 integrate
.. //depot/projects/smpng/sys/alpha/alpha/trap.c#58 integrate
.. //depot/projects/smpng/sys/amd64/amd64/intr_machdep.c#11 integrate
.. //depot/projects/smpng/sys/amd64/amd64/local_apic.c#13 integrate
.. //depot/projects/smpng/sys/amd64/amd64/machdep.c#39 integrate
.. //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#19 integrate
.. //depot/projects/smpng/sys/amd64/amd64/support.S#12 integrate
.. //depot/projects/smpng/sys/amd64/amd64/sys_machdep.c#7 integrate
.. //depot/projects/smpng/sys/amd64/amd64/trap.c#24 integrate
.. //depot/projects/smpng/sys/amd64/conf/GENERIC#31 integrate
.. //depot/projects/smpng/sys/amd64/conf/NOTES#14 integrate
.. //depot/projects/smpng/sys/amd64/ia32/ia32_syscall.c#9 integrate
.. //depot/projects/smpng/sys/amd64/include/asm.h#7 integrate
.. //depot/projects/smpng/sys/amd64/include/ieeefp.h#7 integrate
.. //depot/projects/smpng/sys/amd64/include/sysarch.h#6 integrate
.. //depot/projects/smpng/sys/amd64/include/tss.h#4 integrate
.. //depot/projects/smpng/sys/arm/arm/pmap.c#15 integrate
.. //depot/projects/smpng/sys/arm/arm/support.S#8 integrate
.. //depot/projects/smpng/sys/arm/arm/trap.c#10 integrate
.. //depot/projects/smpng/sys/arm/arm/undefined.c#7 integrate
.. //depot/projects/smpng/sys/arm/include/asmacros.h#4 integrate
.. //depot/projects/smpng/sys/arm/include/atomic.h#9 integrate
.. //depot/projects/smpng/sys/arm/include/pmap.h#9 integrate
.. //depot/projects/smpng/sys/arm/sa11x0/sa11x0_io.c#5 integrate
.. //depot/projects/smpng/sys/arm/xscale/i80321/iq31244_machdep.c#9 integrate
.. //depot/projects/smpng/sys/arm/xscale/i80321/obio_space.c#3 integrate
.. //depot/projects/smpng/sys/boot/i386/libi386/vidconsole.c#5 integrate
.. //depot/projects/smpng/sys/boot/pc98/libpc98/vidconsole.c#6 integrate
.. //depot/projects/smpng/sys/cam/scsi/scsi_all.c#23 integrate
.. //depot/projects/smpng/sys/cam/scsi/scsi_da.c#57 integrate
.. //depot/projects/smpng/sys/cam/scsi/scsi_sa.c#23 integrate
.. //depot/projects/smpng/sys/coda/coda_vnops.c#24 integrate
.. //depot/projects/smpng/sys/compat/ia32/ia32_signal.h#7 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_file.c#26 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_getcwd.c#17 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_ioctl.c#39 integrate
.. //depot/projects/smpng/sys/compat/ndis/hal_var.h#8 integrate
.. //depot/projects/smpng/sys/compat/ndis/kern_ndis.c#26 integrate
.. //depot/projects/smpng/sys/compat/ndis/kern_windrv.c#3 integrate
.. //depot/projects/smpng/sys/compat/ndis/ndis_var.h#20 integrate
.. //depot/projects/smpng/sys/compat/ndis/ntoskrnl_var.h#16 integrate
.. //depot/projects/smpng/sys/compat/ndis/pe_var.h#9 integrate
.. //depot/projects/smpng/sys/compat/ndis/subr_hal.c#14 integrate
.. //depot/projects/smpng/sys/compat/ndis/subr_ndis.c#27 integrate
.. //depot/projects/smpng/sys/compat/ndis/subr_ntoskrnl.c#27 integrate
.. //depot/projects/smpng/sys/compat/ndis/subr_usbd.c#2 integrate
.. //depot/projects/smpng/sys/compat/ndis/winx32_wrap.S#1 branch
.. //depot/projects/smpng/sys/conf/Makefile.alpha#24 integrate
.. //depot/projects/smpng/sys/conf/Makefile.amd64#10 integrate
.. //depot/projects/smpng/sys/conf/Makefile.arm#8 integrate
.. //depot/projects/smpng/sys/conf/Makefile.i386#22 integrate
.. //depot/projects/smpng/sys/conf/Makefile.ia64#29 integrate
.. //depot/projects/smpng/sys/conf/Makefile.pc98#21 integrate
.. //depot/projects/smpng/sys/conf/Makefile.powerpc#29 integrate
.. //depot/projects/smpng/sys/conf/Makefile.sparc64#25 integrate
.. //depot/projects/smpng/sys/conf/files#139 integrate
.. //depot/projects/smpng/sys/conf/files.arm#5 integrate
.. //depot/projects/smpng/sys/conf/files.i386#81 integrate
.. //depot/projects/smpng/sys/conf/kern.pre.mk#46 integrate
.. //depot/projects/smpng/sys/conf/kmod.mk#46 integrate
.. //depot/projects/smpng/sys/conf/options.i386#46 integrate
.. //depot/projects/smpng/sys/contrib/pf/net/pf.c#16 integrate
.. //depot/projects/smpng/sys/ddb/db_print.c#5 integrate
.. //depot/projects/smpng/sys/ddb/db_run.c#10 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi.c#83 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_cpu.c#33 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_ec.c#37 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_perf.c#5 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_throttle.c#4 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpivar.h#56 integrate
.. //depot/projects/smpng/sys/dev/aic/aic_cbus.c#5 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-all.c#68 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-all.h#35 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-card.c#25 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-cbus.c#14 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-chipset.c#51 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-dma.c#43 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-isa.c#20 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-lowlevel.c#27 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-pci.c#54 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-pci.h#29 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-raid.c#33 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-raid.h#18 integrate
.. //depot/projects/smpng/sys/dev/ata/atapi-cam.c#23 integrate
.. //depot/projects/smpng/sys/dev/ath/if_ath.c#26 integrate
.. //depot/projects/smpng/sys/dev/ath/if_athvar.h#15 integrate
.. //depot/projects/smpng/sys/dev/dpt/dpt_pci.c#10 integrate
.. //depot/projects/smpng/sys/dev/ed/if_ed98.h#3 integrate
.. //depot/projects/smpng/sys/dev/ep/if_ep.c#19 integrate
.. //depot/projects/smpng/sys/dev/ida/ida.c#18 integrate
.. //depot/projects/smpng/sys/dev/ida/ida_eisa.c#11 integrate
.. //depot/projects/smpng/sys/dev/ida/ida_pci.c#13 integrate
.. //depot/projects/smpng/sys/dev/ida/idareg.h#5 integrate
.. //depot/projects/smpng/sys/dev/ida/idavar.h#8 integrate
.. //depot/projects/smpng/sys/dev/if_ndis/if_ndis.c#27 integrate
.. //depot/projects/smpng/sys/dev/kbd/atkbdc.c#8 integrate
.. //depot/projects/smpng/sys/dev/mse/mse.c#4 integrate
.. //depot/projects/smpng/sys/dev/mse/mse_cbus.c#4 integrate
.. //depot/projects/smpng/sys/dev/mse/mse_isa.c#4 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccard.c#34 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccardvar.h#20 integrate
.. //depot/projects/smpng/sys/dev/pccbb/pccbb_pci.c#6 integrate
.. //depot/projects/smpng/sys/dev/pci/pci.c#56 integrate
.. //depot/projects/smpng/sys/dev/pci/pci_user.c#15 integrate
.. //depot/projects/smpng/sys/dev/pci/pcib_if.m#3 integrate
.. //depot/projects/smpng/sys/dev/ppbus/pps.c#18 integrate
.. //depot/projects/smpng/sys/dev/ppc/ppc.c#5 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/es137x.c#16 integrate
.. //depot/projects/smpng/sys/dev/sound/pcm/ac97.c#25 integrate
.. //depot/projects/smpng/sys/dev/sound/usb/uaudio_pcm.c#9 integrate
.. //depot/projects/smpng/sys/dev/twa/tw_cl.h#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_cl_externs.h#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_cl_fwif.h#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_cl_fwimg.c#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_cl_init.c#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_cl_intr.c#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_cl_io.c#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_cl_ioctl.h#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_cl_misc.c#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_cl_share.h#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_osl.h#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_osl_cam.c#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_osl_externs.h#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_osl_freebsd.c#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_osl_includes.h#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_osl_ioctl.h#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_osl_share.h#1 branch
.. //depot/projects/smpng/sys/dev/twa/tw_osl_types.h#1 branch
.. //depot/projects/smpng/sys/dev/twa/twa.c#4 delete
.. //depot/projects/smpng/sys/dev/twa/twa.h#6 delete
.. //depot/projects/smpng/sys/dev/twa/twa_cam.c#5 delete
.. //depot/projects/smpng/sys/dev/twa/twa_externs.h#3 delete
.. //depot/projects/smpng/sys/dev/twa/twa_freebsd.c#8 delete
.. //depot/projects/smpng/sys/dev/twa/twa_fwimg.c#3 delete
.. //depot/projects/smpng/sys/dev/twa/twa_globals.c#4 delete
.. //depot/projects/smpng/sys/dev/twa/twa_includes.h#3 delete
.. //depot/projects/smpng/sys/dev/twa/twa_ioctl.h#3 delete
.. //depot/projects/smpng/sys/dev/twa/twa_reg.h#4 delete
.. //depot/projects/smpng/sys/dev/usb/ucom.c#24 integrate
.. //depot/projects/smpng/sys/dev/usb/uftdi.c#17 integrate
.. //depot/projects/smpng/sys/dev/usb/uplcom.c#19 integrate
.. //depot/projects/smpng/sys/dev/usb/usbdevs#74 integrate
.. //depot/projects/smpng/sys/dev/wi/if_wi.c#71 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_vnops.c#44 integrate
.. //depot/projects/smpng/sys/fs/hpfs/hpfs_vnops.c#29 integrate
.. //depot/projects/smpng/sys/fs/msdosfs/denode.h#11 integrate
.. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_denode.c#23 integrate
.. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_lookup.c#10 integrate
.. //depot/projects/smpng/sys/fs/nullfs/null_subr.c#13 integrate
.. //depot/projects/smpng/sys/fs/nullfs/null_vfsops.c#19 integrate
.. //depot/projects/smpng/sys/fs/nwfs/nwfs_vnops.c#15 integrate
.. //depot/projects/smpng/sys/fs/pseudofs/pseudofs_vnops.c#37 integrate
.. //depot/projects/smpng/sys/fs/smbfs/smbfs_vnops.c#34 integrate
.. //depot/projects/smpng/sys/fs/udf/ecma167-udf.h#4 integrate
.. //depot/projects/smpng/sys/fs/udf/udf_vnops.c#28 integrate
.. //depot/projects/smpng/sys/fs/unionfs/union_vnops.c#28 integrate
.. //depot/projects/smpng/sys/geom/geom_ctl.c#22 integrate
.. //depot/projects/smpng/sys/geom/geom_sunlabel.c#26 integrate
.. //depot/projects/smpng/sys/gnu/ext2fs/ext2_lookup.c#17 integrate
.. //depot/projects/smpng/sys/i386/acpica/madt.c#12 integrate
.. //depot/projects/smpng/sys/i386/bios/apm.c#11 integrate
.. //depot/projects/smpng/sys/i386/cpufreq/est.c#4 integrate
.. //depot/projects/smpng/sys/i386/cpufreq/p4tcc.c#2 integrate
.. //depot/projects/smpng/sys/i386/i386/genassym.c#31 integrate
.. //depot/projects/smpng/sys/i386/i386/intr_machdep.c#14 integrate
.. //depot/projects/smpng/sys/i386/i386/io_apic.c#11 integrate
.. //depot/projects/smpng/sys/i386/i386/local_apic.c#28 integrate
.. //depot/projects/smpng/sys/i386/i386/machdep.c#92 integrate
.. //depot/projects/smpng/sys/i386/i386/mp_machdep.c#81 integrate
.. //depot/projects/smpng/sys/i386/i386/mptable.c#16 integrate
.. //depot/projects/smpng/sys/i386/i386/swtch.s#25 integrate
.. //depot/projects/smpng/sys/i386/i386/sys_machdep.c#40 integrate
.. //depot/projects/smpng/sys/i386/i386/trap.c#75 integrate
.. //depot/projects/smpng/sys/i386/i386/vm86bios.s#6 integrate
.. //depot/projects/smpng/sys/i386/i386/vm_machdep.c#65 integrate
.. //depot/projects/smpng/sys/i386/include/apicvar.h#14 integrate
.. //depot/projects/smpng/sys/i386/include/clock.h#11 integrate
.. //depot/projects/smpng/sys/i386/include/pc/display.h#3 integrate
.. //depot/projects/smpng/sys/i386/include/pcb.h#13 integrate
.. //depot/projects/smpng/sys/i386/include/pcpu.h#13 integrate
.. //depot/projects/smpng/sys/i386/include/segments.h#10 integrate
.. //depot/projects/smpng/sys/i386/include/sysarch.h#10 integrate
.. //depot/projects/smpng/sys/i386/isa/clock.c#41 integrate
.. //depot/projects/smpng/sys/i386/linux/linux.h#9 integrate
.. //depot/projects/smpng/sys/i386/pci/pci_pir.c#8 integrate
.. //depot/projects/smpng/sys/i4b/layer1/isic/i4b_isic.h#3 integrate
.. //depot/projects/smpng/sys/ia64/ia32/ia32_trap.c#4 integrate
.. //depot/projects/smpng/sys/ia64/ia64/interrupt.c#29 integrate
.. //depot/projects/smpng/sys/ia64/ia64/trap.c#73 integrate
.. //depot/projects/smpng/sys/isa/isahint.c#5 integrate
.. //depot/projects/smpng/sys/isa/isavar.h#9 integrate
.. //depot/projects/smpng/sys/isofs/cd9660/cd9660_lookup.c#13 integrate
.. //depot/projects/smpng/sys/kern/kern_cpu.c#4 integrate
.. //depot/projects/smpng/sys/kern/kern_intr.c#67 integrate
.. //depot/projects/smpng/sys/kern/kern_lock.c#41 integrate
.. //depot/projects/smpng/sys/kern/kern_malloc.c#34 integrate
.. //depot/projects/smpng/sys/kern/kern_mutex.c#98 integrate
.. //depot/projects/smpng/sys/kern/kern_shutdown.c#57 integrate
.. //depot/projects/smpng/sys/kern/kern_sig.c#106 integrate
.. //depot/projects/smpng/sys/kern/kern_switch.c#57 integrate
.. //depot/projects/smpng/sys/kern/kern_synch.c#90 integrate
.. //depot/projects/smpng/sys/kern/sched_4bsd.c#48 integrate
.. //depot/projects/smpng/sys/kern/sched_ule.c#55 integrate
.. //depot/projects/smpng/sys/kern/subr_bus.c#51 integrate
.. //depot/projects/smpng/sys/kern/subr_prf.c#38 integrate
.. //depot/projects/smpng/sys/kern/subr_rman.c#20 integrate
.. //depot/projects/smpng/sys/kern/subr_sleepqueue.c#15 integrate
.. //depot/projects/smpng/sys/kern/subr_witness.c#130 integrate
.. //depot/projects/smpng/sys/kern/tty.c#59 integrate
.. //depot/projects/smpng/sys/kern/uipc_usrreq.c#47 integrate
.. //depot/projects/smpng/sys/kern/vfs_cache.c#27 integrate
.. //depot/projects/smpng/sys/kern/vfs_hash.c#2 integrate
.. //depot/projects/smpng/sys/kern/vfs_lookup.c#28 integrate
.. //depot/projects/smpng/sys/kern/vfs_subr.c#101 integrate
.. //depot/projects/smpng/sys/kern/vfs_syscalls.c#87 integrate
.. //depot/projects/smpng/sys/kern/vfs_vnops.c#62 integrate
.. //depot/projects/smpng/sys/kern/vnode_if.src#25 integrate
.. //depot/projects/smpng/sys/modules/Makefile#95 integrate
.. //depot/projects/smpng/sys/modules/ndis/Makefile#5 integrate
.. //depot/projects/smpng/sys/modules/twa/Makefile#2 integrate
.. //depot/projects/smpng/sys/net/if_tap.c#34 integrate
.. //depot/projects/smpng/sys/net/iso88025.h#6 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_crypto.c#5 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_crypto.h#5 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_ioctl.c#15 integrate
.. //depot/projects/smpng/sys/netgraph/bluetooth/common/ng_bluetooth.c#6 integrate
.. //depot/projects/smpng/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c#9 integrate
.. //depot/projects/smpng/sys/netgraph/bluetooth/socket/ng_btsocket.c#11 integrate
.. //depot/projects/smpng/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c#10 integrate
.. //depot/projects/smpng/sys/netgraph/netflow/netflow.c#7 integrate
.. //depot/projects/smpng/sys/netgraph/ng_cisco.c#13 integrate
.. //depot/projects/smpng/sys/netinet/in_pcb.c#55 integrate
.. //depot/projects/smpng/sys/netinet/ip_dummynet.c#37 integrate
.. //depot/projects/smpng/sys/netinet/ip_fw_pfil.c#12 integrate
.. //depot/projects/smpng/sys/netinet/ip_input.c#66 integrate
.. //depot/projects/smpng/sys/netinet/tcp_input.c#69 integrate
.. //depot/projects/smpng/sys/netinet/tcp_sack.c#8 integrate
.. //depot/projects/smpng/sys/netinet/tcp_seq.h#10 integrate
.. //depot/projects/smpng/sys/netinet/tcp_subr.c#66 integrate
.. //depot/projects/smpng/sys/netinet6/icmp6.c#28 integrate
.. //depot/projects/smpng/sys/netipx/README#5 integrate
.. //depot/projects/smpng/sys/netipx/ipx_input.c#15 integrate
.. //depot/projects/smpng/sys/nfs4client/nfs4_vnops.c#17 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_vnops.c#53 integrate
.. //depot/projects/smpng/sys/pc98/conf/NOTES#36 integrate
.. //depot/projects/smpng/sys/pc98/i386/machdep.c#81 integrate
.. //depot/projects/smpng/sys/pc98/include/apicreg.h#1 branch
.. //depot/projects/smpng/sys/pc98/include/apicvar.h#1 branch
.. //depot/projects/smpng/sys/pc98/include/bus_memio.h#2 integrate
.. //depot/projects/smpng/sys/pc98/include/bus_pio.h#2 integrate
.. //depot/projects/smpng/sys/pc98/include/clock.h#2 integrate
.. //depot/projects/smpng/sys/pc98/include/ioctl_bt848.h#1 branch
.. //depot/projects/smpng/sys/pc98/include/ioctl_meteor.h#1 branch
.. //depot/projects/smpng/sys/pc98/include/pc/display.h#2 integrate
.. //depot/projects/smpng/sys/pc98/include/pcaudio.h#2 delete
.. //depot/projects/smpng/sys/pc98/include/pcaudioio.h#1 branch
.. //depot/projects/smpng/sys/pc98/include/pcvt_ioctl.h#1 branch
.. //depot/projects/smpng/sys/pc98/include/pvct_ioctl.h#2 delete
.. //depot/projects/smpng/sys/pc98/include/smptests.h#1 branch
.. //depot/projects/smpng/sys/pc98/pc98/isa_dma.c#9 integrate
.. //depot/projects/smpng/sys/pc98/pc98/olpt.c#12 integrate
.. //depot/projects/smpng/sys/pc98/pc98/scterm-sck.c#8 integrate
.. //depot/projects/smpng/sys/pci/agp_amd64.c#5 integrate
.. //depot/projects/smpng/sys/pci/if_pcn.c#32 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/machdep.c#62 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/trap.c#44 integrate
.. //depot/projects/smpng/sys/powerpc/psim/ata_iobus.c#11 integrate
.. //depot/projects/smpng/sys/security/mac/mac_vfs.c#8 integrate
.. //depot/projects/smpng/sys/security/mac_biba/mac_biba.c#32 integrate
.. //depot/projects/smpng/sys/security/mac_lomac/mac_lomac.c#25 integrate
.. //depot/projects/smpng/sys/security/mac_mls/mac_mls.c#30 integrate
.. //depot/projects/smpng/sys/security/mac_stub/mac_stub.c#10 integrate
.. //depot/projects/smpng/sys/security/mac_test/mac_test.c#28 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/machdep.c#75 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/trap.c#61 integrate
.. //depot/projects/smpng/sys/sys/bus.h#23 integrate
.. //depot/projects/smpng/sys/sys/disklabel.h#29 integrate
.. //depot/projects/smpng/sys/sys/mac.h#29 integrate
.. //depot/projects/smpng/sys/sys/mac_policy.h#28 integrate
.. //depot/projects/smpng/sys/sys/mouse.h#5 integrate
.. //depot/projects/smpng/sys/sys/namei.h#16 integrate
.. //depot/projects/smpng/sys/sys/param.h#80 integrate
.. //depot/projects/smpng/sys/sys/proc.h#142 integrate
.. //depot/projects/smpng/sys/sys/rman.h#12 integrate
.. //depot/projects/smpng/sys/sys/socket.h#27 integrate
.. //depot/projects/smpng/sys/sys/systm.h#65 integrate
.. //depot/projects/smpng/sys/sys/un.h#11 integrate
.. //depot/projects/smpng/sys/sys/unpcb.h#9 integrate
.. //depot/projects/smpng/sys/sys/vnode.h#61 integrate
.. //depot/projects/smpng/sys/tools/vnode_if.awk#12 integrate
.. //depot/projects/smpng/sys/ufs/ufs/ufs_lookup.c#22 integrate
.. //depot/projects/smpng/sys/vm/vm_meter.c#26 integrate
.. //depot/projects/smpng/sys/vm/vm_mmap.c#54 integrate

Differences ...

==== //depot/projects/smpng/sys/alpha/alpha/interrupt.c#34 (text+ko) ====

@@ -33,7 +33,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 /* __KERNEL_RCSID(0, "$NetBSD: interrupt.c,v 1.23 1998/02/24 07:38:01 thorpej Exp $");*/
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/interrupt.c,v 1.84 2005/01/05 20:05:49 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/interrupt.c,v 1.86 2005/04/12 23:18:53 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -436,7 +436,7 @@
 		critical_enter();
 		ih->ih_handler(ih->ih_argument);
 		/* XXX */
-		curthread->td_pflags &= ~TDP_OWEPREEMPT;
+		curthread->td_owepreempt = 0;
 		critical_exit();
 		return;
 	}

==== //depot/projects/smpng/sys/alpha/alpha/trap.c#58 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/trap.c,v 1.122 2005/01/05 20:05:49 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/trap.c,v 1.123 2005/04/12 23:18:53 jhb Exp $");
 
 /* #include "opt_fix_unaligned_vax_fp.h" */
 #include "opt_ddb.h"

==== //depot/projects/smpng/sys/amd64/amd64/intr_machdep.c#11 (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.13 2005/01/21 06:01:19 peter Exp $
+ * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.14 2005/04/12 23:18:53 jhb Exp $
  */
 
 /*

==== //depot/projects/smpng/sys/amd64/amd64/local_apic.c#13 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.13 2005/03/11 22:12:38 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.14 2005/04/14 05:56:17 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -335,10 +335,6 @@
 	if (lapic == NULL)
 		return (0);
 
-	/* If we've only got one CPU, then use the RTC and ISA timer instead. */
-	if (mp_ncpus == 1)
-		return (0);
-
 	/* Start off with a divisor of 2 (power on reset default). */
 	lapic_timer_divisor = 2;
 

==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#39 (text+ko) ====

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.633 2005/04/04 21:53:52 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.634 2005/04/06 01:05:36 cperciva Exp $");
 
 #include "opt_atalk.h"
 #include "opt_atpic.h"
@@ -1251,6 +1251,9 @@
 	/* doublefault stack space, runs on ist1 */
 	common_tss[0].tss_ist1 = (long)&dblfault_stack[sizeof(dblfault_stack)];
 
+	/* Set the IO permission bitmap (empty due to tss seg limit) */
+	common_tss[0].tss_iobase = sizeof(struct amd64tss);
+
 	gsel_tss = GSEL(GPROC0_SEL, SEL_KPL);
 	ltr(gsel_tss);
 

==== //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#19 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.251 2005/04/04 21:53:52 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.252 2005/04/06 01:05:36 cperciva Exp $");
 
 #include "opt_cpu.h"
 #include "opt_kstack_pages.h"
@@ -379,6 +379,7 @@
 	/* Init tss */
 	common_tss[cpu] = common_tss[0];
 	common_tss[cpu].tss_rsp0 = 0;   /* not used until after switch */
+	common_tss[cpu].tss_iobase = sizeof(struct amd64tss);
 
 	gdt_segs[GPROC0_SEL].ssd_base = (long) &common_tss[cpu];
 	ssdtosyssd(&gdt_segs[GPROC0_SEL],

==== //depot/projects/smpng/sys/amd64/amd64/support.S#12 (text+ko) ====

@@ -27,7 +27,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/amd64/amd64/support.S,v 1.113 2004/07/10 22:39:17 marcel Exp $
+ * $FreeBSD: src/sys/amd64/amd64/support.S,v 1.114 2005/04/10 18:12:07 alc Exp $
  */
 
 #include "opt_ddb.h"
@@ -86,8 +86,6 @@
 	ret
 
 ENTRY(bcmp)
-	xorq	%rax,%rax
-
 	movq	%rdx,%rcx
 	shrq	$3,%rcx
 	cld					/* compare forwards */
@@ -99,10 +97,9 @@
 	andq	$7,%rcx
 	repe
 	cmpsb
-	je	2f
 1:
-	incq	%rax
-2:
+	setne	%al
+	movsbl	%al,%eax
 	ret
 
 /*

==== //depot/projects/smpng/sys/amd64/amd64/sys_machdep.c#7 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/sys_machdep.c,v 1.88 2004/04/05 23:55:13 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/sys_machdep.c,v 1.89 2005/04/14 16:57:58 peter Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -56,8 +56,29 @@
 {
 	int error = 0;
 	struct pcb *pcb = curthread->td_pcb;
+	uint32_t i386base;
 
 	switch(uap->op) {
+	case I386_GET_FSBASE:
+		i386base = pcb->pcb_fsbase;
+		error = copyout(&i386base, uap->parms, sizeof(i386base));
+		break;
+	case I386_SET_FSBASE:
+		error = copyin(uap->parms, &i386base, sizeof(i386base));
+		pcb->pcb_fsbase = i386base;
+		if (!error)
+			wrmsr(MSR_FSBASE, pcb->pcb_fsbase);
+		break;
+	case I386_GET_GSBASE:
+		i386base = pcb->pcb_gsbase;
+		error = copyout(&i386base, uap->parms, sizeof(i386base));
+		break;
+	case I386_SET_GSBASE:
+		error = copyin(uap->parms, &i386base, sizeof(i386base));
+		pcb->pcb_gsbase = i386base;
+		if (!error)
+			wrmsr(MSR_KGSBASE, pcb->pcb_gsbase);
+		break;
 	case AMD64_GET_FSBASE:
 		error = copyout(&pcb->pcb_fsbase, uap->parms, sizeof(pcb->pcb_fsbase));
 		break;

==== //depot/projects/smpng/sys/amd64/amd64/trap.c#24 (text+ko) ====

@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.281 2004/08/31 07:34:53 julian Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.282 2005/04/12 23:18:53 jhb Exp $");
 
 /*
  * AMD64 Trap and System call handling

==== //depot/projects/smpng/sys/amd64/conf/GENERIC#31 (text+ko) ====

@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first
 # in NOTES.
 #
-# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.436 2005/03/31 20:55:10 obrien Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.437 2005/04/13 06:00:07 anholt Exp $
 
 machine		amd64
 cpu		HAMMER
@@ -156,6 +156,8 @@
 # syscons is the default console driver, resembling an SCO console
 device		sc
 
+device		agp		# support several AGP chipsets
+
 # PCCARD (PCMCIA) support
 # PCMCIA and cardbus bridge support
 device		cbb		# cardbus (yenta) bridge

==== //depot/projects/smpng/sys/amd64/conf/NOTES#14 (text+ko) ====

@@ -4,7 +4,7 @@
 # This file contains machine dependent kernel configuration notes.  For
 # machine independent notes, look in /sys/conf/NOTES.
 #
-# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.27 2005/03/31 20:21:42 scottl Exp $
+# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.28 2005/04/08 20:24:45 obrien Exp $
 #
 
 #
@@ -21,11 +21,6 @@
 #####################################################################
 # SMP OPTIONS:
 #
-# The apic device enables the use of the I/O APIC for interrupt delivery.
-# The apic device can be used in both UP and SMP kernels, but is required
-# for SMP kernels.  Thus, the apic device is not strictly an SMP option,
-# but it is a prerequisite for SMP.
-#
 # Notes:
 #
 # By default, mixed mode is used to route IRQ0 from the AT timer via

==== //depot/projects/smpng/sys/amd64/ia32/ia32_syscall.c#9 (text+ko) ====

@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/ia32/ia32_syscall.c,v 1.7 2004/08/31 06:12:12 julian Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/ia32/ia32_syscall.c,v 1.8 2005/04/12 23:18:53 jhb Exp $");
 
 /*
  * 386 Trap and System call handling

==== //depot/projects/smpng/sys/amd64/include/asm.h#7 (text+ko) ====

@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  *	from: @(#)DEFS.h	5.1 (Berkeley) 4/23/90
- * $FreeBSD: src/sys/amd64/include/asm.h,v 1.16 2004/06/10 22:02:26 peter Exp $
+ * $FreeBSD: src/sys/amd64/include/asm.h,v 1.17 2005/04/10 20:49:21 alc Exp $
  */
 
 #ifndef _MACHINE_ASM_H_
@@ -56,8 +56,7 @@
 #define CNAME(csym)		csym
 #define HIDENAME(asmsym)	.asmsym
 
-/* XXX should use .p2align 4,0x90 for -m486. */
-#define _START_ENTRY	.text; .p2align 2,0x90
+#define _START_ENTRY	.text; .p2align 4,0x90
 
 #define _ENTRY(x)	_START_ENTRY; \
 			.globl CNAME(x); .type CNAME(x), at function; CNAME(x):

==== //depot/projects/smpng/sys/amd64/include/ieeefp.h#7 (text+ko) ====

@@ -32,7 +32,7 @@
  * SUCH DAMAGE.
  *
  * 	from: @(#) ieeefp.h 	1.0 (Berkeley) 9/23/93
- * $FreeBSD: src/sys/amd64/include/ieeefp.h,v 1.13 2005/03/15 15:53:39 das Exp $
+ * $FreeBSD: src/sys/amd64/include/ieeefp.h,v 1.14 2005/04/12 23:12:00 jhb Exp $
  */
 
 /*

==== //depot/projects/smpng/sys/amd64/include/sysarch.h#6 (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/include/sysarch.h,v 1.23 2004/04/05 21:25:51 imp Exp $
+ * $FreeBSD: src/sys/amd64/include/sysarch.h,v 1.24 2005/04/14 16:57:58 peter Exp $
  */
 
 /*
@@ -35,6 +35,11 @@
 #ifndef _MACHINE_SYSARCH_H_
 #define _MACHINE_SYSARCH_H_
 
+#define	I386_GET_FSBASE		7
+#define	I386_SET_FSBASE		8
+#define	I386_GET_GSBASE		9
+#define	I386_SET_GSBASE		10
+
 /* Leave space for 0-127 for to avoid translating syscalls */
 #define	AMD64_GET_FSBASE	128
 #define	AMD64_SET_FSBASE	129

==== //depot/projects/smpng/sys/amd64/include/tss.h#4 (text+ko) ====

@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  *	from: @(#)tss.h	5.4 (Berkeley) 1/18/91
- * $FreeBSD: src/sys/amd64/include/tss.h,v 1.16 2004/04/05 21:25:51 imp Exp $
+ * $FreeBSD: src/sys/amd64/include/tss.h,v 1.17 2005/04/06 01:05:36 cperciva Exp $
  */
 
 #ifndef _MACHINE_TSS_H_
@@ -50,7 +50,6 @@
 	u_int64_t	tss_rsp2 __packed; 	/* kernel stack pointer ring 2 */
 	u_int32_t	tss_rsvd1;
 	u_int32_t	tss_rsvd2;
-	u_int32_t	tss_rsvd3;
 	u_int64_t	tss_ist1 __packed;	/* Interrupt stack table 1 */
 	u_int64_t	tss_ist2 __packed;	/* Interrupt stack table 2 */
 	u_int64_t	tss_ist3 __packed;	/* Interrupt stack table 3 */

==== //depot/projects/smpng/sys/arm/arm/pmap.c#15 (text+ko) ====

@@ -147,7 +147,7 @@
 #include "opt_vm.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.26 2005/03/16 23:56:29 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.28 2005/04/14 14:32:32 cognet Exp $");
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
@@ -402,7 +402,7 @@
 /*
  * Data for the pv entry allocation mechanism
  */
-#define MINPV	1024
+#define MINPV	2048
 
 #ifndef PMAP_SHPGPERPROC
 #define PMAP_SHPGPERPROC 200
@@ -1205,6 +1205,18 @@
 }
 
 /*
+ * this routine defines the region(s) of memory that should
+ * not be tested for the modified bit.
+ */
+static PMAP_INLINE int
+pmap_track_modified(vm_offset_t va)
+{
+	if ((va < kmi.clean_sva) || (va >= kmi.clean_eva)) 
+		return 1;
+	else
+		return 0;
+}
+/*
  * PTE_SYNC_CURRENT:
  *
  *     Make sure the pte is written out to RAM.
@@ -1538,7 +1550,6 @@
 		pm = pv->pv_pmap;
 		oflags = pv->pv_flags;
 		pv->pv_flags &= ~maskbits;
-		pmap_update(pv->pv_pmap);
 
 #if 0
 		pmap_acquire_pmap_lock(pm);
@@ -1549,7 +1560,8 @@
 		ptep = &l2b->l2b_kva[l2pte_index(va)];
 		npte = opte = *ptep;
 
-		if (maskbits & (PVF_WRITE|PVF_MOD)) {
+		if (maskbits & (PVF_WRITE|PVF_MOD) &&
+		    !pmap_track_modified(pv->pv_va)) {
 			if ((pv->pv_flags & PVF_NC)) {
 				/* 
 				 * Entry is not cacheable:
@@ -1570,6 +1582,7 @@
 				}
 			} else
 			if (opte & L2_S_PROT_W) {
+				vm_page_dirty(pg);
 				/* 
 				 * Entry is writable/cacheable: check if pmap
 				 * is current if it is flush it, otherwise it
@@ -1606,7 +1619,7 @@
 			}
 		}
 
-		if (maskbits & PVF_REF) {
+		if (maskbits & PVF_REF && !pmap_track_modified(pv->pv_va)) {
 			if ((pv->pv_flags & PVF_NC) == 0 &&
 			    (maskbits & (PVF_WRITE|PVF_MOD)) == 0) {
 				/*
@@ -1706,6 +1719,7 @@
 	mtx_lock(&pg->md.pvh_mtx);
 #endif
 	TAILQ_INSERT_HEAD(&pg->md.pv_list, pve, pv_list);
+	TAILQ_INSERT_HEAD(&pm->pm_pvlist, pve, pv_plist);
 	pg->md.pvh_attrs |= flags & (PVF_REF | PVF_MOD);
 	if (pm == pmap_kernel()) {
 		if (flags & PVF_WRITE)
@@ -1723,6 +1737,7 @@
 #endif
 	if (pve->pv_flags & PVF_WIRED)
 		++pm->pm_stats.wired_count;
+	vm_page_flag_set(pg, PG_REFERENCED);
 }
 
 /*
@@ -1779,9 +1794,12 @@
 {
 
 	TAILQ_REMOVE(&pg->md.pv_list, pve, pv_list);
+	TAILQ_REMOVE(&pm->pm_pvlist, pve, pv_plist);
 	if (pve->pv_flags & PVF_WIRED)
 		--pm->pm_stats.wired_count;
 	pg->md.pv_list_count--;
+	if (pg->md.pvh_attrs & PVF_MOD)
+		vm_page_dirty(pg);
 	if (pm == pmap_kernel()) {
 		if (pve->pv_flags & PVF_WRITE)
 			pg->md.krw_mappings--;
@@ -1792,8 +1810,18 @@
 			pg->md.urw_mappings--;
 		else
 			pg->md.uro_mappings--;
-	if (TAILQ_FIRST(&pg->md.pv_list) == NULL)
+	if (TAILQ_FIRST(&pg->md.pv_list) == NULL ||
+	    (pg->md.krw_mappings == 0 && pg->md.urw_mappings == 0)) {
+		pg->md.pvh_attrs &= ~PVF_MOD;
+		if (TAILQ_FIRST(&pg->md.pv_list) == NULL)
+			pg->md.pvh_attrs &= ~PVF_REF;
 		vm_page_flag_clear(pg, PG_WRITEABLE);
+	} else if (pmap_track_modified(pve->pv_va))
+		vm_page_dirty(pg);
+	if (TAILQ_FIRST(&pg->md.pv_list))
+		vm_page_flag_set(pg, PG_REFERENCED);
+	if (pve->pv_flags & PVF_WRITE)
+		pmap_vac_me_harder(pg, pm, 0);
 }
 
 static struct pv_entry *
@@ -1869,6 +1897,11 @@
 			pg->md.uro_mappings++;
 			pg->md.urw_mappings--;
 		}
+		if (pg->md.krw_mappings == 0 && pg->md.urw_mappings == 0) {
+			pg->md.pvh_attrs &= ~PVF_MOD;
+			vm_page_flag_clear(pg, PG_WRITEABLE);
+		}
+		pmap_vac_me_harder(pg, pm, 0);
 	}
 
 	return (oflags);
@@ -2014,7 +2047,10 @@
 			goto out;
 		}
 
-		pg->md.pvh_attrs |= PVF_REF | PVF_MOD;
+		if (pmap_track_modified(pv->pv_va)) {
+			pg->md.pvh_attrs |= PVF_REF | PVF_MOD;
+			vm_page_dirty(pg);
+		}
 		pv->pv_flags |= PVF_REF | PVF_MOD;
 
 		/* 
@@ -2038,13 +2074,16 @@
 		struct vm_page *pg;
 
 		/* Extract the physical address of the page */
-		if ((pg = PHYS_TO_VM_PAGE(pa)) == NULL)
+		vm_page_lock_queues();
+		if ((pg = PHYS_TO_VM_PAGE(pa)) == NULL) {
+			vm_page_unlock_queues();
 			goto out;
-
+		}
 		/* Get the current flags for this page. */
 
 		pv = pmap_find_pv(pg, pm, va);
 		if (pv == NULL) {
+			vm_page_unlock_queues();
 			goto out;
 		}
 
@@ -2055,6 +2094,7 @@
 		*ptep = (pte & ~L2_TYPE_MASK) | L2_S_PROTO;
 		PTE_SYNC(ptep);
 		rv = 1;
+		vm_page_unlock_queues();
 	}
 
 	/*
@@ -2236,7 +2276,7 @@
 		pcb->pcb_pl1vec = &pm->pm_l1->l1_kva[L1_IDX(vector_page)];
 		l2b = pmap_get_l2_bucket(pm, vector_page);
 		pcb->pcb_l1vec = l2b->l2b_phys | L1_C_PROTO |
-	 	    L1_C_DOM(pm->pm_domain);
+	 	    L1_C_DOM(pm->pm_domain) | L1_C_DOM(PMAP_DOMAIN_KERNEL);
 	} else
 		pcb->pcb_pl1vec = NULL;
 }
@@ -2486,6 +2526,7 @@
 	kernel_pmap->pm_active = -1;
 	kernel_pmap->pm_domain = PMAP_DOMAIN_KERNEL;
 	LIST_INIT(&allpmaps);
+	TAILQ_INIT(&kernel_pmap->pm_pvlist);
 	LIST_INSERT_HEAD(&allpmaps, kernel_pmap, pm_list);
 	
 	/*
@@ -2585,7 +2626,7 @@
 	vm_paddr_t pa;
 	struct vm_page *pg;
 	
-	pg = vm_page_alloc(NULL, 0, VM_ALLOC_NOOBJ | VM_ALLOC_SYSTEM |
+	pg = vm_page_alloc(NULL, 0, VM_ALLOC_NOOBJ | VM_ALLOC_ZERO |
 	    VM_ALLOC_WIRED);
 	if (pg == NULL)
 		return (1);
@@ -2600,7 +2641,6 @@
 	*ptep = L2_S_PROTO | pa | cache_mode |
 	    L2_S_PROT(PTE_KERNEL, VM_PROT_READ | VM_PROT_WRITE);
 	PTE_SYNC(ptep);
-	memset((void *)va, 0, PAGE_SIZE);
 	return (0);
 }
 
@@ -2691,7 +2731,7 @@
 
 	/* Distribute new L1 entry to all other L1s */
 	SLIST_FOREACH(l1, &l1_list, l1_link) {
-			pl1pd = &l1->l1_kva[L1_IDX(pmap_curmaxkvaddr)];
+			pl1pd = &l1->l1_kva[L1_IDX(va)];
 			*pl1pd = l2b->l2b_phys | L1_C_DOM(PMAP_DOMAIN_KERNEL) |
 			    L1_C_PROTO;
 			PTE_SYNC(pl1pd);
@@ -2772,7 +2812,34 @@
 void
 pmap_remove_pages(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
 {
-
+	struct pv_entry *pv, *npv;
+	struct l2_bucket *l2b = NULL;
+	vm_page_t m;
+	pt_entry_t *pt;
+	
+	vm_page_lock_queues();
+	for (pv = TAILQ_FIRST(&pmap->pm_pvlist); pv; pv = npv) {
+		if (pv->pv_va >= eva || pv->pv_va < sva) {
+			npv = TAILQ_NEXT(pv, pv_plist);
+			continue;
+		}
+		if (pv->pv_flags & PVF_WIRED) {
+			/* The page is wired, cannot remove it now. */
+			npv = TAILQ_NEXT(pv, pv_plist);
+			continue;
+		}
+		pmap->pm_stats.resident_count--;
+		l2b = pmap_get_l2_bucket(pmap, pv->pv_va);
+		KASSERT(l2b != NULL, ("No L2 bucket in pmap_remove_pages"));
+		pt = &l2b->l2b_kva[l2pte_index(pv->pv_va)];
+		m = PHYS_TO_VM_PAGE(*pt & L2_ADDR_MASK);
+		*pt = 0;
+		PTE_SYNC(pt);
+		npv = TAILQ_NEXT(pv, pv_plist);
+		pmap_nuke_pv(m, pmap, pv);
+		pmap_free_pv_entry(pv);
+	}
+	vm_page_unlock_queues();
 	cpu_idcache_wbinv_all();
 	cpu_tlb_flushID();
 	cpu_cpwait();
@@ -2852,6 +2919,8 @@
 	pt_entry_t *pte, opte;
 		
 	l2b = pmap_get_l2_bucket(pmap_kernel(), va);
+	if (!l2b)
+		return;
 	KASSERT(l2b != NULL, ("No L2 Bucket"));
 	pte = &l2b->l2b_kva[l2pte_index(va)];
 	opte = *pte;
@@ -2859,9 +2928,8 @@
 		cpu_dcache_wbinv_range(va, PAGE_SIZE);
 		cpu_tlb_flushD_SE(va);
 		cpu_cpwait();
+		*pte = 0;
 	}
-	if (opte)
-		*pte = 0;
 }
 
 
@@ -2902,8 +2970,8 @@
 	struct pv_entry *pv;
 
 	TAILQ_FOREACH(pv, &m->md.pv_list, pv_list)
-		pmap_dcache_wb_range(pv->pv_pmap, pv->pv_va, PAGE_SIZE, FALSE,
-		    (pv->pv_flags & PVF_WRITE) == 0);
+	    pmap_dcache_wb_range(pv->pv_pmap, pv->pv_va, PAGE_SIZE, FALSE,
+		(pv->pv_flags & PVF_WRITE) == 0);
 }
 
 /*
@@ -3060,12 +3128,10 @@
 	if (TAILQ_EMPTY(&m->md.pv_list))
 		return;
 	curpm = vmspace_pmap(curproc->p_vmspace);
-	pmap_update(curpm);
 	while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) {
 		if (flush == FALSE && (pv->pv_pmap == curpm ||
 		    pv->pv_pmap == pmap_kernel()))
 			flush = TRUE;
-		pmap_update(pv->pv_pmap);
 		l2b = pmap_get_l2_bucket(pv->pv_pmap, pv->pv_va);
 		KASSERT(l2b != NULL, ("No l2 bucket"));
 		ptep = &l2b->l2b_kva[l2pte_index(pv->pv_va)];
@@ -3087,7 +3153,6 @@
 		else
 			pmap_tlb_flushD(curpm);
 	}
-		
 }
 
 
@@ -3121,7 +3186,6 @@
 
 	mtx_lock(&Giant);
 
-	pmap_update(pm);
 	/*
 	 * OK, at this point, we know we're doing write-protect operation.
 	 * If the pmap is active, write-back the range.
@@ -3131,6 +3195,7 @@
 	flush = ((eva - sva) >= (PAGE_SIZE * 4)) ? 0 : -1;
 	flags = 0;
 
+	vm_page_lock_queues();
 	while (sva < eva) {
 		next_bucket = L2_NEXT_BUCKET(sva);
 		if (next_bucket > eva)
@@ -3158,6 +3223,8 @@
 					f = pmap_modify_pv(pg, pm, sva,
 					    PVF_WRITE, 0);
 					pmap_vac_me_harder(pg, pm, sva);
+					if (pmap_track_modified(sva))
+						vm_page_dirty(pg);
 				} else
 					f = PVF_REF | PVF_EXEC;
 
@@ -3185,6 +3252,7 @@
 		if (PV_BEEN_REFD(flags))
 			pmap_tlb_flushD(pm);
 	}
+	vm_page_unlock_queues();
 
 	mtx_unlock(&Giant);
 }
@@ -3209,13 +3277,12 @@
 {
 	struct l2_bucket *l2b = NULL;
 	struct vm_page *opg;
-	struct pv_entry *pve;
+	struct pv_entry *pve = NULL;
 	pt_entry_t *ptep, npte, opte;
 	u_int nflags;
 	u_int oflags;
 	vm_paddr_t pa;
 
-	pmap_update(pmap);
 	vm_page_lock_queues();
 	if (va == vector_page) {
 		pa = systempage.pv_pa;
@@ -3271,9 +3338,8 @@
 		
 		nflags |= PVF_REF;
 		
-		if (((prot & VM_PROT_WRITE) != 0 && 
-		    m && ((m->flags & PG_WRITEABLE) || 
-		     (m->md.pvh_attrs & PVF_MOD) != 0))) {
+		if (m && ((prot & VM_PROT_WRITE) != 0 ||
+		    (m->md.pvh_attrs & PVF_MOD))) {
 			/*
 			 * This is a writable mapping, and the
 			 * page's mod state indicates it has

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


More information about the p4-projects mailing list