hselasky
83d5f6a312
Define ARCH_KMALLOC_MINALIGN in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-07 11:44:11 +00:00
hselasky
66dc0675f5
Wrap timespec64 into timespec in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-07 11:41:42 +00:00
hselasky
4501f2c51a
Move the EXPORT_SYMBOL_XXX() function macros into own header file.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-07 11:34:59 +00:00
hselasky
0361cfdee1
Implement the dev_pm_set_driver_flags() function macro in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-07 11:29:07 +00:00
hselasky
f9b5ddd4ac
Make some list functions RCU safe in the LinuxKPI.
...
While at it rename hlist_add_after() into hlist_add_behind().
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-06 15:49:01 +00:00
hselasky
208832619f
Rewrite code using atomic_fcmpset_int() in the LinuxKPI.
...
Suggested by: mjg@
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-06 15:31:47 +00:00
hselasky
fb0d8899cf
Implement the __add_wait_queue_entry_tail() function in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-06 15:19:30 +00:00
hselasky
fca226d193
Implement the might_sleep_if() function macro in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-06 15:10:11 +00:00
hselasky
0de2147890
Rename two structure field members while keeping backwards compatibility in
...
the LinuxKPI. Add a comment saying in which Linux version this change was made.
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-06 15:06:21 +00:00
hselasky
93c0ede526
Implement the init_wait_entry() function macro in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-06 14:59:23 +00:00
hselasky
d4524951a3
Implement the atomic_dec_if_positive() function in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-06 13:59:51 +00:00
hselasky
29c0e1b8fd
Implement the ktime_compare() and ktime_after() functions in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-06 13:37:31 +00:00
hselasky
e32e178ec0
Implement the rdmsrl_safe() function macro in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-06 13:29:52 +00:00
hselasky
b69dab33aa
Declare and set the global "system_highpri_wq" workqueue structure pointer
...
in the LinuxKPI.
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-05 15:49:35 +00:00
hselasky
12f56c9734
Implement the INIT_DELAYED_WORK_ONSTACK() function macro in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-05 15:46:16 +00:00
hselasky
0a8148581a
Define the __kernel_size_t type in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-05 15:42:35 +00:00
hselasky
364df1ce06
Implement the task_pid_vnr() function macro in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-05 15:40:09 +00:00
hselasky
4527ebf55c
Add "access" function pointer to the "vm_operations_struct" structure
...
in the LinuxKPI. While at it document when to use the "virtual_address" or
the "address" field in the "vm_fault" structure.
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-05 15:37:28 +00:00
hselasky
204460a40c
Implement mul_u32_u32() function in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-05 15:30:36 +00:00
hselasky
ae83c4132e
Implement timer_setup() and from_timer() function macros in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-05 15:20:20 +00:00
markj
d11c50b901
Regen after r334626.
2018-06-04 19:36:47 +00:00
markj
9d9fd255d6
Reimplement brk() and sbrk() to avoid the use of _end.
...
Previously, libc.so would initialize its notion of the break address
using _end, a special symbol emitted by the static linker following
the bss section. Compatibility issues between lld and ld.bfd could
cause the wrong definition of _end (libc.so's definition rather than
that of the executable) to be used, breaking the brk()/sbrk()
interface.
Avoid this problem and future interoperability issues by simply not
relying on _end. Instead, modify the break() system call to return
the kernel's view of the current break address, and have libc
initialize its state using an extra syscall upon the first use of the
interface. As a side effect, this appears to fix brk()/sbrk() usage
in executables run with rtld direct exec, since the kernel and libc.so
no longer maintain separate views of the process' break address.
PR: 228574
Reviewed by: kib (previous version)
MFC after: 2 months
Differential Revision: https://reviews.freebsd.org/D15663
2018-06-04 19:35:15 +00:00
hselasky
438f1662b8
Implement the __sg_alloc_table_from_pages() function based on the existing
...
sg_alloc_table_from_pages() function in the LinuxKPI.
This basically allow segments to have a limit, max_segment.
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-01 12:09:07 +00:00
hselasky
b8c9fa1990
Implement radix_tree_iter_delete() in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-01 11:42:09 +00:00
hselasky
16fd0dadcc
Improve high resolution timer support in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-01 11:33:14 +00:00
hselasky
5433faa41f
Add more GFP macro definitions in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
2018-06-01 11:14:59 +00:00
hselasky
e398ec6acf
Implement support for the PCI_BUS_NUM() function macro in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
2018-05-31 13:17:34 +00:00
hselasky
6040841f87
Implement support for the kvmalloc_array() function in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
2018-05-31 13:13:08 +00:00
hselasky
4a5a36369c
Correct macroname in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
2018-05-31 12:55:38 +00:00
hselasky
f7a0601b22
Define __initconst in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
2018-05-31 12:50:42 +00:00
hselasky
f280706501
Implement bitmap_complement() in the LinuxKPI.
...
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
2018-05-31 12:48:24 +00:00
hselasky
70dc976653
Implement idr_is_empty() in the LinuxKPI and make idr_remove() API compatible
...
with upstream Linux by returning the pointer to the removed element.
Submitted by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
2018-05-31 12:35:21 +00:00
brooks
e56e8a49a8
Remove alternative names that are identical to the default.
...
Verified by make sysent producing no changes.
2018-05-30 22:22:58 +00:00
hselasky
857ae5a01f
The schedule_timeout_killable() function should listen for signals
...
in the LinuxKPI.
Found by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
2018-05-28 11:26:40 +00:00
hselasky
7a086faf53
Implement wait_event_killable() in the LinuxKPI.
...
Requested by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
2018-05-28 10:54:24 +00:00
hselasky
c4a3a5d220
Allow TASK_PARKED bit being set when going to sleep in the LinuxKPI.
...
Found by: Johannes Lundberg <johalun0@gmail.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies
2018-05-28 10:51:39 +00:00
brooks
12a8583fb0
Regen after r334223: make vadvise compat freebsd11.
2018-05-25 20:41:26 +00:00
brooks
7477344224
Make vadvise compat freebsd11.
...
The vadvise syscall (aka ovadvise) is undocumented and has always been
implmented as returning EINVAL. Put the syscall under COMPAT11 and
provide a userspace implementation.
Reviewed by: kib
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D15557
2018-05-25 20:40:23 +00:00
mmacy
ecd6e9d307
UDP: further performance improvements on tx
...
Cumulative throughput while running 64
netperf -H $DUT -t UDP_STREAM -- -m 1
on a 2x8x2 SKL went from 1.1Mpps to 2.5Mpps
Single stream throughput increases from 910kpps to 1.18Mpps
Baseline:
https://people.freebsd.org/~mmacy/2018.05.11/udpsender2.svg
- Protect read access to global ifnet list with epoch
https://people.freebsd.org/~mmacy/2018.05.11/udpsender3.svg
- Protect short lived ifaddr references with epoch
https://people.freebsd.org/~mmacy/2018.05.11/udpsender4.svg
- Convert if_afdata read lock path to epoch
https://people.freebsd.org/~mmacy/2018.05.11/udpsender5.svg
A fix for the inpcbhash contention is pending sufficient time
on a canary at LLNW.
Reviewed by: gallatin
Sponsored by: Limelight Networks
Differential Revision: https://reviews.freebsd.org/D15409
2018-05-23 21:02:14 +00:00
mmacy
7aeac9ef18
ifnet: Replace if_addr_lock rwlock with epoch + mutex
...
Run on LLNW canaries and tested by pho@
gallatin:
Using a 14-core, 28-HTT single socket E5-2697 v3 with a 40GbE MLX5
based ConnectX 4-LX NIC, I see an almost 12% improvement in received
packet rate, and a larger improvement in bytes delivered all the way
to userspace.
When the host receiving 64 streams of netperf -H $DUT -t UDP_STREAM -- -m 1,
I see, using nstat -I mce0 1 before the patch:
InMpps OMpps InGbs OGbs err TCP Est %CPU syscalls csw irq GBfree
4.98 0.00 4.42 0.00 4235592 33 83.80 4720653 2149771 1235 247.32
4.73 0.00 4.20 0.00 4025260 33 82.99 4724900 2139833 1204 247.32
4.72 0.00 4.20 0.00 4035252 33 82.14 4719162 2132023 1264 247.32
4.71 0.00 4.21 0.00 4073206 33 83.68 4744973 2123317 1347 247.32
4.72 0.00 4.21 0.00 4061118 33 80.82 4713615 2188091 1490 247.32
4.72 0.00 4.21 0.00 4051675 33 85.29 4727399 2109011 1205 247.32
4.73 0.00 4.21 0.00 4039056 33 84.65 4724735 2102603 1053 247.32
After the patch
InMpps OMpps InGbs OGbs err TCP Est %CPU syscalls csw irq GBfree
5.43 0.00 4.20 0.00 3313143 33 84.96 5434214 1900162 2656 245.51
5.43 0.00 4.20 0.00 3308527 33 85.24 5439695 1809382 2521 245.51
5.42 0.00 4.19 0.00 3316778 33 87.54 5416028 1805835 2256 245.51
5.42 0.00 4.19 0.00 3317673 33 90.44 5426044 1763056 2332 245.51
5.42 0.00 4.19 0.00 3314839 33 88.11 5435732 1792218 2499 245.52
5.44 0.00 4.19 0.00 3293228 33 91.84 5426301 1668597 2121 245.52
Similarly, netperf reports 230Mb/s before the patch, and 270Mb/s after the patch
Reviewed by: gallatin
Sponsored by: Limelight Networks
Differential Revision: https://reviews.freebsd.org/D15366
2018-05-18 20:13:34 +00:00
brooks
5bb6870ecb
Allow freebsd32 __sysctl(2) to return ENOMEM.
...
This is required by programs like sockstat that read variably sized
sysctls such as kern.file. The normal path has no such restriction and
the restriction was added without comment along with initial support for
freebsd32 in 2002 (r100384).
Reviewed by: kib
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D15438
2018-05-15 16:24:58 +00:00
markj
73b6d8a09d
Remove "All rights reserved" from my files.
...
See r333391 for the rationale.
MFC after: 1 week
2018-05-09 20:57:18 +00:00
mmacy
a0bd5d3d7f
Eliminate the overhead of gratuitous repeated reinitialization of cap_rights
...
- Add macros to allow preinitialization of cap_rights_t.
- Convert most commonly used code paths to use preinitialized cap_rights_t.
A 3.6% speedup in fstat was measured with this change.
Reported by: mjg
Reviewed by: oshogbo
Approved by: sbruno
MFC after: 1 month
2018-05-09 18:47:24 +00:00
hselasky
4bc2d771ed
Add myself to copyright in the LinuxKPI RCU support layer.
...
Suggested by: mmacy@
Sponsored by: Mellanox Technologies
2018-05-09 08:50:42 +00:00
jamie
1c11f552d6
Make it easier for filesystems to count themselves as jail-enabled,
...
by doing most of the work in a new function prison_add_vfs in kern_jail.c
Now a jail-enabled filesystem need only mark itself with VFCF_JAIL, and
the rest is taken care of. This includes adding a jail parameter like
allow.mount.foofs, and a sysctl like security.jail.mount_foofs_allowed.
Both of these used to be a static list of known filesystems, with
predefined permission bits.
Reviewed by: kib
Differential Revision: D14681
2018-05-04 20:54:27 +00:00
hselasky
eb861103c8
Define USEC_PER_MSEC and USEC_PER_SEC in the LinuxKPI.
...
MFC after: 1 week
Sponsored by: Mellanox Technologies
2018-04-30 09:31:09 +00:00
eadler
553b9804f0
[procfs] Split procfs_attr into multiple functions
...
Reviewed by: des, kib
Discussed with: mmacy
Differential Revision: https://reviews.freebsd.org/D15150
2018-04-24 14:49:09 +00:00
kib
a42a93a102
Fix futexes on i386 after the 4/4G split.
...
Use proper method to access userspace. For now, only the slow copyout
path is implemented.
Reported and tested by: tijl (previous version)
Sponsored by: The FreeBSD Foundation
2018-04-24 12:50:21 +00:00
emaste
2b071b580c
Map FreeBSD EDOOFUS to Linux EINVAL
...
Previously EDOOFUS mapped to EBUSY. EINVAL seems more appropriate.
Discussed with: cem
MFC after: 1 week
Sponsored by: Turing Robotic Industries Inc.
2018-04-23 18:33:26 +00:00
kib
f051bf839c
Rename PROC_PDEATHSIG_SET -> PROC_PDEATHSIG_CTL and PROC_PDEATHSIG_GET
...
-> PROC_PDEATHSIG_STATUS for consistency with other procctl(2)
operations names.
Requested by: emaste
Sponsored by: The FreeBSD Foundation
MFC after: 13 days
2018-04-20 15:19:27 +00:00