bpf loader improvements for better long term compatibility with mainline
...
This is bpfLoader v0.1, previously we had no version number,
the version immediately preceding this commit we'll call v0.0.
Versions older than that are either pre-S and don't matter, since
loading mainline eBpf code was only added in S, or are from early
during the S development cycle (ie. pre-March 5th 2021 or earlier)
and simply no longer supported (no need to maintain compatibility).
Bug: 190519702
Test: atest, TreeHugger - existing bpf programs load
examination of bpfloader logs
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I36fa5b917540be7ea3ecfddc5fe7834e9eb18d88
Maciej Żenczykowski
commited 2021-07-02 03:36:49 +00:00
9217eee3df
Enable Async MTE in bpfloader. am: d27ae792e1
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1715722
Change-Id: I5696b0aeff980fd873785c48c53df18fef7d3641
Evgenii Stepanov
authored and
Automerger Merge Worker
commited 2021-05-25 08:16:38 +00:00
80f73b878b
Enable Async MTE in bpfloader.
...
This change enables Async mode ARM MTE in the bpfloader process on compatible
hardware and has no effect otherwise.
Bug: 181603044
Test: atest under system/bpf
Change-Id: I6340055fea1f97fcc781b418e2465a7961ecedf4
Evgenii Stepanov
commited 2021-05-24 15:35:31 -07:00
d27ae792e1
BpfUtils.h - add back SKIP_IF_BPF_NOT_SUPPORTED macro am: 67fa2073ff
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1631935
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I4319f83b426be2800ee92f3fb900ad98ec597ed9
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-03-12 09:20:54 +00:00
625c2c6bc6
BpfUtils.h - add back SKIP_IF_BPF_NOT_SUPPORTED macro
...
Needs to be used by dns mainline module tests on R devices (Pixel 2).
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I2974a5368f4a9d744e30be9148aefac117d09acb
Maciej Żenczykowski
commited 2021-03-11 19:52:30 -08:00
67fa2073ff
bpfloader: auto-demote DEVMAP/DEVMAP_HASH map types on too old kernels am: cb358de067
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1619223
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I30a799d8beb4784baa0820d3fbad16d9b7e88464
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-03-05 06:22:15 +00:00
76f565a3f1
bpfloader: auto-demote DEVMAP/DEVMAP_HASH map types on too old kernels
...
Basically:
<4.14: DEVMAP -> ARRAY
<5.4: DEVMAP_HASH -> HASH
See added comments for explanation of why, but basically:
This allows our bpf program .o files to load maps on all kernel versions,
even if those map types are not supported by the kernel.
This avoids the need for code that conditionally creates maps based on
kernel version. Any program that actually attempts to use one of these
maps will fail to load, but programs are already loaded conditionally
based on kernel version so this is not a problem.
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I1a1d73b68de3606423de078fddb224402621e154
Maciej Żenczykowski
commited 2021-03-05 06:00:59 +00:00
cb358de067
bpf_map_def.h - fix no longer correct comment am: fd59a4a0a6
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1619222
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Ifdef2d29e0d5ddebd5f7d1a68c4d2d8b64600239
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-03-05 05:03:07 +00:00
9123fe9e56
bpf_map_def.h - fix no longer correct comment
...
This is due to changing how many bits are assigned to individual fragments,
which was done to support kernel version 4.9.256.
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I7f556352beab009cd114e2241f3d7fe6d878a458
Maciej Żenczykowski
commited 2021-03-04 15:47:40 +00:00
fd59a4a0a6
grant bpfloader NET_ADMIN capability am: 265d1310ec
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1611658
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I82525512c6732d43521bb9d6c3e4ef09d45e18ba
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-03-03 13:02:32 +00:00
8db5909149
Merge "make failure on map creation returns -errno" am: e5b8aa240b
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1611659
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: If411792759899077e248365d980bf77eece2a274
Treehugger Robot
authored and
Automerger Merge Worker
commited 2021-03-03 08:06:08 +00:00
5db68dbf66
grant bpfloader NET_ADMIN capability
...
This is required for it to be able to create DEVMAP/DEVMAP_HASH maps.
See kernel source code in kernel/bpf/devmap.c:
static struct bpf_map *dev_map_alloc(union bpf_attr *attr) {
...
if (!capable(CAP_NET_ADMIN)) return ERR_PTR(-EPERM);
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I4f3012209186ff0e4bde8807b9032de056367132
Maciej Żenczykowski
commited 2021-03-03 03:28:22 +00:00
265d1310ec
Merge "make failure on map creation returns -errno"
Treehugger Robot
authored and
Gerrit Code Review
commited 2021-03-03 02:57:48 +00:00
e5b8aa240b
make failure on map creation returns -errno
...
This slightly improves error logging.
(also fd == 0 is not an error condition)
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I135e7405c508951fba632c634bc4e2d2161fc940
Maciej Żenczykowski
commited 2021-03-02 07:46:32 +00:00
2c37213796
Mark ab/7061308 as merged in stage.
...
Bug: 180401296
Merged-In: I29e012cafcbadea5f0ce8f5b0348581afdd78339
Change-Id: Ie4bdf948f4c3a6e3758fdaf5a39091573b316fac
Xin Li
commited 2021-02-20 00:24:39 -08:00
f988c7bad6
KVER macro - support 4.9.256+ kernel am: 30af4b5487
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1584754
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: If1ff426bde32101f411769112f1594b915668e22
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-02-12 05:20:48 +00:00
c90cd5a93e
KVER macro - support 4.9.256+ kernel
...
Instead of doing 16/8/8 bits for major/minor/subver macro,
switch to 8/8/16 bits, since this gives plenty of space:
- major versions are bumped every few years, so 256 last forever
- minor versions are bumped every few months (~5-6 per year),
so 256 lasts for decades, additionally Linus Torvalds doesn't
like big numbers, and eventually bumps the major instead
- sub versions are the problematic ones, because they're bumped
on every LTS security release, however even at one release per day,
16 bits lasts for 180 years
Note: before this change 4.9.256 was treated as equivalent to 4.10.0.
Luckily all our tests were only ever (by chance) against the LTS release
bases (ie. 4.9.0, 4.14.0, 4.19.0, 5.4.0) and thus we wouldn't have hit
an actually failure until 4.9.(5*256) === 4.14.0 which would have caused
the bpfloader to attempt to load bpf code requiring 4.14 on a 4.9 kernel,
and resulted in failure of device to successfully boot.
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I0535ce081967af092f3342c0abfd05a1e5028eb6
Maciej Żenczykowski
commited 2021-02-11 16:05:21 -08:00
30af4b5487
[LSC] Add LOCAL_LICENSE_KINDS to system/bpf am: dcbf8ca070
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1576238
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Iaa1ee3ee2cc41eeafe84af81dcb8169e656fc2e5
Bob Badour
authored and
Automerger Merge Worker
commited 2021-02-05 20:27:12 +00:00
efeb921df8
[LSC] Add LOCAL_LICENSE_KINDS to system/bpf
...
Added SPDX-license-identifier-Apache-2.0 to:
Android.bp
bpfloader/Android.bp
libbpf_android/Android.bp
progs/Android.bp
Bug: 68860345
Bug: 151177513
Bug: 151953481
Test: m all
Exempt-From-Owner-Approval: janitorial work
Change-Id: Ia881b61da1755797085916aab5325375c82ed76e
Bob Badour
commited 2021-02-05 01:28:19 -08:00
dcbf8ca070
bpf_helpers - add declaration for bpf_ktime_get_boot_ns() am: 6b28299441
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1559292
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I35dfafacc1199afe9fc7889287ed914e0e482427
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-01-25 14:35:10 +00:00
b8caf6c44b
bpf_helpers - add declaration for bpf_ktime_get_boot_ns()
...
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I87f344c779d89cebe9a0d09dc466966ca7fda1a6
Maciej Żenczykowski
commited 2021-01-24 21:01:53 -08:00
6b28299441
BpfMap - fix a clang warning: misc-unconventional-assign-operator am: 8ed7c0f9b9
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1552943
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I4c8a9e299d9f2d8399c03156caffb595037ab443
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-01-23 18:52:40 +00:00
cf1d21c5d8
BpfMap - fix a clang warning: misc-unconventional-assign-operator
...
//system/bpf/libbpf_android:libbpf_android_test clang-tidy BpfMapTest.cpp
system/bpf/libbpf_android/include/bpf/BpfMap.h:138:5: warning: operator=() should return 'BpfMap&' [misc-unconventional-assign-operator]
void operator=(BpfMap<Key, Value>&& other) noexcept {
^
Test: builds without warnings
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I0bb0d42f58bba58c7b9220f062453d827438e85a
Maciej Żenczykowski
commited 2021-01-23 18:30:07 +00:00
8ed7c0f9b9
move waitForProgsLoaded() to header file am: cdf85a3148
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1557259
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I245ce25fd7d001b8cd2c8c8c57fa2c26b4e19ac2
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-01-22 05:17:56 +00:00
9118307262
eliminate LoaderUtils.h am: f7c0d993dd
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1557258
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Ic2112b86bebc777ba80b84c1386ed11c91238104
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-01-22 05:17:54 +00:00
c731d8dd6d
header file cleanup am: 23c436f957
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1557257
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Ic2576da59cc097bafb8f0116e46a6c27349be65c
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-01-22 05:17:52 +00:00
da9fb11f0e
move waitForProgsLoaded() to header file
...
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I2f0035f2622ca2a8c10d29caff912f3f895f2607
Maciej Żenczykowski
commited 2021-01-21 17:39:33 -08:00
cdf85a3148
eliminate LoaderUtils.h
...
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I662714ee4faa6485d2ba7bbcbc8e34c76e37b091
Maciej Żenczykowski
commited 2021-01-21 17:39:29 -08:00
f7c0d993dd
header file cleanup
...
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I03920e51bab3cb704f156ea9c62a0a38fd65a3a9
Maciej Żenczykowski
commited 2021-01-21 14:24:25 -08:00
23c436f957
add SKIP_IF_XDP_NOT_SUPPORTED macro am: a36bed395f
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1555041
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I6031e2218630aea6143b5eb2d922d7f6e92a2dd7
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-01-21 04:43:34 +00:00
7d7af8b3d8
add SKIP_IF_XDP_NOT_SUPPORTED macro
...
Test: builds, atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ia954983565250faff547e81a53ec0df5fc26827e
Maciej Żenczykowski
commited 2021-01-20 16:24:02 -08:00
a36bed395f
remove isBpfSupported() am: 916d2395cc
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1552951
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I606595bce95ec44890bc5f0df1995b5ff513759a
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-01-20 17:24:05 +00:00
a973c0badf
remove BpfLevel and getBpfSupportLevel in favour of isAtLeastKernelVersion am: dcb5228f2c
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1552952
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I3767f0f75b766b1251ab070ec6d188b1d2efc243
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-01-20 11:25:20 +00:00
9da4968f92
remove isBpfSupported()
...
Test: builds, atest, TreeHugger
Bug: 167500195
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ifb4b4ced25ac444fe913c6392c0c8d57b2d9c58e
Maciej Żenczykowski
commited 2021-01-19 23:48:01 -08:00
916d2395cc
remove BpfLevel and getBpfSupportLevel in favour of isAtLeastKernelVersion
...
Test: builds, atest, TreeHugger
Bug: 167500195
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I50dbed1843a8c2802e1b416281e193ae7d282a99
Maciej Żenczykowski
commited 2021-01-19 23:48:01 -08:00
dcb5228f2c
put tethering bpf maps & programs in /sys/fs/bpf/tethering/... am: d8a4578f30
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1552953
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I3807f17e0e6633dabcf6e2e9240d3c249056f2c0
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-01-20 07:28:45 +00:00
2d62abc751
put tethering bpf maps & programs in /sys/fs/bpf/tethering/...
...
This makes it harder for system and mainline bpf programs to
conflict with each other, thus enabling easier mainline module
updates.
Test: builds and boots, atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ic1b69bb1ddc4a10bd4861dadbd6b97e2520c532d
Maciej Żenczykowski
commited 2021-01-20 05:17:14 +00:00
d8a4578f30
Merge changes Ic378d0e5,Ib3a8696a am: da5d7ec6a7
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1552949
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I9a8f6e80d3d5a067f241e818d33e2437aa976ec1
Treehugger Robot
authored and
Automerger Merge Worker
commited 2021-01-20 03:39:40 +00:00
ee60aa6a9b
Merge "remove unused macros SKIP_IF_BPF{,_NOT}_SUPPORTED" am: 71e977fb0d
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1552947
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Ie1d9d4239caa6ddcf6da5252a346e47cabdaec9e
Treehugger Robot
authored and
Automerger Merge Worker
commited 2021-01-20 03:39:29 +00:00
ee6aeed3d6
bpf is always supported am: d6cbd5622e
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1552950
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I7ce6d94658ab52f33c4f1d74b2aac2f2a55886ea
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-01-20 03:39:23 +00:00
bfc2de27bf
Merge changes Ic378d0e5,Ib3a8696a
...
* changes:
remove unused enum value BpfLevel::NONE
remove unused function BpfLevelToString()
Treehugger Robot
authored and
Gerrit Code Review
commited 2021-01-20 03:38:42 +00:00
da5d7ec6a7
Merge "remove unused macros SKIP_IF_BPF{,_NOT}_SUPPORTED"
Treehugger Robot
authored and
Gerrit Code Review
commited 2021-01-20 03:09:46 +00:00
71e977fb0d
bpf is required for all devices running Android S am: f7a0a39d05
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1552946
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I53103d53ee863c0e8ac06c223ac11ec9d347e895
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-01-20 01:53:52 +00:00
91c32990bd
slightly more type safety for bpf_map_{lookup,update,delete}_elem_unsafe am: b8163155e3
...
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1552945
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I9d3d9858cb1213ae9efc904eb86529aeb39e88ea
Maciej Żenczykowski
authored and
Automerger Merge Worker
commited 2021-01-20 01:52:57 +00:00
dd27eebb32
bpf is always supported
...
Test: builds, atest, TreeHugger
Bug: 167500195
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ifcc6ff2b2293b7585f20108ad849408ed9af4538
Maciej Żenczykowski
commited 2021-01-20 01:37:32 +00:00
d6cbd5622e
remove unused enum value BpfLevel::NONE
...
Test: builds, atest, TreeHugger
Bug: 167500195
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ic378d0e5a579abf44985a3353a21885796c297bb
Maciej Żenczykowski
commited 2021-01-20 01:36:55 +00:00
2337d47db3
remove unused function BpfLevelToString()
...
Test: builds, atest, TreeHugger
Bug: 167500195
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ib3a8696a9653e5fbb022c98c26cfff623fadb3b4
Maciej Żenczykowski
commited 2021-01-20 01:36:16 +00:00
5947162cc5
remove unused macros SKIP_IF_BPF{,_NOT}_SUPPORTED
...
Test: builds, atest, TreeHugger
Bug: 167500195
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ic740b1102fcf735516123eee2c6a3d5caa0892f9
Maciej Żenczykowski
commited 2021-01-20 01:15:04 +00:00
b8e9af4b10
bpf is required for all devices running Android S
...
Test: builds, atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ie3f1146f71f75b982ffc4cd4176c5624efb6a63e
Maciej Żenczykowski
commited 2021-01-20 01:14:31 +00:00
f7a0a39d05
slightly more type safety for bpf_map_{lookup,update,delete}_elem_unsafe
...
Test: builds
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I808400e624fa96ed72d9a3b1b153b0ce5a84d6f8
Maciej Żenczykowski
commited 2021-01-20 00:06:55 +00:00
b8163155e3