| #
607f1105
|
| 08-Dec-2025 |
Gleb Smirnoff <glebius@FreeBSD.org> |
linux: store Linux Ethernet interface number in struct ifnet
The old approach where we go through the list of interfaces and count them has bugs. One obvious bug with this dynamic translation is th
linux: store Linux Ethernet interface number in struct ifnet
The old approach where we go through the list of interfaces and count them has bugs. One obvious bug with this dynamic translation is that once an Ethernet interface in the middle of the list goes away, all interfaces following it would change their Linux names.
A bigger problem is the ifnet arrival and departure times. For example linsysfs has event handler for ifnet_arrival_event, and of course it wants to resolve the name. This accidentially works, due to a bug in if_attach() where we call if_link_ifnet() before invoking all the event handlers. Once the bug is fixed linsysfs won't be able to resolve the old way. The other side is ifnet_departure_event, where there is no bug, the eventhandlers are called after the if_unlink_ifnet(). This means old translation won't work for departure event handlers. One example is netlink. This change gives the Netlink a chance to emit a proper Linux interface departure message.
However, there is another problem in Netlink, that the ifnet pointer is lost in the Netlink translation layer. Plug this with a cookie in netlink writer structure that can be set by the route layer and used by the Netlink Linux translation layer. This part of the diff seems unrelated, but it is hard to make it a separate change, as the old KPI goes away and to use the new one we need the pointer.
Differential Revision: https://reviews.freebsd.org/D54077
show more ...
|
| #
3460fab5
|
| 18-Aug-2023 |
Dmitry Chagin <dchagin@FreeBSD.org> |
linux(4): Remove sys/cdefs.h inclusion where it's not needed due to 685dc743
|
| #
685dc743
|
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
| #
d8e53d94
|
| 14-Feb-2023 |
Dmitry Chagin <dchagin@FreeBSD.org> |
linux(4): Cleanup includes under compat/linux
Cleanup unneeded includes, sort the rest according to style(9). No functional changes.
MFC after: 2 weeks
|
| #
7c40e2d5
|
| 26-Aug-2022 |
Alexander V. Chernikov <melifaro@FreeBSD.org> |
linuxolator: add netlink support
Add the glue code to support netlink in Linuxolator. linux_common(4) now depends on netlink(4).
All netlink protocol constants are consistent with the Linux version
linuxolator: add netlink support
Add the glue code to support netlink in Linuxolator. linux_common(4) now depends on netlink(4).
All netlink protocol constants are consistent with the Linux version. However, certain OS-specific constants such as AF_INET6, interface flags or default routing table id, are different between FreeBSD and Linux. Thus, it may be needed to rewrite some message parts or even rewrite the whole message, adding or removing some TLVs. The core netlink implementation code provides efficient rewriting callbacks which Linuxolator now uses.
Reviewed by: dchagin Differential Revision: https://reviews.freebsd.org/D36361 MFC after: 2 months
show more ...
|
| #
0dc38e33
|
| 29-Jul-2021 |
Dmitry Chagin <dchagin@FreeBSD.org> |
linux(4): Reimplement futexes using umtx.
Differential Revision: https://reviews.freebsd.org/D31236 MFC after: 2 weeks
|
| #
5184e2da
|
| 26-May-2021 |
Dmitry Chagin <dchagin@FreeBSD.org> |
linux_common: retire extra module version.
The second 'linuxcommon' line was added by c66f5b079d2a259c3a65b1efe0f2143cd030dc52 but Linuxulator's modules dependend on 'linux_common'. To avoid such mi
linux_common: retire extra module version.
The second 'linuxcommon' line was added by c66f5b079d2a259c3a65b1efe0f2143cd030dc52 but Linuxulator's modules dependend on 'linux_common'. To avoid such mistakes in the future rename moduledata name and module name to 'linux_common' and retire 'linuxcommon' line.
Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D30409 MFC after: 2 weeks
show more ...
|
| #
77fb6b66
|
| 06-Dec-2020 |
Tijl Coosemans <tijl@FreeBSD.org> |
Move V4L feature declarations and DTrace provider definitions from linux_common.c to linux_util.c so they become available on i386.
linux_common.c defines the linux_common kernel module but this mod
Move V4L feature declarations and DTrace provider definitions from linux_common.c to linux_util.c so they become available on i386.
linux_common.c defines the linux_common kernel module but this module does not exist on i386 and linux_common.c is not included in the linux module. linux_util.c is included in the linux_common module on amd64 and the linux module on i386.
Remove linux_common.c from files.i386 again. It was added recently in r367433 when the DTrace provider definitions were moved.
The V4L feature declarations were moved to linux_common in r283423.
show more ...
|
| #
4815f175
|
| 23-Nov-2020 |
Konstantin Belousov <kib@FreeBSD.org> |
Linuxolator: Replace use of eventhandlers by sysent hooks.
Reviewed by: markj Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D27309
|
| #
76b2bfed
|
| 06-Nov-2020 |
Conrad Meyer <cem@FreeBSD.org> |
linux(4): Fix loadable modules after r367395
Move dtrace SDT definitions into linux_common module code. Also, build linux_dummy.c into the linux_common kld -- we don't need separate versions of the
linux(4): Fix loadable modules after r367395
Move dtrace SDT definitions into linux_common module code. Also, build linux_dummy.c into the linux_common kld -- we don't need separate versions of these stubs for 32- and 64-bit emulation.
Reported by: several PR: 250897 Discussed with: emaste, trasz Tested by: John Kennedy, Yasuhiro KIMURA, Oleg Sidorkin X-MFC-With: r367395 Differential Revision: https://reviews.freebsd.org/D27124
show more ...
|
| #
1a8577fa
|
| 29-Oct-2020 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Add defines for Linux errno values and use them to make linux_errtbl[] more readable. While here, add linux_check_errtbl() function to make sure we don't leave holes.
No objections: emaste (earlier
Add defines for Linux errno values and use them to make linux_errtbl[] more readable. While here, add linux_check_errtbl() function to make sure we don't leave holes.
No objections: emaste (earlier version) MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D26972
show more ...
|
| #
1a180032
|
| 01-Sep-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
compat: clean up empty lines in .c and .h files
|
| #
044ab55e
|
| 06-Nov-2019 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Make linux(4) create /dev/shm. Linux applications often expect a tmpfs to be mounted there, and because they like to verify it's actually a mountpoint, a symlink won't do.
Reviewed by: dchagin (ear
Make linux(4) create /dev/shm. Linux applications often expect a tmpfs to be mounted there, and because they like to verify it's actually a mountpoint, a symlink won't do.
Reviewed by: dchagin (earlier version) MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D20333
show more ...
|
| #
a161fba9
|
| 18-Oct-2019 |
Yuri Pankov <yuripv@FreeBSD.org> |
linux: futex_mtx should follow futex_list
Move futex_mtx to linux_common.ko for amd64 and aarch64 along with respective list/mutex init/destroy.
PR: 240989 Reported by: Alex S <iwtcex@gmail.com>
|
| #
a63915c2
|
| 28-Jul-2019 |
Alan Somers <asomers@FreeBSD.org> |
MFHead @r350386
Sponsored by: The FreeBSD Foundation
|
| #
c66f5b07
|
| 10-Jul-2019 |
Andriy Gapon <avg@FreeBSD.org> |
linuxcommon: add module version
MFC after: 2 weeks
|
| #
c06e7b66
|
| 07-Nov-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r340126 through r340212.
|
| #
8fc08087
|
| 06-Nov-2018 |
Tijl Coosemans <tijl@FreeBSD.org> |
On amd64 both Linux compat modules, linux.ko and linux64.ko, provide linux_ioctl_(un)register_handler that allows other driver modules to register ioctl handlers. The ioctl syscall implementation in
On amd64 both Linux compat modules, linux.ko and linux64.ko, provide linux_ioctl_(un)register_handler that allows other driver modules to register ioctl handlers. The ioctl syscall implementation in each Linux compat module iterates over the list of handlers and forwards the call to the appropriate driver. Because the registration functions have the same name in each module it is not possible for a driver to support both 32 and 64 bit linux compatibility.
Move the list of ioctl handlers to linux_common.ko so it is shared by both Linux modules and all drivers receive both 32 and 64 bit ioctl calls with one registration. These ioctl handlers normally forward the call to the FreeBSD ioctl handler which can handle both 32 and 64 bit.
Keep the special COMPAT_LINUX32 ioctl handlers in linux.ko in a separate list for now and let the ioctl syscall iterate over that list first. Later, COMPAT_LINUX32 support can be added to the 64 bit ioctl handlers via a runtime check for ILP32 like is done for COMPAT_FREEBSD32 and then this separate list would disappear again. That is a much bigger effort however and this commit is meant to be MFCable.
This enables linux64 support in x11/nvidia-driver*.
PR: 206711 Reviewed by: kib MFC after: 3 days
show more ...
|
| #
607f1105
|
| 08-Dec-2025 |
Gleb Smirnoff <glebius@FreeBSD.org> |
linux: store Linux Ethernet interface number in struct ifnet
The old approach where we go through the list of interfaces and count them has bugs. One obvious bug with this dynamic translation is th
linux: store Linux Ethernet interface number in struct ifnet
The old approach where we go through the list of interfaces and count them has bugs. One obvious bug with this dynamic translation is that once an Ethernet interface in the middle of the list goes away, all interfaces following it would change their Linux names.
A bigger problem is the ifnet arrival and departure times. For example linsysfs has event handler for ifnet_arrival_event, and of course it wants to resolve the name. This accidentially works, due to a bug in if_attach() where we call if_link_ifnet() before invoking all the event handlers. Once the bug is fixed linsysfs won't be able to resolve the old way. The other side is ifnet_departure_event, where there is no bug, the eventhandlers are called after the if_unlink_ifnet(). This means old translation won't work for departure event handlers. One example is netlink. This change gives the Netlink a chance to emit a proper Linux interface departure message.
However, there is another problem in Netlink, that the ifnet pointer is lost in the Netlink translation layer. Plug this with a cookie in netlink writer structure that can be set by the route layer and used by the Netlink Linux translation layer. This part of the diff seems unrelated, but it is hard to make it a separate change, as the old KPI goes away and to use the new one we need the pointer.
Differential Revision: https://reviews.freebsd.org/D54077
show more ...
|
| #
3460fab5
|
| 18-Aug-2023 |
Dmitry Chagin <dchagin@FreeBSD.org> |
linux(4): Remove sys/cdefs.h inclusion where it's not needed due to 685dc743
|
| #
685dc743
|
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
| #
d8e53d94
|
| 14-Feb-2023 |
Dmitry Chagin <dchagin@FreeBSD.org> |
linux(4): Cleanup includes under compat/linux
Cleanup unneeded includes, sort the rest according to style(9). No functional changes.
MFC after: 2 weeks
|
| #
7c40e2d5
|
| 26-Aug-2022 |
Alexander V. Chernikov <melifaro@FreeBSD.org> |
linuxolator: add netlink support
Add the glue code to support netlink in Linuxolator. linux_common(4) now depends on netlink(4).
All netlink protocol constants are consistent with the Linux version
linuxolator: add netlink support
Add the glue code to support netlink in Linuxolator. linux_common(4) now depends on netlink(4).
All netlink protocol constants are consistent with the Linux version. However, certain OS-specific constants such as AF_INET6, interface flags or default routing table id, are different between FreeBSD and Linux. Thus, it may be needed to rewrite some message parts or even rewrite the whole message, adding or removing some TLVs. The core netlink implementation code provides efficient rewriting callbacks which Linuxolator now uses.
Reviewed by: dchagin Differential Revision: https://reviews.freebsd.org/D36361 MFC after: 2 months
show more ...
|
| #
0dc38e33
|
| 29-Jul-2021 |
Dmitry Chagin <dchagin@FreeBSD.org> |
linux(4): Reimplement futexes using umtx.
Differential Revision: https://reviews.freebsd.org/D31236 MFC after: 2 weeks
|
| #
5184e2da
|
| 26-May-2021 |
Dmitry Chagin <dchagin@FreeBSD.org> |
linux_common: retire extra module version.
The second 'linuxcommon' line was added by c66f5b079d2a259c3a65b1efe0f2143cd030dc52 but Linuxulator's modules dependend on 'linux_common'. To avoid such mi
linux_common: retire extra module version.
The second 'linuxcommon' line was added by c66f5b079d2a259c3a65b1efe0f2143cd030dc52 but Linuxulator's modules dependend on 'linux_common'. To avoid such mistakes in the future rename moduledata name and module name to 'linux_common' and retire 'linuxcommon' line.
Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D30409 MFC after: 2 weeks
show more ...
|