Commit Graph

10 Commits

Author SHA1 Message Date
Todd Kjos
b3efd2ad71 ANDROID: remove inclusions from hook definition headers
To avoid changing the visibiliy of data types when including
hook definition headers remove header file inclusions from
the hook definition header files.

Instead, the hook definition headers should just have forward
declarations that don't require full definition.

To provide full definitions of the types for the KMI, the
headers that define the types should be included by the
source file that instantiates the hooks - normally
vendor_hooks.c.

Bug: 233047575
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: Iaaa1a6f45a356569c04ad2fea0b1514e0454f041
2022-09-08 23:24:37 +00:00
Todd Kjos
b6dace455e ANDROID: subsystem-specific vendor_hooks.c for sched
Change how vendor hooks are instantiated to promote
more complete structure definition in the ABI XML
description without complicating hook definition for
partners.

We don't want to force partners to include all
headers as part of the hook definition in include/trace/hooks/
since that causes extra headers to be included in
source files that runs the risk of changing visibility
resulting in CRC changes to KMI symbols. Instead continue
the practice of using forward declarations in the hook
header files.

Instead of instantiating all hook tracepoints globally in
drivers/android/vendor_hooks.c, use subsystem-specific
vendor_hooks.c if inclusion of subsystem-specific
header files is required. This avoids namespace collisions
between internal header files and limits the exposure
to the internal headers to the instantiation, not the
call sites.

In this patch, all of the scheduler related hooks are
instantiated in kernel/sched/vendor_hooks.c which can
cleanly include scheduler-related header files to
provide full type visibility.

Bug: 233047575
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: Ife5a66c2968de73e3f6d05840411310611e2e175
2022-09-08 23:24:37 +00:00
Giuliano Procida
9a19ce82a2 ANDROID: GKI: forward declare struct cgroup_taskset in vendor hooks
The inclusion of the internal kernel/cgroup/cgroup-internal.h header
broke some androidci builds.

Bug: 233047575
Fixes: d5f809c84d ("ANDROID: GKI: use public type definitions in vendor hooks")
Change-Id: Iacca4b8518b9a9c45c927a58621383e66022cb5a
Signed-off-by: Giuliano Procida <gprocida@google.com>
2022-07-19 12:47:39 +00:00
Giuliano Procida
76ed7e5d56 ANDROID: GKI: use internal type definitions in vendor hooks
This change is intended to reduce the chance of a missed ABI break
involving vendor hooks.

The following types are now fully defined in ABI XML.

* `struct binder_transaction`
* `struct binder_thread`
* `struct binder_proc`
* `struct printk_ringbuffer`
* `struct printk_record`

symbol '__alloc_pages' changed
  CRC changed from 0x6497cbd to 0x230fd8e5

symbol '__find_vma' changed
  CRC changed from 0xf11b619f to 0xb0069a61

symbol '__free_pages' changed
  CRC changed from 0xba5eeb68 to 0xdc394265

... 195 omitted; 198 symbols have only CRC changes

Bug: 233047575
Change-Id: I807227f6161f0a44ec3657dc8cdb8a3fdffc40b3
Signed-off-by: Giuliano Procida <gprocida@google.com>
2022-07-19 12:47:36 +00:00
Giuliano Procida
45d3ead9a8 ANDROID: GKI: use public type definitions in vendor hooks
This change is intended to reduce the chance of a missed ABI break
involving vendor hooks.

The following type is now fully defined in ABI XML.

* `struct timekeeper`

symbol '__traceiter_android_rvh_account_irq' changed
  CRC changed from 0x18e0dccf to 0x4e82c102

symbol '__traceiter_android_rvh_after_dequeue_task' changed
  CRC changed from 0x7efc419b to 0x1c0066e1

symbol '__traceiter_android_rvh_after_enqueue_task' changed
  CRC changed from 0xd6f0f603 to 0xf7eaafb8

... 75 omitted; 78 symbols have only CRC changes

Bug: 233047575
Change-Id: I8c04eede1b9d9e788abce95cb31dbd19916774ef
Signed-off-by: Giuliano Procida <gprocida@google.com>
2022-07-19 12:47:36 +00:00
zhaoyang.huang
109097ed1c ANDROID: Add vendor hook for MemcgV2 optimization
The associated vendor hooks/data are used for implementing dynamic memory.low protection based on memcgv2.

Bug: 232723420
Test: build pass
Change-Id: I2e92bdc2840af1eaaa08ee6427d2a82d78390005
Signed-off-by: zhaoyang.huang <zhaoyang.huang@unisoc.com>
2022-07-19 12:47:28 +00:00
Saravana Kannan
0ef21e1c1a ANDROID: vendor_hooks: Reduce pointless modversions CRC churn
When vendor hooks are added to a file that previously didn't have any
vendor hooks, we end up indirectly including linux/tracepoint.h.  This
causes some data types that used to be opaque (forward declared) to the
code to become visible to the code.

Modversions correctly catches this change in visibility, but we don't
really care about the data types made visible when linux/tracepoint.h is
included. So, hide this from modversions in the central vendor_hooks.h file
instead of having to fix this on a case by case basis.

This change itself will cause a one time CRC breakage/churn because it's
fixing the existing vendor hook headers, but should reduce unnecessary CRC
churns in the future.

To avoid future pointless CRC churn, vendor hook header files that include
vendor_hooks.h should not include linux/tracepoint.h directly.

Bug: 227513263
Bug: 226140073
Signed-off-by: Saravana Kannan <saravanak@google.com>
Change-Id: Ia88e6af11dd94fe475c464eb30a6e5e1e24c938b
2022-04-06 08:31:36 -07:00
Pavankumar Kondeti
d4f032e36b ANDROID: cgroup: Add android_rvh_cgroup_force_kthread_migration
In Android GKI, CONFIG_FAIR_GROUP_SCHED is enabled [1] to help
prioritize important work. Given that CPU shares of root cgroup
can't be changed, leaving the tasks inside root cgroup will give
them higher share compared to the other tasks inside important
cgroups. This is mitigated by moving all tasks inside root cgroup to
a different cgroup after Android is booted. However, there are many
kernel tasks stuck in the root cgroup after the boot.

It is possible to relax kernel threads and kworkers migrations under
certain scenarios. However the patch [2] posted at upstream is not
accepted. Hence add a restricted vendor hook to notify modules when a
kernel thread is requested for cgroup migration. The modules can relax
the restrictions forced by the kernel and allow the cgroup migration.

[1] f08f049de1
[2] https://lore.kernel.org/lkml/1617714261-18111-1-git-send-email-pkondeti@codeaurora.org

Bug: 184594949
Change-Id: I445a170ba797c8bece3b4b59b7a42cdd85438f1f
Signed-off-by: Pavankumar Kondeti <quic_pkondeti@quicinc.com>
Signed-off-by: Shaleen Agrawal <shalagra@codeaurora.org>
2021-10-12 16:44:41 -07:00
Jing-Ting Wu
5025118c30 ANDROID: cgroup: add vendor hook to cgroup .attach()
Add a vendor hook when a set of tasks change the cgroups in
the controller for performance tuning.

Bug: 187972571
Signed-off-by: Jing-Ting Wu <Jing-Ting.Wu@mediatek.com>
Change-Id: If0ea3d089e077a4650507c69b6e60952d102fa1d
2021-05-18 10:37:35 +08:00
Frankie Chang
7d91e4ee75 ANDROID: cgroup: Add vendor hook to the cgroup
Add a vendor hook after attaching a task to a cgroup to 
recognize the group_id for performance tuning

Bug: 181917687

Signed-off-by: Frankie Chang <frankie.chang@mediatek.com>
Change-Id: I603afa3d893dd575a7dcb97f83bd9eacb8315bab
(cherry picked from commit de089a37a3d248608a1d5855a4ae82ebad3ec2ab)
2021-03-09 01:59:47 +00:00