ANDROID: vendor_hooks: select workqueue based on task priority

Introduce vendor hooks to determine which workqueue should be assigned
to a task based on its priority

Bug: 372168987
Bug: 409419444

Change-Id: I81f4d48f5f53021744c87524d412d9593745ffed
Signed-off-by: Yang Yang <yang.yang@vivo.com>
(cherry picked from commit baf74b82230ddb55ea81f4ad58c3bd2f1b15ba9a)
Signed-off-by: ying zuxin <11154159@vivo.com>
This commit is contained in:
Yang Yang
2024-09-26 18:58:49 +08:00
committed by Sandeep Dhavale
parent addbb4c202
commit f4de660fb8
3 changed files with 36 additions and 0 deletions
+23
View File
@@ -32,6 +32,8 @@
#include <trace/events/block.h>
#include <trace/hooks/blk.h>
#include <linux/t10-pi.h>
#include "blk.h"
#include "blk-mq.h"
@@ -1565,6 +1567,12 @@ static void blk_mq_requeue_work(struct work_struct *work)
void blk_mq_kick_requeue_list(struct request_queue *q)
{
bool skip = false;
trace_android_vh_blk_mq_kick_requeue_list(q, 0, &skip);
if (skip)
return;
kblockd_mod_delayed_work_on(WORK_CPU_UNBOUND, &q->requeue_work, 0);
}
EXPORT_SYMBOL(blk_mq_kick_requeue_list);
@@ -1572,6 +1580,13 @@ EXPORT_SYMBOL(blk_mq_kick_requeue_list);
void blk_mq_delay_kick_requeue_list(struct request_queue *q,
unsigned long msecs)
{
bool skip = false;
trace_android_vh_blk_mq_kick_requeue_list(q,
msecs_to_jiffies(msecs), &skip);
if (skip)
return;
kblockd_mod_delayed_work_on(WORK_CPU_UNBOUND, &q->requeue_work,
msecs_to_jiffies(msecs));
}
@@ -2276,8 +2291,16 @@ select_cpu:
*/
void blk_mq_delay_run_hw_queue(struct blk_mq_hw_ctx *hctx, unsigned long msecs)
{
bool skip = false;
if (unlikely(blk_mq_hctx_stopped(hctx)))
return;
trace_android_vh_blk_mq_delay_run_hw_queue(blk_mq_hctx_next_cpu(hctx),
hctx, msecs_to_jiffies(msecs), &skip);
if (skip)
return;
kblockd_mod_delayed_work_on(blk_mq_hctx_next_cpu(hctx), &hctx->run_work,
msecs_to_jiffies(msecs));
}
+2
View File
@@ -374,6 +374,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sk_alloc);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sk_free);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_receive_sock);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_task_get_classid);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_blk_mq_delay_run_hw_queue);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_blk_mq_kick_requeue_list);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_enable_thermal_genl_check);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_pm_notify_suspend);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_entry);
+11
View File
@@ -17,6 +17,17 @@ DECLARE_HOOK(android_vh_bd_link_disk_holder,
TP_PROTO(struct block_device *bdev, struct gendisk *disk),
TP_ARGS(bdev, disk));
struct blk_mq_hw_ctx;
struct request_queue;
DECLARE_HOOK(android_vh_blk_mq_delay_run_hw_queue,
TP_PROTO(int cpu, struct blk_mq_hw_ctx *hctx, unsigned long delay, bool *skip),
TP_ARGS(cpu, hctx, delay, skip));
DECLARE_HOOK(android_vh_blk_mq_kick_requeue_list,
TP_PROTO(struct request_queue *q, unsigned long delay, bool *skip),
TP_ARGS(q, delay, skip));
#endif /* _TRACE_HOOK_BLK_H */
/* This part must be outside protection */
#include <trace/define_trace.h>