diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index d3f7ff4fde56..00ffd7ed2ffc 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -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_swap_writepage); 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_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sync_irq_wait_start); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index 65eb40c00944..8087138ba33c 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -549,6 +549,10 @@ 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_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, TP_PROTO(gfp_t gfp_mask, unsigned int *alloc_flags), TP_ARGS(gfp_mask, alloc_flags)); diff --git a/mm/page_io.c b/mm/page_io.c index 648fd53303a9..a3feadd1ba9e 100644 --- a/mm/page_io.c +++ b/mm/page_io.c @@ -471,6 +471,19 @@ static void swap_readpage_bdev_sync(struct folio *folio, struct bio bio; 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, swap_page_sector(&folio->page) + get_start_sect(sis->bdev), &folio->page, &read);