freebsd-dev/sys
Konstantin Belousov 6b7c46afec Right now, for non-coherent DMARs, page table update code flushes the
cache for whole page containing modified pte, and more, only last page
in the series of the consequtive pages is flushed (i.e. the affected
mappings should be larger than 2MB).

Avoid excessive flushing and do missed neccessary flushing, by
splitting invalidation and unmapping.  For now, flush exactly the
range of the changed pte.  This is still somewhat bigger than
neccessary, since pte is 8 bytes, while cache flush line is at least
32 bytes.

The originator of the issue reports that after the change,
'dmar_bus_dmamap_unload went from 13,288 cycles down to
3,257. dmar_bus_dmamap_load_buffer went from 9,686 cycles down to
3,517.  and I am now able to get line 1GbE speed with Netperf TCP
(even with 1K message size).'

Diagnosed and tested by:	Nadav Amit <nadav.amit@gmail.com>
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
2015-01-11 20:27:15 +00:00
..
amd64 Factor out duplicated code from dumpsys() on each architecture into generic 2015-01-07 01:01:39 +00:00
arm Store the shadow command/mode register in the softc, not a local static var. 2015-01-11 17:00:24 +00:00
boot Apparently more Makefiles use stuff from compiler-rt, so fix them up 2015-01-08 20:11:38 +00:00
bsm
cam Improve camcontrol(8) handling of drive defect data. 2015-01-08 16:58:40 +00:00
cddl When aggregating TRIM segments, move the new one to the list end. 2015-01-11 16:36:39 +00:00
compat Regen for r276654 (__getcwd()). 2015-01-04 10:40:23 +00:00
conf Take out some more no-error warnings, as the build is clean without 2015-01-10 23:43:37 +00:00
contrib In order to reduce use of M_EXT outside of the mbuf allocator and 2015-01-06 12:59:37 +00:00
crypto Add some new modes to OpenCrypto. These modes are AES-ICM (can be used 2014-12-12 19:56:36 +00:00
ddb ddb: ANSI-fy function declarations. 2014-10-12 18:01:52 +00:00
dev cxgb: replace r273280 with a more comprehensive fix. 2015-01-11 07:51:58 +00:00
fs ANSIfy sys/fs/msdosfs 2015-01-09 14:50:08 +00:00
gdb Add support for gdb's memory searching capabilities to our in-kernel gdb 2014-09-05 16:40:47 +00:00
geom Remove old ioctl use and support, once and for all. 2015-01-06 05:28:37 +00:00
gnu reiserfs: Use signed i_nlink 2014-09-25 19:10:32 +00:00
i386 Need to include opt_cpu.h to access CPU_DISABLE_SSE option. Thankfully, this 2015-01-08 17:46:42 +00:00
isa
kern Garbage collect m_copymdata(), an mbuf utility routine introduced 2015-01-10 10:41:23 +00:00
kgssapi Avoid dynamic syscall overhead for statically compiled modules. 2014-10-26 19:42:44 +00:00
libkern Add some new modes to OpenCrypto. These modes are AES-ICM (can be used 2014-12-12 19:56:36 +00:00
mips Move MALTA_COMMON to std.MALTA (as we have for XLP and SWARM). 2015-01-07 12:12:36 +00:00
modules Use .MAKE.LEVEL being defined as a bootstrap aid when providing 2015-01-10 23:43:39 +00:00
net Restore Ethernet-within-IP Encapsulation support that was broken after 2015-01-10 08:28:50 +00:00
net80211 Switch around the order of static inline to be in line with how it's 2015-01-11 18:43:45 +00:00
netgraph In order to reduce use of M_EXT outside of the mbuf allocator and 2015-01-06 12:59:37 +00:00
netinet Minimize the usage of SCTP_BUF_IS_EXTENDED. 2015-01-10 20:49:57 +00:00
netinet6 Minimize the usage of SCTP_BUF_IS_EXTENDED. 2015-01-10 20:49:57 +00:00
netipsec In order to reduce use of M_EXT outside of the mbuf allocator and 2015-01-06 12:59:37 +00:00
netnatm
netpfil Do not initialize pfi_unlnkdkifs_mtx and pf_frag_mtx. 2015-01-08 17:49:07 +00:00
netsmb
nfs Remove the old NFS client and server from head, 2014-12-23 00:47:46 +00:00
nfsclient Remove the old NFS client and server from head, 2014-12-23 00:47:46 +00:00
nfsserver Use M_SIZE() instead of hand-crafted (and mostly correct) NFSMSIZ() macro 2015-01-07 17:22:56 +00:00
nlm Avoid dynamic syscall overhead for statically compiled modules. 2014-10-26 19:42:44 +00:00
ofed Don't mask the IP-address when doing multicast IP over infiniband. 2015-01-09 06:39:07 +00:00
opencrypto Add some new modes to OpenCrypto. These modes are AES-ICM (can be used 2014-12-12 19:56:36 +00:00
pc98 Factor out duplicated code from dumpsys() on each architecture into generic 2015-01-07 01:01:39 +00:00
powerpc Increase default MAXTSIZ to allow execution of larger binaries. 2015-01-10 06:54:10 +00:00
rpc Add facility to stop all userspace processes. The supposed use of the 2014-12-13 16:18:29 +00:00
security Adjust printf format specifiers for dev_t and ino_t in kernel. 2014-12-17 07:27:19 +00:00
sparc64 Factor out duplicated code from dumpsys() on each architecture into generic 2015-01-07 01:01:39 +00:00
sys Remove no longer used "M_FLOWID" flag and update the netisr manpage. 2015-01-11 16:15:31 +00:00
teken mdoc: improvements to SEE ALSO. 2014-12-27 07:07:37 +00:00
tools Allow the make_dtb script to work outside of a "make buildkernel" context 2014-08-30 22:39:15 +00:00
ufs Handle MAKEENTRY cnp flag in the VOP_CREATE(). Curiously, some 2014-12-21 13:29:33 +00:00
vm Eliminate a stale debug message. The per-CPU cache locks were replaced 2014-12-31 17:44:57 +00:00
x86 Right now, for non-coherent DMARs, page table update code flushes the 2015-01-11 20:27:15 +00:00
xdr
xen Pacify clang 3.3 by ending the file with a newline. This is common 2015-01-06 21:26:35 +00:00
Makefile Remove "pci" from CSCOPEDIRS. 2014-09-23 06:32:19 +00:00