freebsd-nq/sys/amd64
Konstantin Belousov 7626d062c3 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
2015-06-28 05:04:08 +00:00
..
acpica If x86 CPU implementation of the MWAIT instruction reasonably 2015-05-09 12:28:48 +00:00
amd64 Remove unneeded data dependency, currently imposed by 2015-06-28 05:04:08 +00:00
conf Allow DTrace to be compiled-in to the kernel. 2015-06-10 15:53:39 +00:00
ia32 Remove several write-only variables, all reported by the gcc 4.9 2015-05-29 13:24:17 +00:00
include Remove unneeded data dependency, currently imposed by 2015-06-28 05:04:08 +00:00
linux Fixup the build after r284215. 2015-06-10 12:39:01 +00:00
linux32 Implement lockless resource limits. 2015-06-10 10:48:12 +00:00
pci Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
vmm verify_gla() needs to account for non-zero segment base addresses. 2015-06-26 18:00:29 +00:00
Makefile