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