Changes
- Add new android vendor hook: android_vh_ufs_mcq_retry_complete()
- Retry mcq complete on reset in error handling flow
- Check mcq oustanding reqs instead of DB reg under MCQ mode
Bug: 248447556
Change-Id: Ie658edcef0f9b155eefb4462c99f40557cb64c68
Signed-off-by: Po-Wen Kao <powen.kao@mediatek.com>
Signed-off-by: Peter Wang <peter.wang@mediatek.com>
Signed-off-by: Eddie Huang <eddie.huang@mediatek.com>
Add hooks to check the do_serror can be recover or not.
When PCIe encounters completion timeout, PCIe hardware will
reply slave error to bus, which will causes the system to panic.
Bug: 247846368
Signed-off-by: qizhong cheng <qizhong.cheng@mediatek.com>
Change-Id: Iaef6c9a6ac07e552939c0f8e386213cb930cfb6e
Remove the obsolete use of CONFIG_TRACEPOINTS in hook definition
header files. The !CONFIG_TRACEPOINTS case is correctly handled
by the included trace header files.
Bug: 233047575
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: I957649bcfef375284f2885cf732ff2960c303837
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.
Since the KMI is frozen, some of the inclusions are still
required to preserve the CRC associated with symbols. Keep
these inclusions under #ifdef __GENKSYMS__.
Bug: 233047575
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: Ibc1173eb4b07fcec21c7abd8e0ab1950b3fb5b34
Add a vendor hook for costly order page counting
and other vendor specific functions.
Bug: 174521902
Bug: 172987241
Bug: 244409558
Signed-off-by: Chiawei Wang <chiaweiwang@google.com>
Signed-off-by: Oven <liyangouwen1@oppo.com>
Change-Id: I89206727a462548cc3500b695d85c83ff003eec7
(cherry picked from commit 369de3780428a17e9afece2f5747f03619d589b6)
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 hook tracepoints globally in
drivers/android/vendor_hooks.c, use subsystem-specific
vendor_hooks.c. 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.
Since this is being done on a KMI frozen branch, there
are some __GENKSYMS__ tricks needed to preserve the
existing CRC as we increase the number of fully typed
structs. These tricks won't be needed when this is
introduced on a non-KMI-frozen branch.
With this patch, the number of undefined types was
reduced from 108 to 68.
Bug: 233047575
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: Ife5a66c2968de73e3f6d05840411310611e2e175
We want to record the cputime of each running process by adding
hooks for cpufreq_acct_update_power.
Bug: 186604985
Signed-off-by: zhengding chen <chenzhengding@oppo.com>
Change-Id: I35e38be4680781df3338b4a01041922294aecaa0
(cherry picked from commit 3983753280987d68138ce249232b3d1b775ab1e6)
If an important task is going to sleep through do_futex(),
find out it's futex-owner by the pid comes from userspace,
and boost the owner by some means to shorten the sleep time.
How to boost? Depends on these hooks:
commit 53e809978443 ("ANDROID: vendor_hooks: Add hooks for scheduler")
Bug: 243110112
Signed-off-by: xieliujie <xieliujie@oppo.com>
Change-Id: I9a315cfb414fd34e0ef7a2cf9d57df50d4dd984f
(cherry picked from commit 548da5d23d98b796cf9a478675622a606b3307c8)
Add hooks to modify the policy of page_cache_sync_ra for oem's optimization
of synchronous readahead.
Bug: 243477375
Signed-off-by: Aran Dalton <arda@allwinnertech.com>
Change-Id: Ic3397d26e58d2d1189d9db25914c2f3d95c69226
We need to add three restricted vendor hooks to implement mmc protection
and support sd card hs mode tuning.
If you are using a function that needs to sleep, then use the restricted
vendor hook.
- android_rvh_mmc_partition_status
- android_rvh_mmc_sd_cmdline_timing
- android_rvh_mmc_sd_dataline_timing
If you're using functions that don't sleep, then use vendor hooks.
- android_vh_mmc_update_partition_status
- android_vh_mmc_sd_update_cmdline_timing
- android_vh_mmc_sd_update_dataline_timing
Bug: 242645760
Change-Id: I880436e3159bec30d7d92c620b268ec350e97235
Signed-off-by: Wenchao Chen <wenchao.chen@unisoc.com>
Providing vendor hooks to record the start time of holding the lock, which
protects rwsem/mutex locking-process from being preemptedfor a short time
in some cases.
- android_vh_record_mutex_lock_starttime
- android_vh_record_rtmutex_lock_starttime
- android_vh_record_rwsem_lock_starttime
- android_vh_record_percpu_rwsem_lock_starttime
Bug: 241191475
Signed-off-by: Peifeng Li <lipeifeng@oppo.com>
Change-Id: I0e967a1e8b77c32a1ad588acd54028fae2f90c4e
Kernelci reported:
include/trace/hooks/cgroup.h:27:18: error: declaration of 'struct cgroup_subsys'
will not be visible outside of this function
Fixes: 2487db8d59 ("ANDROID: freezer: Add vendor hook to freezer for GKI
purpose.")
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: I7678fc03df6593ca42f2043f33ec3c3fee8d362b
Add hooks to support trylock in rmaplock when reclaiming in kswapd or
direct_reclaim, in order to avoid wait lock for a long time.
- android_vh_handle_failed_page_trylock
- android_vh_page_trylock_set
- android_vh_page_trylock_clear
- android_vh_page_trylock_get_result
- android_vh_do_page_trylock
Bug: 240003372
Signed-off-by: Peifeng Li <lipeifeng@oppo.com>
Change-Id: I0f605b35ae41f15b3ca7bc72cd5f003175c318a5
Add the vendor hook to freezer.c, because of some special cases related to our feature, we do not want the process to be frozen immediately, so we add the hook at __refrigerator to make sure we can go to our own freeze logic when the process is about to be frozen.
Bug: 187458531
Signed-off-by: heshuai1 <heshuai1@xiaomi.com>
Change-Id: Iea42fd9604d6b33ccd6502425416f0dd28eecebb
(cherry picked from commit a1580311c36ca28344b2f03b3c8a72d9f8db5bde)
Add the vendor hook to user.c, because of some speical cases related to
our feature, we need to initialize the variables defined by ourselves in
user_struct, so we add the hook at alloc_uid to make sure we can go to
our own logic when the user_struct is about to initialize.
Bug: 187458531
Signed-off-by: heshuai1 <heshuai1@xiaomi.com>
Change-Id: I078484aac2c3d396aba5971d6d0f491652f3781c
(cherry picked from commit c9b8fa644f45e9c99da85d8947f6c7e06771f205)
We need this vendor hook to support emmc FFU. Avoid init card fail
due to changes in PRV of cid in the new firmware.
Bug: 241854943
Change-Id: Ib92105264daabedcb68aa99d0b4c0d45b5b741b1
Signed-off-by: Zhenxiong Lai <zhenxiong.lai@unisoc.com>
Support two hooks as follows to protect multi-mapcount pages in kernel:
- trace_android_vh_page_should_be_protect
- trace_android_vh_mapped_page_try_sorthead
Bug: 236578020
Signed-off-by: Peifeng Li <lipeifeng@oppo.com>
Change-Id: I688aceabf17d9de2feac7c3ad7144d307de6ef29
Support five hooks as follows to account
the amount of multi-mapped pages in kernel:
- android_vh_show_mapcount_pages
- android_vh_do_traversal_lruvec
- android_vh_update_page_mapcount
- android_vh_add_page_to_lrulist
- android_vh_del_page_from_lrulist
Bug: 236578020
Signed-off-by: Peifeng Li <lipeifeng@oppo.com>
Change-Id: Ia2c7015aab442be7dbb496b8b630b9dff59ab935
Introduce PROTECT_TRACE_INCLUDE_PATH to allow trace/hooks/mm.h to be
included from a header file. When trace/hooks/mm.h is included from a
header file PROTECT_TRACE_INCLUDE_PATH should be defined before the
inclusion so that the existing TRACE_INCLUDE_PATH gets preserved.
Bug: 236578020
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: Ia5890ba51675de41ff3ea4ab38bcb458202df5fb
Some hardware has a way to restore all keyslots at once that is
significantly faster than restoring each keyslot individually, as is
done by blk_ksm_reprogram_all_keys(). Add a hook
"android_rvh_ufs_reprogram_all_keys" that allows overriding the
restoration of all keyslots after UFS reset. This may sleep, so this
must be a "restricted" Android vendor hook rather than a regular one.
Note that currently this functionality can't be upstreamed, as support
for the hardware that needs it would need to be upstreamed first.
(cherry picked from commit e2e063f5074e2e14a96875e5e5670314a41e1c34)
Bug: 162257402
Bug: 181905172
Bug: 241106918
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Kenny Root <kroot@google.com>
Change-Id: I0b25393a5131941f085892560e08a64e63cd1369
Vendor may have need to track rt util.
Bug: 201261299
Signed-off-by: Rick Yiu <rickyiu@google.com>
Change-Id: I2f4e5142c6bc8574ee3558042e1fb0dae13b702d
Vendor may have the need to implement their own util tracking.
Bug: 201260585
Signed-off-by: Rick Yiu <rickyiu@google.com>
Change-Id: I973902e6ff82a85ecd029ac5a78692d629df1ebe
We recently noticed an issue where freezing of user space tasks is
failed due to a process being in uninterruptible sleep state.
Currently, the logging of unfrozen tasks is disabled by default.
Although it can be enabled for debugging via a adb command, it's
usually hard to reproduce the issue. So we want to add a vendor hook
to log unfrozen tasks.
pm_debug_messages enables a large amount of log output during every
suspend/resume cycle of which at most 1 line is helpful for
investigating this recurring class of battery life issues. Deploying
builds with pm_debug_messages is therefore not viable, as it
substantially shortens the temporal span of the log. The new vendor
hook will only emit logs specific to this class of problem, and only
when the problem actually manifests.
Bug: 240091483
Test: all presubmit tests passed
Change-Id: Ief3d4196ea7220d4897c00a37ab96f456dbf2259
Signed-off-by: Darren Hsu <darrenhsu@google.com>
(cherry picked from commit 3821e5b25c4067d2263bc47c674fde57a17cf7c4)
Modify the timing of cmd line and data line in HS mode to improve the compatibility of SD cards that only support HS mode.
Bug: 240510879
Change-Id: Ia1c98845f63b4b051d0b1db80856ee98dc5da8c1
Signed-off-by: Wenchao Chen <wenchao.chen@unisoc.com>
When servicemanager process added service proxy from other process
register the service, we want to know the matching relation between
handle in the process and service name. When binder transaction
happened, We want to know what process calls what method on what service.
Bug: 186604985
Signed-off-by: zhengding chen <chenzhengding@oppo.com>
Change-Id: I813d1cde10294d8665f899f7fef0d444ec1f1f5e
Add trace hook so modules can track thermal changes to process
vendor value adds.
Bug: 203763121
Change-Id: I5c54b313d3c92c0514f18b07797dd20c9c6f5161
Signed-off-by: Shaleen Agrawal <shalagra@codeaurora.org>
We need to turn on the write protection function of the device to protect some data from being written.
Bug: 239614762
Change-Id: I2fdacf31b61612f3e9e21537e3d118432941e841
Signed-off-by: Wenchao Chen <wenchao.chen@unisoc.com>
Add memcg support for hooks in the reclaim path
Bug: 230450931
Change-Id: Ia3e6949985d915c8640139fbb93800d91e1e46f8
Signed-off-by: xiaofeng <xiaofeng5@xiaomi.com>
Add vendor hook to get the binder message for vendor-specific power and
performance tuning.
Bug: 182496370
Bug: 235925535
Signed-off-by: Zhuguangqing <zhuguangqing@xiaomi.com>
Change-Id: Id47e59c4e3ccd07b26eef758ada147b98cd1964e
(cherry picked from commit 301e89472f3e00a2f02f1967d77efd051ada37f5)
Signed-off-by: heshuai1 <heshuai1@xiaomi.com>
Signed-off-by: Carlos Llamas <cmllamas@google.com>
[ cmllamas: don't export complete private definition struct binder_alloc
in vendor hooks, instead just pass member alloc->free_async_space as
implemented by heshuai1 and squashed here ]
Add hook to boost thread when process killed.
Bug: 237749933
Signed-off-by: xieliujie <xieliujie@oppo.com>
Change-Id: I7cc6f248397021f3a8271433144a0e582ed27cfa
trace_android_vh_binder_proc_transaction_entry:
We need change binder thread so that this work can be added in
proc->todo, if we found the binder thread, skip native logic.
trace_android_vh_binder_select_worklist_ilocked:
we need this because we can't change list point in ”trace_android_vh_binder_thread_read“,
otherwise, If a work has beed added in our own defined list before,
current may goto retry and loop again and again.
Bug: 219898723
Change-Id: Ifdb3429c9ddac521bc75c1d21740ee7cc4b8f143
Signed-off-by: Liujie Xie <xieliujie@oppo.com>
(cherry picked from commit acefa91e517b9321295429d3a0e534908e2939c1)
Signed-off-by: Carlos Llamas <cmllamas@google.com>
Add hooks to apply oem's optimization of rwsem and mutex
Bug: 182237112
Signed-off-by: xieliujie <xieliujie@oppo.com>
(cherry picked from commit 80b4341d0520dce2ef1e33aef06c6a2bc8ada518)
Signed-off-by: xieliujie <xieliujie@oppo.com>
Change-Id: I36895c432e5b6d6bff8781b4a7872badb693284c
Signed-off-by: Carlos Llamas <cmllamas@google.com>
[cmllamas: completes the cherry-pick of original commit 80b4341d0520
since commit 0902cc73b7 was only partial]
We want to use this hook to record the sleeping time due to Futex
Bug: 210947226
Signed-off-by: Liujie Xie <xieliujie@oppo.com>
Change-Id: I637f889dce42937116d10979e0c40fddf96cd1a2
(cherry picked from commit a7ab784f601a93a78c1c22cd0aacc2af64d8e3c8)
Signed-off-by: Carlos Llamas <cmllamas@google.com>
These hooks will do the following works:
a) record the time of the process in various states
b) Make corresponding optimization strategies in different hooks
Bug: 205938967
Signed-off-by: Liujie Xie <xieliujie@oppo.com>
Change-Id: Ia3c47bbf0aadd17337ce18fd910343b1b8c3ef93
(cherry picked from commit a61d61bab7c3d221d5d2250eacab2e4e9f59b252)
Signed-off-by: Carlos Llamas <cmllamas@google.com>
add vendor hooks for cpu affinity to support oem's feature.
Bug: 183674818
Signed-off-by: lijianzhong <lijianzhong@xiaomi.com>
Change-Id: I3402abec4d9faa08f564409bfb8db8d7902f3aa2
We need pointers to proc and t, the current hooks in binder_proc_transaction
are unable to use.
Bug: 208910215
Change-Id: I730964f965a015e5f5a3e237d9b3bd084b5bd0d0
Signed-off-by: Liujie Xie <xieliujie@oppo.com>
(cherry picked from commit cb7e10d31bca4f247c34d6791d6db048edf7e7a8)
Signed-off-by: Carlos Llamas <cmllamas@google.com>
This change adds vendor hook for gic-v2 resume to allow vendor GIC
enhancement. This is inline with hook present today in irq-gic-v3.c
with one difference that vendor hooks in v2 driver do not pass entire
gic_chip_data struct to vendor module. Instead it passes the required
fields which are irq_domain and the gic dist base to know the wakeup
IRQ reason.
The newly added vendor hook can get invoked by two ways.
1. By registering with syscore ops, .resume method can invoke vendor
hook. This is applicable for cases like suspend-to-ram which
invokes syscore ops.
2. By exporting the gic_v2_resume(), the newly added vendor hook will
get invoked during the first CPU waking up from suspend-to-idle
case.
While at this move android_vh_gic_resume() to gic_v3.h as its specific
to v3 driver.
Bug: 234108369
Signed-off-by: Maulik Shah <quic_mkshah@quicinc.com>
Change-Id: I4c857b40f25ad58a6daca491e89adb90e8f6ca93
android_vh_audio_usb_offload_suspend:
To skip pcm suspend in offload mode
We need a vendor hook to skip usb audio suspend in offload mode.
In kernel5.4 the cmd SNDRV_PCM_TRIGGER_SUSPEND and SNDRV_PCM_TRIGGER_STOP are treated differently.
However, they are treated the same in kernel5.15, which will lead to system suspend while music playing in offload mode.
Bug: 237022398
Test: build pass / music playing / recording
Signed-off-by: Wei Chen <wei.chen3@unisoc.com>
Change-Id: Ib6ec0a1419493801aeba2e045b33384f246f43b5
add vendor hooks to compute new cpu freq for oem feature.
Bug: 235925535
Signed-off-by: heshuai1 <heshuai1@xiaomi.com>
Change-Id: I2b8e1f76f3b9792148f153190b862face679ebbd
Add the vendor hook to qos.c, because of some special cases related to
our feature. we add the hook at freq_qos_add_request and remove_request
to make sure we can go to our own qos process logic.
Bug: 187458531
Signed-off-by: heshuai1 <heshuai1@xiaomi.com>
Change-Id: I1fb8fd6134432ecfb44ad242c66ccd8280ab9b43