Commit graph

936 commits

Message SHA1
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