Mark Johnston
8de3effe5e
Add a missing error check for a malloc() call in idr_get().
...
Submitted by: Matt Joras <mjoras@isilon.com>
Approved by: re (gjb)
MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2016-06-14 03:57:00 +00:00
Hans Petter Selasky
d8571d3ea3
Fallback to arc4rand() in the LinuxKPI when read_random() returns
...
zero. This can happen for virtual machines.
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-06-07 13:10:13 +00:00
Hans Petter Selasky
8eeb3e1773
The SCHEDULER_STOPPED() macro already contains a predict false statement.
...
Remove superfluous unlikely() wrapper.
Suggested by: glebius
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-27 07:33:49 +00:00
Hans Petter Selasky
2bb46d5516
Define ATOMIC_LONG_INIT() in the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-26 10:03:22 +00:00
Hans Petter Selasky
06ca64ecf3
Add support for runtime modifiable module parameters in the LinuxKPI.
...
Linux module parameters have a permissions value. If any write bits
are set we are allowed to modify the module parameter runtime. Reflect
this when creating the static SYSCTL nodes.
Sponsored by: Mellanox Technologies
MFC after: 1 week
2016-05-26 09:04:14 +00:00
Hans Petter Selasky
707324edee
Add more module parameter macros to the LinuxKPI.
...
Obtained from: kmacy @
Sponsored by: Mellanox Technologies
2016-05-26 08:47:06 +00:00
Hans Petter Selasky
0bb3dd300b
Add support for boolean module parameters in the LinuxKPI.
...
Requested by: kmacy @
Sponsored by: Mellanox Technologies
2016-05-26 08:44:11 +00:00
Hans Petter Selasky
1d9b99e5e3
Implement Linux module parameters as read-only tunable SYSCTLs.
...
Bool module parameters are no longer supported, because there is no
equivalent in FreeBSD.
There are two macros available which control the behaviour of the
LinuxKPI module parameters:
- LINUXKPI_PARAM_PARENT allows the consumer to set the SYSCTL parent
where the modules parameters will be created.
- LINUXKPI_PARAM_PREFIX defines a parameter name prefix, which is
added to all created module parameters.
Sponsored by: Mellanox Technologies
MFC after: 1 week
2016-05-25 12:12:14 +00:00
Hans Petter Selasky
8571421886
Add checks for SCHEDULER_STOPPED() so that code using the LinuxKPI can
...
run after a panic(). This for example allows a LinuxKPI based graphics
stack to receive prints during a panic.
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-25 09:04:06 +00:00
Kevin Lo
8636496407
Add __iowrite32_copy() to the Linux kernel compatibility layer.
...
Reviewed by: hselasky
2016-05-24 09:23:04 +00:00
Hans Petter Selasky
9183a497e7
Use the DROP_GIANT() and PICKUP_GIANT() macros instead of making
...
assumptions about how the Giant mutex is locked.
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-24 07:52:53 +00:00
Hans Petter Selasky
3ce1263063
Set "current" for all PCI enumeration callbacks.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-24 07:46:20 +00:00
Hans Petter Selasky
5a6748b2cf
Use make_dev_s() instead of make_dev() to avoid race setting
...
"si_drv1". Convert panic() into regular error while at it.
Suggested by: jhb @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-24 07:06:04 +00:00
Hans Petter Selasky
44701cf732
Implement "atomic_long_add_unless()" in the LinuxKPI and fix the
...
implementation of "atomic_long_inc_not_zero()".
Found by: ngie @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 16:19:51 +00:00
Hans Petter Selasky
8b68f2509f
A missing definition needed by ktime_to_ms().
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 13:19:20 +00:00
Hans Petter Selasky
425da8eb61
Fix some data types and add "inline" keyword for __reg_op() function.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 13:18:15 +00:00
Hans Petter Selasky
83cfd83419
Implement ror32() in the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 12:53:17 +00:00
Hans Petter Selasky
fb2faed84e
Define more copy to/from userspace functions in the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 12:52:22 +00:00
Hans Petter Selasky
aef2a67b83
Add more printf() related functions to the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 12:35:07 +00:00
Hans Petter Selasky
3092e0c54c
Set an invalid IRQ number when no PCI IRQ is available in the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 12:13:16 +00:00
Hans Petter Selasky
7dfa8b2c4e
Add more ktime related functions to the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 12:10:28 +00:00
Hans Petter Selasky
08a5e6ec7f
Implement "kref_put_mutex()" for the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 12:06:34 +00:00
Hans Petter Selasky
aad02fb444
Add more list_xxx() functions to the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 12:03:40 +00:00
Hans Petter Selasky
0f8f7f554b
Make header file standalone by including definitions for needed
...
linux_wait_xxx() functions.
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 11:57:23 +00:00
Hans Petter Selasky
94a201be43
Implement "_outb()" to the LinuxKPI for i386 and amd64 only.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 11:53:00 +00:00
Hans Petter Selasky
ed5f781270
Add support for "cdev_add_ext()" to the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 11:50:05 +00:00
Hans Petter Selasky
299f29203a
Add more GFP related defines to the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 11:47:54 +00:00
Hans Petter Selasky
4a0f827906
Add support for atomic_long_inc_not_zero() to the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 11:44:46 +00:00
Hans Petter Selasky
b5c541821a
Add support for atomic_long_inc_not_zero() to the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-23 11:41:35 +00:00
Hans Petter Selasky
0f9f74597d
Only lock Giant when needed in the LinuxKPI.
...
Suggested by: ngie @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-16 17:41:25 +00:00
Hans Petter Selasky
b334cdea9b
Implement more Linux device related functions in the LinuxKPI. While
...
at it use NULL for some pointer checks.
Bump the FreeBSD version to force recompilation of all kernel modules
due to a structure size change.
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-16 09:56:48 +00:00
Hans Petter Selasky
88fa0d734c
Don't dereference parent pointer when it is NULL.
...
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-16 09:25:56 +00:00
Hans Petter Selasky
03219fba43
Properly implement "cpu_has_clflush" macro.
...
Suggested by: kib, jhb
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-16 09:16:15 +00:00
Hans Petter Selasky
fdddd267d7
Handle case of class being set, but not parent when calling
...
device_register() in the LinuxKPI.
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-13 13:01:02 +00:00
Hans Petter Selasky
83d5d45ea2
Add more PAGE related defines to the LinuxKPI. Move the definition of
...
"pgprot_t" to "linux/page.h" similar to what Linux does.
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-13 12:41:21 +00:00
Hans Petter Selasky
854e1d4e6c
Implement "old_encode_dev()" for the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-13 11:51:43 +00:00
Hans Petter Selasky
374377ce91
Define _IOC_SIZE() in the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-13 11:42:36 +00:00
Hans Petter Selasky
677a229c76
Add unlikely() statement to optimise the IS_ERR_VALUE() macro.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-13 11:30:56 +00:00
Hans Petter Selasky
e320ac1958
Implement nsecs_to_jiffies() in the LinuxKPI and while at it
...
streamline the rest of the xxx_to_jiffies() functions to have a
constant 64-bit argument and use identical range checks for the
result.
Specifically preserve msecs_to_jiffies(0) returning 0. See r282743 for
further details.
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-13 11:02:02 +00:00
Hans Petter Selasky
abb14a540f
Add more Linux defines. Improve some existing ones.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-13 10:10:43 +00:00
Hans Petter Selasky
04a471587e
The Linux error defines should all be positive, else frequently used
...
error code checks might fail. ERESTART is in the BSD world defined as
-1. While at it add more Linux error codes.
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-13 09:21:22 +00:00
Hans Petter Selasky
3a8bec33ef
Fix handling of IOCTLs in the LinuxKPI.
...
Linux requires that all IOCTL data resides in userspace. FreeBSD
always moves the main IOCTL structure into a kernel buffer before
invoking the IOCTL handler and then copies it back into userspace,
before returning. Hide this difference in the "linux_copyin()" and
"linux_copyout()" functions by remapping userspace addresses in the
range from 0x10000 to 0x20000, to the kernel IOCTL data buffer.
It is assumed that the userspace code, data and stack segments starts
no lower than memory address 0x400000, which is also stated by "man 1
ld", which means any valid userspace pointer can be passed to regular
LinuxKPI handled IOCTLs.
Bump the FreeBSD version to force recompilation of all kernel modules.
Discussed with: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-12 11:38:28 +00:00
Hans Petter Selasky
15c98ff2f1
Remove redundant "task_struct_set()".
...
This is done by the "linux_kthread_fn()".
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-12 09:11:18 +00:00
Hans Petter Selasky
464d20bcc8
Create a dummy "task_struct" on the stack which is returned by
...
"current" inside all LinuxKPI file operation callbacks. The "current"
is frequently used for various debug prints, printing the thread name
and thread ID for example.
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-12 09:06:54 +00:00
Hans Petter Selasky
dacb734ea8
Match Linux behaviour and iterate the IDR tree unlocked. The caller is
...
responsible the IDR tree stays unmodified while iterating.
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-11 17:20:20 +00:00
Hans Petter Selasky
b3c89b5ad9
Return a proper error code instead of panicing when an I/O vector
...
having the wrong number of entries is detected.
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-11 10:50:59 +00:00
Hans Petter Selasky
fd42d62378
Add more IDR and IDA related functions to the LinuxKPI.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-11 10:40:04 +00:00
Hans Petter Selasky
f8221002a5
Factor out common code into "idr_find_layer_locked()" and fix inverted
...
bitmap test for free entry in "idr_replace()".
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-11 10:35:15 +00:00
Hans Petter Selasky
5d35d77707
Add missing destruction of mutex.
...
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-11 10:06:58 +00:00
Hans Petter Selasky
8457719578
Add more atomic LinuxKPI functions.
...
Obtained from: kmacy @
MFC after: 1 week
Sponsored by: Mellanox Technologies
2016-05-11 07:58:43 +00:00