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:
committed by
Treehugger Robot
parent
2bc327484e
commit
6d61bc2d2d
@@ -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);
|
||||||
|
@@ -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));
|
||||||
|
13
mm/page_io.c
13
mm/page_io.c
@@ -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);
|
||||||
|
Reference in New Issue
Block a user