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...

Rick Macklem rmacklem at FreeBSD.org
Mon Nov 25 15:23:40 UTC 2019


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 <sys/callout.h>
 #include <sys/cons.h>
 #include <sys/cpu.h>
+#include <sys/csan.h>
 #include <sys/efi.h>
 #include <sys/eventhandler.h>
 #include <sys/exec.h>
@@ -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 <sys/_cscan_atomic.h>
+#else
 #include <sys/atomic_common.h>
 
 /*
@@ -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 <machine/cpufunc.h>
+#include <machine/stack.h>
+#include <machine/vmparam.h>
+
+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 ***


More information about the svn-src-projects mailing list