Merge changes I471532a8,Ic1301be9,I076aed22,I156024bf,I2d2f4d09, ... into main
* changes: Allow rust bpfloader to load filterPowerSupplyEvents.bpf Allow rust bpfloader to load bpfRingbufProg.bpf Allow rust bpfloader to load bpfMemEventsTest.bpf Allow rust bpfloader to load bpfMemEvents.bpf Allow rust bpfloader to load gpuWork.bpf Allow rust bpfloader to load gpuMem.bpf
This commit is contained in:
commit
7714bcfe30
1 changed files with 114 additions and 1 deletions
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
//! BPF loader for system and vendor applications
|
||||
|
||||
use android_ids::{AID_MEDIA_RW, AID_ROOT, AID_SYSTEM};
|
||||
use android_ids::{AID_GRAPHICS, AID_MEDIA_RW, AID_ROOT, AID_SYSTEM};
|
||||
use android_logger::AndroidLogger;
|
||||
use anyhow::{anyhow, ensure};
|
||||
use libbpf_rs::{
|
||||
|
|
@ -49,6 +49,8 @@ const fn kver(a: u32, b: u32, c: u32) -> u32 {
|
|||
|
||||
const KVER_NONE: u32 = kver(0, 0, 0);
|
||||
const KVER_INF: u32 = 0xFFFFFFFF;
|
||||
const KVER_5_10: u32 = kver(5, 10, 0);
|
||||
const KVER_6_1: u32 = kver(6, 1, 0);
|
||||
|
||||
enum KernelLevel {
|
||||
// Commented out unused due to rust complaining...
|
||||
|
|
@ -160,6 +162,10 @@ impl MapDesc {
|
|||
pub const fn new(group: u32, perms: mode_t, name: &'static str) -> Self {
|
||||
MapDesc { name, perms, owner: AID_ROOT, group, min_kver: KVER_NONE, max_kver: KVER_INF }
|
||||
}
|
||||
|
||||
pub const fn new_kver(group: u32, perms: mode_t, min_kver: u32, name: &'static str) -> Self {
|
||||
MapDesc { name, perms, owner: AID_ROOT, group, min_kver, max_kver: KVER_INF }
|
||||
}
|
||||
}
|
||||
|
||||
struct ProgDesc {
|
||||
|
|
@ -175,6 +181,10 @@ impl ProgDesc {
|
|||
pub const fn new(group: u32, name: &'static str) -> Self {
|
||||
ProgDesc { name, owner: AID_ROOT, group, min_kver: KVER_NONE, max_kver: KVER_INF }
|
||||
}
|
||||
|
||||
pub const fn new_kver(group: u32, min_kver: u32, name: &'static str) -> Self {
|
||||
ProgDesc { name, owner: AID_ROOT, group, min_kver, max_kver: KVER_INF }
|
||||
}
|
||||
}
|
||||
|
||||
struct BpfFileDesc {
|
||||
|
|
@ -197,7 +207,9 @@ const PERM_GRO: mode_t = S_IRUSR | S_IWUSR | S_IRGRP;
|
|||
const PERM_GWO: mode_t = S_IRUSR | S_IWUSR | S_IWGRP;
|
||||
const PERM_UGR: mode_t = S_IRUSR | S_IRGRP;
|
||||
|
||||
const GID_ROOT: u32 = AID_ROOT;
|
||||
const GID_SYSTEM: u32 = AID_SYSTEM;
|
||||
const GID_GRAPHICS: u32 = AID_GRAPHICS;
|
||||
const GID_MEDIA_RW: u32 = AID_MEDIA_RW;
|
||||
|
||||
const FILE_ARR: &[BpfFileDesc] = &[
|
||||
|
|
@ -239,6 +251,107 @@ const FILE_ARR: &[BpfFileDesc] = &[
|
|||
maps: &[],
|
||||
progs: &[ProgDesc::new(GID_MEDIA_RW, "fuse_media")],
|
||||
},
|
||||
BpfFileDesc {
|
||||
filename: "gpuMem.bpf",
|
||||
dir: "/etc/bpf/",
|
||||
prefix: "",
|
||||
critical: false,
|
||||
skip_on_user: false,
|
||||
maps: &[MapDesc::new(GID_MEDIA_RW, PERM_GRO, "gpu_mem_total_map")],
|
||||
progs: &[ProgDesc::new(GID_GRAPHICS, "tracepoint_gpu_mem_gpu_mem_total")],
|
||||
},
|
||||
BpfFileDesc {
|
||||
filename: "gpuWork.bpf",
|
||||
dir: "/etc/bpf/",
|
||||
prefix: "",
|
||||
critical: false,
|
||||
skip_on_user: false,
|
||||
maps: &[
|
||||
MapDesc::new(GID_GRAPHICS, PERM_GRW, "gpu_work_map"),
|
||||
MapDesc::new(GID_GRAPHICS, PERM_GRW, "gpu_work_global_data"),
|
||||
],
|
||||
progs: &[ProgDesc::new(GID_GRAPHICS, "tracepoint_power_gpu_work_period")],
|
||||
},
|
||||
BpfFileDesc {
|
||||
filename: "bpfMemEvents.bpf",
|
||||
dir: "/etc/bpf/memevents/",
|
||||
prefix: "memevents/",
|
||||
critical: false,
|
||||
skip_on_user: false,
|
||||
maps: &[
|
||||
MapDesc::new_kver(GID_SYSTEM, PERM_GRW, KVER_5_10, "ams_rb"),
|
||||
MapDesc::new_kver(GID_SYSTEM, PERM_GRW, KVER_5_10, "lmkd_rb"),
|
||||
],
|
||||
progs: &[
|
||||
ProgDesc::new_kver(GID_SYSTEM, KVER_5_10, "tracepoint_oom_mark_victim_ams"),
|
||||
ProgDesc::new_kver(
|
||||
GID_SYSTEM,
|
||||
KVER_5_10,
|
||||
"tracepoint_vmscan_mm_vmscan_direct_reclaim_begin_lmkd",
|
||||
),
|
||||
ProgDesc::new_kver(
|
||||
GID_SYSTEM,
|
||||
KVER_5_10,
|
||||
"tracepoint_vmscan_mm_vmscan_direct_reclaim_end_lmkd",
|
||||
),
|
||||
ProgDesc::new_kver(
|
||||
GID_SYSTEM,
|
||||
KVER_5_10,
|
||||
"tracepoint_vmscan_mm_vmscan_kswapd_wake_lmkd",
|
||||
),
|
||||
ProgDesc::new_kver(
|
||||
GID_SYSTEM,
|
||||
KVER_5_10,
|
||||
"tracepoint_vmscan_mm_vmscan_kswapd_sleep_lmkd",
|
||||
),
|
||||
ProgDesc::new_kver(
|
||||
GID_SYSTEM,
|
||||
KVER_6_1,
|
||||
"tracepoint_android_vendor_lmk_android_trigger_vendor_lmk_kill_lmkd",
|
||||
),
|
||||
ProgDesc::new_kver(
|
||||
GID_SYSTEM,
|
||||
KVER_6_1,
|
||||
"tracepoint_kmem_mm_calculate_totalreserve_pages_lmkd",
|
||||
),
|
||||
],
|
||||
},
|
||||
BpfFileDesc {
|
||||
filename: "bpfMemEventsTest.bpf",
|
||||
dir: "/etc/bpf/memevents/",
|
||||
prefix: "memevents/",
|
||||
critical: false,
|
||||
skip_on_user: false,
|
||||
maps: &[MapDesc::new_kver(GID_SYSTEM, PERM_GRW, KVER_5_10, "rb")],
|
||||
progs: &[
|
||||
ProgDesc::new_kver(GID_SYSTEM, KVER_5_10, "tracepoint_oom_mark_victim"),
|
||||
ProgDesc::new_kver(GID_ROOT, KVER_5_10, "skfilter_oom_kill"),
|
||||
ProgDesc::new_kver(GID_ROOT, KVER_5_10, "skfilter_direct_reclaim_begin"),
|
||||
ProgDesc::new_kver(GID_ROOT, KVER_5_10, "skfilter_direct_reclaim_end"),
|
||||
ProgDesc::new_kver(GID_ROOT, KVER_5_10, "skfilter_kswapd_wake"),
|
||||
ProgDesc::new_kver(GID_ROOT, KVER_5_10, "skfilter_kswapd_sleep"),
|
||||
ProgDesc::new_kver(GID_SYSTEM, KVER_6_1, "skfilter_android_trigger_vendor_lmk_kill"),
|
||||
ProgDesc::new_kver(GID_ROOT, KVER_6_1, "skfilter_calculate_totalreserve_pages"),
|
||||
],
|
||||
},
|
||||
BpfFileDesc {
|
||||
filename: "bpfRingbufProg.bpf",
|
||||
dir: "/etc/bpf/",
|
||||
prefix: "",
|
||||
critical: true,
|
||||
skip_on_user: true,
|
||||
maps: &[MapDesc::new_kver(GID_ROOT, PERM_GRW, KVER_5_10, "test_ringbuf")],
|
||||
progs: &[ProgDesc::new_kver(GID_ROOT, KVER_5_10, "skfilter_ringbuf_test")],
|
||||
},
|
||||
BpfFileDesc {
|
||||
filename: "filterPowerSupplyEvents.bpf",
|
||||
dir: "vendor/etc/bpf/",
|
||||
prefix: "vendor/",
|
||||
critical: true,
|
||||
skip_on_user: false,
|
||||
maps: &[],
|
||||
progs: &[ProgDesc::new_kver(GID_SYSTEM, KVER_5_10, "skfilter_power_supply")],
|
||||
},
|
||||
];
|
||||
|
||||
// TODO: Remove this code when fuse-bpf is upstreamed
|
||||
|
|
|
|||
Loading…
Reference in a new issue