Date: Sun, 12 Jun 2011 20:19:18 +0000 (UTC) From: Marcel Moolenaar <marcel@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r223022 - in projects/altix: lib/libstand sys sys/amd64/acpica sys/amd64/amd64 sys/amd64/conf sys/amd64/include sys/arm/arm sys/arm/include sys/boot/common sys/boot/forth sys/boot/i386/... Message-ID: <201106122019.p5CKJIdC039804@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: marcel Date: Sun Jun 12 20:19:17 2011 New Revision: 223022 URL: http://svn.freebsd.org/changeset/base/223022 Log: Sync with head@223020 Added: projects/altix/sys/boot/forth/beastie.4th.8 - copied unchanged from r223020, head/sys/boot/forth/beastie.4th.8 projects/altix/sys/boot/forth/brand.4th - copied unchanged from r223020, head/sys/boot/forth/brand.4th projects/altix/sys/boot/forth/brand.4th.8 - copied unchanged from r223020, head/sys/boot/forth/brand.4th.8 projects/altix/sys/boot/forth/check-password.4th - copied unchanged from r223020, head/sys/boot/forth/check-password.4th projects/altix/sys/boot/forth/check-password.4th.8 - copied unchanged from r223020, head/sys/boot/forth/check-password.4th.8 projects/altix/sys/boot/forth/color.4th - copied unchanged from r223020, head/sys/boot/forth/color.4th projects/altix/sys/boot/forth/color.4th.8 - copied unchanged from r223020, head/sys/boot/forth/color.4th.8 projects/altix/sys/boot/forth/delay.4th - copied unchanged from r223020, head/sys/boot/forth/delay.4th projects/altix/sys/boot/forth/delay.4th.8 - copied unchanged from r223020, head/sys/boot/forth/delay.4th.8 projects/altix/sys/boot/forth/menu-commands.4th - copied unchanged from r223020, head/sys/boot/forth/menu-commands.4th projects/altix/sys/boot/forth/menu.4th - copied unchanged from r223020, head/sys/boot/forth/menu.4th projects/altix/sys/boot/forth/menu.4th.8 - copied unchanged from r223020, head/sys/boot/forth/menu.4th.8 projects/altix/sys/boot/forth/menu.rc - copied unchanged from r223020, head/sys/boot/forth/menu.rc projects/altix/sys/boot/forth/shortcuts.4th - copied unchanged from r223020, head/sys/boot/forth/shortcuts.4th projects/altix/sys/boot/forth/version.4th - copied unchanged from r223020, head/sys/boot/forth/version.4th projects/altix/sys/boot/forth/version.4th.8 - copied unchanged from r223020, head/sys/boot/forth/version.4th.8 projects/altix/sys/boot/ia64/common/icache.c - copied unchanged from r223020, head/sys/boot/ia64/common/icache.c projects/altix/sys/dev/ath/ath_dfs/ - copied from r223020, head/sys/dev/ath/ath_dfs/ projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287.c - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287.c projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287.h - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287.h projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287.ini - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287.ini projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287_attach.c - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287_attach.c projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287_cal.c - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287_cal.c projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287_cal.h - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287_cal.h projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287_olc.c - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287_olc.c projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287_olc.h - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287_olc.h projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287_reset.c - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287_reset.c projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287_reset.h - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287_reset.h projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287an.h - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287an.h projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287phy.h - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287phy.h projects/altix/sys/dev/ath/if_athdfs.h - copied unchanged from r223020, head/sys/dev/ath/if_athdfs.h projects/altix/sys/dev/cxgbe/common/jhash.h - copied unchanged from r223020, head/sys/dev/cxgbe/common/jhash.h projects/altix/sys/dev/cxgbe/t4_l2t.c - copied unchanged from r223020, head/sys/dev/cxgbe/t4_l2t.c projects/altix/sys/dev/cxgbe/t4_l2t.h - copied unchanged from r223020, head/sys/dev/cxgbe/t4_l2t.h projects/altix/sys/dev/glxiic/ - copied from r223020, head/sys/dev/glxiic/ projects/altix/sys/dev/iicbus/ad7417.c - copied unchanged from r223020, head/sys/dev/iicbus/ad7417.c projects/altix/sys/dev/usb/serial/umcs.c - copied unchanged from r223020, head/sys/dev/usb/serial/umcs.c projects/altix/sys/dev/usb/serial/umcs.h - copied unchanged from r223020, head/sys/dev/usb/serial/umcs.h projects/altix/sys/modules/glxiic/ - copied from r223020, head/sys/modules/glxiic/ projects/altix/sys/modules/usb/umcs/ - copied from r223020, head/sys/modules/usb/umcs/ projects/altix/sys/netinet/in_pcbgroup.c - copied unchanged from r223020, head/sys/netinet/in_pcbgroup.c projects/altix/sys/netinet6/in6_pcbgroup.c - copied unchanged from r223020, head/sys/netinet6/in6_pcbgroup.c projects/altix/sys/powerpc/include/rtas.h - copied unchanged from r223020, head/sys/powerpc/include/rtas.h projects/altix/sys/powerpc/ofw/ofwcall32.S - copied unchanged from r223020, head/sys/powerpc/ofw/ofwcall32.S projects/altix/sys/powerpc/ofw/ofwcall64.S - copied unchanged from r223020, head/sys/powerpc/ofw/ofwcall64.S projects/altix/sys/powerpc/ofw/ofwmagic.S - copied unchanged from r223020, head/sys/powerpc/ofw/ofwmagic.S projects/altix/sys/powerpc/ofw/rtas.c - copied unchanged from r223020, head/sys/powerpc/ofw/rtas.c projects/altix/sys/powerpc/powermac/powermac_thermal.c - copied unchanged from r223020, head/sys/powerpc/powermac/powermac_thermal.c projects/altix/sys/powerpc/powermac/powermac_thermal.h - copied unchanged from r223020, head/sys/powerpc/powermac/powermac_thermal.h projects/altix/sys/powerpc/powermac/windtunnel.c - copied unchanged from r223020, head/sys/powerpc/powermac/windtunnel.c projects/altix/sys/sys/_cpuset.h - copied unchanged from r223020, head/sys/sys/_cpuset.h Replaced: projects/altix/sys/nfs/nfs_kdtrace.h - copied unchanged from r223020, head/sys/nfs/nfs_kdtrace.h projects/altix/sys/sys/_stdint.h - copied unchanged from r223020, head/sys/sys/_stdint.h Deleted: projects/altix/sys/powerpc/aim/ofwmagic.S Modified: projects/altix/lib/libstand/bswap.c projects/altix/sys/Makefile projects/altix/sys/amd64/acpica/acpi_wakeup.c projects/altix/sys/amd64/amd64/identcpu.c projects/altix/sys/amd64/amd64/intr_machdep.c projects/altix/sys/amd64/amd64/legacy.c projects/altix/sys/amd64/amd64/machdep.c projects/altix/sys/amd64/amd64/mp_machdep.c projects/altix/sys/amd64/amd64/pmap.c projects/altix/sys/amd64/amd64/vm_machdep.c projects/altix/sys/amd64/conf/GENERIC projects/altix/sys/amd64/include/_types.h projects/altix/sys/amd64/include/pmap.h projects/altix/sys/amd64/include/smp.h projects/altix/sys/amd64/include/specialreg.h projects/altix/sys/arm/arm/pmap.c projects/altix/sys/arm/include/_types.h projects/altix/sys/arm/include/pmap.h projects/altix/sys/boot/common/Makefile.inc projects/altix/sys/boot/forth/beastie.4th projects/altix/sys/boot/forth/loader.4th projects/altix/sys/boot/forth/loader.conf.5 projects/altix/sys/boot/forth/loader.rc projects/altix/sys/boot/forth/support.4th projects/altix/sys/boot/i386/loader/Makefile projects/altix/sys/boot/i386/zfsboot/Makefile projects/altix/sys/boot/ia64/common/Makefile projects/altix/sys/boot/ia64/common/exec.c projects/altix/sys/boot/ia64/common/libia64.h projects/altix/sys/boot/ia64/efi/efimd.c projects/altix/sys/boot/ia64/efi/main.c projects/altix/sys/boot/ia64/efi/version projects/altix/sys/boot/pc98/loader/Makefile projects/altix/sys/boot/powerpc/ofw/Makefile projects/altix/sys/boot/powerpc/ps3/Makefile projects/altix/sys/boot/sparc64/loader/Makefile projects/altix/sys/cam/ata/ata_all.c projects/altix/sys/cam/ata/ata_da.c projects/altix/sys/cam/ata/ata_xpt.c projects/altix/sys/cam/scsi/scsi_ses.h projects/altix/sys/cddl/compat/opensolaris/kern/opensolaris.c projects/altix/sys/cddl/compat/opensolaris/kern/opensolaris_sysevent.c projects/altix/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c projects/altix/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c projects/altix/sys/cddl/compat/opensolaris/sys/atomic.h projects/altix/sys/cddl/compat/opensolaris/sys/kstat.h projects/altix/sys/cddl/compat/opensolaris/sys/taskq.h projects/altix/sys/cddl/compat/opensolaris/sys/time.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/ddt.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c projects/altix/sys/cddl/dev/cyclic/cyclic.c projects/altix/sys/cddl/dev/cyclic/i386/cyclic_machdep.c projects/altix/sys/cddl/dev/dtrace/amd64/dtrace_subr.c projects/altix/sys/cddl/dev/dtrace/i386/dtrace_subr.c projects/altix/sys/conf/Makefile.powerpc projects/altix/sys/conf/NOTES projects/altix/sys/conf/files projects/altix/sys/conf/files.i386 projects/altix/sys/conf/files.powerpc projects/altix/sys/conf/kern.mk projects/altix/sys/conf/kern.post.mk projects/altix/sys/conf/kmod.mk projects/altix/sys/conf/newvers.sh projects/altix/sys/conf/options projects/altix/sys/contrib/dev/acpica/changes.txt projects/altix/sys/contrib/dev/acpica/debugger/dbexec.c projects/altix/sys/contrib/dev/acpica/debugger/dbinput.c projects/altix/sys/contrib/dev/acpica/debugger/dbutils.c projects/altix/sys/contrib/dev/acpica/debugger/dbxface.c projects/altix/sys/contrib/dev/acpica/include/acconfig.h projects/altix/sys/contrib/dev/acpica/include/acdebug.h projects/altix/sys/contrib/dev/acpica/include/acglobal.h projects/altix/sys/contrib/dev/acpica/include/aclocal.h projects/altix/sys/contrib/dev/acpica/include/acpiosxf.h projects/altix/sys/contrib/dev/acpica/include/acpixf.h projects/altix/sys/contrib/dev/acpica/include/acpredef.h projects/altix/sys/contrib/dev/acpica/osunixxf.c projects/altix/sys/contrib/dev/acpica/tables/tbinstal.c projects/altix/sys/contrib/pf/net/pf.c projects/altix/sys/contrib/pf/net/pf_ioctl.c projects/altix/sys/contrib/pf/net/pf_norm.c projects/altix/sys/ddb/db_command.c projects/altix/sys/dev/aac/aac.c projects/altix/sys/dev/aac/aacvar.h projects/altix/sys/dev/acpica/Osd/OsdDebug.c projects/altix/sys/dev/acpica/acpi.c projects/altix/sys/dev/acpica/acpi_hpet.c projects/altix/sys/dev/acpica/acpi_timer.c projects/altix/sys/dev/ahci/ahci.c projects/altix/sys/dev/ahci/ahci.h projects/altix/sys/dev/alc/if_alcreg.h projects/altix/sys/dev/ale/if_alereg.h projects/altix/sys/dev/amdsbwd/amdsbwd.c projects/altix/sys/dev/ata/ata-sata.c projects/altix/sys/dev/ath/ah_osdep.c projects/altix/sys/dev/ath/ath_hal/ah.c projects/altix/sys/dev/ath/ath_hal/ah.h projects/altix/sys/dev/ath/ath_hal/ah_desc.h projects/altix/sys/dev/ath/ath_hal/ah_devid.h projects/altix/sys/dev/ath/ath_hal/ah_eeprom.h projects/altix/sys/dev/ath/ath_hal/ah_eeprom_9287.c projects/altix/sys/dev/ath/ath_hal/ah_eeprom_v1.c projects/altix/sys/dev/ath/ath_hal/ah_eeprom_v14.c projects/altix/sys/dev/ath/ath_hal/ah_eeprom_v3.c projects/altix/sys/dev/ath/ath_hal/ah_eeprom_v4k.c projects/altix/sys/dev/ath/ath_hal/ah_internal.h projects/altix/sys/dev/ath/ath_hal/ar5212/ar5212.h projects/altix/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c projects/altix/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c projects/altix/sys/dev/ath/ath_hal/ar5212/ar5212reg.h projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416.h projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_ani.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416desc.h projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416phy.h projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416reg.h projects/altix/sys/dev/ath/ath_hal/ar9001/ar9130_attach.c projects/altix/sys/dev/ath/ath_hal/ar9001/ar9160_attach.c projects/altix/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c projects/altix/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c projects/altix/sys/dev/ath/ath_rate/sample/sample.c projects/altix/sys/dev/ath/if_ath.c projects/altix/sys/dev/ath/if_ath_sysctl.c projects/altix/sys/dev/ath/if_ath_tx_ht.c projects/altix/sys/dev/ath/if_athioctl.h projects/altix/sys/dev/ath/if_athvar.h projects/altix/sys/dev/atkbdc/atkbd.c projects/altix/sys/dev/bge/if_bge.c projects/altix/sys/dev/bxe/bxe_debug.h projects/altix/sys/dev/bxe/bxe_link.c projects/altix/sys/dev/bxe/if_bxe.c projects/altix/sys/dev/bxe/if_bxe.h projects/altix/sys/dev/cardbus/cardbus_cis.c projects/altix/sys/dev/cfi/cfi_dev.c projects/altix/sys/dev/cxgbe/adapter.h projects/altix/sys/dev/cxgbe/common/common.h projects/altix/sys/dev/cxgbe/common/t4fw_interface.h projects/altix/sys/dev/cxgbe/offload.h projects/altix/sys/dev/cxgbe/osdep.h projects/altix/sys/dev/cxgbe/t4_ioctl.h projects/altix/sys/dev/cxgbe/t4_main.c projects/altix/sys/dev/cxgbe/t4_sge.c projects/altix/sys/dev/gem/if_gem.c projects/altix/sys/dev/hwpmc/hwpmc_mod.c projects/altix/sys/dev/iicbus/ds1775.c projects/altix/sys/dev/iicbus/max6690.c projects/altix/sys/dev/ipw/if_ipw.c projects/altix/sys/dev/iwi/if_iwi.c projects/altix/sys/dev/iwn/if_iwn.c projects/altix/sys/dev/ixgbe/LICENSE projects/altix/sys/dev/ixgbe/README projects/altix/sys/dev/ixgbe/ixgbe.c projects/altix/sys/dev/ixgbe/ixv.c projects/altix/sys/dev/mfi/mfi.c projects/altix/sys/dev/mfi/mfireg.h projects/altix/sys/dev/mii/mii.c projects/altix/sys/dev/mk48txx/mk48txx.c projects/altix/sys/dev/mk48txx/mk48txxreg.h projects/altix/sys/dev/mmc/mmc.c projects/altix/sys/dev/mmc/mmcvar.h projects/altix/sys/dev/msk/if_msk.c projects/altix/sys/dev/msk/if_mskreg.h projects/altix/sys/dev/mvs/mvs.c projects/altix/sys/dev/nfe/if_nfe.c projects/altix/sys/dev/pccard/pccard.c projects/altix/sys/dev/pci/pci.c projects/altix/sys/dev/pci/pci_pci.c projects/altix/sys/dev/pci/pcireg.h projects/altix/sys/dev/puc/pucdata.c projects/altix/sys/dev/scc/scc_bfe_ebus.c projects/altix/sys/dev/sdhci/sdhci.c projects/altix/sys/dev/siis/siis.c projects/altix/sys/dev/sound/pci/hda/hdac.c projects/altix/sys/dev/sound/pcm/sound.c projects/altix/sys/dev/sound/usb/uaudio.c projects/altix/sys/dev/uart/uart_cpu_sparc64.c projects/altix/sys/dev/uart/uart_dev_ns8250.c projects/altix/sys/dev/usb/controller/xhci_pci.c projects/altix/sys/dev/usb/controller/xhcireg.h projects/altix/sys/dev/usb/input/uhid.c projects/altix/sys/dev/usb/input/ukbd.c projects/altix/sys/dev/usb/input/ums.c projects/altix/sys/dev/usb/net/if_axe.c projects/altix/sys/dev/usb/storage/umass.c projects/altix/sys/dev/usb/storage/ustorage_fs.c projects/altix/sys/dev/usb/usb_device.c projects/altix/sys/dev/usb/usb_device.h projects/altix/sys/dev/usb/usb_freebsd.h projects/altix/sys/dev/usb/usb_generic.c projects/altix/sys/dev/usb/usb_hub.c projects/altix/sys/dev/usb/usb_process.c projects/altix/sys/dev/usb/usb_request.c projects/altix/sys/dev/usb/usb_request.h projects/altix/sys/dev/usb/usb_transfer.c projects/altix/sys/dev/usb/usbdevs projects/altix/sys/dev/usb/usbdi.h projects/altix/sys/dev/vge/if_vge.c projects/altix/sys/dev/wpi/if_wpi.c projects/altix/sys/dev/xen/blkback/blkback.c projects/altix/sys/dev/xen/blkfront/blkfront.c projects/altix/sys/dev/xen/control/control.c projects/altix/sys/dev/xen/netfront/netfront.c projects/altix/sys/fs/cd9660/cd9660_vfsops.c projects/altix/sys/fs/ext2fs/ext2_vfsops.c projects/altix/sys/fs/hpfs/hpfs_vfsops.c projects/altix/sys/fs/msdosfs/msdosfs_vfsops.c projects/altix/sys/fs/nfs/nfs_commonkrpc.c projects/altix/sys/fs/nfs/nfs_commonport.c projects/altix/sys/fs/nfs/nfs_commonsubs.c projects/altix/sys/fs/nfs/nfs_var.h projects/altix/sys/fs/nfsclient/nfs_clbio.c projects/altix/sys/fs/nfsclient/nfs_clcomsubs.c projects/altix/sys/fs/nfsclient/nfs_clkrpc.c projects/altix/sys/fs/nfsclient/nfs_clnfsiod.c projects/altix/sys/fs/nfsclient/nfs_clport.c projects/altix/sys/fs/nfsclient/nfs_clrpcops.c projects/altix/sys/fs/nfsclient/nfs_clstate.c projects/altix/sys/fs/nfsclient/nfs_clsubs.c projects/altix/sys/fs/nfsclient/nfs_clvfsops.c projects/altix/sys/fs/nfsclient/nfs_clvnops.c projects/altix/sys/fs/nfsserver/nfs_nfsdport.c projects/altix/sys/fs/nfsserver/nfs_nfsdsocket.c projects/altix/sys/fs/nfsserver/nfs_nfsdstate.c projects/altix/sys/fs/ntfs/ntfs_vfsops.c projects/altix/sys/fs/nullfs/null_vfsops.c projects/altix/sys/fs/nwfs/nwfs_io.c projects/altix/sys/fs/smbfs/smbfs_io.c projects/altix/sys/fs/tmpfs/tmpfs_vfsops.c projects/altix/sys/fs/udf/udf_vfsops.c projects/altix/sys/fs/unionfs/union_vfsops.c projects/altix/sys/geom/eli/g_eli.c projects/altix/sys/geom/eli/g_eli_key_cache.c projects/altix/sys/geom/gate/g_gate.c projects/altix/sys/geom/geom_disk.c projects/altix/sys/geom/geom_dump.c projects/altix/sys/geom/part/g_part.c projects/altix/sys/geom/part/g_part_ebr.c projects/altix/sys/geom/part/g_part_mbr.c projects/altix/sys/geom/part/g_part_pc98.c projects/altix/sys/geom/vinum/geom_vinum_drive.c projects/altix/sys/geom/vinum/geom_vinum_events.c projects/altix/sys/gnu/fs/reiserfs/reiserfs_vfsops.c projects/altix/sys/gnu/fs/xfs/FreeBSD/support/kdb.c projects/altix/sys/gnu/fs/xfs/FreeBSD/xfs_mountops.c projects/altix/sys/i386/conf/GENERIC projects/altix/sys/i386/conf/NOTES projects/altix/sys/i386/i386/identcpu.c projects/altix/sys/i386/i386/intr_machdep.c projects/altix/sys/i386/i386/legacy.c projects/altix/sys/i386/i386/machdep.c projects/altix/sys/i386/i386/mp_machdep.c projects/altix/sys/i386/i386/pmap.c projects/altix/sys/i386/i386/vm_machdep.c projects/altix/sys/i386/include/_types.h projects/altix/sys/i386/include/pmap.h projects/altix/sys/i386/include/sf_buf.h projects/altix/sys/i386/include/smp.h projects/altix/sys/i386/include/specialreg.h projects/altix/sys/i386/include/xen/xenvar.h projects/altix/sys/i386/pci/pci_cfgreg.c projects/altix/sys/i386/xen/mp_machdep.c projects/altix/sys/i386/xen/pmap.c projects/altix/sys/ia64/acpica/acpi_machdep.c projects/altix/sys/ia64/ia64/machdep.c projects/altix/sys/ia64/ia64/mp_machdep.c projects/altix/sys/ia64/ia64/pal.S projects/altix/sys/ia64/ia64/pmap.c projects/altix/sys/ia64/include/_types.h projects/altix/sys/ia64/include/smp.h projects/altix/sys/kern/device_if.m projects/altix/sys/kern/kern_clocksource.c projects/altix/sys/kern/kern_conf.c projects/altix/sys/kern/kern_cpuset.c projects/altix/sys/kern/kern_environment.c projects/altix/sys/kern/kern_idle.c projects/altix/sys/kern/kern_ktr.c projects/altix/sys/kern/kern_pmc.c projects/altix/sys/kern/kern_racct.c projects/altix/sys/kern/kern_rctl.c projects/altix/sys/kern/kern_rmlock.c projects/altix/sys/kern/kern_shutdown.c projects/altix/sys/kern/kern_sig.c projects/altix/sys/kern/kern_synch.c projects/altix/sys/kern/ksched.c projects/altix/sys/kern/sched_4bsd.c projects/altix/sys/kern/sched_ule.c projects/altix/sys/kern/subr_kdb.c projects/altix/sys/kern/subr_msgbuf.c projects/altix/sys/kern/subr_pcpu.c projects/altix/sys/kern/subr_prf.c projects/altix/sys/kern/subr_rman.c projects/altix/sys/kern/subr_sbuf.c projects/altix/sys/kern/subr_smp.c projects/altix/sys/kern/uipc_socket.c projects/altix/sys/kern/uipc_syscalls.c projects/altix/sys/kern/vfs_bio.c projects/altix/sys/kern/vfs_default.c projects/altix/sys/kern/vfs_syscalls.c projects/altix/sys/mips/cavium/octeon_ebt3000_cf.c projects/altix/sys/mips/cavium/octeon_mp.c projects/altix/sys/mips/include/_types.h projects/altix/sys/mips/include/atomic.h projects/altix/sys/mips/include/hwfunc.h projects/altix/sys/mips/include/pmap.h projects/altix/sys/mips/include/smp.h projects/altix/sys/mips/mips/mp_machdep.c projects/altix/sys/mips/mips/pmap.c projects/altix/sys/mips/rmi/xlr_machdep.c projects/altix/sys/mips/sibyte/sb_scd.c projects/altix/sys/modules/Makefile projects/altix/sys/modules/ath/Makefile projects/altix/sys/modules/cxgbe/if_cxgbe/Makefile projects/altix/sys/modules/usb/Makefile projects/altix/sys/modules/wlan/Makefile projects/altix/sys/net/bridgestp.c projects/altix/sys/net/bridgestp.h projects/altix/sys/net/if_epair.c projects/altix/sys/net/if_ethersubr.c projects/altix/sys/net/if_llatbl.c projects/altix/sys/net/if_llatbl.h projects/altix/sys/net/if_media.h projects/altix/sys/net/if_tun.c projects/altix/sys/net/netisr.c projects/altix/sys/net/netisr.h projects/altix/sys/net/netisr_internal.h projects/altix/sys/net80211/ieee80211_ht.c projects/altix/sys/net80211/ieee80211_output.c projects/altix/sys/net80211/ieee80211_var.h projects/altix/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c projects/altix/sys/netgraph/ng_eiface.c projects/altix/sys/netgraph/ng_nat.c projects/altix/sys/netgraph/ng_pipe.c projects/altix/sys/netinet/icmp6.h projects/altix/sys/netinet/in.c projects/altix/sys/netinet/in_pcb.c projects/altix/sys/netinet/in_pcb.h projects/altix/sys/netinet/in_proto.c projects/altix/sys/netinet/in_var.h projects/altix/sys/netinet/ip_divert.c projects/altix/sys/netinet/ip_input.c projects/altix/sys/netinet/ip_ipsec.c projects/altix/sys/netinet/ipfw/ip_dummynet.c projects/altix/sys/netinet/ipfw/ip_fw2.c projects/altix/sys/netinet/ipfw/ip_fw_dynamic.c projects/altix/sys/netinet/ipfw/ip_fw_nat.c projects/altix/sys/netinet/ipfw/ip_fw_sockopt.c projects/altix/sys/netinet/libalias/alias_sctp.h projects/altix/sys/netinet/raw_ip.c projects/altix/sys/netinet/sctp_indata.c projects/altix/sys/netinet/sctp_indata.h projects/altix/sys/netinet/sctp_output.c projects/altix/sys/netinet/sctp_output.h projects/altix/sys/netinet/sctp_usrreq.c projects/altix/sys/netinet/sctputil.c projects/altix/sys/netinet/sctputil.h projects/altix/sys/netinet/siftr.c projects/altix/sys/netinet/tcp_input.c projects/altix/sys/netinet/tcp_subr.c projects/altix/sys/netinet/tcp_syncache.c projects/altix/sys/netinet/tcp_timer.c projects/altix/sys/netinet/tcp_usrreq.c projects/altix/sys/netinet/udp_usrreq.c projects/altix/sys/netinet6/in6.c projects/altix/sys/netinet6/in6.h projects/altix/sys/netinet6/in6_pcb.c projects/altix/sys/netinet6/in6_pcb.h projects/altix/sys/netinet6/in6_proto.c projects/altix/sys/netinet6/in6_src.c projects/altix/sys/netinet6/ip6_input.c projects/altix/sys/netinet6/ip6_ipsec.c projects/altix/sys/netinet6/ip6_var.h projects/altix/sys/netinet6/nd6.c projects/altix/sys/netinet6/nd6.h projects/altix/sys/netinet6/nd6_nbr.c projects/altix/sys/netinet6/nd6_rtr.c projects/altix/sys/netinet6/send.h projects/altix/sys/netinet6/udp6_usrreq.c projects/altix/sys/nfs/nfs_common.c projects/altix/sys/nfsclient/nfs.h projects/altix/sys/nfsclient/nfs_bio.c projects/altix/sys/nfsclient/nfs_krpc.c projects/altix/sys/nfsclient/nfs_nfsiod.c projects/altix/sys/nfsclient/nfs_subs.c projects/altix/sys/nfsclient/nfs_vfsops.c projects/altix/sys/nfsclient/nfs_vnops.c projects/altix/sys/nfsserver/nfs_srvsubs.c projects/altix/sys/nlm/nlm_prot_impl.c projects/altix/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c projects/altix/sys/ofed/include/linux/list.h projects/altix/sys/pc98/pc98/machdep.c projects/altix/sys/powerpc/aim/interrupt.c projects/altix/sys/powerpc/aim/locore32.S projects/altix/sys/powerpc/aim/locore64.S projects/altix/sys/powerpc/aim/machdep.c projects/altix/sys/powerpc/aim/mmu_oea.c projects/altix/sys/powerpc/aim/mmu_oea64.c projects/altix/sys/powerpc/aim/moea64_native.c projects/altix/sys/powerpc/aim/mp_cpudep.c projects/altix/sys/powerpc/aim/slb.c projects/altix/sys/powerpc/aim/trap_subr64.S projects/altix/sys/powerpc/booke/locore.S projects/altix/sys/powerpc/booke/machdep.c projects/altix/sys/powerpc/booke/platform_bare.c projects/altix/sys/powerpc/booke/pmap.c projects/altix/sys/powerpc/conf/GENERIC projects/altix/sys/powerpc/conf/GENERIC64 projects/altix/sys/powerpc/conf/NOTES projects/altix/sys/powerpc/include/_types.h projects/altix/sys/powerpc/include/atomic.h projects/altix/sys/powerpc/include/openpicvar.h projects/altix/sys/powerpc/include/param.h projects/altix/sys/powerpc/include/pmap.h projects/altix/sys/powerpc/include/slb.h projects/altix/sys/powerpc/include/smp.h projects/altix/sys/powerpc/include/spr.h projects/altix/sys/powerpc/mpc85xx/mpc85xx.c projects/altix/sys/powerpc/mpc85xx/mpc85xx.h projects/altix/sys/powerpc/mpc85xx/openpic_fdt.c projects/altix/sys/powerpc/ofw/ofw_machdep.c projects/altix/sys/powerpc/ofw/ofw_real.c projects/altix/sys/powerpc/powermac/fcu.c projects/altix/sys/powerpc/powermac/smu.c projects/altix/sys/powerpc/powermac/smusat.c projects/altix/sys/powerpc/powerpc/intr_machdep.c projects/altix/sys/powerpc/powerpc/mp_machdep.c projects/altix/sys/powerpc/powerpc/openpic.c projects/altix/sys/powerpc/powerpc/pic_if.m projects/altix/sys/powerpc/powerpc/platform.c projects/altix/sys/powerpc/ps3/ps3bus.c projects/altix/sys/sparc64/include/_types.h projects/altix/sys/sparc64/include/ktr.h projects/altix/sys/sparc64/include/pmap.h projects/altix/sys/sparc64/include/smp.h projects/altix/sys/sparc64/sparc64/eeprom.c projects/altix/sys/sparc64/sparc64/exception.S projects/altix/sys/sparc64/sparc64/genassym.c projects/altix/sys/sparc64/sparc64/intr_machdep.c projects/altix/sys/sparc64/sparc64/mp_exception.S projects/altix/sys/sparc64/sparc64/mp_locore.S projects/altix/sys/sparc64/sparc64/mp_machdep.c projects/altix/sys/sparc64/sparc64/pmap.c projects/altix/sys/sparc64/sparc64/swtch.S projects/altix/sys/sparc64/sparc64/tlb.c projects/altix/sys/sys/_rmlock.h projects/altix/sys/sys/conf.h projects/altix/sys/sys/cpuset.h projects/altix/sys/sys/dtrace_bsd.h projects/altix/sys/sys/ktr.h projects/altix/sys/sys/mbuf.h projects/altix/sys/sys/mount.h projects/altix/sys/sys/msgbuf.h projects/altix/sys/sys/param.h projects/altix/sys/sys/pcpu.h projects/altix/sys/sys/pmckern.h projects/altix/sys/sys/proc.h projects/altix/sys/sys/racct.h projects/altix/sys/sys/sbuf.h projects/altix/sys/sys/smp.h projects/altix/sys/sys/soundcard.h projects/altix/sys/sys/types.h projects/altix/sys/sys/vnode.h projects/altix/sys/teken/libteken/teken.3 projects/altix/sys/ufs/ffs/ffs_alloc.c projects/altix/sys/ufs/ffs/ffs_balloc.c projects/altix/sys/ufs/ffs/ffs_extern.h projects/altix/sys/ufs/ffs/ffs_inode.c projects/altix/sys/ufs/ffs/ffs_snapshot.c projects/altix/sys/ufs/ffs/ffs_softdep.c projects/altix/sys/ufs/ffs/ffs_vfsops.c projects/altix/sys/ufs/ffs/ffs_vnops.c projects/altix/sys/ufs/ffs/fs.h projects/altix/sys/ufs/ffs/softdep.h projects/altix/sys/ufs/ufs/inode.h projects/altix/sys/ufs/ufs/quota.h projects/altix/sys/ufs/ufs/ufs_extern.h projects/altix/sys/ufs/ufs/ufs_lookup.c projects/altix/sys/ufs/ufs/ufs_quota.c projects/altix/sys/ufs/ufs/ufs_vfsops.c projects/altix/sys/ufs/ufs/ufs_vnops.c projects/altix/sys/ufs/ufs/ufsmount.h projects/altix/sys/vm/uma_core.c projects/altix/sys/vm/uma_int.h projects/altix/sys/vm/vm_object.c projects/altix/sys/vm/vm_page.c projects/altix/sys/vm/vm_page.h projects/altix/sys/vm/vnode_pager.c projects/altix/sys/vm/vnode_pager.h projects/altix/sys/x86/x86/local_apic.c projects/altix/sys/x86/x86/tsc.c projects/altix/sys/xen/interface/io/xenbus.h projects/altix/sys/xen/xenbus/xenbus.c projects/altix/sys/xen/xenbus/xenbus_if.m projects/altix/sys/xen/xenbus/xenbusb.c projects/altix/sys/xen/xenbus/xenbusb.h projects/altix/sys/xen/xenbus/xenbusb_back.c projects/altix/sys/xen/xenbus/xenbusb_front.c projects/altix/sys/xen/xenbus/xenbusb_if.m projects/altix/sys/xen/xenbus/xenbusvar.h projects/altix/sys/xen/xenstore/xenstorevar.h Directory Properties: projects/altix/lib/libstand/ (props changed) projects/altix/sys/ (props changed) projects/altix/sys/amd64/include/xen/ (props changed) projects/altix/sys/boot/ (props changed) projects/altix/sys/boot/i386/efi/ (props changed) projects/altix/sys/boot/ia64/efi/ (props changed) projects/altix/sys/boot/ia64/ski/ (props changed) projects/altix/sys/boot/powerpc/boot1.chrp/ (props changed) projects/altix/sys/boot/powerpc/ofw/ (props changed) projects/altix/sys/cddl/contrib/opensolaris/ (props changed) projects/altix/sys/conf/ (props changed) projects/altix/sys/contrib/dev/acpica/ (props changed) projects/altix/sys/contrib/octeon-sdk/ (props changed) projects/altix/sys/contrib/pf/ (props changed) projects/altix/sys/contrib/x86emu/ (props changed) projects/altix/sys/kern/subr_busdma.c (props changed) Modified: projects/altix/lib/libstand/bswap.c ============================================================================== --- projects/altix/lib/libstand/bswap.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/lib/libstand/bswap.c Sun Jun 12 20:19:17 2011 (r223022) @@ -8,7 +8,7 @@ __FBSDID("$FreeBSD$"); #if defined(LIBC_SCCS) && !defined(lint) static char *rcsid = "$NetBSD: bswap32.c,v 1.1 1997/10/09 15:42:33 bouyer Exp $"; -static char *rcsid = "$NetBSD: bswap64.c,v 1.1 1997/10/09 15:42:33 bouyer Exp $"; +static char *rcsid = "$NetBSD: bswap64.c,v 1.3 2009/03/16 05:59:21 cegger Exp $"; #endif #include <sys/types.h> @@ -30,12 +30,28 @@ bswap32(u_int32_t x) u_int64_t bswap64(u_int64_t x) -{ - u_int32_t *p = (u_int32_t*)&x; - u_int32_t t; - t = bswap32(p[0]); - p[0] = bswap32(p[1]); - p[1] = t; - return x; -} - +{ +#ifdef _LP64 + /* + * Assume we have wide enough registers to do it without touching + * memory. + */ + return ( (x << 56) & 0xff00000000000000UL ) | + ( (x << 40) & 0x00ff000000000000UL ) | + ( (x << 24) & 0x0000ff0000000000UL ) | + ( (x << 8) & 0x000000ff00000000UL ) | + ( (x >> 8) & 0x00000000ff000000UL ) | + ( (x >> 24) & 0x0000000000ff0000UL ) | + ( (x >> 40) & 0x000000000000ff00UL ) | + ( (x >> 56) & 0x00000000000000ffUL ); +#else + /* + * Split the operation in two 32bit steps. + */ + u_int32_t tl, th; + + th = bswap32((u_int32_t)(x & 0x00000000ffffffffULL)); + tl = bswap32((u_int32_t)((x >> 32) & 0x00000000ffffffffULL)); + return ((u_int64_t)th << 32) | tl; +#endif +} Modified: projects/altix/sys/Makefile ============================================================================== --- projects/altix/sys/Makefile Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/Makefile Sun Jun 12 20:19:17 2011 (r223022) @@ -12,7 +12,7 @@ CSCOPEDIRS= boot bsm cam cddl compat con geom gnu isa kern libkern modules net net80211 netatalk \ netgraph netinet netinet6 netipsec netipx netnatm netncp \ netsmb nfs nfsclient nfsserver nlm opencrypto \ - pci rpc security sys ufs vm xdr ${CSCOPE_ARCHDIR} + pci rpc security sys ufs vm xdr xen ${CSCOPE_ARCHDIR} .if defined(ALL_ARCH) CSCOPE_ARCHDIR ?= amd64 arm i386 ia64 mips pc98 powerpc sparc64 x86 .else Modified: projects/altix/sys/amd64/acpica/acpi_wakeup.c ============================================================================== --- projects/altix/sys/amd64/acpica/acpi_wakeup.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/amd64/acpica/acpi_wakeup.c Sun Jun 12 20:19:17 2011 (r223022) @@ -78,7 +78,7 @@ static void acpi_stop_beep(void *); #ifdef SMP static int acpi_wakeup_ap(struct acpi_softc *, int); -static void acpi_wakeup_cpus(struct acpi_softc *, cpumask_t); +static void acpi_wakeup_cpus(struct acpi_softc *, const cpuset_t *); #endif #define WAKECODE_VADDR(sc) ((sc)->acpi_wakeaddr + (3 * PAGE_SIZE)) @@ -173,7 +173,7 @@ acpi_wakeup_ap(struct acpi_softc *sc, in #define BIOS_WARM (0x0a) static void -acpi_wakeup_cpus(struct acpi_softc *sc, cpumask_t wakeup_cpus) +acpi_wakeup_cpus(struct acpi_softc *sc, const cpuset_t *wakeup_cpus) { uint32_t mpbioswarmvec; int cpu; @@ -192,7 +192,7 @@ acpi_wakeup_cpus(struct acpi_softc *sc, /* Wake up each AP. */ for (cpu = 1; cpu < mp_ncpus; cpu++) { - if ((wakeup_cpus & (1 << cpu)) == 0) + if (!CPU_ISSET(cpu, wakeup_cpus)) continue; if (acpi_wakeup_ap(sc, cpu) == 0) { /* restore the warmstart vector */ @@ -214,7 +214,7 @@ int acpi_sleep_machdep(struct acpi_softc *sc, int state) { #ifdef SMP - cpumask_t wakeup_cpus; + cpuset_t wakeup_cpus; #endif register_t cr3, rf; ACPI_STATUS status; @@ -244,10 +244,9 @@ acpi_sleep_machdep(struct acpi_softc *sc if (savectx(susppcbs[0])) { #ifdef SMP - if (wakeup_cpus != 0 && suspend_cpus(wakeup_cpus) == 0) { - device_printf(sc->acpi_dev, - "Failed to suspend APs: CPU mask = 0x%jx\n", - (uintmax_t)(wakeup_cpus & ~stopped_cpus)); + if (!CPU_EMPTY(&wakeup_cpus) && + suspend_cpus(wakeup_cpus) == 0) { + device_printf(sc->acpi_dev, "Failed to suspend APs\n"); goto out; } #endif @@ -282,8 +281,8 @@ acpi_sleep_machdep(struct acpi_softc *sc PCPU_SET(switchtime, 0); PCPU_SET(switchticks, ticks); #ifdef SMP - if (wakeup_cpus != 0) - acpi_wakeup_cpus(sc, wakeup_cpus); + if (!CPU_EMPTY(&wakeup_cpus)) + acpi_wakeup_cpus(sc, &wakeup_cpus); #endif acpi_resync_clock(sc); ret = 0; @@ -291,7 +290,7 @@ acpi_sleep_machdep(struct acpi_softc *sc out: #ifdef SMP - if (wakeup_cpus != 0) + if (!CPU_EMPTY(&wakeup_cpus)) restart_cpus(wakeup_cpus); #endif Modified: projects/altix/sys/amd64/amd64/identcpu.c ============================================================================== --- projects/altix/sys/amd64/amd64/identcpu.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/amd64/amd64/identcpu.c Sun Jun 12 20:19:17 2011 (r223022) @@ -216,6 +216,14 @@ printcpuinfo(void) printf(" Family = %x", CPUID_TO_FAMILY(cpu_id)); printf(" Model = %x", CPUID_TO_MODEL(cpu_id)); printf(" Stepping = %u", cpu_id & CPUID_STEPPING); + + /* + * AMD CPUID Specification + * http://support.amd.com/us/Embedded_TechDocs/25481.pdf + * + * Intel Processor Identification and CPUID Instruction + * http://www.intel.com/assets/pdf/appnote/241618.pdf + */ if (cpu_high > 0) { /* @@ -277,38 +285,29 @@ printcpuinfo(void) "\012SSSE3" /* SSSE3 */ "\013CNXT-ID" /* L1 context ID available */ "\014<b11>" - "\015<b12>" + "\015FMA" /* Fused Multiply Add */ "\016CX16" /* CMPXCHG16B Instruction */ "\017xTPR" /* Send Task Priority Messages*/ "\020PDCM" /* Perf/Debug Capability MSR */ "\021<b16>" - "\022PCID" /* Process-context Identifiers */ + "\022PCID" /* Process-context Identifiers*/ "\023DCA" /* Direct Cache Access */ - "\024SSE4.1" - "\025SSE4.2" + "\024SSE4.1" /* SSE 4.1 */ + "\025SSE4.2" /* SSE 4.2 */ "\026x2APIC" /* xAPIC Extensions */ - "\027MOVBE" - "\030POPCNT" - "\031<b24>" - "\032AESNI" /* AES Crypto*/ - "\033XSAVE" - "\034OSXSAVE" - "\035<b28>" - "\036<b29>" + "\027MOVBE" /* MOVBE Instruction */ + "\030POPCNT" /* POPCNT Instruction */ + "\031TSCDLT" /* TSC-Deadline Timer */ + "\032AESNI" /* AES Crypto */ + "\033XSAVE" /* XSAVE/XRSTOR States */ + "\034OSXSAVE" /* OS-Enabled State Management*/ + "\035AVX" /* Advanced Vector Extensions */ + "\036F16C" /* Half-precision conversions */ "\037<b30>" "\040HV" /* Hypervisor */ ); } - /* - * AMD64 Architecture Programmer's Manual Volume 3: - * General-Purpose and System Instructions - * http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24594.pdf - * - * IA-32 Intel Architecture Software Developer's Manual, - * Volume 2A: Instruction Set Reference, A-M - * ftp://download.intel.com/design/Pentium4/manuals/25366617.pdf - */ if (amd_feature != 0) { printf("\n AMD Features=0x%b", amd_feature, "\020" /* in hex */ @@ -361,18 +360,18 @@ printcpuinfo(void) "\011Prefetch" /* 3DNow! Prefetch/PrefetchW */ "\012OSVW" /* OS visible workaround */ "\013IBS" /* Instruction based sampling */ - "\014SSE5" /* SSE5 */ + "\014XOP" /* XOP extended instructions */ "\015SKINIT" /* SKINIT/STGI */ "\016WDT" /* Watchdog timer */ "\017<b14>" - "\020<b15>" - "\021<b16>" + "\020LWP" /* Lightweight Profiling */ + "\021FMA4" /* 4-operand FMA instructions */ "\022<b17>" "\023<b18>" - "\024<b19>" + "\024NodeId" /* NodeId MSR support */ "\025<b20>" - "\026<b21>" - "\027<b22>" + "\026TBM" /* Trailing Bit Manipulation */ + "\027Topology" /* Topology Extensions */ "\030<b23>" "\031<b24>" "\032<b25>" Modified: projects/altix/sys/amd64/amd64/intr_machdep.c ============================================================================== --- projects/altix/sys/amd64/amd64/intr_machdep.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/amd64/amd64/intr_machdep.c Sun Jun 12 20:19:17 2011 (r223022) @@ -443,8 +443,7 @@ DB_SHOW_COMMAND(irqs, db_show_irqs) * allocate CPUs round-robin. */ -/* The BSP is always a valid target. */ -static cpumask_t intr_cpus = (1 << 0); +static cpuset_t intr_cpus; static int current_cpu; /* @@ -466,7 +465,7 @@ intr_next_cpu(void) current_cpu++; if (current_cpu > mp_maxid) current_cpu = 0; - } while (!(intr_cpus & (1 << current_cpu))); + } while (!CPU_ISSET(current_cpu, &intr_cpus)); mtx_unlock_spin(&icu_lock); return (apic_id); } @@ -497,7 +496,7 @@ intr_add_cpu(u_int cpu) printf("INTR: Adding local APIC %d as a target\n", cpu_apic_ids[cpu]); - intr_cpus |= (1 << cpu); + CPU_SET(cpu, &intr_cpus); } /* @@ -510,6 +509,9 @@ intr_shuffle_irqs(void *arg __unused) struct intsrc *isrc; int i; + /* The BSP is always a valid target. */ + CPU_SETOF(0, &intr_cpus); + /* Don't bother on UP. */ if (mp_ncpus == 1) return; Modified: projects/altix/sys/amd64/amd64/legacy.c ============================================================================== --- projects/altix/sys/amd64/amd64/legacy.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/amd64/amd64/legacy.c Sun Jun 12 20:19:17 2011 (r223022) @@ -81,6 +81,7 @@ static device_method_t legacy_methods[] DEVMETHOD(bus_read_ivar, legacy_read_ivar), DEVMETHOD(bus_write_ivar, legacy_write_ivar), DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource), + DEVMETHOD(bus_adjust_resource, bus_generic_adjust_resource), DEVMETHOD(bus_release_resource, bus_generic_release_resource), DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), Modified: projects/altix/sys/amd64/amd64/machdep.c ============================================================================== --- projects/altix/sys/amd64/amd64/machdep.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/amd64/amd64/machdep.c Sun Jun 12 20:19:17 2011 (r223022) @@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$"); #include "opt_isa.h" #include "opt_kstack_pages.h" #include "opt_maxmem.h" +#include "opt_mp_watchdog.h" #include "opt_perfmon.h" #include "opt_sched.h" #include "opt_kdtrace.h" @@ -116,6 +117,7 @@ __FBSDID("$FreeBSD$"); #include <x86/mca.h> #include <machine/md_var.h> #include <machine/metadata.h> +#include <machine/mp_watchdog.h> #include <machine/pc/bios.h> #include <machine/pcb.h> #include <machine/proc.h> @@ -734,9 +736,8 @@ cpu_idle(int busy) CTR2(KTR_SPARE2, "cpu_idle(%d) at %d", busy, curcpu); -#ifdef SMP - if (mp_grab_cpu_hlt()) - return; +#ifdef MP_WATCHDOG + ap_watchdog(PCPU_GET(cpuid)); #endif /* If we are busy - try to use fast methods. */ if (busy) { Modified: projects/altix/sys/amd64/amd64/mp_machdep.c ============================================================================== --- projects/altix/sys/amd64/amd64/mp_machdep.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/amd64/amd64/mp_machdep.c Sun Jun 12 20:19:17 2011 (r223022) @@ -29,13 +29,13 @@ __FBSDID("$FreeBSD$"); #include "opt_cpu.h" #include "opt_kstack_pages.h" -#include "opt_mp_watchdog.h" #include "opt_sched.h" #include "opt_smp.h" #include <sys/param.h> #include <sys/systm.h> #include <sys/bus.h> +#include <sys/cpuset.h> #ifdef GPROF #include <sys/gmon.h> #endif @@ -63,7 +63,6 @@ __FBSDID("$FreeBSD$"); #include <machine/cpufunc.h> #include <x86/mca.h> #include <machine/md_var.h> -#include <machine/mp_watchdog.h> #include <machine/pcb.h> #include <machine/psl.h> #include <machine/smp.h> @@ -125,7 +124,7 @@ extern inthand_t IDTVEC(fast_syscall), I * Local data and functions. */ -static volatile cpumask_t ipi_nmi_pending; +static volatile cpuset_t ipi_nmi_pending; /* used to hold the AP's until we are ready to release them */ static struct mtx ap_boot_mtx; @@ -159,11 +158,8 @@ static int start_all_aps(void); static int start_ap(int apic_id); static void release_aps(void *dummy); -static int hlt_logical_cpus; static u_int hyperthreading_cpus; /* logical cpus sharing L1 cache */ -static cpumask_t hyperthreading_cpus_mask; static int hyperthreading_allowed = 1; -static struct sysctl_ctx_list logical_cpu_clist; static u_int bootMP_size; static void @@ -241,8 +237,11 @@ topo_probe_0x4(void) * logical processors that belong to the same core * as BSP thus deducing number of threads per core. */ - cpuid_count(0x04, 0, p); - max_cores = ((p[0] >> 26) & 0x3f) + 1; + if (cpu_high >= 0x4) { + cpuid_count(0x04, 0, p); + max_cores = ((p[0] >> 26) & 0x3f) + 1; + } else + max_cores = 1; core_id_bits = mask_width(max_logical/max_cores); if (core_id_bits < 0) return; @@ -334,7 +333,7 @@ topo_probe(void) if (cpu_topo_probed) return; - logical_cpus_mask = 0; + CPU_ZERO(&logical_cpus_mask); if (mp_ncpus <= 1) cpu_cores = cpu_logical = 1; else if (cpu_vendor_id == CPU_VENDOR_AMD) @@ -478,7 +477,7 @@ cpu_mp_probe(void) * Always record BSP in CPU map so that the mbuf init code works * correctly. */ - all_cpus = 1; + CPU_SETOF(0, &all_cpus); if (mp_ncpus == 0) { /* * No CPUs were found, so this must be a UP system. Setup @@ -605,6 +604,7 @@ cpu_mp_announce(void) void init_secondary(void) { + cpuset_t tcpuset, tallcpus; struct pcpu *pc; struct nmi_pcpu *np; u_int64_t msr, cr0; @@ -736,19 +736,17 @@ init_secondary(void) CTR1(KTR_SMP, "SMP: AP CPU #%d Launched", PCPU_GET(cpuid)); printf("SMP: AP CPU #%d Launched!\n", PCPU_GET(cpuid)); + tcpuset = PCPU_GET(cpumask); /* Determine if we are a logical CPU. */ /* XXX Calculation depends on cpu_logical being a power of 2, e.g. 2 */ if (cpu_logical > 1 && PCPU_GET(apic_id) % cpu_logical != 0) - logical_cpus_mask |= PCPU_GET(cpumask); - - /* Determine if we are a hyperthread. */ - if (hyperthreading_cpus > 1 && - PCPU_GET(apic_id) % hyperthreading_cpus != 0) - hyperthreading_cpus_mask |= PCPU_GET(cpumask); + CPU_OR(&logical_cpus_mask, &tcpuset); /* Build our map of 'other' CPUs. */ - PCPU_SET(other_cpus, all_cpus & ~PCPU_GET(cpumask)); + tallcpus = all_cpus; + CPU_NAND(&tallcpus, &tcpuset); + PCPU_SET(other_cpus, tallcpus); if (bootverbose) lapic_dump("AP"); @@ -835,7 +833,7 @@ assign_cpu_ids(void) if (hyperthreading_cpus > 1 && i % hyperthreading_cpus != 0) { cpu_info[i].cpu_hyperthread = 1; -#if defined(SCHED_ULE) + /* * Don't use HT CPU if it has been disabled by a * tunable. @@ -844,7 +842,6 @@ assign_cpu_ids(void) cpu_info[i].cpu_disabled = 1; continue; } -#endif } /* Don't use this CPU if it has been disabled by a tunable. */ @@ -854,6 +851,11 @@ assign_cpu_ids(void) } } + if (hyperthreading_allowed == 0 && hyperthreading_cpus > 1) { + hyperthreading_cpus = 0; + cpu_logical = 1; + } + /* * Assign CPU IDs to local APIC IDs and disable any CPUs * beyond MAXCPU. CPU 0 is always assigned to the BSP. @@ -891,6 +893,7 @@ assign_cpu_ids(void) static int start_all_aps(void) { + cpuset_t tallcpus, tcpuset; vm_offset_t va = boot_address + KERNBASE; u_int64_t *pt4, *pt3, *pt2; u_int32_t mpbioswarmvec; @@ -955,11 +958,14 @@ start_all_aps(void) panic("AP #%d (PHY# %d) failed!", cpu, apic_id); } - all_cpus |= (1 << cpu); /* record AP in CPU map */ + CPU_SET(cpu, &all_cpus); /* record AP in CPU map */ } /* build our map of 'other' CPUs */ - PCPU_SET(other_cpus, all_cpus & ~PCPU_GET(cpumask)); + tallcpus = all_cpus; + tcpuset = PCPU_GET(cpumask); + CPU_NAND(&tallcpus, &tcpuset); + PCPU_SET(other_cpus, tallcpus); /* restore the warmstart vector */ *(u_int32_t *) WARMBOOT_OFF = mpbioswarmvec; @@ -1088,6 +1094,30 @@ SYSCTL_UINT(_debug_xhits, OID_AUTO, ipi_ #endif /* COUNT_XINVLTLB_HITS */ /* + * Send an IPI to specified CPU handling the bitmap logic. + */ +static void +ipi_send_cpu(int cpu, u_int ipi) +{ + u_int bitmap, old_pending, new_pending; + + KASSERT(cpu_apic_ids[cpu] != -1, ("IPI to non-existent CPU %d", cpu)); + + if (IPI_IS_BITMAPED(ipi)) { + bitmap = 1 << ipi; + ipi = IPI_BITMAP_VECTOR; + do { + old_pending = cpu_ipi_pending[cpu]; + new_pending = old_pending | bitmap; + } while (!atomic_cmpset_int(&cpu_ipi_pending[cpu], + old_pending, new_pending)); + if (old_pending) + return; + } + lapic_ipi_vectored(ipi, cpu_apic_ids[cpu]); +} + +/* * Flush the TLB on all other CPU's */ static void @@ -1111,28 +1141,19 @@ smp_tlb_shootdown(u_int vector, vm_offse } static void -smp_targeted_tlb_shootdown(cpumask_t mask, u_int vector, vm_offset_t addr1, vm_offset_t addr2) +smp_targeted_tlb_shootdown(cpuset_t mask, u_int vector, vm_offset_t addr1, vm_offset_t addr2) { - int ncpu, othercpus; + int cpu, ncpu, othercpus; othercpus = mp_ncpus - 1; - if (mask == (cpumask_t)-1) { - ncpu = othercpus; - if (ncpu < 1) + if (CPU_ISFULLSET(&mask)) { + if (othercpus < 1) return; } else { - mask &= ~PCPU_GET(cpumask); - if (mask == 0) - return; - ncpu = bitcount32(mask); - if (ncpu > othercpus) { - /* XXX this should be a panic offence */ - printf("SMP: tlb shootdown to %d other cpus (only have %d)\n", - ncpu, othercpus); - ncpu = othercpus; - } - /* XXX should be a panic, implied by mask == 0 above */ - if (ncpu < 1) + sched_pin(); + CPU_NAND(&mask, PCPU_PTR(cpumask)); + sched_unpin(); + if (CPU_EMPTY(&mask)) return; } if (!(read_rflags() & PSL_I)) @@ -1141,39 +1162,25 @@ smp_targeted_tlb_shootdown(cpumask_t mas smp_tlb_addr1 = addr1; smp_tlb_addr2 = addr2; atomic_store_rel_int(&smp_tlb_wait, 0); - if (mask == (cpumask_t)-1) + if (CPU_ISFULLSET(&mask)) { + ncpu = othercpus; ipi_all_but_self(vector); - else - ipi_selected(mask, vector); + } else { + ncpu = 0; + while ((cpu = cpusetobj_ffs(&mask)) != 0) { + cpu--; + CPU_CLR(cpu, &mask); + CTR3(KTR_SMP, "%s: cpu: %d ipi: %x", __func__, + cpu, vector); + ipi_send_cpu(cpu, vector); + ncpu++; + } + } while (smp_tlb_wait < ncpu) ia32_pause(); mtx_unlock_spin(&smp_ipi_mtx); } -/* - * Send an IPI to specified CPU handling the bitmap logic. - */ -static void -ipi_send_cpu(int cpu, u_int ipi) -{ - u_int bitmap, old_pending, new_pending; - - KASSERT(cpu_apic_ids[cpu] != -1, ("IPI to non-existent CPU %d", cpu)); - - if (IPI_IS_BITMAPED(ipi)) { - bitmap = 1 << ipi; - ipi = IPI_BITMAP_VECTOR; - do { - old_pending = cpu_ipi_pending[cpu]; - new_pending = old_pending | bitmap; - } while (!atomic_cmpset_int(&cpu_ipi_pending[cpu], - old_pending, new_pending)); - if (old_pending) - return; - } - lapic_ipi_vectored(ipi, cpu_apic_ids[cpu]); -} - void smp_cache_flush(void) { @@ -1220,7 +1227,7 @@ smp_invlpg_range(vm_offset_t addr1, vm_o } void -smp_masked_invltlb(cpumask_t mask) +smp_masked_invltlb(cpuset_t mask) { if (smp_started) { @@ -1232,7 +1239,7 @@ smp_masked_invltlb(cpumask_t mask) } void -smp_masked_invlpg(cpumask_t mask, vm_offset_t addr) +smp_masked_invlpg(cpuset_t mask, vm_offset_t addr) { if (smp_started) { @@ -1244,7 +1251,7 @@ smp_masked_invlpg(cpumask_t mask, vm_off } void -smp_masked_invlpg_range(cpumask_t mask, vm_offset_t addr1, vm_offset_t addr2) +smp_masked_invlpg_range(cpuset_t mask, vm_offset_t addr1, vm_offset_t addr2) { if (smp_started) { @@ -1297,7 +1304,7 @@ ipi_bitmap_handler(struct trapframe fram * send an IPI to a set of cpus. */ void -ipi_selected(cpumask_t cpus, u_int ipi) +ipi_selected(cpuset_t cpus, u_int ipi) { int cpu; @@ -1307,12 +1314,12 @@ ipi_selected(cpumask_t cpus, u_int ipi) * Set the mask of receiving CPUs for this purpose. */ if (ipi == IPI_STOP_HARD) - atomic_set_int(&ipi_nmi_pending, cpus); + CPU_OR_ATOMIC(&ipi_nmi_pending, &cpus); - CTR3(KTR_SMP, "%s: cpus: %x ipi: %x", __func__, cpus, ipi); - while ((cpu = ffs(cpus)) != 0) { + while ((cpu = cpusetobj_ffs(&cpus)) != 0) { cpu--; - cpus &= ~(1 << cpu); + CPU_CLR(cpu, &cpus); + CTR3(KTR_SMP, "%s: cpu: %d ipi: %x", __func__, cpu, ipi); ipi_send_cpu(cpu, ipi); } } @@ -1330,7 +1337,7 @@ ipi_cpu(int cpu, u_int ipi) * Set the mask of receiving CPUs for this purpose. */ if (ipi == IPI_STOP_HARD) - atomic_set_int(&ipi_nmi_pending, 1 << cpu); + CPU_SET_ATOMIC(cpu, &ipi_nmi_pending); CTR3(KTR_SMP, "%s: cpu: %d ipi: %x", __func__, cpu, ipi); ipi_send_cpu(cpu, ipi); @@ -1343,8 +1350,10 @@ void ipi_all_but_self(u_int ipi) { + sched_pin(); if (IPI_IS_BITMAPED(ipi)) { ipi_selected(PCPU_GET(other_cpus), ipi); + sched_unpin(); return; } @@ -1354,7 +1363,8 @@ ipi_all_but_self(u_int ipi) * Set the mask of receiving CPUs for this purpose. */ if (ipi == IPI_STOP_HARD) - atomic_set_int(&ipi_nmi_pending, PCPU_GET(other_cpus)); + CPU_OR_ATOMIC(&ipi_nmi_pending, PCPU_PTR(other_cpus)); + sched_unpin(); CTR2(KTR_SMP, "%s: ipi: %x", __func__, ipi); lapic_ipi_vectored(ipi, APIC_IPI_DEST_OTHERS); @@ -1363,7 +1373,7 @@ ipi_all_but_self(u_int ipi) int ipi_nmi_handler() { - cpumask_t cpumask; + cpuset_t cpumask; /* * As long as there is not a simple way to know about a NMI's @@ -1371,11 +1381,13 @@ ipi_nmi_handler() * the global pending bitword an IPI_STOP_HARD has been issued * and should be handled. */ + sched_pin(); cpumask = PCPU_GET(cpumask); - if ((ipi_nmi_pending & cpumask) == 0) + sched_unpin(); + if (!CPU_OVERLAP(&ipi_nmi_pending, &cpumask)) return (1); - atomic_clear_int(&ipi_nmi_pending, cpumask); + CPU_NAND_ATOMIC(&ipi_nmi_pending, &cpumask); cpustop_handler(); return (0); } @@ -1387,23 +1399,25 @@ ipi_nmi_handler() void cpustop_handler(void) { - cpumask_t cpumask; + cpuset_t cpumask; u_int cpu; + sched_pin(); cpu = PCPU_GET(cpuid); cpumask = PCPU_GET(cpumask); + sched_unpin(); savectx(&stoppcbs[cpu]); /* Indicate that we are stopped */ - atomic_set_int(&stopped_cpus, cpumask); + CPU_OR_ATOMIC(&stopped_cpus, &cpumask); /* Wait for restart */ - while (!(started_cpus & cpumask)) + while (!CPU_OVERLAP(&started_cpus, &cpumask)) ia32_pause(); - atomic_clear_int(&started_cpus, cpumask); - atomic_clear_int(&stopped_cpus, cpumask); + CPU_NAND_ATOMIC(&started_cpus, &cpumask); + CPU_NAND_ATOMIC(&stopped_cpus, &cpumask); if (cpu == 0 && cpustop_restartfunc != NULL) { cpustop_restartfunc(); @@ -1418,7 +1432,7 @@ cpustop_handler(void) void cpususpend_handler(void) { - cpumask_t cpumask; + cpuset_t cpumask; register_t cr3, rf; u_int cpu; @@ -1430,7 +1444,7 @@ cpususpend_handler(void) if (savectx(susppcbs[cpu])) { wbinvd(); - atomic_set_int(&stopped_cpus, cpumask); + CPU_OR_ATOMIC(&stopped_cpus, &cpumask); } else { pmap_init_pat(); PCPU_SET(switchtime, 0); @@ -1438,11 +1452,11 @@ cpususpend_handler(void) } /* Wait for resume */ - while (!(started_cpus & cpumask)) + while (!CPU_OVERLAP(&started_cpus, &cpumask)) ia32_pause(); - atomic_clear_int(&started_cpus, cpumask); - atomic_clear_int(&stopped_cpus, cpumask); + CPU_NAND_ATOMIC(&started_cpus, &cpumask); + CPU_NAND_ATOMIC(&stopped_cpus, &cpumask); /* Restore CR3 and enable interrupts */ load_cr3(cr3); @@ -1467,158 +1481,6 @@ release_aps(void *dummy __unused) } SYSINIT(start_aps, SI_SUB_SMP, SI_ORDER_FIRST, release_aps, NULL); -static int -sysctl_hlt_cpus(SYSCTL_HANDLER_ARGS) -{ - cpumask_t mask; - int error; - - mask = hlt_cpus_mask; - error = sysctl_handle_int(oidp, &mask, 0, req); - if (error || !req->newptr) - return (error); - - if (logical_cpus_mask != 0 && - (mask & logical_cpus_mask) == logical_cpus_mask) - hlt_logical_cpus = 1; - else - hlt_logical_cpus = 0; - - if (! hyperthreading_allowed) - mask |= hyperthreading_cpus_mask; - - if ((mask & all_cpus) == all_cpus) - mask &= ~(1<<0); - hlt_cpus_mask = mask; - return (error); -} -SYSCTL_PROC(_machdep, OID_AUTO, hlt_cpus, CTLTYPE_INT|CTLFLAG_RW, - 0, 0, sysctl_hlt_cpus, "IU", - "Bitmap of CPUs to halt. 101 (binary) will halt CPUs 0 and 2."); - -static int -sysctl_hlt_logical_cpus(SYSCTL_HANDLER_ARGS) -{ - int disable, error; - - disable = hlt_logical_cpus; - error = sysctl_handle_int(oidp, &disable, 0, req); - if (error || !req->newptr) - return (error); - - if (disable) - hlt_cpus_mask |= logical_cpus_mask; - else - hlt_cpus_mask &= ~logical_cpus_mask; - - if (! hyperthreading_allowed) - hlt_cpus_mask |= hyperthreading_cpus_mask; - - if ((hlt_cpus_mask & all_cpus) == all_cpus) - hlt_cpus_mask &= ~(1<<0); - - hlt_logical_cpus = disable; - return (error); -} - -static int -sysctl_hyperthreading_allowed(SYSCTL_HANDLER_ARGS) -{ - int allowed, error; - - allowed = hyperthreading_allowed; - error = sysctl_handle_int(oidp, &allowed, 0, req); - if (error || !req->newptr) - return (error); - -#ifdef SCHED_ULE - /* - * SCHED_ULE doesn't allow enabling/disabling HT cores at - * run-time. - */ - if (allowed != hyperthreading_allowed) - return (ENOTSUP); - return (error); -#endif - - if (allowed) - hlt_cpus_mask &= ~hyperthreading_cpus_mask; - else - hlt_cpus_mask |= hyperthreading_cpus_mask; - - if (logical_cpus_mask != 0 && - (hlt_cpus_mask & logical_cpus_mask) == logical_cpus_mask) - hlt_logical_cpus = 1; - else - hlt_logical_cpus = 0; - - if ((hlt_cpus_mask & all_cpus) == all_cpus) - hlt_cpus_mask &= ~(1<<0); - - hyperthreading_allowed = allowed; - return (error); -} - -static void -cpu_hlt_setup(void *dummy __unused) -{ - - if (logical_cpus_mask != 0) { - TUNABLE_INT_FETCH("machdep.hlt_logical_cpus", - &hlt_logical_cpus); - sysctl_ctx_init(&logical_cpu_clist); - SYSCTL_ADD_PROC(&logical_cpu_clist, - SYSCTL_STATIC_CHILDREN(_machdep), OID_AUTO, - "hlt_logical_cpus", CTLTYPE_INT|CTLFLAG_RW, 0, 0, - sysctl_hlt_logical_cpus, "IU", ""); - SYSCTL_ADD_UINT(&logical_cpu_clist, - SYSCTL_STATIC_CHILDREN(_machdep), OID_AUTO, - "logical_cpus_mask", CTLTYPE_INT|CTLFLAG_RD, - &logical_cpus_mask, 0, ""); - - if (hlt_logical_cpus) - hlt_cpus_mask |= logical_cpus_mask; - - /* - * If necessary for security purposes, force - * hyperthreading off, regardless of the value - * of hlt_logical_cpus. - */ - if (hyperthreading_cpus_mask) { - SYSCTL_ADD_PROC(&logical_cpu_clist, - SYSCTL_STATIC_CHILDREN(_machdep), OID_AUTO, - "hyperthreading_allowed", CTLTYPE_INT|CTLFLAG_RW, - 0, 0, sysctl_hyperthreading_allowed, "IU", ""); - if (! hyperthreading_allowed) - hlt_cpus_mask |= hyperthreading_cpus_mask; - } - } -} -SYSINIT(cpu_hlt, SI_SUB_SMP, SI_ORDER_ANY, cpu_hlt_setup, NULL); - -int -mp_grab_cpu_hlt(void) -{ - cpumask_t mask; -#ifdef MP_WATCHDOG - u_int cpuid; -#endif - int retval; - - mask = PCPU_GET(cpumask); -#ifdef MP_WATCHDOG - cpuid = PCPU_GET(cpuid); - ap_watchdog(cpuid); -#endif - - retval = 0; - while (mask & hlt_cpus_mask) { - retval = 1; - __asm __volatile("sti; hlt" : : : "memory"); - } - return (retval); -} - #ifdef COUNT_IPIS /* * Setup interrupt counters for IPI handlers. Modified: projects/altix/sys/amd64/amd64/pmap.c ============================================================================== --- projects/altix/sys/amd64/amd64/pmap.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/amd64/amd64/pmap.c Sun Jun 12 20:19:17 2011 (r223022) @@ -123,6 +123,8 @@ __FBSDID("$FreeBSD$"); #include <sys/sysctl.h> #ifdef SMP #include <sys/smp.h> +#else +#include <sys/cpuset.h> #endif #include <vm/vm.h> @@ -581,7 +583,7 @@ pmap_bootstrap(vm_paddr_t *firstaddr) PMAP_LOCK_INIT(kernel_pmap); kernel_pmap->pm_pml4 = (pdp_entry_t *)PHYS_TO_DMAP(KPML4phys); kernel_pmap->pm_root = NULL; - kernel_pmap->pm_active = -1; /* don't allow deactivation */ + CPU_FILL(&kernel_pmap->pm_active); /* don't allow deactivation */ TAILQ_INIT(&kernel_pmap->pm_pvchunk); /* @@ -923,19 +925,20 @@ pmap_update_pde_invalidate(vm_offset_t v void pmap_invalidate_page(pmap_t pmap, vm_offset_t va) { - cpumask_t cpumask, other_cpus; + cpuset_t cpumask, other_cpus; sched_pin(); - if (pmap == kernel_pmap || pmap->pm_active == all_cpus) { + if (pmap == kernel_pmap || !CPU_CMP(&pmap->pm_active, &all_cpus)) { invlpg(va); smp_invlpg(va); } else { cpumask = PCPU_GET(cpumask); other_cpus = PCPU_GET(other_cpus); - if (pmap->pm_active & cpumask) + if (CPU_OVERLAP(&pmap->pm_active, &cpumask)) invlpg(va); - if (pmap->pm_active & other_cpus) - smp_masked_invlpg(pmap->pm_active & other_cpus, va); + CPU_AND(&other_cpus, &pmap->pm_active); + if (!CPU_EMPTY(&other_cpus)) + smp_masked_invlpg(other_cpus, va); } sched_unpin(); } @@ -943,23 +946,23 @@ pmap_invalidate_page(pmap_t pmap, vm_off void pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) { - cpumask_t cpumask, other_cpus; + cpuset_t cpumask, other_cpus; vm_offset_t addr; sched_pin(); - if (pmap == kernel_pmap || pmap->pm_active == all_cpus) { + if (pmap == kernel_pmap || !CPU_CMP(&pmap->pm_active, &all_cpus)) { for (addr = sva; addr < eva; addr += PAGE_SIZE) invlpg(addr); smp_invlpg_range(sva, eva); } else { cpumask = PCPU_GET(cpumask); other_cpus = PCPU_GET(other_cpus); - if (pmap->pm_active & cpumask) + if (CPU_OVERLAP(&pmap->pm_active, &cpumask)) for (addr = sva; addr < eva; addr += PAGE_SIZE) invlpg(addr); - if (pmap->pm_active & other_cpus) - smp_masked_invlpg_range(pmap->pm_active & other_cpus, - sva, eva); + CPU_AND(&other_cpus, &pmap->pm_active); + if (!CPU_EMPTY(&other_cpus)) + smp_masked_invlpg_range(other_cpus, sva, eva); } sched_unpin(); } @@ -967,19 +970,20 @@ pmap_invalidate_range(pmap_t pmap, vm_of void *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201106122019.p5CKJIdC039804>