freebsd-dev/sys
Andrew Turner ad020198ff Stop performing a full icache sync when the DIC and IDC flags are set
The DIC and IDC bits in the CTR_EL0 register signal to the kernel when it
can relax the instruction cache synchronisation operations. The IDC bit
means we can relax cleaning the data cache to the point of unification
while the DIC bit means we don't need to invalidate the instruction cache
for data coherence. In both cases an appropriate barrier is still needed.

For now only implement the case where both bits are set, as is the case
on the Neoverse-N1 as used in the Amazon AWS Graviton 2 CPU. Note that
this behaviour is a optional on the N1 so we may later need to implement
only one or the other bit being set.

There is a tunable to disable each flag on boot.

Testing on a 4 core Graviton 2 instance found a significant improvement
in sys and real time when running "make buildkernel -j4", with no
significant difference in user time.

Reviewed by:	markj
Sponsored by:	Innovate UK
Differential Revision:	https://reviews.freebsd.org/D24853
2020-05-19 16:04:27 +00:00
..
amd64 vmm(4), bhyve(8): Expose kernel-emulated special devices to userspace 2020-05-15 15:54:22 +00:00
arm Revert r360944 and r360946 until reported issues can be resolved 2020-05-12 04:34:26 +00:00
arm64 Stop performing a full icache sync when the DIC and IDC flags are set 2020-05-19 16:04:27 +00:00
bsm bsm: add AUE_CLOSERANGE 2020-04-24 01:27:25 +00:00
cam cam: ANSIfy 0-argument function definitions 2020-05-16 14:33:08 +00:00
cddl zfs: reject read(2) of a dirfd with EISDIR 2020-05-19 02:41:05 +00:00
compat linuxkpi: Add irq_work.h 2020-05-19 09:04:35 +00:00
conf Remove tests for obsolete compilers in the build system 2020-05-12 15:22:40 +00:00
contrib [ath_hal_ar9300] Ensure AH_BYTE_ORDER is defined before used. 2020-05-12 02:23:11 +00:00
crypto Remove MD5 HMAC from OCF. 2020-05-11 22:08:08 +00:00
ddb kernel: provide panicky version of __unreachable 2020-05-13 18:07:37 +00:00
dev [ath_rate_sample] Fix correct status when completing frames with short failures. 2020-05-16 21:59:41 +00:00
dts allwinner: aw_thermal: Cope with DTS changes 2020-04-14 19:05:17 +00:00
fs Add a function nfsm_set() to initialize "struct nfsrv_descript" for building 2020-05-18 00:07:45 +00:00
gdb
geom Reimplement aliases in geom 2020-05-13 19:17:28 +00:00
gnu dts: Import DTS from Linux 5.6 2020-04-14 18:57:00 +00:00
i386 Fix the i386 build after r361033. 2020-05-14 17:56:44 +00:00
isa
kern Add BSM record conversion for a number of syscalls: 2020-05-16 03:45:15 +00:00
kgssapi Remove support for Kernel GSS algorithms deprecated in r348875. 2020-04-10 23:08:41 +00:00
libkern
mips Revert r360944 and r360946 until reported issues can be resolved 2020-05-12 04:34:26 +00:00
modules libalias: retire cuseeme support 2020-05-16 02:29:10 +00:00
net sysctl: fix setting net.isr.dispatch during early boot 2020-05-16 17:05:44 +00:00
net80211 [net80211] Use the unicast key when transmitting DWDS AP multicast frames. 2020-05-08 17:01:33 +00:00
netgraph Fix Typo in ng_hci_le_connection_complete_ep struct. 2020-05-19 13:58:52 +00:00
netinet Replace snprintf() by SCTP_SNPRINTF() and let SCTP_SNPRINTF() map 2020-05-19 07:23:35 +00:00
netinet6 Allow TCP to reuse local port with different destinations 2020-05-18 22:53:12 +00:00
netipsec Don't pass bogus keys down for NULL algorithms. 2020-05-02 01:00:29 +00:00
netpfil pf: Add a new zone for per-table entry counters. 2020-05-16 00:28:12 +00:00
netsmb
nfs Remove rtable dumping code from bootp. 2020-04-28 07:23:41 +00:00
nfsclient
nfsserver
nlm Make nfslockd depend on xdr. 2020-04-23 09:37:22 +00:00
ofed Convert OFED rtable interactions to the new routing KPI. 2020-04-15 13:06:55 +00:00
opencrypto Trim a few more things I missed from xform_enc.h. 2020-05-13 18:36:02 +00:00
powerpc powerpc/mmu: Don't use the cache instructions to zero pages 2020-05-19 01:06:31 +00:00
riscv riscv: Fix pmap_protect for superpages 2020-05-13 17:20:51 +00:00
rpc Split XDR into separate kernel module. Make krpc depend on xdr. 2020-04-17 06:04:20 +00:00
security Add BSM record conversion for a number of syscalls: 2020-05-16 03:45:15 +00:00
sys kernel: provide panicky version of __unreachable 2020-05-13 18:07:37 +00:00
teken
tests
tools
ufs Retire two unused background fsck sysctls. 2020-04-21 17:42:32 +00:00
vm Allocate UMA per-CPU counters earlier. 2020-05-14 16:06:54 +00:00
x86 Call acpi_pxm_set_proximity_info() slightly earlier on x86. 2020-05-14 16:07:27 +00:00
xdr Split XDR into separate kernel module. Make krpc depend on xdr. 2020-04-17 06:04:20 +00:00
xen
Makefile