Revision tags: vendor/lldb/lldb-trunk-r366426, vendor/wpa/2.9, vendor/lldb/lldb-release_90-r369369, vendor/lldb/lldb-release_90-r370514, vendor/lldb/lldb-release_90-r371301, vendor/lld/lld-release_90-r369369, vendor/libc++/libc++-release_90-r369369, vendor/compiler-rt/compiler-rt-release_90-r369369, vendor/clang/clang-release_90-r369369, vendor/llvm/llvm-release_90-r369369, vendor/llvm-openmp/openmp-release_90-r369369, vendor/llvm-openmp/openmp-release_90-r370514, vendor/llvm-openmp/openmp-release_90-r371301, vendor/llvm-openmp/openmp-release_900-r372316, vendor/llvm-openmp/openmp-trunk-r366426, vendor/lld/lld-trunk-r366426, vendor/llvm-libunwind/libunwind-release_90-r369369, vendor/llvm-libunwind/libunwind-release_90-r370514, vendor/llvm-libunwind/libunwind-release_90-r371301, vendor/llvm-libunwind/libunwind-release_900-r372316, vendor/llvm-libunwind/libunwind-trunk-r366426, vendor/libc++/libc++-trunk-r366426, vendor/compiler-rt/compiler-rt-trunk-r366426, vendor/clang/clang-trunk-r366426, vendor/llvm/llvm-trunk-r366426, vendor/acpica/20190816, vendor/bzip2/1.0.8, vendor/zstd/1.4.2, vendor/zstd/1.4.1, vendor/mandoc/20190723, vendor/libcxxrt/2019-07-26-f96846efbfd508f66d91fcbbef5dd808947c7f6d, vendor/llvm-libunwind/libunwind-release_801-r366581, vendor/clang/clang-release_801-r366581, vendor/sqlite3/sqlite-3290000, vendor/acpica/20190703, vendor/llvm-openmp/openmp-release_80-r364487, vendor/llvm-openmp/openmp-release_801-r366581, vendor/lldb/lldb-release_80-r364487, vendor/lldb/lldb-release_801-r366581, vendor/lld/lld-release_80-r364487, vendor/lld/lld-release_801-r366581, vendor/llvm-libunwind/libunwind-release_80-r364487, vendor/clang/clang-release_80-r364487, release/11.3.0, upstream/11.3.0, vendor/tzdata/tzdata2019b, vendor/unbound/1.9.2, vendor/unbound/1.9.1, vendor/elftoolchain/elftoolchain-r3769, vendor/less/v551, vendor/bzip2/1.0.7, vendor/libarchive/3.4.0, vendor/lldb/lldb-release_80-r363030, vendor/lld/lld-release_80-r363030, vendor/llvm-libunwind/libunwind-release_80-r363030, vendor/libc++/libc++-release_80-r363030, vendor/libc++/libc++-release_80-r364487, vendor/libc++/libc++-release_801-r366581, vendor/compiler-rt/compiler-rt-release_80-r363030, vendor/compiler-rt/compiler-rt-release_80-r364487, vendor/compiler-rt/compiler-rt-release_801-r366581, vendor/clang/clang-release_80-r363030, vendor/llvm/llvm-release_80-r363030, vendor/llvm/llvm-release_80-r364487, vendor/llvm/llvm-release_801-r366581, vendor/one-true-awk/4189ef5d, vendor/ena-com/2.0.0, vendor/openssl/1.0.2s, vendor/openssl/1.1.1c, vendor/libfdt/1.5.0, zfs-0.8.0 |
|
#
4d3b28bc |
| 16-May-2019 |
Konstantin Belousov <kib@FreeBSD.org> |
amd64 pmap: rework delayed invalidation, removing global mutex.
For machines having cmpxcgh16b instruction, i.e. everything but very early Athlons, provide lockless implementation of delayed invalid
amd64 pmap: rework delayed invalidation, removing global mutex.
For machines having cmpxcgh16b instruction, i.e. everything but very early Athlons, provide lockless implementation of delayed invalidation.
The implementation maintains lock-less single-linked list with the trick from the T.L. Harris article about volatile mark of the elements being removed. Double-CAS is used to atomically update both link and generation. New thread starting DI appends itself to the end of the queue, setting the generation to the generation of the last element +1. On DI finish, thread donates its generation to the previous element. The generation of the fake head of the list is the last passed DI generation. Basically, the implementation is a queued spinlock but without spinlock.
Many thanks both to Peter Holm and Mark Johnson for keeping with me while I produced intermediate versions of the patch.
Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 month MFC note: td_md.md_invl_gen should go to the end of struct thread Differential revision: https://reviews.freebsd.org/D19630
show more ...
|
Revision tags: vendor/netcat/6.5, vendor/netcat/6.4, vendor/netcat/6.3, vendor/netcat/6.2, vendor/netcat/6.1, vendor/netcat/6.0, vendor/acpica/20190509, zfs-0.8.0-rc5, vendor/device-tree/5.1, vendor/Juniper/libxo/1.0.4, vendor/sqlite3/sqlite-3280000, vendor/wpa/2.8, vendor/sqlite3/sqlite-3270200, vendor/zstd/1.4.0, zfs-0.8.0-rc4, vendor/device-tree/5.0, vendor/sqlite3/sqlite-3270100, vendor/acpica/20190405, vendor/Juniper/libxo/1.0.2, vendor/acpica/20190329, vendor/mandoc/1.14.5, vendor/tzdata/tzdata2019a, vendor/clang/clang-release_800-r356365 |
|
#
fd8d844f |
| 16-Mar-2019 |
Konstantin Belousov <kib@FreeBSD.org> |
amd64 KPTI: add control from procctl(2).
Add the infrastructure to allow MD procctl(2) commands, and use it to introduce amd64 PTI control and reporting. PTI mode cannot be modified for existing pm
amd64 KPTI: add control from procctl(2).
Add the infrastructure to allow MD procctl(2) commands, and use it to introduce amd64 PTI control and reporting. PTI mode cannot be modified for existing pmap, the knob controls PTI of the new vmspace created on exec.
Requested by: jhb Reviewed by: jhb, markj (previous version) Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D19514
show more ...
|
#
6f1fe330 |
| 16-Mar-2019 |
Konstantin Belousov <kib@FreeBSD.org> |
amd64: Add md process flags and first P_MD_PTI flag.
PTI mode for the process pmap on exec is activated iff P_MD_PTI is set.
On exec, the existing vmspace can be reused only if pti mode of the pmap
amd64: Add md process flags and first P_MD_PTI flag.
PTI mode for the process pmap on exec is activated iff P_MD_PTI is set.
On exec, the existing vmspace can be reused only if pti mode of the pmap matches the P_MD_PTI flag of the process. Add MD cpu_exec_vmspace_reuse() callback for exec_new_vmspace() which can vetoed reuse of the existing vmspace.
MFC note: md_flags change struct proc KBI.
Reviewed by: jhb, markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D19514
show more ...
|
Revision tags: vendor/llvm-openmp/openmp-release_80-r356034, vendor/llvm-openmp/openmp-release_80-r363030, vendor/llvm-openmp/openmp-release_800-r356365, vendor/llvm-openmp/openmp-trunk-r351319, vendor/clang/clang-release_80-r356034, vendor/llvm/llvm-release_80-r356034, vendor/llvm/llvm-release_800-r356365, vendor/llvm-libunwind/libunwind-release_80-r355677, vendor/llvm-libunwind/libunwind-release_80-r356034, vendor/llvm-libunwind/libunwind-release_800-r356365, vendor/clang/clang-release_80-r355677, vendor/llvm/llvm-release_80-r355677, vendor/llvm-libunwind/libunwind-trunk-r351319, vendor/ntp/4.2.8p13 |
|
#
40025d42 |
| 07-Mar-2019 |
Andrey V. Elsukov <ae@FreeBSD.org> |
Fix typo.
MFC after: 1 week
|
Revision tags: vendor/libc++/libc++-release_80-r355313, vendor/libc++/libc++-release_80-r355677, vendor/libc++/libc++-release_80-r356034, vendor/libc++/libc++-release_800-r356365, vendor/clang/clang-release_80-r355313, vendor/llvm/llvm-release_80-r355313, vendor/openssl/1.0.2r, vendor/openssl/1.1.1b, vendor/lldb/lldb-release_80-r354799, vendor/lldb/lldb-release_80-r355313, vendor/lldb/lldb-release_80-r355677, vendor/lldb/lldb-release_80-r356034, vendor/lldb/lldb-release_800-r356365, vendor/lld/lld-release_80-r354799, vendor/lld/lld-release_80-r355313, vendor/lld/lld-release_80-r355677, vendor/lld/lld-release_80-r356034, vendor/lld/lld-release_800-r356365, vendor/libc++/libc++-release_80-r354799, vendor/compiler-rt/compiler-rt-release_80-r354799, vendor/compiler-rt/compiler-rt-release_80-r355313, vendor/compiler-rt/compiler-rt-release_80-r355677, vendor/compiler-rt/compiler-rt-release_80-r356034, vendor/compiler-rt/compiler-rt-release_800-r356365, vendor/clang/clang-release_80-r354799, vendor/llvm/llvm-release_80-r354799, vendor/openpam/TABEBUIA, vendor/acpica/20190215, vendor/lld/lld-release_80-r354130, vendor/compiler-rt/compiler-rt-release_80-r354130, vendor/clang/clang-release_80-r354130, vendor/llvm/llvm-release_80-r354130, vendor/google/googletest/1.8.1, vendor/unbound/1.9.0, vendor/lldb/lldb-release_80-r353167, vendor/lldb/lldb-release_80-r354130, vendor/lld/lld-release_80-r353167, vendor/libc++/libc++-release_80-r353167, vendor/libc++/libc++-release_80-r354130, vendor/compiler-rt/compiler-rt-release_80-r353167, vendor/clang/clang-release_80-r353167, vendor/llvm/llvm-release_80-r353167, vendor/openssh/7.9p1, vendor/bearssl/6433cc2, vendor/lldb/lldb-release_80-r351543, vendor/lld/lld-release_80-r351543, vendor/libc++/libc++-release_80-r351543, vendor/clang/clang-release_80-r351543, vendor/llvm/llvm-release_80-r351543, vendor/lldb/lldb-trunk-r351319, vendor/lld/lld-trunk-r351319, vendor/libc++/libc++-trunk-r351319, vendor/compiler-rt/compiler-rt-release_80-r351543, vendor/compiler-rt/compiler-rt-trunk-r351319, vendor/clang/clang-trunk-r351319, vendor/llvm/llvm-trunk-r351319, vendor/ena-com/1.1.4.6, zfs-0.8.0-rc3, vendor/device-tree/4.20, vendor/elftoolchain/elftoolchain-r3668, vendor/acpica/20190108, vendor/tzdata/tzdata2018i, vendor/tzdata/tzdata2018h, vendor/zstd/1.3.8, vendor/NetBSD/bmake/20181221, vendor/sqlite3/sqlite-3260000, vendor/clang/clang-release_701-r349250, vendor/acpica/20181213, vendor/libc++/libc++-release_70-r348686, vendor/libc++/libc++-release_701-r349250, vendor/clang/clang-release_70-r348686, vendor/llvm/llvm-release_70-r348686, vendor/llvm/llvm-release_701-r349250, release/12.0.0, upstream/12.0.0, vendor/wpa/2.7, vendor/NetBSD/bmake/20180919, vendor/lldb/lldb-release_70-r348011, vendor/lldb/lldb-release_70-r348686, vendor/lldb/lldb-release_701-r349250, vendor/clang/clang-release_70-r348011, vendor/llvm/llvm-release_70-r348011, vendor/ck/20181120, vendor/openssl/1.0.2q, vendor/openssl/1.1.1a, zfs-0.8.0-rc2, vendor/device-tree/4.19, vendor/lld/lld-release_70-r346007, vendor/lld/lld-release_70-r348011, vendor/lld/lld-release_70-r348686, vendor/lld/lld-release_701-r349250, vendor/clang/clang-release_70-r346007, vendor/llvm/llvm-release_70-r346007, vendor/expat/2.2.6, vendor/acpica/20181031, vendor/tzdata/tzdata2018g, vendor/zstd/1.3.7, vendor/zstd/1.3.4, vendor/zstd/1.3.3, vendor/dialog/1.3-20180621, vendor/tzdata/tzdata2018f, vendor/ck/20181014 |
|
#
6816c884 |
| 13-Oct-2018 |
Mateusz Guzik <mjg@FreeBSD.org> |
amd64: partially depessimize cpu_fetch_syscall_args and cpu_set_syscall_retval
Vast majority of syscalls take 6 or less arguments. Move handling of other cases to a fallback function. Similarly, spe
amd64: partially depessimize cpu_fetch_syscall_args and cpu_set_syscall_retval
Vast majority of syscalls take 6 or less arguments. Move handling of other cases to a fallback function. Similarly, special casing for _syscall and __syscall magic syscalls is moved away.
Return is almost always 0. The change replaces 3 branches with 1 in the common case. Also the 'frame' variable convinces clang not to reload it on each access.
Reviewed by: kib Approved by: re (gjb) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D17542
show more ...
|
Revision tags: vendor/unbound/1.8.1, vendor/subversion/subversion-1.10.2, vendor/apr-util/apr-util-1.6.1, vendor/apr/apr-1.6.5, vendor/serf/serf-1.3.9, vendor/acpica/20181003, vendor/acpica/20180927, vendor/libevent/2.1.18, vendor/libevent/2.1.8, vendor/mandoc/1.14.4, vendor/lld/lld-release_700-r342383, vendor/clang/clang-release_700-r342383, vendor/openssl/1.1.1, vendor/lld/lld-release_70-r341916, vendor/libc++/libc++-release_70-r341916, vendor/libc++/libc++-release_70-r346007, vendor/libc++/libc++-release_70-r348011, vendor/libc++/libc++-release_700-r342383, vendor/compiler-rt/compiler-rt-release_70-r341916, vendor/compiler-rt/compiler-rt-release_70-r346007, vendor/compiler-rt/compiler-rt-release_70-r348011, vendor/compiler-rt/compiler-rt-release_70-r348686, vendor/compiler-rt/compiler-rt-release_700-r342383, vendor/compiler-rt/compiler-rt-release_701-r349250, vendor/clang/clang-release_70-r341916, vendor/llvm/llvm-release_70-r341916, vendor/llvm/llvm-release_700-r342383, vendor/unbound/1.8.0, vendor/unbound/1.7.3, vendor/unbound/1.7.2, zfs-0.8.0-rc1, vendor/libarchive/3.3.3, vendor/lld/lld-release_70-r340910, vendor/libc++/libc++-release_70-r340910, vendor/compiler-rt/compiler-rt-release_70-r340910, vendor/clang/clang-release_70-r340910, vendor/llvm/llvm-release_70-r340910, vendor/openssh/7.8p1 |
|
#
49bfa624 |
| 25-Aug-2018 |
Alan Cox <alc@FreeBSD.org> |
Eliminate the arena parameter to kmem_free(). Implicitly this corrects an error in the function hypercall_memfree(), where the wrong arena was being passed to kmem_free().
Introduce a per-page flag
Eliminate the arena parameter to kmem_free(). Implicitly this corrects an error in the function hypercall_memfree(), where the wrong arena was being passed to kmem_free().
Introduce a per-page flag, VPO_KMEM_EXEC, to mark physical pages that are mapped in kmem with execute permissions. Use this flag to determine which arena the kmem virtual addresses are returned to.
Eliminate UMA_SLAB_KRWX. The introduction of VPO_KMEM_EXEC makes it redundant.
Update the nearby comment for UMA_SLAB_KERNEL.
Reviewed by: kib, markj Discussed with: jeff Approved by: re (marius) Differential Revision: https://reviews.freebsd.org/D16845
show more ...
|
Revision tags: vendor/ntp/4.2.8p12, vendor/lldb/lldb-release_70-r339999, vendor/lldb/lldb-release_70-r340910, vendor/lldb/lldb-release_70-r341916, vendor/lldb/lldb-release_70-r346007, vendor/lldb/lldb-release_700-r342383, vendor/lld/lld-release_70-r339999, vendor/libc++/libc++-release_70-r339999, vendor/clang/clang-release_70-r339999, vendor/llvm/llvm-release_70-r339999, vendor/openssl/1.0.2p, vendor/device-tree/4.18, vendor/tzdb/tzcode2018e, vendor/lldb/lldb-release_70-r339355, vendor/lld/lld-release_70-r339355, vendor/compiler-rt/compiler-rt-release_70-r339355, vendor/compiler-rt/compiler-rt-release_70-r339999, vendor/clang/clang-release_70-r339355, vendor/llvm/llvm-release_70-r339355, vendor/lua/5.3.5, vendor/acpica/20180810, vendor/ck/20180809, vendor/libc++/libc++-release_70-r338892, vendor/libc++/libc++-release_70-r339355, vendor/compiler-rt/compiler-rt-release_70-r338892, vendor/clang/clang-release_70-r338892, vendor/llvm/llvm-release_70-r338892, vendor/lldb/lldb-release_70-r338892, vendor/lldb/lldb-trunk-r338536, vendor/lld/lld-release_70-r338892, vendor/lld/lld-trunk-r338536, vendor/libc++/libc++-trunk-r338536, vendor/compiler-rt/compiler-rt-trunk-r338536, vendor/clang/clang-trunk-r338536, vendor/llvm/llvm-trunk-r338536, vendor/file/5.34, vendor/lldb/lldb-trunk-r338150, vendor/lld/lld-trunk-r338150, vendor/libc++/libc++-trunk-r338150, vendor/compiler-rt/compiler-rt-trunk-r338150, vendor/clang/clang-trunk-r338150, vendor/llvm/llvm-trunk-r338150, vendor/bsnmp/1.13, vendor/libfdt/1.4.7, vendor/ck/20180711, vendor/acpica/20180629, vendor/lldb/lldb-release_601-r335540, vendor/lld/lld-release_601-r335540, vendor/libc++/libc++-release_601-r335540, vendor/compiler-rt/compiler-rt-release_601-r335540, vendor/clang/clang-release_601-r335540, vendor/llvm/llvm-release_601-r335540, release/11.2.0, upstream/11.2.0, vendor/device-tree/4.17, vendor/acpica/20180531, vendor/ck/20180524, vendor/Juniper/libxo/0.9.0, vendor/file/5.33, vendor/NetBSD/bmake/20180512, vendor/xz/5.2.4, vendor/ck/20180517, vendor/unbound/1.7.1, vendor/unbound/1.7.0, vendor/unbound/1.6.8, vendor/unbound/1.6.7, vendor/unbound/1.6.6, vendor/unbound/1.6.5, vendor/unbound/1.6.4, vendor/unbound/1.6.3, vendor/unbound/1.6.2, vendor/unbound/1.6.1, vendor/ena-com/1.1.4.5, vendor/acpica/20180508, vendor/sqlite3/sqlite-3230100, vendor/subversion/subversion-1.10.0, vendor/openssh/7.7p1, vendor/openssh/7.6p1, vendor/tzdata/tzdata2018e, vendor/acpica/20180427, vendor/elftoolchain/elftoolchain-r3614, vendor/device-tree/4.16 |
|
#
6469bdcd |
| 06-Apr-2018 |
Brooks Davis <brooks@FreeBSD.org> |
Move most of the contents of opt_compat.h to opt_global.h.
opt_compat.h is mentioned in nearly 180 files. In-progress network driver compabibility improvements may add over 100 more so this is close
Move most of the contents of opt_compat.h to opt_global.h.
opt_compat.h is mentioned in nearly 180 files. In-progress network driver compabibility improvements may add over 100 more so this is closer to "just about everywhere" than "only some files" per the guidance in sys/conf/options.
Keep COMPAT_LINUX32 in opt_compat.h as it is confined to a subset of sys/compat/linux/*.c. A fake _COMPAT_LINUX option ensure opt_compat.h is created on all architectures.
Move COMPAT_LINUXKPI to opt_dontuse.h as it is only used to control the set of compiled files.
Reviewed by: kib, cem, jhb, jtl Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D14941
show more ...
|
Revision tags: vendor/opencsd/900407e9d6400f6541138d6c2e483a9fc2d699a4, vendor/heimdal/7.5.0, vendor/krb5/1.16 |
|
#
3da25bdb |
| 03-Apr-2018 |
Andriy Gapon <avg@FreeBSD.org> |
fix i386 build with CPU_ELAN (LINT for instance) after r331878
x86/cpu_machdep.c now needs to include elan_mmcr.h when CPU_ELAN is set. While here, also remove the now unneeded inclusion of isareg.h
fix i386 build with CPU_ELAN (LINT for instance) after r331878
x86/cpu_machdep.c now needs to include elan_mmcr.h when CPU_ELAN is set. While here, also remove the now unneeded inclusion of isareg.h in i386 and amd64 vm_machdep.c.
Reported by: lwhsu MFC after: 14 days X-MFC with: r331878
show more ...
|
Revision tags: vendor/ck/20180304 |
|
#
8428d0f1 |
| 02-Apr-2018 |
Andriy Gapon <avg@FreeBSD.org> |
unify amd64 and i386 cpu_reset() in x86/cpu_machdep.c
Because I didn't see any reason not too. I've been making some changes to the code and couldn't help but notice that the i386 and am64 code was
unify amd64 and i386 cpu_reset() in x86/cpu_machdep.c
Because I didn't see any reason not too. I've been making some changes to the code and couldn't help but notice that the i386 and am64 code was nearly identical.
MFC after: 17 days
show more ...
|
#
ace498d8 |
| 02-Apr-2018 |
Andriy Gapon <avg@FreeBSD.org> |
x86 cpu_reset: if failed to switch to BSP proceed to cpu_reset_real
If cpu_reset() is called on an AP and if it somehow fails to wake the BSP, then it's better to attempt the reset on the AP than ju
x86 cpu_reset: if failed to switch to BSP proceed to cpu_reset_real
If cpu_reset() is called on an AP and if it somehow fails to wake the BSP, then it's better to attempt the reset on the AP than just sit there spinning on an unusable and undebuggable system.
MFC after: 16 days
show more ...
|
#
5d29acd8 |
| 02-Apr-2018 |
Andriy Gapon <avg@FreeBSD.org> |
x86 cpu_reset_proxy: no need to stop_cpus() the original processor
The processor is "parked" in a spin-loop already and that's sufficient for the reset. There is nothing that stop_cpus() would add
x86 cpu_reset_proxy: no need to stop_cpus() the original processor
The processor is "parked" in a spin-loop already and that's sufficient for the reset. There is nothing that stop_cpus() would add here, only extra complexity and fragility. The original processor does not need to enable interrupts now, in fact, it must not do that.
MFC after: 2 weeks
show more ...
|
Revision tags: vendor/openssl/1.0.2o, vendor/tzdata/tzdata2018d, vendor/processor-trace/24982c1a6fce48f1e416461d42899805f74fbb26, vendor/acpica/20180313, vendor/lld/lld-release_600-r326565, vendor/clang/clang-release_600-r326565, vendor/llvm/llvm-release_600-r326565, vendor/NetBSD/bmake/20180222, vendor/ntp/4.2.8p11, vendor/lldb/lldb-release_60-r325932, vendor/lldb/lldb-release_600-r326565, vendor/lld/lld-release_60-r325932, vendor/clang/clang-release_60-r325932, vendor/llvm/llvm-release_60-r325932, vendor/less/v530, vendor/lldb/lldb-release_60-r325330, vendor/lld/lld-release_60-r325330, vendor/libc++/libc++-release_60-r325330, vendor/libc++/libc++-release_60-r325932, vendor/libc++/libc++-release_600-r326565, vendor/compiler-rt/compiler-rt-release_60-r325330, vendor/compiler-rt/compiler-rt-release_60-r325932, vendor/compiler-rt/compiler-rt-release_600-r326565, vendor/clang/clang-release_60-r325330, vendor/llvm/llvm-release_60-r325330, vendor/device-tree/4.15, vendor/acpica/20180209, vendor/lld/lld-release_60-r324090, vendor/clang/clang-release_60-r324090, vendor/llvm/llvm-release_60-r324090, vendor/lld/lld-release_60-r323948, vendor/compiler-rt/compiler-rt-release_60-r323948, vendor/compiler-rt/compiler-rt-release_60-r324090, vendor/clang/clang-release_60-r323948, vendor/llvm/llvm-release_60-r323948, vendor/lldb/lldb-release_60-r323338, vendor/lldb/lldb-release_60-r323948, vendor/lldb/lldb-release_60-r324090, vendor/lld/lld-release_60-r323338, vendor/libc++/libc++-release_60-r323338, vendor/libc++/libc++-release_60-r323948, vendor/libc++/libc++-release_60-r324090, vendor/compiler-rt/compiler-rt-release_60-r323338, vendor/clang/clang-release_60-r323338, vendor/llvm/llvm-release_60-r323338, vendor/tzdata/tzdata2018c |
|
#
bd50262f |
| 17-Jan-2018 |
Konstantin Belousov <kib@FreeBSD.org> |
PTI for amd64.
The implementation of the Kernel Page Table Isolation (KPTI) for amd64, first version. It provides a workaround for the 'meltdown' vulnerability. PTI is turned off by default for now
PTI for amd64.
The implementation of the Kernel Page Table Isolation (KPTI) for amd64, first version. It provides a workaround for the 'meltdown' vulnerability. PTI is turned off by default for now, enable with the loader tunable vm.pmap.pti=1.
The pmap page table is split into kernel-mode table and user-mode table. Kernel-mode table is identical to the non-PTI table, while usermode table is obtained from kernel table by leaving userspace mappings intact, but only leaving the following parts of the kernel mapped:
kernel text (but not modules text) PCPU GDT/IDT/user LDT/task structures IST stacks for NMI and doublefault handlers.
Kernel switches to user page table before returning to usermode, and restores full kernel page table on the entry. Initial kernel-mode stack for PTI trampoline is allocated in PCPU, it is only 16 qwords. Kernel entry trampoline switches page tables. then the hardware trap frame is copied to the normal kstack, and execution continues.
IST stacks are kept mapped and no trampoline is needed for NMI/doublefault, but of course page table switch is performed.
On return to usermode, the trampoline is used again, iret frame is copied to the trampoline stack, page tables are switched and iretq is executed. The case of iretq faulting due to the invalid usermode context is tricky, since the frame for fault is appended to the trampoline frame. Besides copying the fault frame and original (corrupted) frame to kstack, the fault frame must be patched to make it look as if the fault occured on the kstack, see the comment in doret_iret detection code in trap().
Currently kernel pages which are mapped during trampoline operation are identical for all pmaps. They are registered using pmap_pti_add_kva(). Besides initial registrations done during boot, LDT and non-common TSS segments are registered if user requested their use. In principle, they can be installed into kernel page table per pmap with some work. Similarly, PCPU can be hidden from userspace mapping using trampoline PCPU page, but again I do not see much benefits besides complexity.
PDPE pages for the kernel half of the user page tables are pre-allocated during boot because we need to know pml4 entries which are copied to the top-level paging structure page, in advance on a new pmap creation. I enforce this to avoid iterating over the all existing pmaps if a new PDPE page is needed for PTI kernel mappings. The iteration is a known problematic operation on i386.
The need to flush hidden kernel translations on the switch to user mode make global tables (PG_G) meaningless and even harming, so PG_G use is disabled for PTI case. Our existing use of PCID is incompatible with PTI and is automatically disabled if PTI is enabled. PCID can be forced on only for developer's benefit.
MCE is known to be broken, it requires IST stack to operate completely correctly even for non-PTI case, and absolutely needs dedicated IST stack because MCE delivery while trampoline did not switched from PTI stack is fatal. The fix is pending.
Reviewed by: markj (partially) Tested by: pho (previous version) Discussed with: jeff, jhb Sponsored by: The FreeBSD Foundation MFC after: 2 weeks
show more ...
|
Revision tags: vendor/libfdt/1.4.6, vendor/tzdata/tzdata2018a, vendor/dtc/1.4.6, vendor/lldb/lldb-release_60-r321788, vendor/lld/lld-release_60-r321788, vendor/libc++/libc++-release_60-r321788, vendor/compiler-rt/compiler-rt-release_60-r321788, vendor/clang/clang-release_60-r321788, vendor/llvm/llvm-release_60-r321788, vendor/acpica/20180105, vendor/compiler-rt/compiler-rt-trunk-r321545, vendor/llvm/llvm-trunk-r321545, vendor/lldb/lldb-trunk-r321530, vendor/lldb/lldb-trunk-r321545, vendor/lld/lld-trunk-r321530, vendor/lld/lld-trunk-r321545, vendor/libc++/libc++-trunk-r321530, vendor/libc++/libc++-trunk-r321545, vendor/compiler-rt/compiler-rt-trunk-r321530, vendor/clang/clang-trunk-r321530, vendor/clang/clang-trunk-r321545, vendor/llvm/llvm-trunk-r321530, vendor/lld/lld-trunk-r321426, vendor/clang/clang-trunk-r321426, vendor/llvm/llvm-trunk-r321426, vendor/lldb/lldb-trunk-r321414, vendor/lldb/lldb-trunk-r321426, vendor/lld/lld-trunk-r321414, vendor/libc++/libc++-trunk-r321414, vendor/libc++/libc++-trunk-r321426, vendor/compiler-rt/compiler-rt-trunk-r321414, vendor/compiler-rt/compiler-rt-trunk-r321426, vendor/clang/clang-trunk-r321414, vendor/llvm/llvm-trunk-r321414, vendor/lldb/lldb-trunk-r321017, vendor/lld/lld-trunk-r321017, vendor/libc++/libc++-trunk-r321017, vendor/compiler-rt/compiler-rt-trunk-r321017, vendor/clang/clang-trunk-r321017, vendor/llvm/llvm-trunk-r321017, vendor/lld/lld-release_501-r320880, vendor/clang/clang-release_501-r320880, vendor/llvm/llvm-release_501-r320880, vendor/acpica/20171214, vendor/openssl/1.0.2n, vendor/lldb/lldb-release_50-r319231, vendor/lldb/lldb-release_501-r320880, vendor/lld/lld-release_50-r319231, vendor/libc++/libc++-release_50-r319231, vendor/libc++/libc++-release_501-r320880, vendor/clang/clang-release_50-r319231, vendor/llvm/llvm-release_50-r319231, vendor/lua/5.3.4, vendor/NetBSD/libc-vis/20171127, vendor/less/v529 |
|
#
df57947f |
| 18-Nov-2017 |
Pedro F. Giffuni <pfg@FreeBSD.org> |
spdx: initial adoption of licensing ID tags.
The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensou
spdx: initial adoption of licensing ID tags.
The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts.
Special thanks to Wind River for providing access to "The Duke of Highlander" tool: an older (2014) run over FreeBSD tree was useful as a starting point.
Initially, only tag files that use BSD 4-Clause "Original" license.
RelNotes: yes Differential Revision: https://reviews.freebsd.org/D13133
show more ...
|
Revision tags: vendor/device-tree/4.14, vendor/acpica/20171110, vendor/zstd/1.3.2, vendor/ena-com/1.1.4.4, vendor/openssl/1.0.2m, vendor/NetBSD/bmake/20171028, vendor/ena-com/1.1.4.3 |
|
#
f236378b |
| 31-Oct-2017 |
Tijl Coosemans <tijl@FreeBSD.org> |
Set the return address for stack entry points to zero.
Stack unwinders treat zero as a stop condition. The value on the stack can be non-zero because thread stacks may be arbitrary memory provided
Set the return address for stack entry points to zero.
Stack unwinders treat zero as a stop condition. The value on the stack can be non-zero because thread stacks may be arbitrary memory provided via pthread_attr_setstack(3) or may be recycled from previous threads.
Reference: https://lists.freebsd.org/pipermail/freebsd-current/2017-August/066855.html https://lists.freebsd.org/pipermail/freebsd-current/2017-October/067254.html
Discussed with: kib MFC after: 1 week
show more ...
|
Revision tags: vendor/tzdata/tzdata2017c, vendor/device-tree/4.13 |
|
#
e6616776 |
| 20-Oct-2017 |
Mateusz Guzik <mjg@FreeBSD.org> |
amd64: plug missed dt_lock in cpu_fork
|
#
d95498d4 |
| 20-Oct-2017 |
Mateusz Guzik <mjg@FreeBSD.org> |
amd64: avoid acquiring dt lock if possible (which is the common case)
Discussed with: kib MFC after: 1 week
|
Revision tags: vendor/wpa/2.6, vendor/mandoc/1.14.3, vendor/acpica/20170929, release/10.4.0, upstream/10.4.0, vendor/tcpdump/4.9.2, vendor/file/5.32, vendor/NetBSD/libedit/2017-09-05, vendor/clang/clang-release_500-r312559, vendor/llvm/llvm-release_500-r312559, vendor/lldb/lldb-release_50-r312293, vendor/lldb/lldb-release_500-r312559, vendor/lld/lld-release_50-r312293, vendor/lld/lld-release_500-r312559, vendor/libc++/libc++-release_50-r312293, vendor/libc++/libc++-release_500-r312559, vendor/compiler-rt/compiler-rt-release_50-r312293, vendor/compiler-rt/compiler-rt-release_50-r319231, vendor/compiler-rt/compiler-rt-release_500-r312559, vendor/compiler-rt/compiler-rt-release_501-r320880, vendor/clang/clang-release_50-r312293, vendor/llvm/llvm-release_50-r312293, vendor/ctfdump/20170831, vendor/acpica/20170831, vendor/lldb/lldb-release_50-r311606, vendor/compiler-rt/compiler-rt-release_50-r311606, vendor/clang/clang-release_50-r311606, vendor/llvm/llvm-release_50-r311606 |
|
#
761fb3ef |
| 22-Aug-2017 |
Konstantin Belousov <kib@FreeBSD.org> |
Ensure that fs/gs bases are stored in pcb before copying the pcb for new process or thread.
Reported and tested by: ae, dhw Sponsored by: The FreeBSD Foundation MFC after: 20 days
|
Revision tags: vendor/zstd/1.3.1 |
|
#
3e902b3d |
| 21-Aug-2017 |
Konstantin Belousov <kib@FreeBSD.org> |
Make WRFSBASE and WRGSBASE instructions functional.
Right now, we enable the CR4.FSGSBASE bit on CPUs which support the facility (Ivy and later), to allow usermode to read fs and gs bases without sy
Make WRFSBASE and WRGSBASE instructions functional.
Right now, we enable the CR4.FSGSBASE bit on CPUs which support the facility (Ivy and later), to allow usermode to read fs and gs bases without syscalls. This bit also controls the write access to bases from userspace, but WRFSBASE and WRGSBASE instructions currently cannot be used, because return path from both exceptions or interrupts overrides bases with the values from pcb.
Supporting the instructions is useful because this means that usermode can implement green-threads completely in userspace without issuing syscalls to change all of the machine context.
Support is implemented by saving the fs base and user gs base when PCB_FULL_IRET flag is set. The flag is set on the context switch, which potentially causes clobber of the bases due to activation of another context, and when explicit modification of the user context by a syscall or exception handler is performed. In particular, the patch moves setting of the flag before syscalls change context.
The changes to doreti_exit and PUSH_FRAME to clear PCB_FULL_IRET on entry from userspace can be considered a bug fixes on its own.
Reviewed by: jhb (previous version) Tested by: pho (previous version) Sponsored by: The FreeBSD Foundation MFC after: 3 weeks Differential revision: https://reviews.freebsd.org/D12023
show more ...
|
Revision tags: vendor/lld/lld-release_50-r311219, vendor/lld/lld-release_50-r311606, vendor/libc++/libc++-release_50-r311219, vendor/libc++/libc++-release_50-r311606, vendor/clang/clang-release_50-r311219, vendor/llvm/llvm-release_50-r311219, vendor/sqlite3/sqlite-3200000, vendor/subversion/subversion-1.9.7, vendor/libc++/libc++-release_50-r310316, vendor/clang/clang-release_50-r310316, vendor/llvm/llvm-release_50-r310316, vendor/Juniper/libxo/0.8.4, vendor/openssh/7.5p1, vendor/ena-com/1.1.4.2, vendor/mandoc/1.14.2, vendor/lldb/lldb-release_50-r309439, vendor/lldb/lldb-release_50-r310316, vendor/lldb/lldb-release_50-r311219, vendor/lld/lld-release_50-r309439, vendor/lld/lld-release_50-r310316, vendor/libc++/libc++-release_50-r309439, vendor/clang/clang-release_50-r309439, vendor/llvm/llvm-release_50-r309439, vendor/acpica/20170728, zfs-0.7.0, vendor/NetBSD/bmake/20170720, release/11.1.0, upstream/11.1.0, vendor/lldb/lldb-trunk-r308421, vendor/lld/lld-trunk-r308421, vendor/libc++/libc++-trunk-r308421, vendor/compiler-rt/compiler-rt-release_50-r309439, vendor/compiler-rt/compiler-rt-release_50-r310316, vendor/compiler-rt/compiler-rt-release_50-r311219, vendor/compiler-rt/compiler-rt-trunk-r308421, vendor/clang/clang-trunk-r308421, vendor/llvm/llvm-trunk-r308421, vendor/NetBSD/bmake/20170711, vendor/zstd/1.3.0, vendor/lldb/lldb-trunk-r307894, vendor/lld/lld-trunk-r307894, vendor/libc++/libc++-trunk-r307894, vendor/compiler-rt/compiler-rt-trunk-r307894, vendor/clang/clang-trunk-r307894, vendor/llvm/llvm-trunk-r307894, zfs-0.7.0-rc5, vendor/libarchive/3.3.2, vendor/device-tree/4.12, vendor/krb5/1.15.1, vendor/lldb/lldb-trunk-r306956, vendor/lld/lld-trunk-r306956, vendor/libc++/libc++-trunk-r306956, vendor/compiler-rt/compiler-rt-trunk-r306956, vendor/clang/clang-trunk-r306956, vendor/llvm/llvm-trunk-r306956, vendor/acpica/20170629, vendor/pjdfstest/0.1, vendor/lldb/lldb-trunk-r306325, vendor/lld/lld-trunk-r306325, vendor/libc++/libc++-trunk-r306325, vendor/compiler-rt/compiler-rt-trunk-r306325, vendor/clang/clang-trunk-r306325, vendor/llvm/llvm-trunk-r306325, vendor/elftoolchain/elftoolchain-r3561, vendor/device-tree/4.11, vendor/lldb/lldb-trunk-r305575, vendor/lld/lld-trunk-r305575, vendor/libc++/libc++-trunk-r305575, vendor/compiler-rt/compiler-rt-trunk-r305575, vendor/clang/clang-trunk-r305575, vendor/llvm/llvm-trunk-r305575, vendor/Juniper/libxo/0.8.2, vendor/lldb/lldb-trunk-r305145, vendor/lld/lld-trunk-r305145, vendor/libc++/libc++-trunk-r305145, vendor/compiler-rt/compiler-rt-trunk-r305145, vendor/clang/clang-trunk-r305145, vendor/llvm/llvm-trunk-r305145, vendor/Juniper/libxo/0.8.1, vendor/mandoc/20170608, vendor/Juniper/libxo/0.8.0, vendor/lldb/lldb-trunk-r304659, vendor/lld/lld-trunk-r304659, vendor/libc++/libc++-trunk-r304659, vendor/compiler-rt/compiler-rt-trunk-r304659, vendor/clang/clang-trunk-r304659, vendor/llvm/llvm-trunk-r304659, vendor/lldb/lldb-trunk-r304460, vendor/lld/lld-trunk-r304460, vendor/libc++/libc++-trunk-r304460, vendor/compiler-rt/compiler-rt-trunk-r304460, vendor/clang/clang-trunk-r304460, vendor/llvm/llvm-trunk-r304460, vendor/acpica/20170531, vendor/byacc/20170430, vendor/lldb/lldb-trunk-r304222, vendor/lld/lld-trunk-r304222, vendor/libc++/libc++-trunk-r304222, vendor/clang/clang-trunk-r304222, vendor/llvm/llvm-trunk-r304222, vendor/lldb/lldb-trunk-r304149, vendor/lld/lld-trunk-r304149, vendor/libc++/libc++-trunk-r304149, vendor/compiler-rt/compiler-rt-trunk-r304149, vendor/compiler-rt/compiler-rt-trunk-r304222, vendor/clang/clang-trunk-r304149, vendor/llvm/llvm-trunk-r304149, vendor/openssl/1.0.2l, vendor/lldb/lldb-trunk-r303571, vendor/lld/lld-trunk-r303571, vendor/libc++/libc++-trunk-r303571, vendor/compiler-rt/compiler-rt-trunk-r303571, vendor/clang/clang-trunk-r303571, vendor/llvm/llvm-trunk-r303571, vendor/lldb/lldb-trunk-r303291, vendor/lld/lld-trunk-r303291, vendor/libc++/libc++-trunk-r303291, vendor/compiler-rt/compiler-rt-trunk-r303291, vendor/clang/clang-trunk-r303291, vendor/llvm/llvm-trunk-r303291 |
|
#
3e85b721 |
| 17-May-2017 |
Ed Maste <emaste@FreeBSD.org> |
Remove register keyword from sys/ and ANSIfy prototypes
A long long time ago the register keyword told the compiler to store the corresponding variable in a CPU register, but it is not relevant for
Remove register keyword from sys/ and ANSIfy prototypes
A long long time ago the register keyword told the compiler to store the corresponding variable in a CPU register, but it is not relevant for any compiler used in the FreeBSD world today.
ANSIfy related prototypes while here.
Reviewed by: cem, jhb Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D10193
show more ...
|
Revision tags: vendor/lldb/lldb-trunk-r303197, vendor/lld/lld-trunk-r303197, vendor/libc++/libc++-trunk-r303197, vendor/compiler-rt/compiler-rt-trunk-r303197, vendor/clang/clang-trunk-r303197, vendor/llvm/llvm-trunk-r303197, vendor/Juniper/libxo/0.7.2, vendor/lldb/lldb-trunk-r302418, vendor/lld/lld-trunk-r302418, vendor/libc++/libc++-trunk-r302418, vendor/compiler-rt/compiler-rt-trunk-r302418, vendor/clang/clang-trunk-r302418, vendor/llvm/llvm-trunk-r302418, vendor/zstd/1.2.0, zfs-0.7.0-rc4, vendor/lldb/lldb-trunk-r302069, vendor/lld/lld-trunk-r302069, vendor/compiler-rt/compiler-rt-trunk-r302069, vendor/clang/clang-trunk-r302069, vendor/llvm/llvm-trunk-r302069, vendor/NetBSD/blacklist/20170503, vendor/lldb/lldb-trunk-r301939, vendor/lld/lld-trunk-r301939, vendor/compiler-rt/compiler-rt-trunk-r301939, vendor/clang/clang-trunk-r301939, vendor/llvm/llvm-trunk-r301939, vendor/openpam/RESEDACEA, vendor/less/v491, vendor/ena-com/1.1.4.1, vendor/llvm/llvm-trunk-r301441, vendor/lldb/lldb-trunk-r301441, vendor/lld/lld-trunk-r301441, vendor/libc++/libc++-trunk-r301441, vendor/libc++/libc++-trunk-r301939, vendor/libc++/libc++-trunk-r302069, vendor/compiler-rt/compiler-rt-trunk-r301441, vendor/clang/clang-trunk-r301441, vendor/less/v487, vendor/NetBSD/bmake/20170420, vendor/lldb/lldb-trunk-r300890, vendor/lld/lld-trunk-r300890, vendor/libc++/libc++-trunk-r300890, vendor/compiler-rt/compiler-rt-trunk-r300890, vendor/clang/clang-trunk-r300890, vendor/llvm/llvm-trunk-r300890, vendor/elftoolchain/elftoolchain-r3520, vendor/lldb/lldb-trunk-r300422, vendor/lld/lld-trunk-r300422, vendor/libc++/libc++-trunk-r300422, vendor/compiler-rt/compiler-rt-trunk-r300422, vendor/clang/clang-trunk-r300422, vendor/llvm/llvm-trunk-r300422, vendor/zstd/1.1.4, vendor/NetBSD/bmake/20170413, vendor/ck/20170407, vendor/tzdata/tzdata2017b, vendor/libcxxrt/2017-03-22-8a853717e61d5d55cbdf74d9d0a7545da5d5ff92, vendor/ntp/4.2.8p10, vendor/tcsh/6.20.00, vendor/dtc/1.4.3, vendor/lld/lld-release_400-r297347, vendor/libc++/libc++-release_400-r297347, vendor/clang/clang-release_400-r297347, vendor/llvm/llvm-release_400-r297347, vendor/edk2/7babb4372e6a34cbbc54249b25056272a5a9924c, vendor/device-tree/4.10, vendor/NetBSD/bmake/20170301, vendor/acpica/20170303, vendor/libarchive/3.3.1, vendor/dma/20170210, vendor/ck/20170228, vendor/llvm/llvm-release_40-r296509, vendor/acpica/20170224, vendor/lld/lld-release_40-r296202, vendor/lld/lld-release_40-r296509, vendor/clang/clang-release_40-r296202, vendor/clang/clang-release_40-r296509, vendor/llvm/llvm-release_40-r296202, vendor/clang/clang-release_40-r296002, vendor/llvm/llvm-release_40-r296002, vendor/clang/clang-release_40-r295910, vendor/llvm/llvm-release_40-r295910, vendor/mandoc/1.4.1, vendor/openpam/RADULA, vendor/mandoc/1.4.1rc2, vendor/libucl/20170219, vendor/libc++/libc++-release_40-r295380, vendor/libc++/libc++-release_40-r295910, vendor/libc++/libc++-release_40-r296002, vendor/libc++/libc++-release_40-r296202, vendor/libc++/libc++-release_40-r296509, vendor/compiler-rt/compiler-rt-release_40-r295380, vendor/compiler-rt/compiler-rt-release_40-r295910, vendor/compiler-rt/compiler-rt-release_40-r296002, vendor/compiler-rt/compiler-rt-release_40-r296202, vendor/compiler-rt/compiler-rt-release_40-r296509, vendor/compiler-rt/compiler-rt-release_400-r297347, vendor/clang/clang-release_40-r295380, vendor/llvm/llvm-release_40-r295380, vendor/libpcap/1.8.1, vendor/lld/lld-release_40-r294803, vendor/lld/lld-release_40-r295380, vendor/lld/lld-release_40-r295910, vendor/lld/lld-release_40-r296002, vendor/libc++/libc++-release_40-r294803, vendor/clang/clang-release_40-r294803, vendor/llvm/llvm-release_40-r294803, vendor/lld/lld-release_40-r294123, vendor/libc++/libc++-release_40-r294123, vendor/compiler-rt/compiler-rt-release_40-r294123, vendor/compiler-rt/compiler-rt-release_40-r294803, vendor/clang/clang-release_40-r294123, vendor/llvm/llvm-release_40-r294123, vendor/NetBSD/tests/02.04.2017_10.12, vendor/unbound/1.6.0, vendor/ldns/1.7.0, vendor/byacc/20170201, vendor/lld/lld-release_40-r293807, vendor/libc++/libc++-release_40-r293807, vendor/clang/clang-release_40-r293807, vendor/llvm/llvm-release_40-r293807, vendor/tcpdump/4.9.0, vendor/openssh/7.4p1, vendor/openssh/7.3p1, vendor/NetBSD/libedit/2016-03-21, vendor/openresolv/3.9.0, vendor/lld/lld-release_40-r293443, vendor/libc++/libc++-release_40-r293443, vendor/compiler-rt/compiler-rt-release_40-r293443, vendor/compiler-rt/compiler-rt-release_40-r293807, vendor/clang/clang-release_40-r293443, vendor/llvm/llvm-release_40-r293443, vendor/openssl/1.0.2k, vendor/libc++/libc++-release_40-r292951, vendor/clang/clang-release_40-r292951, vendor/llvm/llvm-release_40-r292951, vendor/lld/lld-release_40-r292732, vendor/lld/lld-release_40-r292951, vendor/libc++/libc++-release_40-r292732, vendor/clang/clang-release_40-r292732, vendor/llvm/llvm-release_40-r292732, vendor/mandoc/20170121, zfs-0.7.0-rc3, vendor/acpica/20170119, vendor/NetBSD/tests/01.17.2017_21.34, vendor/zlib/1.2.11, vendor/lldb/lldb-release_40-r292009, vendor/lldb/lldb-release_40-r292732, vendor/lldb/lldb-release_40-r292951, vendor/lldb/lldb-release_40-r293443, vendor/lldb/lldb-release_40-r293807, vendor/lldb/lldb-release_40-r294123, vendor/lldb/lldb-release_40-r294803, vendor/lldb/lldb-release_40-r295380, vendor/lldb/lldb-release_40-r295910, vendor/lldb/lldb-release_40-r296002, vendor/lldb/lldb-release_40-r296202, vendor/lldb/lldb-release_40-r296509, vendor/lldb/lldb-release_400-r297347, vendor/lld/lld-release_40-r292009, vendor/libc++/libc++-release_40-r292009, vendor/compiler-rt/compiler-rt-release_40-r292009, vendor/compiler-rt/compiler-rt-release_40-r292732, vendor/compiler-rt/compiler-rt-release_40-r292951, vendor/clang/clang-release_40-r292009, vendor/llvm/llvm-release_40-r292009, vendor/NetBSD/tests/01.11.2017_23.20, vendor/lldb/lldb-trunk-r291476, vendor/lld/lld-trunk-r291476, vendor/libc++/libc++-trunk-r291476, vendor/compiler-rt/compiler-rt-trunk-r291476, vendor/clang/clang-trunk-r291476, vendor/llvm/llvm-trunk-r291476, vendor/lldb/lldb-trunk-r291274, vendor/lld/lld-trunk-r291274, vendor/libc++/libc++-trunk-r291274, vendor/compiler-rt/compiler-rt-trunk-r291274, vendor/clang/clang-trunk-r291274, vendor/llvm/llvm-trunk-r291274, vendor/xz/5.2.3, vendor/clang/clang-trunk-r291015, vendor/llvm/llvm-trunk-r291015, vendor/lldb/lldb-trunk-r291012, vendor/lldb/lldb-trunk-r291015, vendor/lld/lld-trunk-r291012, vendor/lld/lld-trunk-r291015, vendor/libc++/libc++-trunk-r291012, vendor/libc++/libc++-trunk-r291015, vendor/compiler-rt/compiler-rt-trunk-r291012, vendor/compiler-rt/compiler-rt-trunk-r291015, vendor/clang/clang-trunk-r291012, vendor/llvm/llvm-trunk-r291012, vendor/zlib/1.2.10, vendor/zlib/1.2.8-full, vendor/lldb/lldb-trunk-r290819, vendor/lld/lld-trunk-r290819, vendor/libc++/libc++-trunk-r290819, vendor/compiler-rt/compiler-rt-trunk-r290819, vendor/clang/clang-trunk-r290819, vendor/llvm/llvm-trunk-r290819, vendor/ck/20161230, vendor/heirloom-doctools/20161106, vendor/acpica/20161222, vendor/NetBSD/bmake/20161212, vendor/clang/clang-release_391-r289601, vendor/llvm/llvm-release_39-r288847, vendor/llvm/llvm-release_391-r289601, vendor/openbsm/1.2-ALPHA-5, vendor/byacc/20161202, vendor/tzdata/tzdata2016j, vendor/lld/lld-release_39-r288513, vendor/lld/lld-release_39-r288847, vendor/lld/lld-release_391-r289601, vendor/compiler-rt/compiler-rt-release_39-r288513, vendor/compiler-rt/compiler-rt-release_39-r288847, vendor/compiler-rt/compiler-rt-release_391-r289601, vendor/clang/clang-release_39-r288513, vendor/clang/clang-release_39-r288847, vendor/llvm/llvm-release_39-r288513, vendor/subversion/subversion-1.9.5, vendor/ck/20161128, vendor/lldb/lldb-release_39-r287912, vendor/lldb/lldb-release_39-r288513, vendor/lldb/lldb-release_39-r288847, vendor/lldb/lldb-release_391-r289601, vendor/lld/lld-release_39-r287912, vendor/libc++/libc++-release_39-r287912, vendor/libc++/libc++-release_39-r288513, vendor/libc++/libc++-release_39-r288847, vendor/libc++/libc++-release_391-r289601, vendor/compiler-rt/compiler-rt-release_39-r287912, vendor/clang/clang-release_39-r287912, vendor/llvm/llvm-release_39-r287912, vendor/ntp/4.2.8p9, vendor/acpica/20161117, vendor/file/5.29, vendor/tzdata/tzdata2016i, vendor/bind9/9.9.9-P4, zfs-0.7.0-rc2, vendor/heirloom-doctools/20161025, vendor/libarchive/3.2.2, vendor/heirloom-doctools/20161016, vendor/tzdata/tzdata2016h, vendor/tzdata/tzdata2016g, vendor/heirloom-doctools/20161006, vendor/byacc/20160606, vendor/libucl/20160812, vendor/dma/20160929, vendor/acpica/20160930, release/11.0.1, upstream/11.0.1, vendor/bind9/9.9.9-P3, vendor/unbound/1.5.10, vendor/openssl/1.0.2j, release/11.0.0, upstream/11.0.0, vendor/openssl/1.0.1u, vendor/openssl/1.0.2i, vendor/alpine-hal/2.7a, vendor/cortex-strings/linaro-eb80ac, vendor/NetBSD/bmake/20160818, zfs-0.7.0-rc1, vendor/unbound/1.5.9, vendor/clang/clang-release_390-r280324, vendor/acpica/20160831, vendor/elftoolchain/elftoolchain-r3490, vendor/amd/6.2, vendor/llvm/llvm-release_39-r279689, vendor/llvm/llvm-release_390-r280324, vendor/lld/lld-release_39-r279689, vendor/lld/lld-release_390-r280324, vendor/lld/lldb-release_39-r279477, vendor/libc++/libc++-release_39-r279477, vendor/libc++/libc++-release_39-r279689, vendor/libc++/libc++-release_390-r280324, vendor/compiler-rt/compiler-rt-release_39-r279477, vendor/compiler-rt/compiler-rt-release_39-r279689, vendor/compiler-rt/compiler-rt-release_390-r280324, vendor/clang/clang-release_39-r279477, vendor/clang/clang-release_39-r279689, vendor/llvm/llvm-release_39-r279477, vendor/sqlite3/sqlite-3140100, vendor/dma/20160806, vendor/lldb/lldb-release_39-r278877, vendor/lldb/lldb-release_39-r279477, vendor/lldb/lldb-release_39-r279689, vendor/lldb/lldb-release_390-r280324, vendor/lld/lld-release_39-r278877, vendor/libc++/libc++-release_39-r278877, vendor/compiler-rt/compiler-rt-release_39-r278877, vendor/clang/clang-release_39-r278877, vendor/llvm/llvm-release_39-r278877, vendor/NetBSD/tests/08.11.2016_18.01, vendor/acpica/20160729, vendor/device-tree/devicetree-965f3718, vendor/libdivsufsort/0.0.2015.10.27, vendor/lldb/lldb-release_39-r276489, vendor/lld/lld-release_39-r276489, vendor/libc++/libc++-release_39-r276489, vendor/compiler-rt/compiler-rt-release_39-r276489, vendor/clang/clang-release_39-r276489, vendor/llvm/llvm-release_39-r276489, vendor/mandoc/1.13.4, vendor/openresolv/3.8.1, vendor/llvm-libunwind/libunwind-r272680, vendor/Juniper/libxo/0.6.3, vendor/expat/2.2.0, vendor/file/5.28, vendor/libarchive/3.2.1 |
|
#
5c2cf818 |
| 16-Jun-2016 |
Konstantin Belousov <kib@FreeBSD.org> |
Update comments for the MD functions managing contexts for new threads, to make it less confusing and using modern kernel terms.
Rename the functions to reflect current use of the functions, instead
Update comments for the MD functions managing contexts for new threads, to make it less confusing and using modern kernel terms.
Rename the functions to reflect current use of the functions, instead of the historic KSE conventions: cpu_set_fork_handler -> cpu_fork_kthread_handler (for kthreads) cpu_set_upcall -> cpu_copy_thread (for forks) cpu_set_upcall_kse -> cpu_set_upcall (for new threads creation)
Reviewed by: jhb (previous version) Sponsored by: The FreeBSD Foundation MFC after: 1 week Approved by: re (hrs) Differential revision: https://reviews.freebsd.org/D6731
show more ...
|
Revision tags: vendor/ldns-host/hg-20160610-170001, vendor/ldns-host/hg-20160501-114105, vendor/NetBSD/libc-vis/20160608, vendor/NetBSD/bmake/20160606, vendor/NetBSD/bmake/20160604, vendor/libucl/20160604, vendor/ntp/4.2.8p8, vendor/NetBSD/blacklist/20160409, vendor/Juniper/libxo/0.6.2, vendor/acpica/20160527, vendor/skein/1.3, vendor/elftoolchain/elftoolchain-r3477 |
|
#
5437e1d1 |
| 22-May-2016 |
Dmitry Chagin <dchagin@FreeBSD.org> |
Add macro to convert errno and use it when appropriate.
MFC after: 1 week
|
Revision tags: vendor/NetBSD/bmake/20160512, vendor/elftoolchain/elftoolchain-r3475 |
|
#
56e61f57 |
| 14-May-2016 |
Konstantin Belousov <kib@FreeBSD.org> |
Eliminate pvh_global_lock from the amd64 pmap.
The only current purpose of the pvh lock was explained there On Wed, Jan 09, 2013 at 11:46:13PM -0600, Alan Cox wrote: > Let me lay out one example for
Eliminate pvh_global_lock from the amd64 pmap.
The only current purpose of the pvh lock was explained there On Wed, Jan 09, 2013 at 11:46:13PM -0600, Alan Cox wrote: > Let me lay out one example for you in detail. Suppose that we have > three processors and two of these processors are actively using the same > pmap. Now, one of the two processors sharing the pmap performs a > pmap_remove(). Suppose that one of the removed mappings is to a > physical page P. Moreover, suppose that the other processor sharing > that pmap has this mapping cached with write access in its TLB. Here's > where the trouble might begin. As you might expect, the processor > performing the pmap_remove() will acquire the fine-grained lock on the > PV list for page P before destroying the mapping to page P. Moreover, > this processor will ensure that the vm_page's dirty field is updated > before releasing that PV list lock. However, the TLB shootdown for this > mapping may not be initiated until after the PV list lock is released. > The processor performing the pmap_remove() is not problematic, because > the code being executed by that processor won't presume that the mapping > is destroyed until the TLB shootdown has completed and pmap_remove() has > returned. However, the other processor sharing the pmap could be > problematic. Specifically, suppose that the third processor is > executing the page daemon and concurrently trying to reclaim page P. > This processor performs a pmap_remove_all() on page P in preparation for > reclaiming the page. At this instant, the PV list for page P may > already be empty but our second processor still has a stale TLB entry > mapping page P. So, changes might still occur to the page after the > page daemon believes that all mappings have been destroyed. (If the PV > entry had still existed, then the pmap lock would have ensured that the > TLB shootdown completed before the pmap_remove_all() finished.) Note, > however, the page daemon will know that the page is dirty. It can't > possibly mistake a dirty page for a clean one. However, without the > current pvh global locking, I don't think anything is stopping the page > daemon from starting the laundering process before the TLB shootdown has > completed. > > I believe that a similar example could be constructed with a clean page > P' and a stale read-only TLB entry. In this case, the page P' could be > "cached" in the cache/free queues and recycled before the stale TLB > entry is flushed.
TLBs for addresses with updated PTEs are always flushed before pmap lock is unlocked. On the other hand, amd64 pmap code does not always flushes TLBs before PV list locks are unlocked, if previously PTEs were cleared and PV entries removed.
To handle the situations where a thread might notice empty PV list but third thread still having access to the page due to TLB invalidation not finished yet, introduce delayed invalidation. Comparing with the pvh_global_lock, DI does not block entered thread when pmap_remove_all() or pmap_remove_write() (callers of pmap_delayed_invl_wait()) are executed in parallel. But _invl_wait() callers are blocked until all previously noted DI blocks are leaved, thus ensuring that neccessary TLB invalidations were performed before returning from pmap_remove_all() or pmap_remove_write().
See comments for detailed description of the mechanism, and also for the explanations why several pmap methods, most important pmap_enter(), do not need DI protection.
Reviewed by: alc, jhb (turnstile KPI usage) Tested by: pho (previous version) Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D5747
show more ...
|
Revision tags: vendor/file/5.27, vendor/libarchive/3.2.0, vendor/libcxxrt/2016-03-29-516a65c109eb0a01e5e95fbef455eb3215135cef, vendor/openssl/1.0.1t, vendor/openssl/1.0.2h, vendor/subversion/subversion-1.9.4, vendor/ntp/4.2.8p7, vendor/acpica/20160422, vendor/netcat/5.9, vendor/file/5.26, vendor/openresolv/3.8.0, vendor/libucl/libucl-0.8.0, vendor/sqlite3/sqlite-3120100, vendor/Juniper/libxo/0.6.1, vendor/Juniper/libxo/0.6.0, vendor/Juniper/libxo/0.4.7, vendor/Juniper/libxo/0.4.6, vendor/byacc/20160324, release/10.3.0, upstream/10.3.0, vendor/acpica/20160318, vendor/NetBSD/bmake/20160315, vendor/Juniper/libxo/0.4.5 |
|
#
3ef966c4 |
| 15-Mar-2016 |
Konstantin Belousov <kib@FreeBSD.org> |
The PKRU state size is 4 bytes, its support makes the XSAVE area size non-multiple of 64 bytes. Thereafter, the user state save area is misaligned, which triggers assertion in the debugging kernels,
The PKRU state size is 4 bytes, its support makes the XSAVE area size non-multiple of 64 bytes. Thereafter, the user state save area is misaligned, which triggers assertion in the debugging kernels, or segmentation violation on accesses for non-debugging configs.
Force the desired alignment of the user save area as the fix (workaround is to disable bit 9 in the hw.xsave_mask loader tunable). This correction is required for booting on the upcoming Intel' Purley platform.
Reported and tested by: "Pieper, Jeffrey E" <jeffrey.e.pieper@intel.com>, jimharris Sponsored by: The FreeBSD Foundation MFC after: 3 days
show more ...
|
Revision tags: vendor/NetBSD/bmake/20160307, vendor/openssh/7.2p2, vendor/openssh/7.2p1, vendor/bind9/9.9.8-P4, vendor/unbound/1.5.8, vendor/clang/clang-release_380-r262564, vendor/llvm/llvm-release_380-r262564, vendor/openssl/1.0.1s, vendor/openssl/1.0.2g, vendor/byacc/20150711, vendor/byacc/20141128, vendor/openresolv/3.7.3, vendor/NetBSD/libedit/2016-02-27, vendor/clang/clang-release_38-r261684, vendor/llvm/llvm-release_38-r261684, vendor/libc++/libc++-release_38-r261369, vendor/libc++/libc++-release_380-r262564, vendor/compiler-rt/compiler-rt-release_38-r261369, vendor/compiler-rt/compiler-rt-release_380-r262564, vendor/clang/clang-release_38-r261369, vendor/llvm/llvm-release_38-r261369, vendor/lldb/lldb-release_38-r260756, vendor/lldb/lldb-release_380-r262564, vendor/libc++/libc++-release_38-r260756, vendor/compiler-rt/compiler-rt-release_38-r260756, vendor/clang/clang-release_38-r260756, vendor/llvm/llvm-release_38-r260756, vendor/acpica/20160212, vendor/elftoolchain/elftoolchain-r3399, vendor/elftoolchain/elftoolchain-r3395, vendor/NetBSD/libedit/2016-01-30, vendor/openresolv/3.7.2, vendor/device-tree/ianc-afaecb70, vendor/openssl/1.0.1r, vendor/openssl/1.0.2f, vendor/lldb/lldb-release_38-r258968, vendor/lld/lld-release_38-r258968, vendor/lld/lld-release_380-r262564, vendor/libc++/libc++-release_38-r258968, vendor/compiler-rt/compiler-rt-release_38-r258968, vendor/clang/clang-release_38-r258968, vendor/llvm/llvm-release_38-r258968, vendor/alpine-hal/2.7, vendor/libc++/libc++-release_38-r258549, vendor/clang/clang-release_38-r258549, vendor/llvm/llvm-release_38-r258549, vendor/ntp/4.2.8p6, vendor/bind9/9.9.8-P3, vendor/openssh/7.1p2, vendor/lldb/lldb-release_38-r257836, vendor/libc++/libc++-release_38-r257836, vendor/clang/clang-release_38-r257836, vendor/llvm/llvm-release_38-r257836, vendor/mandoc/20160116, vendor/lldb/lldb-trunk-r257626, vendor/lld/lld-trunk-r257626, vendor/libc++/r257626, vendor/compiler-rt/compiler-rt-trunk-r257626, vendor/clang/clang-trunk-r257626, vendor/llvm/llvm-trunk-r257626, vendor/acpica/20160108, vendor/ntp/4.2.8p5, vendor/lldb/lldb-trunk-r256945, vendor/lld/lld-trunk-r256945, vendor/libc++/r256945, vendor/compiler-rt/compiler-rt-trunk-r256945, vendor/clang/clang-trunk-r256945, vendor/llvm/llvm-trunk-r256945, vendor/llvm-libunwind/libunwind-r256779, vendor/less/v481, vendor/lldb/lldb-trunk-r256633, vendor/llvm/llvm-trunk-r256633, vendor/lld/lld-trunk-r256633, vendor/libc++/r256633, vendor/compiler-rt/compiler-rt-trunk-r256633, vendor/clang/clang-trunk-r256633, vendor/clang/clang-release_371-r255217, vendor/llvm/llvm-release_371-r255217, vendor/NetBSD/bmake/20151220, vendor/acpica/20151218, vendor/bind9/9.9.8-P2, vendor/unbound/1.5.7, vendor/unbound/1.5.6, vendor/elftoolchain/elftoolchain-r3272, vendor/openbsm/1.2-ALPHA-4, vendor/NetBSD/bmake/20151201, vendor/openssl/0.9.8zh, vendor/openssl/1.0.1q, vendor/openssl/1.0.2e, vendor/acpica/20151124, vendor/xz/5.2.2, vendor/tzdata/tzdata2015g, vendor/libucl/20151027, vendor/openssl/1.0.2d, vendor/NetBSD/bmake/20151020, vendor/ntp/4.2.8p4, vendor/wpa/2.5, vendor/subversion/subversion-1.9.2, vendor/dma/0.10, vendor/elftoolchain/elftoolchain-r3250, vendor/unbound/1.5.5, vendor/bind9/9.9.8, vendor/acpica/20150930, vendor/netcat/5.8, vendor/llvm-libunwind/libunwind-r246528, vendor/file/5.25, vendor/unbound/1.5.4, zfs-0.6.5, vendor/libc++/libc++-release_370-r246257, vendor/compiler-rt/compiler-rt-release_370-r246257, vendor/lldb/lldb-release_370-r246257, vendor/clang/clang-release_370-r246257, vendor/llvm/llvm-release_370-r246257, vendor/lldb/lldb-trunk-r242221, vendor/file/5.24, vendor/openssh/7.1p1, vendor/openssh/7.0p1, vendor/acpica/20150818, vendor/pciids/pciids-20150815, vendor/tzdata/tzdata2015f, release/10.2.0, upstream/10.2.0, vendor/sqlite3/sqlite-3081101, vendor/subversion/subversion-1.8.14, vendor/serf/serf-1.3.8, vendor/apr/apr-1.5.2, vendor/clang/clang-trunk-r242221, vendor/llvm/llvm-trunk-r242221, vendor/bind9/9.9.7-P2, vendor/acpica/20150717, vendor/openssl/1.0.1p, vendor/sendmail/8.15.2, vendor/tcpdump/4.7.4, vendor/clang/clang-trunk-r241361, vendor/llvm/llvm-trunk-r241361, vendor/lldb/lldb-r241361, vendor/openssh/6.9p1, vendor/openssh/6.8p1, vendor/ntp/4.2.8p3 |
|
#
7626d062 |
| 28-Jun-2015 |
Konstantin Belousov <kib@FreeBSD.org> |
Remove unneeded data dependency, currently imposed by atomic_load_acq(9), on it source, for x86.
Right now, atomic_load_acq() on x86 is sequentially consistent with other atomics, code ensures this
Remove unneeded data dependency, currently imposed by atomic_load_acq(9), on it source, for x86.
Right now, atomic_load_acq() on x86 is sequentially consistent with other atomics, code ensures this by doing store/load barrier by performing locked nop on the source. Provide separate primitive __storeload_barrier(), which is implemented as the locked nop done on a cpu-private variable, and put __storeload_barrier() before load, to keep seq_cst semantic but avoid introducing false dependency on the no-modification of the source for its later use.
Note that seq_cst property of x86 atomic_load_acq() is not documented and not carried by atomics implementations on other architectures, although some kernel code relies on the behaviour. This commit does not intend to change this.
Reviewed by: alc Discussed with: bde Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 2 weeks
show more ...
|
Revision tags: vendor/clang/clang-trunk-r240225, vendor/llvm/llvm-trunk-r240225, vendor/acpica/20150619, vendor/libcxxrt/2015-06-18-e64e93fe5bba67a6d52cbe5a97f8770c054bfa65, vendor/acpica/20150616, vendor/tzdata/tzdata2015e, vendor/openssl/1.0.1o, vendor/openssl/0.9.8zg, vendor/openssl/1.0.1n, vendor/NetBSD/bmake/20150606, vendor/file/5.23, vendor/clang/clang-trunk-r239412, vendor/llvm/llvm-trunk-r239412 |
|
#
69baeadc |
| 29-May-2015 |
Konstantin Belousov <kib@FreeBSD.org> |
Remove several write-only variables, all reported by the gcc 4.9 buildkernel run.
Some of them were write-only under some kernel options, e.g. variables keeping values only used by CTR() macros. It
Remove several write-only variables, all reported by the gcc 4.9 buildkernel run.
Some of them were write-only under some kernel options, e.g. variables keeping values only used by CTR() macros. It costs nothing to the code readability and correctness to eliminate the warnings in those cases too by removing the local cached values used only for single-access.
Review: https://reviews.freebsd.org/D2665 Reviewed by: rodrigc Looked at by: bjk Sponsored by: The FreeBSD Foundation MFC after: 1 week
show more ...
|