ANDROID: restricted vendor_hook: add swap_readpage_bdev_sync

Add restricted vendor hook to optimize the swap-in latency.

Bug: 401975249
Bug: 428209185
Change-Id: I1a2be1a309769590cb427e13762e29d8c8fa9cf6
Signed-off-by: Richard Chang <richardycc@google.com>
This commit is contained in:
Richard Chang
2025-07-02 07:16:49 +00:00
committed by Treehugger Robot
parent 2bc327484e
commit 6d61bc2d2d
3 changed files with 18 additions and 0 deletions

View File

@@ -625,6 +625,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_migration_target_bypass);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_node_memcgs); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_node_memcgs);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_swap_writepage); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_swap_writepage);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_swap_readpage_bdev_sync); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_swap_readpage_bdev_sync);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_swap_readpage_bdev_sync);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dpm_wait_start); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dpm_wait_start);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dpm_wait_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dpm_wait_finish);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sync_irq_wait_start); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sync_irq_wait_start);

View File

@@ -549,6 +549,10 @@ DECLARE_HOOK(android_vh_swap_readpage_bdev_sync,
TP_PROTO(struct block_device *bdev, sector_t sector, TP_PROTO(struct block_device *bdev, sector_t sector,
struct page *page, bool *read), struct page *page, bool *read),
TP_ARGS(bdev, sector, page, read)); TP_ARGS(bdev, sector, page, read));
DECLARE_RESTRICTED_HOOK(android_rvh_swap_readpage_bdev_sync,
TP_PROTO(struct block_device *bdev, sector_t sector,
struct page *page, bool *read),
TP_ARGS(bdev, sector, page, read), 4);
DECLARE_HOOK(android_vh_alloc_flags_cma_adjust, DECLARE_HOOK(android_vh_alloc_flags_cma_adjust,
TP_PROTO(gfp_t gfp_mask, unsigned int *alloc_flags), TP_PROTO(gfp_t gfp_mask, unsigned int *alloc_flags),
TP_ARGS(gfp_mask, alloc_flags)); TP_ARGS(gfp_mask, alloc_flags));

View File

@@ -471,6 +471,19 @@ static void swap_readpage_bdev_sync(struct folio *folio,
struct bio bio; struct bio bio;
bool read = false; bool read = false;
trace_android_rvh_swap_readpage_bdev_sync(sis->bdev,
swap_page_sector(&folio->page) + get_start_sect(sis->bdev),
&folio->page, &read);
if (read) {
count_vm_events(PSWPIN, folio_nr_pages(folio));
return;
}
/*
* trace_android_vh_swap_readpage_bdev_sync is deprecated, and
* should not be carried over into later kernels.
* Use trace_android_rvh_swap_readpage_bdev_sync instead.
*/
trace_android_vh_swap_readpage_bdev_sync(sis->bdev, trace_android_vh_swap_readpage_bdev_sync(sis->bdev,
swap_page_sector(&folio->page) + get_start_sect(sis->bdev), swap_page_sector(&folio->page) + get_start_sect(sis->bdev),
&folio->page, &read); &folio->page, &read);