ANDROID: vendor_hook: add swap_readpage_bdev_sync

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

Bug: 401975249
Change-Id: Ife89faf3b5845d3cf147604e6801e033a921ee07
Signed-off-by: Richard Chang <richardycc@google.com>
This commit is contained in:
Richard Chang
2025-05-12 06:49:08 +00:00
parent c2041f7858
commit f8b3046f5a
3 changed files with 14 additions and 0 deletions

View File

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

View File

@@ -533,6 +533,10 @@ DECLARE_HOOK(android_vh_migration_target_bypass,
DECLARE_HOOK(android_vh_swap_writepage,
TP_PROTO(unsigned long *sis_flags, struct page *page),
TP_ARGS(sis_flags, page));
DECLARE_HOOK(android_vh_swap_readpage_bdev_sync,
TP_PROTO(struct block_device *bdev, sector_t sector,
struct page *page, bool *read),
TP_ARGS(bdev, sector, page, read));
DECLARE_HOOK(android_vh_alloc_flags_cma_adjust,
TP_PROTO(gfp_t gfp_mask, unsigned int *alloc_flags),
TP_ARGS(gfp_mask, alloc_flags));

View File

@@ -469,6 +469,15 @@ static void swap_readpage_bdev_sync(struct folio *folio,
{
struct bio_vec bv;
struct bio bio;
bool read = false;
trace_android_vh_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;
}
bio_init(&bio, sis->bdev, &bv, 1, REQ_OP_READ);
bio.bi_iter.bi_sector = swap_page_sector(&folio->page);