From owner-svn-src-projects@freebsd.org Mon Nov 25 15:23:40 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id AD53A1B0376 for ; Mon, 25 Nov 2019 15:23:40 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 47M9mD4CLkz4Y6Z; Mon, 25 Nov 2019 15:23:40 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 74A4BEB62; Mon, 25 Nov 2019 15:23:40 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id xAPFNevU027764; Mon, 25 Nov 2019 15:23:40 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id xAPFNaWY027743; Mon, 25 Nov 2019 15:23:36 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201911251523.xAPFNaWY027743@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Mon, 25 Nov 2019 15:23:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r355090 - in projects/nfsv42/sys: amd64/amd64 amd64/conf amd64/include amd64/linux amd64/linux32 amd64/vmm arm/arm arm/broadcom/bcm2835 arm/conf arm/include arm64/arm64 arm64/conf arm64... X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/nfsv42/sys: amd64/amd64 amd64/conf amd64/include amd64/linux amd64/linux32 amd64/vmm arm/arm arm/broadcom/bcm2835 arm/conf arm/include arm64/arm64 arm64/conf arm64/include arm64/linux bsm ... X-SVN-Commit-Revision: 355090 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Nov 2019 15:23:40 -0000 Author: rmacklem Date: Mon Nov 25 15:23:35 2019 New Revision: 355090 URL: https://svnweb.freebsd.org/changeset/base/355090 Log: Merge in an up to date kernel from head/current. Added: projects/nfsv42/sys/amd64/conf/GENERIC-KCSAN - copied unchanged from r355089, head/sys/amd64/conf/GENERIC-KCSAN projects/nfsv42/sys/amd64/include/csan.h - copied unchanged from r355089, head/sys/amd64/include/csan.h projects/nfsv42/sys/arm/broadcom/bcm2835/bcm2835_vcbus.c - copied unchanged from r355089, head/sys/arm/broadcom/bcm2835/bcm2835_vcbus.c projects/nfsv42/sys/arm64/arm64/machdep_boot.c - copied unchanged from r355089, head/sys/arm64/arm64/machdep_boot.c projects/nfsv42/sys/arm64/include/csan.h - copied unchanged from r355089, head/sys/arm64/include/csan.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/mmp.c - copied unchanged from r355089, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/mmp.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/mmp.h - copied unchanged from r355089, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/mmp.h projects/nfsv42/sys/conf/kmod.opts.mk - copied unchanged from r355089, head/sys/conf/kmod.opts.mk projects/nfsv42/sys/contrib/zstd/lib/compress/zstd_cwksp.h - copied unchanged from r355089, head/sys/contrib/zstd/lib/compress/zstd_cwksp.h projects/nfsv42/sys/contrib/zstd/tests/fuzz/dictionary_loader.c - copied unchanged from r355089, head/sys/contrib/zstd/tests/fuzz/dictionary_loader.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/fuzz_data_producer.c - copied unchanged from r355089, head/sys/contrib/zstd/tests/fuzz/fuzz_data_producer.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/fuzz_data_producer.h - copied unchanged from r355089, head/sys/contrib/zstd/tests/fuzz/fuzz_data_producer.h projects/nfsv42/sys/contrib/zstd/tests/golden-compression/ - copied from r355089, head/sys/contrib/zstd/tests/golden-compression/ projects/nfsv42/sys/contrib/zstd/tests/golden-decompression/ - copied from r355089, head/sys/contrib/zstd/tests/golden-decompression/ projects/nfsv42/sys/dev/cxgbe/crypto/t4_kern_tls.c - copied unchanged from r355089, head/sys/dev/cxgbe/crypto/t4_kern_tls.c projects/nfsv42/sys/dev/cxgbe/crypto/t4_keyctx.c - copied unchanged from r355089, head/sys/dev/cxgbe/crypto/t4_keyctx.c projects/nfsv42/sys/dev/cxgbe/firmware/t6fw_cfg_kern_tls.txt - copied unchanged from r355089, head/sys/dev/cxgbe/firmware/t6fw_cfg_kern_tls.txt projects/nfsv42/sys/dev/vmware/pvscsi/ - copied from r355089, head/sys/dev/vmware/pvscsi/ projects/nfsv42/sys/kern/subr_csan.c - copied unchanged from r355089, head/sys/kern/subr_csan.c projects/nfsv42/sys/modules/vmware/pvscsi/ - copied from r355089, head/sys/modules/vmware/pvscsi/ projects/nfsv42/sys/riscv/riscv/sbi.c - copied unchanged from r355089, head/sys/riscv/riscv/sbi.c projects/nfsv42/sys/sys/_cscan_atomic.h - copied unchanged from r355089, head/sys/sys/_cscan_atomic.h projects/nfsv42/sys/sys/_cscan_bus.h - copied unchanged from r355089, head/sys/sys/_cscan_bus.h projects/nfsv42/sys/sys/csan.h - copied unchanged from r355089, head/sys/sys/csan.h projects/nfsv42/sys/tools/makesyscalls.lua - copied unchanged from r355089, head/sys/tools/makesyscalls.lua Deleted: projects/nfsv42/sys/contrib/zstd/contrib/gen_html/.gitignore projects/nfsv42/sys/contrib/zstd/contrib/pzstd/.gitignore projects/nfsv42/sys/contrib/zstd/contrib/seekable_format/examples/.gitignore projects/nfsv42/sys/contrib/zstd/examples/.gitignore projects/nfsv42/sys/contrib/zstd/lib/.gitignore projects/nfsv42/sys/contrib/zstd/programs/.gitignore projects/nfsv42/sys/contrib/zstd/tests/.gitignore projects/nfsv42/sys/contrib/zstd/tests/files/huffman-compressed-larger projects/nfsv42/sys/contrib/zstd/zlibWrapper/.gitignore projects/nfsv42/sys/dev/sio/ projects/nfsv42/sys/modules/sio/ Modified: projects/nfsv42/sys/amd64/amd64/copyout.c projects/nfsv42/sys/amd64/amd64/cpu_switch.S projects/nfsv42/sys/amd64/amd64/db_interface.c projects/nfsv42/sys/amd64/amd64/db_trace.c projects/nfsv42/sys/amd64/amd64/elf_machdep.c projects/nfsv42/sys/amd64/amd64/exception.S projects/nfsv42/sys/amd64/amd64/genassym.c projects/nfsv42/sys/amd64/amd64/machdep.c projects/nfsv42/sys/amd64/amd64/mp_machdep.c projects/nfsv42/sys/amd64/amd64/pmap.c projects/nfsv42/sys/amd64/amd64/support.S projects/nfsv42/sys/amd64/amd64/sys_machdep.c projects/nfsv42/sys/amd64/amd64/trap.c projects/nfsv42/sys/amd64/conf/GENERIC projects/nfsv42/sys/amd64/conf/GENERIC-NODEBUG projects/nfsv42/sys/amd64/include/atomic.h projects/nfsv42/sys/amd64/include/counter.h projects/nfsv42/sys/amd64/include/pcpu.h projects/nfsv42/sys/amd64/include/pmap.h projects/nfsv42/sys/amd64/include/segments.h projects/nfsv42/sys/amd64/include/tss.h projects/nfsv42/sys/amd64/linux/Makefile projects/nfsv42/sys/amd64/linux/linux_sysvec.c projects/nfsv42/sys/amd64/linux32/Makefile projects/nfsv42/sys/amd64/linux32/linux32_sysvec.c projects/nfsv42/sys/amd64/vmm/vmm_host.h projects/nfsv42/sys/arm/arm/elf_machdep.c projects/nfsv42/sys/arm/arm/stack_machdep.c projects/nfsv42/sys/arm/broadcom/bcm2835/bcm2835_dma.c projects/nfsv42/sys/arm/broadcom/bcm2835/bcm2835_dma.h projects/nfsv42/sys/arm/broadcom/bcm2835/bcm2835_ft5406.c projects/nfsv42/sys/arm/broadcom/bcm2835/bcm2835_mbox.c projects/nfsv42/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c projects/nfsv42/sys/arm/broadcom/bcm2835/bcm2835_vcbus.h projects/nfsv42/sys/arm/broadcom/bcm2835/files.bcm283x projects/nfsv42/sys/arm/conf/DB-78XXX projects/nfsv42/sys/arm/conf/DB-88F5XXX projects/nfsv42/sys/arm/conf/DB-88F6XXX projects/nfsv42/sys/arm/conf/GENERIC-NODEBUG projects/nfsv42/sys/arm/conf/RT1310 projects/nfsv42/sys/arm/conf/TS7800 projects/nfsv42/sys/arm/conf/std.armv6 projects/nfsv42/sys/arm/conf/std.armv7 projects/nfsv42/sys/arm/include/profile.h projects/nfsv42/sys/arm64/arm64/bus_machdep.c projects/nfsv42/sys/arm64/arm64/busdma_bounce.c projects/nfsv42/sys/arm64/arm64/copystr.c projects/nfsv42/sys/arm64/arm64/elf32_machdep.c projects/nfsv42/sys/arm64/arm64/elf_machdep.c projects/nfsv42/sys/arm64/arm64/locore.S projects/nfsv42/sys/arm64/arm64/machdep.c projects/nfsv42/sys/arm64/arm64/mp_machdep.c projects/nfsv42/sys/arm64/arm64/pmap.c projects/nfsv42/sys/arm64/conf/GENERIC projects/nfsv42/sys/arm64/conf/GENERIC-NODEBUG projects/nfsv42/sys/arm64/conf/NOTES projects/nfsv42/sys/arm64/include/atomic.h projects/nfsv42/sys/arm64/include/bus.h projects/nfsv42/sys/arm64/include/machdep.h projects/nfsv42/sys/arm64/linux/Makefile projects/nfsv42/sys/arm64/linux/linux_sysvec.c projects/nfsv42/sys/bsm/audit_kevents.h projects/nfsv42/sys/cam/ata/ata_da.c projects/nfsv42/sys/cam/cam_periph.c projects/nfsv42/sys/cam/cam_periph.h projects/nfsv42/sys/cam/cam_xpt.c projects/nfsv42/sys/cam/mmc/mmc_da.c projects/nfsv42/sys/cam/mmc/mmc_xpt.c projects/nfsv42/sys/cam/nvme/nvme_da.c projects/nfsv42/sys/cam/scsi/scsi_all.c projects/nfsv42/sys/cam/scsi/scsi_cd.c projects/nfsv42/sys/cam/scsi/scsi_da.c projects/nfsv42/sys/cam/scsi/scsi_enc.c projects/nfsv42/sys/cam/scsi/scsi_enc_internal.h projects/nfsv42/sys/cam/scsi/scsi_sg.c projects/nfsv42/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.c projects/nfsv42/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.h projects/nfsv42/sys/cddl/contrib/opensolaris/common/zfs/zfs_comutil.h projects/nfsv42/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c projects/nfsv42/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/Makefile.files projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/range_tree.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_checkpoint.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/range_tree.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/uberblock.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/uberblock_impl.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/uberblock.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_indirect.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_indirect_mapping.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_initialize.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_removal.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c projects/nfsv42/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h projects/nfsv42/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c projects/nfsv42/sys/compat/cloudabi32/Makefile projects/nfsv42/sys/compat/cloudabi32/cloudabi32_module.c projects/nfsv42/sys/compat/cloudabi32/cloudabi32_util.h projects/nfsv42/sys/compat/cloudabi64/Makefile projects/nfsv42/sys/compat/cloudabi64/cloudabi64_module.c projects/nfsv42/sys/compat/cloudabi64/cloudabi64_util.h projects/nfsv42/sys/compat/freebsd32/Makefile projects/nfsv42/sys/compat/freebsd32/freebsd32_misc.c projects/nfsv42/sys/compat/freebsd32/freebsd32_proto.h projects/nfsv42/sys/compat/freebsd32/freebsd32_sysent.c projects/nfsv42/sys/compat/freebsd32/freebsd32_systrace_args.c projects/nfsv42/sys/compat/freebsd32/freebsd32_util.h projects/nfsv42/sys/compat/freebsd32/syscalls.master projects/nfsv42/sys/compat/ia32/ia32_sysvec.c projects/nfsv42/sys/compat/linprocfs/linprocfs.c projects/nfsv42/sys/compat/linux/linux_event.c projects/nfsv42/sys/compat/linux/linux_event.h projects/nfsv42/sys/compat/linux/linux_file.c projects/nfsv42/sys/conf/Makefile.arm64 projects/nfsv42/sys/conf/NOTES projects/nfsv42/sys/conf/dtb.build.mk projects/nfsv42/sys/conf/files projects/nfsv42/sys/conf/files.amd64 projects/nfsv42/sys/conf/files.arm projects/nfsv42/sys/conf/files.arm64 projects/nfsv42/sys/conf/files.i386 projects/nfsv42/sys/conf/files.riscv projects/nfsv42/sys/conf/kern.post.mk projects/nfsv42/sys/conf/kern.pre.mk projects/nfsv42/sys/conf/kmod.mk projects/nfsv42/sys/conf/ldscript.powerpc projects/nfsv42/sys/conf/ldscript.powerpcspe projects/nfsv42/sys/conf/makeLINT.mk projects/nfsv42/sys/conf/options projects/nfsv42/sys/conf/options.arm64 projects/nfsv42/sys/contrib/rdma/krping/krping.c projects/nfsv42/sys/contrib/zstd/CHANGELOG projects/nfsv42/sys/contrib/zstd/Makefile projects/nfsv42/sys/contrib/zstd/README.md projects/nfsv42/sys/contrib/zstd/appveyor.yml projects/nfsv42/sys/contrib/zstd/doc/educational_decoder/Makefile projects/nfsv42/sys/contrib/zstd/doc/educational_decoder/harness.c projects/nfsv42/sys/contrib/zstd/doc/educational_decoder/zstd_decompress.c projects/nfsv42/sys/contrib/zstd/doc/educational_decoder/zstd_decompress.h projects/nfsv42/sys/contrib/zstd/doc/zstd_compression_format.md projects/nfsv42/sys/contrib/zstd/doc/zstd_manual.html projects/nfsv42/sys/contrib/zstd/examples/streaming_compression.c projects/nfsv42/sys/contrib/zstd/examples/streaming_decompression.c projects/nfsv42/sys/contrib/zstd/lib/Makefile projects/nfsv42/sys/contrib/zstd/lib/README.md projects/nfsv42/sys/contrib/zstd/lib/common/bitstream.h projects/nfsv42/sys/contrib/zstd/lib/common/compiler.h projects/nfsv42/sys/contrib/zstd/lib/common/fse.h projects/nfsv42/sys/contrib/zstd/lib/common/fse_decompress.c projects/nfsv42/sys/contrib/zstd/lib/common/mem.h projects/nfsv42/sys/contrib/zstd/lib/common/pool.c projects/nfsv42/sys/contrib/zstd/lib/common/threading.c projects/nfsv42/sys/contrib/zstd/lib/common/threading.h projects/nfsv42/sys/contrib/zstd/lib/common/xxhash.c projects/nfsv42/sys/contrib/zstd/lib/common/zstd_internal.h projects/nfsv42/sys/contrib/zstd/lib/compress/zstd_compress.c projects/nfsv42/sys/contrib/zstd/lib/compress/zstd_compress_internal.h projects/nfsv42/sys/contrib/zstd/lib/compress/zstd_compress_literals.c projects/nfsv42/sys/contrib/zstd/lib/compress/zstd_compress_literals.h projects/nfsv42/sys/contrib/zstd/lib/compress/zstd_compress_sequences.c projects/nfsv42/sys/contrib/zstd/lib/compress/zstd_compress_sequences.h projects/nfsv42/sys/contrib/zstd/lib/compress/zstd_double_fast.c projects/nfsv42/sys/contrib/zstd/lib/compress/zstd_fast.c projects/nfsv42/sys/contrib/zstd/lib/compress/zstd_lazy.c projects/nfsv42/sys/contrib/zstd/lib/compress/zstd_ldm.c projects/nfsv42/sys/contrib/zstd/lib/compress/zstd_opt.c projects/nfsv42/sys/contrib/zstd/lib/compress/zstdmt_compress.c projects/nfsv42/sys/contrib/zstd/lib/decompress/huf_decompress.c projects/nfsv42/sys/contrib/zstd/lib/decompress/zstd_decompress.c projects/nfsv42/sys/contrib/zstd/lib/decompress/zstd_decompress_block.c projects/nfsv42/sys/contrib/zstd/lib/deprecated/zbuff.h projects/nfsv42/sys/contrib/zstd/lib/dictBuilder/cover.c projects/nfsv42/sys/contrib/zstd/lib/dictBuilder/zdict.c projects/nfsv42/sys/contrib/zstd/lib/legacy/zstd_v01.c projects/nfsv42/sys/contrib/zstd/lib/legacy/zstd_v02.c projects/nfsv42/sys/contrib/zstd/lib/legacy/zstd_v03.c projects/nfsv42/sys/contrib/zstd/lib/legacy/zstd_v04.c projects/nfsv42/sys/contrib/zstd/lib/legacy/zstd_v05.c projects/nfsv42/sys/contrib/zstd/lib/legacy/zstd_v06.c projects/nfsv42/sys/contrib/zstd/lib/legacy/zstd_v07.c projects/nfsv42/sys/contrib/zstd/lib/libzstd.pc.in projects/nfsv42/sys/contrib/zstd/lib/zstd.h projects/nfsv42/sys/contrib/zstd/programs/README.md projects/nfsv42/sys/contrib/zstd/programs/benchzstd.c projects/nfsv42/sys/contrib/zstd/programs/benchzstd.h projects/nfsv42/sys/contrib/zstd/programs/datagen.c projects/nfsv42/sys/contrib/zstd/programs/dibio.c projects/nfsv42/sys/contrib/zstd/programs/fileio.c projects/nfsv42/sys/contrib/zstd/programs/fileio.h projects/nfsv42/sys/contrib/zstd/programs/platform.h projects/nfsv42/sys/contrib/zstd/programs/timefn.h projects/nfsv42/sys/contrib/zstd/programs/util.c projects/nfsv42/sys/contrib/zstd/programs/util.h projects/nfsv42/sys/contrib/zstd/programs/zstd.1 projects/nfsv42/sys/contrib/zstd/programs/zstd.1.md projects/nfsv42/sys/contrib/zstd/programs/zstdcli.c projects/nfsv42/sys/contrib/zstd/programs/zstdgrep.1 projects/nfsv42/sys/contrib/zstd/programs/zstdless.1 projects/nfsv42/sys/contrib/zstd/tests/Makefile projects/nfsv42/sys/contrib/zstd/tests/decodecorpus.c projects/nfsv42/sys/contrib/zstd/tests/fullbench.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/Makefile projects/nfsv42/sys/contrib/zstd/tests/fuzz/README.md projects/nfsv42/sys/contrib/zstd/tests/fuzz/block_decompress.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/block_round_trip.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/dictionary_decompress.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/dictionary_round_trip.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/fuzz.h projects/nfsv42/sys/contrib/zstd/tests/fuzz/fuzz.py projects/nfsv42/sys/contrib/zstd/tests/fuzz/fuzz_helpers.h projects/nfsv42/sys/contrib/zstd/tests/fuzz/regression_driver.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/simple_compress.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/simple_decompress.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/simple_round_trip.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/stream_decompress.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/stream_round_trip.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/zstd_frame_info.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/zstd_helpers.c projects/nfsv42/sys/contrib/zstd/tests/fuzz/zstd_helpers.h projects/nfsv42/sys/contrib/zstd/tests/fuzzer.c projects/nfsv42/sys/contrib/zstd/tests/playTests.sh projects/nfsv42/sys/contrib/zstd/tests/poolTests.c projects/nfsv42/sys/contrib/zstd/tests/regression/method.c projects/nfsv42/sys/contrib/zstd/tests/regression/results.csv projects/nfsv42/sys/contrib/zstd/tests/zbufftest.c projects/nfsv42/sys/contrib/zstd/tests/zstreamtest.c projects/nfsv42/sys/contrib/zstd/zlibWrapper/Makefile projects/nfsv42/sys/contrib/zstd/zlibWrapper/examples/fitblk.c projects/nfsv42/sys/contrib/zstd/zlibWrapper/examples/zwrapbench.c projects/nfsv42/sys/contrib/zstd/zlibWrapper/gzclose.c projects/nfsv42/sys/contrib/zstd/zlibWrapper/gzlib.c projects/nfsv42/sys/contrib/zstd/zlibWrapper/gzread.c projects/nfsv42/sys/contrib/zstd/zlibWrapper/gzwrite.c projects/nfsv42/sys/contrib/zstd/zlibWrapper/zstd_zlibwrapper.c projects/nfsv42/sys/dev/aac/aac.c projects/nfsv42/sys/dev/aacraid/aacraid.c projects/nfsv42/sys/dev/cpuctl/cpuctl.c projects/nfsv42/sys/dev/cxgbe/adapter.h projects/nfsv42/sys/dev/cxgbe/common/t4_msg.h projects/nfsv42/sys/dev/cxgbe/common/t4_regs.h projects/nfsv42/sys/dev/cxgbe/common/t4_tcb.h projects/nfsv42/sys/dev/cxgbe/crypto/t4_crypto.c projects/nfsv42/sys/dev/cxgbe/firmware/t4fw_interface.h projects/nfsv42/sys/dev/cxgbe/offload.h projects/nfsv42/sys/dev/cxgbe/t4_iov.c projects/nfsv42/sys/dev/cxgbe/t4_l2t.c projects/nfsv42/sys/dev/cxgbe/t4_l2t.h projects/nfsv42/sys/dev/cxgbe/t4_main.c projects/nfsv42/sys/dev/cxgbe/t4_sge.c projects/nfsv42/sys/dev/cxgbe/t4_vf.c projects/nfsv42/sys/dev/cxgbe/tom/t4_connect.c projects/nfsv42/sys/dev/cxgbe/tom/t4_listen.c projects/nfsv42/sys/dev/cxgbe/tom/t4_tls.c projects/nfsv42/sys/dev/fb/vesa.c projects/nfsv42/sys/dev/hpt27xx/hpt27xx_osm_bsd.c projects/nfsv42/sys/dev/hwpmc/hwpmc_core.c projects/nfsv42/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c projects/nfsv42/sys/dev/iicbus/iiconf.c projects/nfsv42/sys/dev/ioat/ioat.c projects/nfsv42/sys/dev/ioat/ioat.h projects/nfsv42/sys/dev/ioat/ioat_internal.h projects/nfsv42/sys/dev/mpr/mpr_sas.c projects/nfsv42/sys/dev/mps/mps_sas.c projects/nfsv42/sys/dev/ntb/ntb.c projects/nfsv42/sys/dev/ntb/ntb.h projects/nfsv42/sys/dev/ntb/ntb_hw/ntb_hw_amd.c projects/nfsv42/sys/dev/ntb/ntb_hw/ntb_hw_intel.c projects/nfsv42/sys/dev/ntb/ntb_hw/ntb_hw_plx.c projects/nfsv42/sys/dev/ntb/ntb_transport.c projects/nfsv42/sys/dev/nvdimm/nvdimm.c projects/nfsv42/sys/dev/nvdimm/nvdimm_acpi.c projects/nfsv42/sys/dev/nvdimm/nvdimm_spa.c projects/nfsv42/sys/dev/nvdimm/nvdimm_var.h projects/nfsv42/sys/dev/pci/pci.c projects/nfsv42/sys/dev/pci/pci_user.c projects/nfsv42/sys/dev/random/ivy.c projects/nfsv42/sys/dev/random/random_harvestq.c projects/nfsv42/sys/dev/random/random_infra.c projects/nfsv42/sys/dev/random/randomdev.h projects/nfsv42/sys/dev/trm/trm.c projects/nfsv42/sys/dev/usb/controller/generic_ehci_fdt.c projects/nfsv42/sys/dev/usb/usbdevs projects/nfsv42/sys/dev/usb/video/udl.c projects/nfsv42/sys/fs/devfs/devfs_vnops.c projects/nfsv42/sys/fs/nfs/nfsrvstate.h projects/nfsv42/sys/fs/nfsserver/nfs_nfsdport.c projects/nfsv42/sys/fs/tmpfs/tmpfs_subr.c projects/nfsv42/sys/fs/tmpfs/tmpfs_vnops.c projects/nfsv42/sys/geom/geom_ctl.c projects/nfsv42/sys/geom/geom_disk.c projects/nfsv42/sys/geom/geom_disk.h projects/nfsv42/sys/i386/conf/GENERIC projects/nfsv42/sys/i386/conf/GENERIC-NODEBUG projects/nfsv42/sys/i386/i386/db_trace.c projects/nfsv42/sys/i386/i386/elf_machdep.c projects/nfsv42/sys/i386/include/asmacros.h projects/nfsv42/sys/i386/linux/Makefile projects/nfsv42/sys/i386/linux/linux_sysvec.c projects/nfsv42/sys/i386/linux/syscalls.master projects/nfsv42/sys/kern/Makefile projects/nfsv42/sys/kern/imgact_elf.c projects/nfsv42/sys/kern/init_sysent.c projects/nfsv42/sys/kern/kern_conf.c projects/nfsv42/sys/kern/kern_exec.c projects/nfsv42/sys/kern/kern_mib.c projects/nfsv42/sys/kern/kern_sendfile.c projects/nfsv42/sys/kern/kern_sysctl.c projects/nfsv42/sys/kern/kern_timeout.c projects/nfsv42/sys/kern/subr_epoch.c projects/nfsv42/sys/kern/sys_pipe.c projects/nfsv42/sys/kern/syscalls.master projects/nfsv42/sys/kern/systrace_args.c projects/nfsv42/sys/kern/sysv_shm.c projects/nfsv42/sys/kern/uipc_shm.c projects/nfsv42/sys/kern/vfs_aio.c projects/nfsv42/sys/kern/vfs_cache.c projects/nfsv42/sys/kern/vfs_mountroot.c projects/nfsv42/sys/kern/vfs_subr.c projects/nfsv42/sys/kern/vfs_syscalls.c projects/nfsv42/sys/kern/vfs_vnops.c projects/nfsv42/sys/libkern/strcmp.c projects/nfsv42/sys/libkern/strcpy.c projects/nfsv42/sys/libkern/strlen.c projects/nfsv42/sys/mips/include/profile.h projects/nfsv42/sys/mips/mips/elf_machdep.c projects/nfsv42/sys/mips/mips/freebsd32_machdep.c projects/nfsv42/sys/mips/mips/pmap.c projects/nfsv42/sys/modules/Makefile projects/nfsv42/sys/modules/cxgbe/if_cxgbe/Makefile projects/nfsv42/sys/modules/geom/geom_uzip/Makefile projects/nfsv42/sys/modules/vmware/Makefile projects/nfsv42/sys/net/if.c projects/nfsv42/sys/net/if_llatbl.c projects/nfsv42/sys/net/if_llatbl.h projects/nfsv42/sys/net/netmap_user.h projects/nfsv42/sys/netinet/cc/cc_cubic.c projects/nfsv42/sys/netinet/cc/cc_cubic.h projects/nfsv42/sys/netinet/ip6.h projects/nfsv42/sys/netinet/ip_carp.c projects/nfsv42/sys/netinet/ip_mroute.c projects/nfsv42/sys/netinet/tcp_input.c projects/nfsv42/sys/netinet6/dest6.c projects/nfsv42/sys/netinet6/frag6.c projects/nfsv42/sys/netinet6/icmp6.c projects/nfsv42/sys/netinet6/in6.c projects/nfsv42/sys/netinet6/in6_pcb.c projects/nfsv42/sys/netinet6/ip6_input.c projects/nfsv42/sys/netinet6/ip6_mroute.c projects/nfsv42/sys/netinet6/mld6.c projects/nfsv42/sys/netinet6/mld6_var.h projects/nfsv42/sys/netinet6/nd6.c projects/nfsv42/sys/netinet6/nd6.h projects/nfsv42/sys/netinet6/nd6_nbr.c projects/nfsv42/sys/netinet6/nd6_rtr.c projects/nfsv42/sys/netinet6/route6.c projects/nfsv42/sys/netinet6/sctp6_usrreq.c projects/nfsv42/sys/netinet6/udp6_usrreq.c projects/nfsv42/sys/netipsec/xform_ah.c projects/nfsv42/sys/netipsec/xform_esp.c projects/nfsv42/sys/netpfil/pf/pf.c projects/nfsv42/sys/netpfil/pf/pf_norm.c projects/nfsv42/sys/ofed/include/rdma/ib_verbs.h projects/nfsv42/sys/powerpc/aim/mmu_oea64.c projects/nfsv42/sys/powerpc/aim/moea64_native.c projects/nfsv42/sys/powerpc/aim/trap_subr32.S projects/nfsv42/sys/powerpc/booke/pmap.c projects/nfsv42/sys/powerpc/booke/spe.c projects/nfsv42/sys/powerpc/conf/GENERIC-NODEBUG projects/nfsv42/sys/powerpc/conf/GENERIC64-NODEBUG projects/nfsv42/sys/powerpc/conf/dpaa/config.dpaa projects/nfsv42/sys/powerpc/include/atomic.h projects/nfsv42/sys/powerpc/powernv/opal.h projects/nfsv42/sys/powerpc/powernv/opal_pci.c projects/nfsv42/sys/powerpc/powerpc/elf32_machdep.c projects/nfsv42/sys/powerpc/powerpc/elf64_machdep.c projects/nfsv42/sys/powerpc/powerpc/exec_machdep.c projects/nfsv42/sys/powerpc/powerpc/mp_machdep.c projects/nfsv42/sys/powerpc/powerpc/ptrace_machdep.c projects/nfsv42/sys/riscv/include/md_var.h projects/nfsv42/sys/riscv/include/sbi.h projects/nfsv42/sys/riscv/riscv/busdma_bounce.c projects/nfsv42/sys/riscv/riscv/elf_machdep.c projects/nfsv42/sys/riscv/riscv/identcpu.c projects/nfsv42/sys/riscv/riscv/machdep.c projects/nfsv42/sys/riscv/riscv/plic.c projects/nfsv42/sys/security/audit/audit_bsm.c projects/nfsv42/sys/security/mac/mac_process.c projects/nfsv42/sys/sparc64/conf/GENERIC-NODEBUG projects/nfsv42/sys/sparc64/sparc64/elf_machdep.c projects/nfsv42/sys/sys/_atomic_subword.h projects/nfsv42/sys/sys/bitstring.h projects/nfsv42/sys/sys/buf.h projects/nfsv42/sys/sys/cdefs.h projects/nfsv42/sys/sys/conf.h projects/nfsv42/sys/sys/elf_common.h projects/nfsv42/sys/sys/imgact.h projects/nfsv42/sys/sys/imgact_elf.h projects/nfsv42/sys/sys/interrupt.h projects/nfsv42/sys/sys/kernel.h projects/nfsv42/sys/sys/libkern.h projects/nfsv42/sys/sys/linker_set.h projects/nfsv42/sys/sys/mman.h projects/nfsv42/sys/sys/param.h projects/nfsv42/sys/sys/random.h projects/nfsv42/sys/sys/sysctl.h projects/nfsv42/sys/sys/sysent.h projects/nfsv42/sys/sys/sysproto.h projects/nfsv42/sys/sys/systm.h projects/nfsv42/sys/ufs/ffs/ffs_softdep.c projects/nfsv42/sys/ufs/ufs/ufs_lookup.c projects/nfsv42/sys/vm/swap_pager.c projects/nfsv42/sys/vm/uma.h projects/nfsv42/sys/vm/uma_core.c projects/nfsv42/sys/vm/vm_fault.c projects/nfsv42/sys/vm/vm_glue.c projects/nfsv42/sys/vm/vm_map.c projects/nfsv42/sys/vm/vm_map.h projects/nfsv42/sys/vm/vm_meter.c projects/nfsv42/sys/vm/vm_mmap.c projects/nfsv42/sys/vm/vm_object.c projects/nfsv42/sys/vm/vm_object.h projects/nfsv42/sys/vm/vm_page.c projects/nfsv42/sys/vm/vm_page.h projects/nfsv42/sys/vm/vm_pageout.c projects/nfsv42/sys/vm/vm_pagequeue.h projects/nfsv42/sys/vm/vm_reserv.c projects/nfsv42/sys/vm/vm_reserv.h projects/nfsv42/sys/vm/vnode_pager.c projects/nfsv42/sys/x86/include/bus.h projects/nfsv42/sys/x86/include/bus_dma.h projects/nfsv42/sys/x86/include/specialreg.h projects/nfsv42/sys/x86/include/x86_var.h projects/nfsv42/sys/x86/iommu/busdma_dmar.c projects/nfsv42/sys/x86/iommu/intel_ctx.c projects/nfsv42/sys/x86/iommu/intel_dmar.h projects/nfsv42/sys/x86/iommu/intel_drv.c projects/nfsv42/sys/x86/iommu/intel_gas.c projects/nfsv42/sys/x86/iommu/intel_idpgtbl.c projects/nfsv42/sys/x86/iommu/intel_intrmap.c projects/nfsv42/sys/x86/iommu/intel_qi.c projects/nfsv42/sys/x86/iommu/intel_quirks.c projects/nfsv42/sys/x86/iommu/intel_utils.c projects/nfsv42/sys/x86/x86/bus_machdep.c projects/nfsv42/sys/x86/x86/busdma_machdep.c projects/nfsv42/sys/x86/x86/cpu_machdep.c projects/nfsv42/sys/x86/x86/identcpu.c projects/nfsv42/sys/x86/x86/mp_x86.c projects/nfsv42/sys/x86/xen/xen_apic.c Directory Properties: projects/nfsv42/sys/ (props changed) projects/nfsv42/sys/cddl/contrib/opensolaris/ (props changed) projects/nfsv42/sys/contrib/zstd/ (props changed) Modified: projects/nfsv42/sys/amd64/amd64/copyout.c ============================================================================== --- projects/nfsv42/sys/amd64/amd64/copyout.c Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/amd64/copyout.c Mon Nov 25 15:23:35 2019 (r355090) @@ -146,6 +146,10 @@ DEFINE_IFUNC(, int, casueword, (volatile u_long *, u_l casueword_smap : casueword_nosmap); } +#undef copyinstr +#undef copyin +#undef copyout + int copyinstr_nosmap(const void *udaddr, void *kaddr, size_t len, size_t *lencopied); int copyinstr_smap(const void *udaddr, void *kaddr, size_t len, Modified: projects/nfsv42/sys/amd64/amd64/cpu_switch.S ============================================================================== --- projects/nfsv42/sys/amd64/amd64/cpu_switch.S Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/amd64/cpu_switch.S Mon Nov 25 15:23:35 2019 (r355090) @@ -188,8 +188,10 @@ do_kthread: /* Do we need to reload tss ? */ movq PCPU(TSSP),%rax movq PCB_TSSP(%r8),%rdx + movq PCPU(PRVSPACE),%r13 + addq $PC_COMMONTSS,%r13 testq %rdx,%rdx - cmovzq PCPU(COMMONTSSP),%rdx + cmovzq %r13,%rdx cmpq %rax,%rdx jne do_tss done_tss: Modified: projects/nfsv42/sys/amd64/amd64/db_interface.c ============================================================================== --- projects/nfsv42/sys/amd64/amd64/db_interface.c Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/amd64/db_interface.c Mon Nov 25 15:23:35 2019 (r355090) @@ -97,9 +97,9 @@ void db_show_mdpcpu(struct pcpu *pc) { + db_printf("self = %p\n", pc->pc_prvspace); db_printf("curpmap = %p\n", pc->pc_curpmap); db_printf("tssp = %p\n", pc->pc_tssp); - db_printf("commontssp = %p\n", pc->pc_commontssp); db_printf("rsp0 = 0x%lx\n", pc->pc_rsp0); db_printf("kcr3 = 0x%lx\n", pc->pc_kcr3); db_printf("ucr3 = 0x%lx\n", pc->pc_ucr3); Modified: projects/nfsv42/sys/amd64/amd64/db_trace.c ============================================================================== --- projects/nfsv42/sys/amd64/amd64/db_trace.c Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/amd64/db_trace.c Mon Nov 25 15:23:35 2019 (r355090) @@ -123,7 +123,6 @@ db_frame(struct db_variable *vp, db_expr_t *valuep, in #define TRAP 1 #define INTERRUPT 2 #define SYSCALL 3 -#define TRAP_INTERRUPT 5 static void db_nextframe(struct amd64_frame **, db_addr_t *, struct thread *); static void db_print_stack_entry(const char *, db_addr_t, void *); @@ -204,6 +203,7 @@ db_nextframe(struct amd64_frame **fp, db_addr_t *ip, s frame_type = TRAP; else if (strncmp(name, "Xatpic_intr", 11) == 0 || strncmp(name, "Xapic_isr", 9) == 0 || + strcmp(name, "Xxen_intr_upcall") == 0 || strcmp(name, "Xtimerint") == 0 || strcmp(name, "Xipi_intr_bitmap_handler") == 0 || strcmp(name, "Xcpustop") == 0 || @@ -218,13 +218,6 @@ db_nextframe(struct amd64_frame **fp, db_addr_t *ip, s else if (strcmp(name, "Xint0x80_syscall") == 0) frame_type = SYSCALL; #endif - /* XXX: These are interrupts with trap frames. */ - else if (strcmp(name, "Xtimerint") == 0 || - strcmp(name, "Xcpustop") == 0 || - strcmp(name, "Xcpususpend") == 0 || - strcmp(name, "Xrendezvous") == 0 || - strcmp(name, "Xipi_intr_bitmap_handler") == 0) - frame_type = TRAP_INTERRUPT; } /* @@ -256,7 +249,6 @@ db_nextframe(struct amd64_frame **fp, db_addr_t *ip, s db_printf("--- syscall"); decode_syscall(tf->tf_rax, td); break; - case TRAP_INTERRUPT: case INTERRUPT: db_printf("--- interrupt"); break; Modified: projects/nfsv42/sys/amd64/amd64/elf_machdep.c ============================================================================== --- projects/nfsv42/sys/amd64/amd64/elf_machdep.c Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/amd64/elf_machdep.c Mon Nov 25 15:23:35 2019 (r355090) @@ -68,6 +68,7 @@ struct sysentvec elf64_freebsd_sysvec = { .sv_usrstack = USRSTACK, .sv_psstrings = PS_STRINGS, .sv_stackprot = VM_PROT_ALL, + .sv_copyout_auxargs = __elfN(freebsd_copyout_auxargs), .sv_copyout_strings = exec_copyout_strings, .sv_setregs = exec_setregs, .sv_fixlimit = NULL, Modified: projects/nfsv42/sys/amd64/amd64/exception.S ============================================================================== --- projects/nfsv42/sys/amd64/amd64/exception.S Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/amd64/exception.S Mon Nov 25 15:23:35 2019 (r355090) @@ -345,10 +345,11 @@ IDTVEC(dblfault) pushfq andq $~(PSL_D | PSL_AC),(%rsp) popfq - testb $SEL_RPL_MASK,TF_CS(%rsp) /* Did we come from kernel? */ - jz 1f /* already running with kernel GS.base */ - swapgs -1: lfence + movq TF_SIZE(%rsp),%rdx + movl %edx,%eax + shrq $32,%rdx + movl $MSR_GSBASE,%ecx + wrmsr movq %cr3,%rax movq %rax,PCPU(SAVED_UCR3) movq PCPU(KCR3),%rax @@ -497,8 +498,8 @@ prot_addrf: 3: cmpw $KUG32SEL,TF_GS(%rsp) jne 4f movq %rdx,PCB_GSBASE(%rdi) + orl $PCB_FULL_IRET,PCB_FLAGS(%rdi) /* full iret from user #gp */ 4: call handle_ibrs_entry - orl $PCB_FULL_IRET,PCB_FLAGS(%rdi) /* always full iret from GPF */ movw %es,TF_ES(%rsp) movw %ds,TF_DS(%rsp) testl $PSL_I,TF_RFLAGS(%rsp) Modified: projects/nfsv42/sys/amd64/amd64/genassym.c ============================================================================== --- projects/nfsv42/sys/amd64/amd64/genassym.c Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/amd64/genassym.c Mon Nov 25 15:23:35 2019 (r355090) @@ -225,7 +225,7 @@ ASSYM(PC_RSP0, offsetof(struct pcpu, pc_rsp0)); ASSYM(PC_FS32P, offsetof(struct pcpu, pc_fs32p)); ASSYM(PC_GS32P, offsetof(struct pcpu, pc_gs32p)); ASSYM(PC_LDT, offsetof(struct pcpu, pc_ldt)); -ASSYM(PC_COMMONTSSP, offsetof(struct pcpu, pc_commontssp)); +ASSYM(PC_COMMONTSS, offsetof(struct pcpu, pc_common_tss)); ASSYM(PC_TSS, offsetof(struct pcpu, pc_tss)); ASSYM(PC_PM_SAVE_CNT, offsetof(struct pcpu, pc_pm_save_cnt)); ASSYM(PC_KCR3, offsetof(struct pcpu, pc_kcr3)); Modified: projects/nfsv42/sys/amd64/amd64/machdep.c ============================================================================== --- projects/nfsv42/sys/amd64/amd64/machdep.c Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/amd64/machdep.c Mon Nov 25 15:23:35 2019 (r355090) @@ -64,6 +64,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -213,7 +214,7 @@ long realmem = 0; struct kva_md_info kmi; static struct trapframe proc0_tf; -struct region_descriptor r_gdt, r_idt; +struct region_descriptor r_idt; struct pcpu *__pcpu; struct pcpu temp_bsp_pcpu; @@ -658,8 +659,6 @@ cpu_setregs(void) /* * Initialize segments & interrupt table */ - -struct user_segment_descriptor gdt[NGDT * MAXCPU];/* global descriptor tables */ static struct gate_descriptor idt0[NIDT]; struct gate_descriptor *idt = &idt0[0]; /* interrupt descriptor table */ @@ -669,8 +668,6 @@ static char nmi0_stack[PAGE_SIZE] __aligned(16); static char dbg0_stack[PAGE_SIZE] __aligned(16); CTASSERT(sizeof(struct nmi_pcpu) == 16); -struct amd64tss common_tss[MAXCPU]; - /* * Software prototypes -- in more palatable form. * @@ -796,6 +793,7 @@ struct soft_segment_descriptor gdt_segs[] = { .ssd_def32 = 0, .ssd_gran = 0 }, }; +_Static_assert(nitems(gdt_segs) == NGDT, "Stale NGDT"); void setidt(int idx, inthand_t *func, int typ, int dpl, int ist) @@ -1547,11 +1545,12 @@ amd64_conf_fast_syscall(void) void amd64_bsp_pcpu_init1(struct pcpu *pc) { + struct user_segment_descriptor *gdt; PCPU_SET(prvspace, pc); + gdt = *PCPU_PTR(gdt); PCPU_SET(curthread, &thread0); - PCPU_SET(tssp, &common_tss[0]); - PCPU_SET(commontssp, &common_tss[0]); + PCPU_SET(tssp, PCPU_PTR(common_tss)); PCPU_SET(tss, (struct system_segment_descriptor *)&gdt[GPROC0_SEL]); PCPU_SET(ldt, (struct system_segment_descriptor *)&gdt[GUSERLDT_SEL]); PCPU_SET(fs32p, &gdt[GUFS32_SEL]); @@ -1572,9 +1571,14 @@ void amd64_bsp_ist_init(struct pcpu *pc) { struct nmi_pcpu *np; + struct amd64tss *tssp; + tssp = &pc->pc_common_tss; + /* doublefault stack space, runs on ist1 */ - common_tss[0].tss_ist1 = (long)&dblfault_stack[sizeof(dblfault_stack)]; + np = ((struct nmi_pcpu *)&dblfault_stack[sizeof(dblfault_stack)]) - 1; + np->np_pcpu = (register_t)pc; + tssp->tss_ist1 = (long)np; /* * NMI stack, runs on ist2. The pcpu pointer is stored just @@ -1582,7 +1586,7 @@ amd64_bsp_ist_init(struct pcpu *pc) */ np = ((struct nmi_pcpu *)&nmi0_stack[sizeof(nmi0_stack)]) - 1; np->np_pcpu = (register_t)pc; - common_tss[0].tss_ist2 = (long)np; + tssp->tss_ist2 = (long)np; /* * MC# stack, runs on ist3. The pcpu pointer is stored just @@ -1590,14 +1594,14 @@ amd64_bsp_ist_init(struct pcpu *pc) */ np = ((struct nmi_pcpu *)&mce0_stack[sizeof(mce0_stack)]) - 1; np->np_pcpu = (register_t)pc; - common_tss[0].tss_ist3 = (long)np; + tssp->tss_ist3 = (long)np; /* * DB# stack, runs on ist4. */ np = ((struct nmi_pcpu *)&dbg0_stack[sizeof(dbg0_stack)]) - 1; np->np_pcpu = (register_t)pc; - common_tss[0].tss_ist4 = (long)np; + tssp->tss_ist4 = (long)np; } u_int64_t @@ -1609,6 +1613,8 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) struct xstate_hdr *xhdr; u_int64_t rsp0; char *env; + struct user_segment_descriptor *gdt; + struct region_descriptor r_gdt; size_t kstack0_sz; int late_console; @@ -1664,6 +1670,10 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) */ pmap_thread_init_invl_gen(&thread0); + pc = &temp_bsp_pcpu; + pcpu_init(pc, 0, sizeof(struct pcpu)); + gdt = &temp_bsp_pcpu.pc_gdt[0]; + /* * make gdt memory segments */ @@ -1672,20 +1682,18 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) x != GUSERLDT_SEL && x != (GUSERLDT_SEL) + 1) ssdtosd(&gdt_segs[x], &gdt[x]); } - gdt_segs[GPROC0_SEL].ssd_base = (uintptr_t)&common_tss[0]; + gdt_segs[GPROC0_SEL].ssd_base = (uintptr_t)&pc->pc_common_tss; ssdtosyssd(&gdt_segs[GPROC0_SEL], (struct system_segment_descriptor *)&gdt[GPROC0_SEL]); r_gdt.rd_limit = NGDT * sizeof(gdt[0]) - 1; - r_gdt.rd_base = (long) gdt; + r_gdt.rd_base = (long)gdt; lgdt(&r_gdt); - pc = &temp_bsp_pcpu; wrmsr(MSR_FSBASE, 0); /* User value */ wrmsr(MSR_GSBASE, (u_int64_t)pc); wrmsr(MSR_KGSBASE, 0); /* User value while in the kernel */ - pcpu_init(pc, 0, sizeof(struct pcpu)); dpcpu_init((void *)(physfree + KERNBASE), 0); physfree += DPCPU_SIZE; amd64_bsp_pcpu_init1(pc); @@ -1774,6 +1782,7 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) TUNABLE_INT_FETCH("machdep.syscall_ret_l1d_flush", &syscall_ret_l1d_flush_mode); TUNABLE_INT_FETCH("hw.mds_disable", &hw_mds_disable); + TUNABLE_INT_FETCH("machdep.mitigations.taa.enable", &x86_taa_enable); finishidentcpu(); /* Final stage of CPU initialization */ initializecpu(); /* Initialize CPU registers */ @@ -1781,7 +1790,8 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) amd64_bsp_ist_init(pc); /* Set the IO permission bitmap (empty due to tss seg limit) */ - common_tss[0].tss_iobase = sizeof(struct amd64tss) + IOPERM_BITMAP_SIZE; + pc->pc_common_tss.tss_iobase = sizeof(struct amd64tss) + + IOPERM_BITMAP_SIZE; gsel_tss = GSEL(GPROC0_SEL, SEL_KPL); ltr(gsel_tss); @@ -1865,7 +1875,7 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) rsp0 = thread0.td_md.md_stack_base; /* Ensure the stack is aligned to 16 bytes */ rsp0 &= ~0xFul; - common_tss[0].tss_rsp0 = rsp0; + __pcpu[0].pc_common_tss.tss_rsp0 = rsp0; amd64_bsp_pcpu_init2(rsp0); /* transfer to user mode */ @@ -1890,6 +1900,8 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) cpu_probe_amdc1e(); + kcsan_cpu_init(0); + #ifdef FDT x86_init_fdt(); #endif @@ -2713,6 +2725,40 @@ outb_(u_short port, u_char data) void *memset_std(void *buf, int c, size_t len); void *memset_erms(void *buf, int c, size_t len); +void *memmove_std(void * _Nonnull dst, const void * _Nonnull src, + size_t len); +void *memmove_erms(void * _Nonnull dst, const void * _Nonnull src, + size_t len); +void *memcpy_std(void * _Nonnull dst, const void * _Nonnull src, + size_t len); +void *memcpy_erms(void * _Nonnull dst, const void * _Nonnull src, + size_t len); + +#ifdef KCSAN +/* + * These fail to build as ifuncs when used with KCSAN. + */ +void * +memset(void *buf, int c, size_t len) +{ + + return (memset_std(buf, c, len)); +} + +void * +memmove(void * _Nonnull dst, const void * _Nonnull src, size_t len) +{ + + return (memmove_std(dst, src, len)); +} + +void * +memcpy(void * _Nonnull dst, const void * _Nonnull src, size_t len) +{ + + return (memcpy_std(dst, src, len)); +} +#else DEFINE_IFUNC(, void *, memset, (void *, int, size_t)) { @@ -2720,10 +2766,6 @@ DEFINE_IFUNC(, void *, memset, (void *, int, size_t)) memset_erms : memset_std); } -void *memmove_std(void * _Nonnull dst, const void * _Nonnull src, - size_t len); -void *memmove_erms(void * _Nonnull dst, const void * _Nonnull src, - size_t len); DEFINE_IFUNC(, void *, memmove, (void * _Nonnull, const void * _Nonnull, size_t)) { @@ -2732,16 +2774,13 @@ DEFINE_IFUNC(, void *, memmove, (void * _Nonnull, cons memmove_erms : memmove_std); } -void *memcpy_std(void * _Nonnull dst, const void * _Nonnull src, - size_t len); -void *memcpy_erms(void * _Nonnull dst, const void * _Nonnull src, - size_t len); DEFINE_IFUNC(, void *, memcpy, (void * _Nonnull, const void * _Nonnull,size_t)) { return ((cpu_stdext_feature & CPUID_STDEXT_ERMS) != 0 ? memcpy_erms : memcpy_std); } +#endif void pagezero_std(void *addr); void pagezero_erms(void *addr); Modified: projects/nfsv42/sys/amd64/amd64/mp_machdep.c ============================================================================== --- projects/nfsv42/sys/amd64/amd64/mp_machdep.c Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/amd64/mp_machdep.c Mon Nov 25 15:23:35 2019 (r355090) @@ -275,9 +275,10 @@ init_secondary(void) { struct pcpu *pc; struct nmi_pcpu *np; + struct user_segment_descriptor *gdt; + struct region_descriptor ap_gdt; u_int64_t cr0; int cpu, gsel_tss, x; - struct region_descriptor ap_gdt; /* Set by the startup code for us to use */ cpu = bootAP; @@ -285,38 +286,7 @@ init_secondary(void) /* Update microcode before doing anything else. */ ucode_load_ap(cpu); - /* Init tss */ - common_tss[cpu] = common_tss[0]; - common_tss[cpu].tss_iobase = sizeof(struct amd64tss) + - IOPERM_BITMAP_SIZE; - common_tss[cpu].tss_ist1 = (long)&doublefault_stack[PAGE_SIZE]; - - /* The NMI stack runs on IST2. */ - np = ((struct nmi_pcpu *) &nmi_stack[PAGE_SIZE]) - 1; - common_tss[cpu].tss_ist2 = (long) np; - - /* The MC# stack runs on IST3. */ - np = ((struct nmi_pcpu *) &mce_stack[PAGE_SIZE]) - 1; - common_tss[cpu].tss_ist3 = (long) np; - - /* The DB# stack runs on IST4. */ - np = ((struct nmi_pcpu *) &dbg_stack[PAGE_SIZE]) - 1; - common_tss[cpu].tss_ist4 = (long) np; - - /* Prepare private GDT */ - gdt_segs[GPROC0_SEL].ssd_base = (long) &common_tss[cpu]; - for (x = 0; x < NGDT; x++) { - if (x != GPROC0_SEL && x != (GPROC0_SEL + 1) && - x != GUSERLDT_SEL && x != (GUSERLDT_SEL + 1)) - ssdtosd(&gdt_segs[x], &gdt[NGDT * cpu + x]); - } - ssdtosyssd(&gdt_segs[GPROC0_SEL], - (struct system_segment_descriptor *)&gdt[NGDT * cpu + GPROC0_SEL]); - ap_gdt.rd_limit = NGDT * sizeof(gdt[0]) - 1; - ap_gdt.rd_base = (long) &gdt[NGDT * cpu]; - lgdt(&ap_gdt); /* does magic intra-segment return */ - - /* Get per-cpu data */ + /* Get per-cpu data and save */ pc = &__pcpu[cpu]; /* prime data page for it to use */ @@ -325,33 +295,57 @@ init_secondary(void) pc->pc_apic_id = cpu_apic_ids[cpu]; pc->pc_prvspace = pc; pc->pc_curthread = 0; - pc->pc_tssp = &common_tss[cpu]; - pc->pc_commontssp = &common_tss[cpu]; + pc->pc_tssp = &pc->pc_common_tss; pc->pc_rsp0 = 0; pc->pc_pti_rsp0 = (((vm_offset_t)&pc->pc_pti_stack + PC_PTI_STACK_SZ * sizeof(uint64_t)) & ~0xful); - pc->pc_tss = (struct system_segment_descriptor *)&gdt[NGDT * cpu + - GPROC0_SEL]; - pc->pc_fs32p = &gdt[NGDT * cpu + GUFS32_SEL]; - pc->pc_gs32p = &gdt[NGDT * cpu + GUGS32_SEL]; - pc->pc_ldt = (struct system_segment_descriptor *)&gdt[NGDT * cpu + - GUSERLDT_SEL]; + gdt = pc->pc_gdt; + pc->pc_tss = (struct system_segment_descriptor *)&gdt[GPROC0_SEL]; + pc->pc_fs32p = &gdt[GUFS32_SEL]; + pc->pc_gs32p = &gdt[GUGS32_SEL]; + pc->pc_ldt = (struct system_segment_descriptor *)&gdt[GUSERLDT_SEL]; /* See comment in pmap_bootstrap(). */ pc->pc_pcid_next = PMAP_PCID_KERN + 2; pc->pc_pcid_gen = 1; - common_tss[cpu].tss_rsp0 = 0; - /* Save the per-cpu pointer for use by the NMI handler. */ + /* Init tss */ + pc->pc_common_tss = __pcpu[0].pc_common_tss; + pc->pc_common_tss.tss_iobase = sizeof(struct amd64tss) + + IOPERM_BITMAP_SIZE; + pc->pc_common_tss.tss_rsp0 = 0; + + /* The doublefault stack runs on IST1. */ + np = ((struct nmi_pcpu *)&doublefault_stack[PAGE_SIZE]) - 1; + np->np_pcpu = (register_t)pc; + pc->pc_common_tss.tss_ist1 = (long)np; + + /* The NMI stack runs on IST2. */ np = ((struct nmi_pcpu *) &nmi_stack[PAGE_SIZE]) - 1; - np->np_pcpu = (register_t) pc; + np->np_pcpu = (register_t)pc; + pc->pc_common_tss.tss_ist2 = (long)np; - /* Save the per-cpu pointer for use by the MC# handler. */ + /* The MC# stack runs on IST3. */ np = ((struct nmi_pcpu *) &mce_stack[PAGE_SIZE]) - 1; - np->np_pcpu = (register_t) pc; + np->np_pcpu = (register_t)pc; + pc->pc_common_tss.tss_ist3 = (long)np; - /* Save the per-cpu pointer for use by the DB# handler. */ + /* The DB# stack runs on IST4. */ np = ((struct nmi_pcpu *) &dbg_stack[PAGE_SIZE]) - 1; - np->np_pcpu = (register_t) pc; + np->np_pcpu = (register_t)pc; + pc->pc_common_tss.tss_ist4 = (long)np; + + /* Prepare private GDT */ + gdt_segs[GPROC0_SEL].ssd_base = (long)&pc->pc_common_tss; + for (x = 0; x < NGDT; x++) { + if (x != GPROC0_SEL && x != GPROC0_SEL + 1 && + x != GUSERLDT_SEL && x != GUSERLDT_SEL + 1) + ssdtosd(&gdt_segs[x], &gdt[x]); + } + ssdtosyssd(&gdt_segs[GPROC0_SEL], + (struct system_segment_descriptor *)&gdt[GPROC0_SEL]); + ap_gdt.rd_limit = NGDT * sizeof(gdt[0]) - 1; + ap_gdt.rd_base = (u_long)gdt; + lgdt(&ap_gdt); /* does magic intra-segment return */ wrmsr(MSR_FSBASE, 0); /* User value */ wrmsr(MSR_GSBASE, (u_int64_t)pc); Modified: projects/nfsv42/sys/amd64/amd64/pmap.c ============================================================================== --- projects/nfsv42/sys/amd64/amd64/pmap.c Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/amd64/pmap.c Mon Nov 25 15:23:35 2019 (r355090) @@ -1669,6 +1669,7 @@ pmap_bootstrap(vm_paddr_t *firstaddr) { vm_offset_t va; pt_entry_t *pte, *pcpu_pte; + struct region_descriptor r_gdt; uint64_t cr4, pcpu_phys; u_long res; int i; @@ -1760,11 +1761,26 @@ pmap_bootstrap(vm_paddr_t *firstaddr) pcpu_pte[i] = (pcpu_phys + ptoa(i)) | X86_PG_V | X86_PG_RW | pg_g | pg_nx | X86_PG_M | X86_PG_A; } + + /* + * Re-initialize PCPU area for BSP after switching. + * Make hardware use gdt and common_tss from the new PCPU. + */ STAILQ_INIT(&cpuhead); wrmsr(MSR_GSBASE, (uint64_t)&__pcpu[0]); pcpu_init(&__pcpu[0], 0, sizeof(struct pcpu)); amd64_bsp_pcpu_init1(&__pcpu[0]); amd64_bsp_ist_init(&__pcpu[0]); + memcpy(__pcpu[0].pc_gdt, temp_bsp_pcpu.pc_gdt, NGDT * + sizeof(struct user_segment_descriptor)); + gdt_segs[GPROC0_SEL].ssd_base = (uintptr_t)&__pcpu[0].pc_common_tss; + ssdtosyssd(&gdt_segs[GPROC0_SEL], + (struct system_segment_descriptor *)&__pcpu[0].pc_gdt[GPROC0_SEL]); + r_gdt.rd_limit = NGDT * sizeof(struct user_segment_descriptor) - 1; + r_gdt.rd_base = (long)__pcpu[0].pc_gdt; + lgdt(&r_gdt); + wrmsr(MSR_GSBASE, (uint64_t)&__pcpu[0]); + ltr(GSEL(GPROC0_SEL, SEL_KPL)); __pcpu[0].pc_dynamic = temp_bsp_pcpu.pc_dynamic; __pcpu[0].pc_acpi_id = temp_bsp_pcpu.pc_acpi_id; @@ -1878,6 +1894,51 @@ pmap_page_init(vm_page_t m) m->md.pat_mode = PAT_WRITE_BACK; } +static int pmap_allow_2m_x_ept; +SYSCTL_INT(_vm_pmap, OID_AUTO, allow_2m_x_ept, CTLFLAG_RWTUN | CTLFLAG_NOFETCH, + &pmap_allow_2m_x_ept, 0, + "Allow executable superpage mappings in EPT"); + +void +pmap_allow_2m_x_ept_recalculate(void) +{ + /* + * SKL002, SKL012S. Since the EPT format is only used by + * Intel CPUs, the vendor check is merely a formality. + */ + if (!(cpu_vendor_id != CPU_VENDOR_INTEL || + (cpu_ia32_arch_caps & IA32_ARCH_CAP_IF_PSCHANGE_MC_NO) != 0 || + (CPUID_TO_FAMILY(cpu_id) == 0x6 && + (CPUID_TO_MODEL(cpu_id) == 0x26 || /* Atoms */ + CPUID_TO_MODEL(cpu_id) == 0x27 || + CPUID_TO_MODEL(cpu_id) == 0x35 || + CPUID_TO_MODEL(cpu_id) == 0x36 || + CPUID_TO_MODEL(cpu_id) == 0x37 || + CPUID_TO_MODEL(cpu_id) == 0x86 || + CPUID_TO_MODEL(cpu_id) == 0x1c || + CPUID_TO_MODEL(cpu_id) == 0x4a || + CPUID_TO_MODEL(cpu_id) == 0x4c || + CPUID_TO_MODEL(cpu_id) == 0x4d || + CPUID_TO_MODEL(cpu_id) == 0x5a || + CPUID_TO_MODEL(cpu_id) == 0x5c || + CPUID_TO_MODEL(cpu_id) == 0x5d || + CPUID_TO_MODEL(cpu_id) == 0x5f || + CPUID_TO_MODEL(cpu_id) == 0x6e || + CPUID_TO_MODEL(cpu_id) == 0x7a || + CPUID_TO_MODEL(cpu_id) == 0x57 || /* Knights */ + CPUID_TO_MODEL(cpu_id) == 0x85)))) + pmap_allow_2m_x_ept = 1; + TUNABLE_INT_FETCH("hw.allow_2m_x_ept", &pmap_allow_2m_x_ept); +} + +static bool +pmap_allow_2m_x_page(pmap_t pmap, bool executable) +{ + + return (pmap->pm_type != PT_EPT || !executable || + !pmap_allow_2m_x_ept); +} + #ifdef NUMA static void pmap_init_pv_table(void) @@ -2021,6 +2082,9 @@ pmap_init(void) } } + /* IFU */ + pmap_allow_2m_x_ept_recalculate(); + /* * Initialize the vm page array entries for the kernel pmap's * page table pages. @@ -3049,16 +3113,16 @@ pmap_force_invalidate_cache_range(vm_offset_t sva, vm_ if ((cpu_stdext_feature & CPUID_STDEXT_CLFLUSHOPT) != 0) { /* - * Do per-cache line flush. Use the sfence + * Do per-cache line flush. Use a locked * instruction to insure that previous stores are * included in the write-back. The processor * propagates flush to other processors in the cache * coherence domain. */ - sfence(); + atomic_thread_fence_seq_cst(); for (; sva < eva; sva += cpu_clflush_line_size) clflushopt(sva); - sfence(); + atomic_thread_fence_seq_cst(); } else { /* * Writes are ordered by CLFLUSH on Intel CPUs. @@ -3100,7 +3164,7 @@ pmap_invalidate_cache_pages(vm_page_t *pages, int coun pmap_invalidate_cache(); else { if (useclflushopt) - sfence(); + atomic_thread_fence_seq_cst(); else if (cpu_vendor_id != CPU_VENDOR_INTEL) mfence(); for (i = 0; i < count; i++) { @@ -3114,7 +3178,7 @@ pmap_invalidate_cache_pages(vm_page_t *pages, int coun } } if (useclflushopt) - sfence(); + atomic_thread_fence_seq_cst(); else if (cpu_vendor_id != CPU_VENDOR_INTEL) mfence(); } @@ -3135,10 +3199,10 @@ pmap_flush_cache_range(vm_offset_t sva, vm_offset_t ev if (pmap_kextract(sva) == lapic_paddr) return; - sfence(); + atomic_thread_fence_seq_cst(); for (; sva < eva; sva += cpu_clflush_line_size) clwb(sva); - sfence(); + atomic_thread_fence_seq_cst(); } void @@ -3171,7 +3235,7 @@ pmap_flush_cache_phys_range(vm_paddr_t spa, vm_paddr_t sched_pin(); pte_store(pte, spa | pte_bits); invlpg(vaddr); - /* XXXKIB sfences inside flush_cache_range are excessive */ + /* XXXKIB atomic inside flush_cache_range are excessive */ pmap_flush_cache_range(vaddr, vaddr + PAGE_SIZE); sched_unpin(); } @@ -5702,6 +5766,15 @@ retry: } #if VM_NRESERVLEVEL > 0 +static bool +pmap_pde_ept_executable(pmap_t pmap, pd_entry_t pde) +{ + + if (pmap->pm_type != PT_EPT) + return (false); + return ((pde & EPT_PG_EXECUTE) != 0); +} + /* * Tries to promote the 512, contiguous 4KB page mappings that are within a * single page table page (PTP) to a single 2MB page mapping. For promotion @@ -5737,7 +5810,9 @@ pmap_promote_pde(pmap_t pmap, pd_entry_t *pde, vm_offs firstpte = (pt_entry_t *)PHYS_TO_DMAP(*pde & PG_FRAME); setpde: newpde = *firstpte; - if ((newpde & ((PG_FRAME & PDRMASK) | PG_A | PG_V)) != (PG_A | PG_V)) { + if ((newpde & ((PG_FRAME & PDRMASK) | PG_A | PG_V)) != (PG_A | PG_V) || + !pmap_allow_2m_x_page(pmap, pmap_pde_ept_executable(pmap, + newpde))) { atomic_add_long(&pmap_pde_p_failures, 1); CTR2(KTR_PMAP, "pmap_promote_pde: failure for va %#lx" " in pmap %p", va, pmap); @@ -6169,6 +6244,12 @@ pmap_enter_pde(pmap_t pmap, vm_offset_t va, pd_entry_t PG_V = pmap_valid_bit(pmap); PMAP_LOCK_ASSERT(pmap, MA_OWNED); + if (!pmap_allow_2m_x_page(pmap, pmap_pde_ept_executable(pmap, + newpde))) { + CTR2(KTR_PMAP, "pmap_enter_pde: 2m x blocked for va %#lx" + " in pmap %p", va, pmap); + return (KERN_FAILURE); + } if ((pdpg = pmap_allocpde(pmap, va, (flags & PMAP_ENTER_NOSLEEP) != 0 ? NULL : lockp)) == NULL) { CTR2(KTR_PMAP, "pmap_enter_pde: failure for va %#lx" @@ -6315,6 +6396,7 @@ pmap_enter_object(pmap_t pmap, vm_offset_t start, vm_o va = start + ptoa(diff); if ((va & PDRMASK) == 0 && va + NBPDR <= end && m->psind == 1 && pmap_ps_enabled(pmap) && + pmap_allow_2m_x_page(pmap, (prot & VM_PROT_EXECUTE) != 0) && pmap_enter_2mpage(pmap, va, m, prot, &lock)) m = &m[NBPDR / PAGE_SIZE - 1]; else @@ -8806,8 +8888,11 @@ pmap_activate_sw(struct thread *td) oldpmap = PCPU_GET(curpmap); pmap = vmspace_pmap(td->td_proc->p_vmspace); - if (oldpmap == pmap) + if (oldpmap == pmap) { + if (cpu_vendor_id != CPU_VENDOR_INTEL) + mfence(); return; + } cpuid = PCPU_GET(cpuid); #ifdef SMP CPU_SET_ATOMIC(cpuid, &pmap->pm_active); @@ -9500,10 +9585,10 @@ pmap_large_map_wb_fence_mfence(void) } static void -pmap_large_map_wb_fence_sfence(void) +pmap_large_map_wb_fence_atomic(void) { - sfence(); + atomic_thread_fence_seq_cst(); } static void @@ -9518,7 +9603,7 @@ DEFINE_IFUNC(static, void, pmap_large_map_wb_fence, (v return (pmap_large_map_wb_fence_mfence); else if ((cpu_stdext_feature & (CPUID_STDEXT_CLWB | CPUID_STDEXT_CLFLUSHOPT)) == 0) - return (pmap_large_map_wb_fence_sfence); + return (pmap_large_map_wb_fence_atomic); else /* clflush is strongly enough ordered */ return (pmap_large_map_wb_fence_nop); @@ -9715,24 +9800,21 @@ pmap_pti_init(void) } pmap_pti_add_kva_locked((vm_offset_t)&__pcpu[0], (vm_offset_t)&__pcpu[0] + sizeof(__pcpu[0]) * MAXCPU, false); - pmap_pti_add_kva_locked((vm_offset_t)gdt, (vm_offset_t)gdt + - sizeof(struct user_segment_descriptor) * NGDT * MAXCPU, false); pmap_pti_add_kva_locked((vm_offset_t)idt, (vm_offset_t)idt + sizeof(struct gate_descriptor) * NIDT, false); - pmap_pti_add_kva_locked((vm_offset_t)common_tss, - (vm_offset_t)common_tss + sizeof(struct amd64tss) * MAXCPU, false); CPU_FOREACH(i) { /* Doublefault stack IST 1 */ - va = common_tss[i].tss_ist1; + va = __pcpu[i].pc_common_tss.tss_ist1; pmap_pti_add_kva_locked(va - PAGE_SIZE, va, false); /* NMI stack IST 2 */ - va = common_tss[i].tss_ist2 + sizeof(struct nmi_pcpu); + va = __pcpu[i].pc_common_tss.tss_ist2 + sizeof(struct nmi_pcpu); pmap_pti_add_kva_locked(va - PAGE_SIZE, va, false); /* MC# stack IST 3 */ - va = common_tss[i].tss_ist3 + sizeof(struct nmi_pcpu); + va = __pcpu[i].pc_common_tss.tss_ist3 + + sizeof(struct nmi_pcpu); pmap_pti_add_kva_locked(va - PAGE_SIZE, va, false); /* DB# stack IST 4 */ - va = common_tss[i].tss_ist4 + sizeof(struct nmi_pcpu); + va = __pcpu[i].pc_common_tss.tss_ist4 + sizeof(struct nmi_pcpu); pmap_pti_add_kva_locked(va - PAGE_SIZE, va, false); } pmap_pti_add_kva_locked((vm_offset_t)kernphys + KERNBASE, Modified: projects/nfsv42/sys/amd64/amd64/support.S ============================================================================== --- projects/nfsv42/sys/amd64/amd64/support.S Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/amd64/support.S Mon Nov 25 15:23:35 2019 (r355090) @@ -671,13 +671,7 @@ END(fillw) movq $copy_fault,PCB_ONFAULT(%r11) /* - * Check explicitly for non-user addresses. If 486 write protection - * is being used, this check is essential because we are in kernel - * mode so the h/w does not provide any protection against writing - * kernel addresses. - */ - - /* + * Check explicitly for non-user addresses. * First, prevent address wrapping. */ movq %rsi,%rax Modified: projects/nfsv42/sys/amd64/amd64/sys_machdep.c ============================================================================== --- projects/nfsv42/sys/amd64/amd64/sys_machdep.c Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/amd64/sys_machdep.c Mon Nov 25 15:23:35 2019 (r355090) @@ -426,8 +426,7 @@ amd64_set_ioperm(td, uap) memset(iomap, 0xff, IOPERM_BITMAP_SIZE); critical_enter(); /* Takes care of tss_rsp0. */ - memcpy(tssp, &common_tss[PCPU_GET(cpuid)], - sizeof(struct amd64tss)); + memcpy(tssp, PCPU_PTR(common_tss), sizeof(struct amd64tss)); tssp->tss_iobase = sizeof(*tssp); pcb->pcb_tssp = tssp; tss_sd = PCPU_GET(tss); Modified: projects/nfsv42/sys/amd64/amd64/trap.c ============================================================================== --- projects/nfsv42/sys/amd64/amd64/trap.c Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/amd64/trap.c Mon Nov 25 15:23:35 2019 (r355090) @@ -861,14 +861,15 @@ trap_fatal(frame, eva) int code, ss; u_int type; struct soft_segment_descriptor softseg; + struct user_segment_descriptor *gdt; #ifdef KDB bool handled; #endif code = frame->tf_err; type = frame->tf_trapno; - sdtossd(&gdt[NGDT * PCPU_GET(cpuid) + IDXSEL(frame->tf_cs & 0xffff)], - &softseg); + gdt = *PCPU_PTR(gdt); + sdtossd(&gdt[IDXSEL(frame->tf_cs & 0xffff)], &softseg); printf("\n\nFatal trap %d: %s while in %s mode\n", type, type < nitems(trap_msg) ? trap_msg[type] : UNKNOWN, Modified: projects/nfsv42/sys/amd64/conf/GENERIC ============================================================================== --- projects/nfsv42/sys/amd64/conf/GENERIC Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/conf/GENERIC Mon Nov 25 15:23:35 2019 (r355090) @@ -106,6 +106,7 @@ options VERBOSE_SYSINIT=0 # Support debug.verbose_sys #options KCOV # Kernel Coverage Sanitizer # Warning: KUBSAN can result in a kernel too large for loader to load #options KUBSAN # Kernel Undefined Behavior Sanitizer +#options KCSAN # Kernel Concurrency Sanitizer # Kernel dump features. options EKCD # Support for encrypted kernel dumps @@ -152,6 +153,7 @@ device sym # NCR/Symbios Logic device trm # Tekram DC395U/UW/F DC315U adapters device isci # Intel C600 SAS controller device ocs_fc # Emulex FC adapters +device pvscsi # VMware PVSCSI # ATA/SCSI peripherals device scbus # SCSI bus (required for ATA/SCSI) Copied: projects/nfsv42/sys/amd64/conf/GENERIC-KCSAN (from r355089, head/sys/amd64/conf/GENERIC-KCSAN) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/nfsv42/sys/amd64/conf/GENERIC-KCSAN Mon Nov 25 15:23:35 2019 (r355090, copy of r355089, head/sys/amd64/conf/GENERIC-KCSAN) @@ -0,0 +1,33 @@ +# +# GENERIC-KCSAN -- Kernel Concurrency Sanitizer kernel configuration file +# for FreeBSD/amd64 +# +# This configuration file removes several debugging options, including +# WITNESS and INVARIANTS checking, which are known to have significant +# performance impact on running systems. When benchmarking new features +# this kernel should be used instead of the standard GENERIC. +# This kernel configuration should never appear outside of the HEAD +# of the FreeBSD tree. +# +# For more information on this file, please read the config(5) manual page, +# and/or the handbook section on Kernel Configuration Files: +# +# https://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html +# +# The handbook is also available locally in /usr/share/doc/handbook +# if you've installed the doc distribution, otherwise always see the +# FreeBSD World Wide Web server (https://www.FreeBSD.org/) for the +# latest information. +# +# An exhaustive list of options and more detailed explanations of the +# device lines is also present in the ../../conf/NOTES and NOTES files. +# If you are in doubt as to the purpose or necessity of a line, check first +# in NOTES. +# +# $FreeBSD$ + +include GENERIC + +ident GENERIC-KCSAN + +options KCSAN Modified: projects/nfsv42/sys/amd64/conf/GENERIC-NODEBUG ============================================================================== --- projects/nfsv42/sys/amd64/conf/GENERIC-NODEBUG Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/conf/GENERIC-NODEBUG Mon Nov 25 15:23:35 2019 (r355090) @@ -39,3 +39,4 @@ nooptions DEADLKRES nooptions FULL_BUF_TRACKING nooptions COVERAGE nooptions KCOV +nooptions MALLOC_DEBUG_MAXZONES Modified: projects/nfsv42/sys/amd64/include/atomic.h ============================================================================== --- projects/nfsv42/sys/amd64/include/atomic.h Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/include/atomic.h Mon Nov 25 15:23:35 2019 (r355090) @@ -57,6 +57,20 @@ #define wmb() __asm __volatile("sfence;" : : : "memory") #define rmb() __asm __volatile("lfence;" : : : "memory") +#ifdef _KERNEL +/* + * OFFSETOF_MONITORBUF == __pcpu_offset(pc_monitorbuf). + * + * The open-coded number is used instead of the symbolic expression to + * avoid a dependency on sys/pcpu.h in machine/atomic.h consumers. + * An assertion in amd64/vm_machdep.c ensures that the value is correct. + */ +#define OFFSETOF_MONITORBUF 0x100 +#endif + +#if defined(KCSAN) && !defined(KCSAN_RUNTIME) +#include +#else #include /* @@ -345,15 +359,6 @@ atomic_testandclear_long(volatile u_long *p, u_int v) #if defined(_KERNEL) -/* - * OFFSETOF_MONITORBUF == __pcpu_offset(pc_monitorbuf). - * - * The open-coded number is used instead of the symbolic expression to - * avoid a dependency on sys/pcpu.h in machine/atomic.h consumers. - * An assertion in amd64/vm_machdep.c ensures that the value is correct. - */ -#define OFFSETOF_MONITORBUF 0x100 - #if defined(SMP) || defined(KLD_MODULE) static __inline void __storeload_barrier(void) @@ -678,5 +683,7 @@ u_long atomic_swap_long(volatile u_long *p, u_long v); #define atomic_readandclear_ptr atomic_readandclear_long #endif /* !WANT_FUNCTIONS */ + +#endif /* KCSAN && !KCSAN_RUNTIME */ #endif /* !_MACHINE_ATOMIC_H_ */ Modified: projects/nfsv42/sys/amd64/include/counter.h ============================================================================== --- projects/nfsv42/sys/amd64/include/counter.h Mon Nov 25 14:18:55 2019 (r355089) +++ projects/nfsv42/sys/amd64/include/counter.h Mon Nov 25 15:23:35 2019 (r355090) @@ -82,6 +82,7 @@ static inline void counter_u64_add(counter_u64_t c, int64_t inc) { + KASSERT(IS_BSP() || c != EARLY_COUNTER, ("EARLY_COUNTER used on AP")); __asm __volatile("addq\t%1,%%gs:(%0)" : : "r" ((char *)c - (char *)&__pcpu[0]), "ri" (inc) Copied: projects/nfsv42/sys/amd64/include/csan.h (from r355089, head/sys/amd64/include/csan.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/nfsv42/sys/amd64/include/csan.h Mon Nov 25 15:23:35 2019 (r355090, copy of r355089, head/sys/amd64/include/csan.h) @@ -0,0 +1,73 @@ +/* $NetBSD: csan.h,v 1.2 2019/11/06 06:57:22 maxv Exp $ */ + +/* + * Copyright (c) 2019 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Maxime Villard. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include +#include +#include + +static inline bool +kcsan_md_unsupported(vm_offset_t addr) +{ + return false; +} + +static inline bool +kcsan_md_is_avail(void) +{ + return true; +} + +static inline void +kcsan_md_disable_intrs(uint64_t *state) *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***