freebsd kernel with SKQ
Go to file
avg 50cdda62fc emulate illumos membar_producer with atomic_thread_fence_rel
membar_producer is supposed to be a store-store barrier.
Also, in the code that FreeBSD has ported from illumos membar_producer
is used only with regular stores to regular memory (with respect to
caching).

We do not have an MI primitive for the store-store barrier, so
atomic_thread_fence_rel is the closest we have as it provides
(load | store) -> store barrier.

Previously, membar_producer was an empty function call on all 32-bit
arm-s, 32-bit powerpc, riscv and all mips variants.  I think that it was
inadequate.
On other platforms, such as amd64, arm64, i386, powerpc64, sparc64,
membar_producer was implemented using stronger primitives than required
for a store-store barrier with respect to regular memory access.
For example, it used sfence on amd64 and lock-ed nop in i386 (despite TSO).
On powerpc64 we now use recommended lwsync instead of eieio.
On sparc64 FreeBSD uses TSO mode.
On arm64/aarch64 we now use dmb sy instead of dmb ish.  Not sure if this
is an improvement, actually.

After this change we can drop opensolaris_atomic.S for aarch64, amd64,
powerpc64 and sparc64 as all required atomic operations have either
direct or light-weight mapping to FreeBSD native atomic operations.

Discussed with:	kib
MFC after:	4 weeks
2019-10-10 07:39:41 +00:00
bin Add iflag=fullblock to dd 2019-09-30 22:00:48 +00:00
cddl zfs: remove gratuitous divergence from other openzfs flavours 2019-10-09 11:57:45 +00:00
contrib Put in a band-aid fix for lldb 9 exiting with "Expected<T> must be 2019-10-09 19:51:41 +00:00
crypto Merge OpenSSL 1.1.1d. 2019-09-10 21:08:17 +00:00
etc Merge ^/head r352764 through r353315. 2019-10-08 18:17:02 +00:00
gnu Get the readline header from the installed header instead of the from the source 2019-09-12 15:50:14 +00:00
include Import OpenSSL 1.1.1d. 2019-09-10 17:40:53 +00:00
kerberos5 Fix generation of krb5-config with LC_CTYPE=*.UTF-8 2019-07-01 11:47:45 +00:00
lib Merge ^/head r353316 through r353350. 2019-10-09 16:40:22 +00:00
libexec Merge ^/head r352764 through r353315. 2019-10-08 18:17:02 +00:00
release Switch EC2 AMIs from using the dual-dhclient script to using the new 2019-10-02 21:35:39 +00:00
rescue Remove unused defines since r147075 2019-07-12 04:44:50 +00:00
sbin add ability to set watchdog timeout for a shutdown 2019-10-03 11:23:10 +00:00
secure caroot: commit initial bundle 2019-10-04 02:34:20 +00:00
share emulate illumos membar_producer with atomic_thread_fence_rel 2019-10-10 07:39:41 +00:00
stand loader/powerpc64: Include generic PVR values in CAS architecture list 2019-10-08 02:36:53 +00:00
sys emulate illumos membar_producer with atomic_thread_fence_rel 2019-10-10 07:39:41 +00:00
targets - Retire pc-sysinstall(8) 2019-09-03 19:42:04 +00:00
tests zfs: multiple improvements to the zpool_add tests 2019-10-10 02:17:45 +00:00
tools Merge ^/head r352764 through r353315. 2019-10-08 18:17:02 +00:00
usr.bin Add a missing macro for the previous commit (IS_INADDR_ANY()). 2019-10-09 20:05:14 +00:00
usr.sbin bsdinstall: fix ESP detection for auto ZFS layout 2019-10-09 05:28:10 +00:00
.arcconfig callsign isn't required anymore 2016-09-29 06:19:45 +00:00
.arclint arc lint: ignore /tests/ in chmod 2017-12-19 03:38:06 +00:00
.cirrus.yml cirrus.yml: stop fetching OVMF.fd now that we're using the pkg 2019-07-30 16:40:33 +00:00
.clang-format Add a basic clang-format configuration file 2019-06-07 15:23:52 +00:00
.gitattributes Add a basic clang-format configuration file 2019-06-07 15:23:52 +00:00
.gitignore .gitignore: Add LINT kernel configurations generated into SRCDIR 2019-08-10 18:22:22 +00:00
COPYRIGHT Happy New Year 2019! 2019-01-01 00:25:25 +00:00
LOCKS LOCKS: update current locks 2018-06-09 03:08:04 +00:00
MAINTAINERS [skip ci] Add me to MAINTAINERS for fusefs 2019-07-28 15:20:47 +00:00
Makefile Wordsmith and simplify 2019-10-09 21:18:46 +00:00
Makefile.inc1 Merge ^/head r353316 through r353350. 2019-10-09 16:40:22 +00:00
Makefile.libcompat libsysdecode: use the proper include directory 2019-07-25 17:10:17 +00:00
Makefile.sys.inc AUTO_OBJ: For all top-level targets enforce using an OBJDIR. 2017-12-05 21:29:47 +00:00
ObsoleteFiles.inc Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp 2019-10-09 17:06:56 +00:00
README Import OpenSSL 1.1.1d. 2019-09-10 17:40:53 +00:00
README.md README: add generic notes about GENERIC and NOTES 2018-06-17 19:44:24 +00:00
RELNOTES RELNOTES: Document r352668 (crontab -n and -q options) 2019-09-25 13:04:34 +00:00
UPDATING Add UPDATING entry for universe changes 2019-10-09 21:45:34 +00:00

FreeBSD Source:

This is the top level of the FreeBSD source directory. This file was last revised on: FreeBSD

FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms. A large community has continually developed it for more than thirty years. Its advanced networking, security, and storage features have made FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage devices.

For copyright information, please see the file COPYRIGHT in this directory. Additional copyright information also exists for some sources in this tree - please see the specific source directories for more information.

The Makefile in this directory supports a number of targets for building components (or all) of the FreeBSD source tree. See build(7), config(8), https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html, and https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html for more information, including setting make(1) variables.

Source Roadmap:

bin		System/user commands.

cddl		Various commands and libraries under the Common Development
		and Distribution License.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

stand		Boot loader sources.

sys		Kernel sources.

sys/<arch>/conf Kernel configuration files. GENERIC is the configuration
		used in release builds. NOTES contains documentation of
		all possible entries.

tests		Regression tests which can be run by Kyua.  See tests/README
		for additional information.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.

For information on synchronizing your source tree with one or more of the FreeBSD Project's development branches, please see:

https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/current-stable.html