Commit graph

2,526 commits

Message SHA1
Snap for 13937020 from a23e772683 to 25Q4-release
Change-Id: I81548546ba5271af3c27e1dd98a5059797f029e4

Android Build Coastguard Worker   commited 2025-08-14 16:12:26 -07:00
6176144057
Improve error messages for missing BPF descriptors.
The error messages now specify whether a "Map descriptor" or a "Prog descriptor" was not found, providing more clarity.

Test: N/A, text only change
Flag: EXEMPT trivial
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I7ce4806979a616f8330e5cca4d70c7ea2a1a256a

Maciej Żenczykowski   commited 2025-08-13 14:30:19 -07:00
a23e772683
Snap for 13905597 from 3264f34d9c to 25Q4-release
Change-Id: Ife05441993ee6fa6555e208dd603e95764eb06e8

Android Build Coastguard Worker   commited 2025-08-08 18:23:50 -07:00
6258b17d27
Clippy lint fixes for rustc 1.88.0
Test: m rustClippyJson
Bug: 435702100
Flag: EXEMPT refactor
Change-Id: I3cbd23b2ddc51c369e7bdbe7c08eb356e82304a2

James Farrell   commited 2025-08-07 23:43:22 +00:00
3264f34d9c
Snap for 13859275 from 8ce82c3dc4 to 25Q4-release
Change-Id: I607d1d2c68b127928c20e423ae381bc15eaa29cc

Android Build Coastguard Worker   commited 2025-07-30 16:23:31 -07:00
5c59cdeec7
Snap for 13851688 from a78ebbd0b1 to 25Q4-release
Change-Id: I3c40f1ee65c666f6efb4f7ebdcd654537696bfc4

Android Build Coastguard Worker   commited 2025-07-29 16:27:17 -07:00
8b7e7e57d9
Platform BpfLoader: remove support for /vendor/etc/bpf/filterPowerSupplyEvents.bpf
It doesn't exist in current builds, and we have the vendor bpf loader in C++ to handle /vendor/etc/bpf anyway.
It's unclear how to handle it from rust due to platform vs vendor skew...

Test: TreeHugger
Flag: EXEMPT no-op
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I3ef707399445f91966e747d615dbf828d779a5ae

Maciej Żenczykowski   commited 2025-07-28 17:56:52 -07:00
8ce82c3dc4
Platform BpfLoader: make missing .bpf files fatal
as all are already present

(while at it add 'inheritance' from a default struct)

Test: TreeHugger
Flag: EXEMPT no-op
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I94258b8f5f8565193bfb688d50422733caf8dbf3

Maciej Żenczykowski   commited 2025-07-28 17:55:20 -07:00
a78ebbd0b1
Platform BpfLoader: replace '/etc' with '/system/etc'
(/etc is a symlink to /system/etc anyway)

Test: TreeHugger
Flag: EXEMPT no-op
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I4d5b1b34066b97589779a43b8eaeed785edb611c

Maciej Żenczykowski   commited 2025-07-25 21:28:22 -07:00
0b7aa3aefe
Platform BpfLoader: eliminate 'dir' - just use fully qualified 'filename'
Test: TreeHugger
Flag: EXEMPT no-op
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Iaea2cff7ef0e96e600ea7429538d85b6c515e062

Maciej Żenczykowski   commited 2025-07-25 21:28:22 -07:00
f9d0b38967
Platform BpfLoader: add initial / to /vendor/etc/bpf/ path
(Technically a no-op, since the file doesn't exist yet)

Test: TreeHugger
Flag: EXEMPT no-op
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ie72de49e452994a5dca97559d86fa2d7bb4bedcb

Maciej Żenczykowski   commited 2025-07-25 21:01:36 -07:00
25247915db
Snap for 13791884 from b073360177 to 25Q4-release
Change-Id: I29554c852a584639dbe1882f3c31a4d034afcdf9

Android Build Coastguard Worker   commited 2025-07-16 16:42:23 -07:00
034cec03f2
vendorBpfLoader: error handling simplifications
We continue to have:
  $ adb shell ls -lZ /sys/fs/bpf/vendor
  total 0
  -r--r----- 1 root system u:object_r:fs_bpf_vendor:s0  0 2025-07-16 09:37 prog_filterPowerSupplyEvents_skfilter_power_supply

Test: TreeHugger
Flag: EXEMPT no-op
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I2be675467688cf5f9c651b8311dceb68744100a8

Maciej Żenczykowski   commited 2025-07-16 09:38:26 -07:00
b073360177
vendorBpfLoader: templatize readSectionByName
Test: TreeHugger
Flag: EXEMPT no-op
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Id793381411d559ba338aaad83815e5f429848286

Maciej Żenczykowski   commited 2025-07-16 09:17:47 -07:00
424eb2ad51
vendorBpfLoader: less copies
Test: TreeHugger
Flag: EXEMPT no-op
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I3572cf9dca5caf910d4870788b0ce41a02ba14ad

Maciej Żenczykowski   commited 2025-07-16 09:01:26 -07:00
97810f306d
vendorBpfLoader: trivialize getSectionType()
since we only support skfilter/ we can simplify this

(support for any future other vendor types should be added to the rust loader)

Test: TreeHugger
Flag: EXEMPT cleanup
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I72ad38c056728ef768ee70bc38471c3e9d368f60

Maciej Żenczykowski   commited 2025-07-16 08:55:36 -07:00
a3ecd74594
vendorBpfLoader: remove unused readSectionUint()
Test: TreeHugger
Flag: EXEMPT cleanup
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I1a9e8f5e419eb4cde2dd734720d314bcee2dbf9c

Maciej Żenczykowski   commited 2025-07-16 08:51:41 -07:00
b3ad463c44
vendorBpfLoader: remove printing of map/prog ids
Really just spurious logging code.

If you're working on a device (as opposed to looking at bugreports)
you can get this information with for example 'bpftool':

$ adb shell bpftool map show pinned '/sys/fs/bpf/map_bpfRingbufProg_test_ringbuf'
77: ringbuf  name test_ringbuf  flags 0x0
        key 0B  value 0B  max_entries 4096  memlock 16696B

$ adb shell bpftool prog show pinned /sys/fs/bpf/vendor/prog_filterPowerSupplyEvents_skfilter_power_supply
82: socket_filter  name skfilter_power_  tag b8b4693584760391
        loaded_at 2025-07-16T08:44:56-0700  uid 0
        xlated 848B  jited 470B  memlock 4096B

Test: TreeHugger
Flag: EXEMPT cleanup
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ie7baf7cf5df9c25ad2d159767584670361e8c6eb

Maciej Żenczykowski   commited 2025-07-16 08:47:49 -07:00
77f8e9e373
vendorBpfLoader: remove mapMatchesExpectations() check
This was primarily meant as a safety check for mainline,
it's not really needed in platform bpf loader.

Test: TreeHugger
Flag: EXEMPT cleanup
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I615f54f10baa75f641129507ecce9159ff31a740

Maciej Żenczykowski   commited 2025-07-16 08:39:23 -07:00
d9201c1612
vendorBpfLoader: change single line, end-of-line /* */ comments to //
Test: TreeHugger
Flag: EXEMPT cleanup
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ibc2b32b3a07a1115489b373a97827625fa27ff10

Maciej Żenczykowski   commited 2025-07-16 08:35:43 -07:00
b902e1c254
vendorBpfLoader: kernel is guaranteed to be 5.4+
(even 5.10+)

Test: TreeHugger
Flag: EXEMPT cleanup
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I4c9a2a222071095559b1605d4417f93eecf4667f

Maciej Żenczykowski   commited 2025-07-16 08:33:02 -07:00
174cddec91
vendorBpfLoader: move /sys/fs/bpf/vendor creation to rust
We continue to have:
  $ adbz shell ls -lZ /sys/fs/bpf /sys/fs/bpf/vendor
  /sys/fs/bpf:
  total 0
  ...
  drwxrwxrwt 2 root root     u:object_r:fs_bpf_vendor:s0          0 2025-07-16 00:09 vendor

  /sys/fs/bpf/vendor:
  total 0
  -r--r----- 1 root system u:object_r:fs_bpf_vendor:s0  0 2025-07-16 00:09 prog_filterPowerSupplyEvents_skfilter_power_supply

Test: TreeHugger
Flag: EXEMPT no-op
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I74d87a6f382e3b1bc10a8eb82915bc340568f2a8

Maciej Żenczykowski   commited 2025-07-16 00:09:47 -07:00
d29bd0b4ca
vendorBpfLoader: no need for locations array
Afterwards we still have:
  I BpfLoader: Platform BpfLoader loading critical for healthd ELF object /vendor/etc/bpf/filterPowerSupplyEvents.o with license Apache 2.0
  W BpfLoader: No maps section could be found in elf object
  D BpfLoader: prog /sys/fs/bpf/vendor/prog_filterPowerSupplyEvents_skfilter_power_supply id 82

  $ adbz shell ls -lZ /sys/fs/bpf /sys/fs/bpf/vendor
  /sys/fs/bpf:
  total 0
  ...
  drwxrwxrwt 2 root root     u:object_r:fs_bpf_vendor:s0          0 2025-07-15 23:53 vendor

  /sys/fs/bpf/vendor:
  total 0
  -r--r----- 1 root system u:object_r:fs_bpf_vendor:s0  0 2025-07-15 23:53 prog_filterPowerSupplyEvents_skfilter_power_supply

Test: TreeHugger
Flag: EXEMPT no-op
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I66a6fc3abf8f5c4c52f6a47476c251e97f1f6e14

Maciej Żenczykowski   commited 2025-07-15 23:57:34 -07:00
c30b4f8bee
vendorBpfLoader: no need for allowedProgTypes
(while at it remove fuse bpf support, which isn't needed for vendor)

Test: TreeHugger
Flag: EXEMPT no-op
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ic7293b94644d933a908a252ab794ae64f88b5865

Maciej Żenczykowski   commited 2025-07-15 23:50:52 -07:00
0e2f1cc28b
simplify libbpf_android.h
Test: TreeHugger
Flag: EXEMPT trivial
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I39f73afef65b22b1d275742758aff7745991d9e7

Maciej Żenczykowski   commited 2025-07-15 23:40:18 -07:00
8b3ea0a274
Snap for 13715904 from 5781bd4a22 to 25Q4-release
Change-Id: I1404a3d3b0bac4242a1ed4ec5d2f6bc88c447536

Android Build Coastguard Worker   commited 2025-06-30 16:22:07 -07:00
b0648a7dba
Give all users access to CPU time in state bpf maps.
We want to read this from traced_probes, which is AID_NOBODY. And
SELinux does a far more thorough job of controlling access than Unix
permissions do.

Bug: 422976190

Test: ls -l, and checked WIP traced_probes implementation.
Change-Id: I51a6486c5d7bf85f922f79a89a7a7fbdb9bc79f2

Simon MacMullen   commited 2025-06-30 08:54:29 -07:00
5781bd4a22
Snap for 13709264 from f84cb04bd7 to 25Q4-release
Change-Id: Icc7c46c8aa950aa203e98862ce0dd42b2581cedb

Android Build Coastguard Worker   commited 2025-06-27 18:23:17 -07:00
06f6ddd7c3
Merge "Move CPU time in state bpf maps to their own dir," into main
Simon MacMullen   authored and   Android (Google) Code Review   commited 2025-06-27 07:49:37 -07:00
f84cb04bd7
Move CPU time in state bpf maps to their own dir,
This will allow us to use a genfscon SELinux rule to get finer grained access control.

Bug: 422976190

Test: Recorded a Perfetto trace with statsd atom  CPU_CYCLES_PER_UID_CLUSTER, tested manually with go/atomtester.
Change-Id: Ic16da605b9d7150d42176c428f0e1ecaf4a9472f

Simon MacMullen   commited 2025-06-26 16:31:52 +00:00
8546ea34c6
Snap for 13683512 from d6c84caf3e to 25Q4-release
Change-Id: I98a365588ac49570b4d8c09dd3c60749130d25af

Android Build Coastguard Worker   commited 2025-06-23 16:21:34 -07:00
ce70511e4b
Merge changes I89a4c1d2,I961ba203,Idc61221e into main
* changes:
  bpf: vmlinux: Add OWNERS
  bpf: vmlinux: Remove android15_6.6 headers
  bpf: vmlinux: Update Readme

Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-06-23 08:09:45 -07:00
d6c84caf3e
bpf: vmlinux: Add OWNERS
Bug: 421990777
Test: N/A
Change-Id: I89a4c1d2b908f997c92eaa210f2006420e7a30cf
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>

Kalesh Singh   commited 2025-06-20 14:40:47 -07:00
d2852e8687
bpf: vmlinux: Remove android15_6.6 headers
These are now generated by the build system when needed.

Bug: 421990777
Test: m
Change-Id: I961ba203989325e58428a7b3068326fc89debaa8
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>

Kalesh Singh   commited 2025-06-20 12:04:31 -07:00
a6156a9122
bpf: vmlinux: Update Readme
Convert readme to markdown; refactor existing descriptions;
add instructions on how to add vmlinux.h for new kernels.

Bug: 421990777
Test: N/A
Change-Id: Idc61221e729d034c5fedb458bd18db02fade713a
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>

Kalesh Singh   commited 2025-06-20 11:47:41 -07:00
9462a3d7aa
Snap for 13667468 from 16e017f20e to 25Q4-release
Change-Id: I7b490a20c856becb644c54ac4deffa9e40dbad3c

Android Build Coastguard Worker   commited 2025-06-18 18:35:15 -07:00
a98c022f2e
Merge "Use platform bpf_helpers.h and bpf_map_def.h for platform bpfloader" into main
Maciej Żenczykowski   authored and   Android (Google) Code Review   commited 2025-06-18 04:40:48 -07:00
16e017f20e
Snap for 13659452 from 32075d5ef9 to 25Q4-release
Change-Id: I18d57a1eb9670a95e0ed45e03f034d83b0eda496

Android Build Coastguard Worker   commited 2025-06-17 16:28:00 -07:00
93a9e91f3a
Merge "Add missing vendor_available: true property" into main
Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-06-17 15:53:01 -07:00
bd3fd05c3a
Merge "bpfloader: refactor C++ loader to just one function" into main
Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-06-17 05:56:59 -07:00
32075d5ef9
bpfloader: refactor C++ loader to just one function
no need for the complexity, as it is only for vendor now

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ia807f7ee8aeca25d92e60e46f180ffe536eef87c

Maciej Żenczykowski   commited 2025-06-17 04:18:41 -07:00
d689e6e01a
make platform bpfloader require bpftool cli
Test: TreeHugger
Flag: EXEMPT adds as yet unused cli tool
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ib6c2be3c40338743f3482010d7500fef8964adc6

Maciej Żenczykowski   commited 2025-06-17 03:55:14 -07:00
7d62694b8f
Add missing vendor_available: true property
Due to b/424439549, Soong wasn't enforcing that vendor modules could only link against
other vendor modules.  Add vendor_available to any modules that are being used by
vendor modules in order to allow re-enabling the error in Soong.

Bug: 424439549
Flag: EXEMPT build only fix
Test: builds
Change-Id: I3aff720d743bc63d4a9f13505b39c55fde90116d

Colin Cross   commited 2025-06-16 20:45:39 +00:00
6169de2adc
bpf: remove /system/etc/bpf from the loader
These directories are not populated on real devices
and are not part of the test suite.
This change removes them from the BPF loader.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I719d0feb9ef1a6f0a1e41265af47916410590ac7

Maciej Żenczykowski   commited 2025-06-16 01:28:45 -07:00
c041c4825b
Snap for 13644486 from 821600428c to 25Q4-release
Change-Id: Id716bcd09312fa417e0cfda0d3c8c32212a7ccd4

Android Build Coastguard Worker   commited 2025-06-13 18:33:44 -07:00
6c594cd7f7
Merge changes from topic "bpf_header_files1" into main
* changes:
  Remove unused bpfRingbufProg.o
  Add copy of bpf header files for platform use

Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-06-13 04:32:44 -07:00
821600428c
Use platform bpf_helpers.h and bpf_map_def.h for platform bpfloader
Platform BPF programs rely on platform bpf_helpers.h and bpf_map_def.h.
To ensure consistency and correctness, the loader must use these platform
headers instead of those from p/m/Connectivity.

Bug: 424341374
Test: TH
Change-Id: Id5f1bc8fdd29e54c28a3ec9e01f6a9292f6bb9e1

Motomu Utsumi   commited 2025-06-13 13:04:02 +09:00
1f5cd4b9a1
Remove unused bpfRingbufProg.o
Test: TH
Bug: 410982483
Change-Id: Ib2fdedc63d5503aca38757f020fbe0466bbaca83

Motomu Utsumi   commited 2025-06-13 12:14:20 +09:00
e0fd4cdc6c
Add 6.1 vmlinux.h genrules
Generate vmlinux.h from the kernel prebuilt vmlinux

Bug: 421990777
Test: Manual; build bpf prog with "vmlinux_h_6_1" header
Change-Id: Ib1b7a24c470610ea6d1ee6c84f1c656e7139340b
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>

Kalesh Singh   commited 2025-06-12 09:33:39 -07:00
2e61afb442
Add copy of bpf header files for platform use
$ cp packages/modules/Connectivity/bpf/headers/include/bpf_helpers.h system/bpf/include/bpf/
$ cp packages/modules/Connectivity/bpf/headers/include/bpf_map_def.h system/bpf/include/bpf/

Bug: 424341374
Test: TH
Change-Id: I81eb6485956a1674c1c23b8ff91599862446061e

Motomu Utsumi   commited 2025-06-12 16:58:12 +09:00
64550b51c5