opnsense-src/sys/amd64
Alexander Motin 15183f36e5 amd64: Stop using REP MOVSB for backward memmove()s.
Enhanced REP MOVSB feature of CPUs starting from Ivy Bridge makes
REP MOVSB the fastest way to copy memory in most of cases. However
Intel Optimization Reference Manual says: "setting the DF to force
REP MOVSB to copy bytes from high towards low addresses will expe-
rience significant performance degradation". Measurements on Intel
Cascade Lake and Alder Lake, same as on AMD Zen3 show that it can
drop throughput to as low as 2.5-3.5GB/s, comparing to ~10-30GB/s
of REP MOVSQ or hand-rolled loop, used for non-ERMS CPUs.

This patch keeps ERMS use for forward ordered memory copies, but
removes it for backward overlapped moves where it does not work.

Reviewed by:	mjg
MFC after:	2 weeks

(cherry picked from commit 6210ac95a1)
2022-06-29 21:15:49 -04:00
..
acpica amd64 wakeup: rework trampoline page allocation 2021-09-20 03:47:21 +03:00
amd64 amd64: Stop using REP MOVSB for backward memmove()s. 2022-06-29 21:15:49 -04:00
cloudabi32 fork: Allow ABI to specify fork return values for child. 2022-06-17 22:33:28 +03:00
cloudabi64 fork: Allow ABI to specify fork return values for child. 2022-06-17 22:33:28 +03:00
conf linux(4): Get rid of Linuxulator kernel build options. 2022-06-17 22:30:22 +03:00
ia32 x86: Add a NT_X86_SEGBASES register set. 2022-05-13 09:45:19 -07:00
include vmm: add tunable to trap WBINVD 2022-06-20 17:05:36 +02:00
linux linux(4): Properly build argument list for the signal handler 2022-06-17 22:35:38 +03:00
linux32 linux(4): Properly restore the thread signal mask after signal delivery on i386 2022-06-17 22:35:40 +03:00
pci pci_cfgreg.c: Use io port config access for early boot time. 2019-04-09 18:07:17 +00:00
sgx Convert remaining cap_rights_init users to cap_rights_init_one 2021-01-12 13:16:10 +00:00
vmm vmm: move bumping VMEXIT_USERSPACE stat to the right place 2022-06-24 10:40:48 -04:00
Makefile Bring the tags and links entries for amd64 up to date. 2021-10-07 16:01:46 -07:00