ANDROID: mm: Reset unused page flag bits on free
Add vendor hook to reset unused bits in page flags to zero when releasing a page. This reserves space for OEMs to define vendor-specific features. Bug: 420361650 Bug: 426115925 Change-Id: Ife2b96de64eea670d257f1a8d9fd07d16c0ddc83 Signed-off-by: Yang Yang <yang.yang@vivo.com> (cherry picked from commit 8fb77f6f9d20be56cd76b579b2830eb287e2e8bb) Signed-off-by: ying zuxin <11154159@vivo.com>
This commit is contained in:
committed by
Treehugger Robot
parent
52e6e0403d
commit
6eca3e3fc3
@@ -388,6 +388,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_fuse_request_end);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lruvec_add_folio);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lruvec_add_folio);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lruvec_del_folio);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lruvec_del_folio);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_async_mmap_readahead);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_async_mmap_readahead);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_free_page);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_sock_error);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_sock_error);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_fastsyn);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_fastsyn);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_state_change);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_state_change);
|
||||||
|
|||||||
@@ -322,6 +322,9 @@ DECLARE_HOOK(android_vh_add_lazyfree_bypass,
|
|||||||
DECLARE_HOOK(android_vh_do_async_mmap_readahead,
|
DECLARE_HOOK(android_vh_do_async_mmap_readahead,
|
||||||
TP_PROTO(struct vm_fault *vmf, struct folio *folio, bool *skip),
|
TP_PROTO(struct vm_fault *vmf, struct folio *folio, bool *skip),
|
||||||
TP_ARGS(vmf, folio, skip));
|
TP_ARGS(vmf, folio, skip));
|
||||||
|
DECLARE_HOOK(android_vh_mm_free_page,
|
||||||
|
TP_PROTO(struct page *page),
|
||||||
|
TP_ARGS(page));
|
||||||
|
|
||||||
DECLARE_HOOK(android_vh_alloc_contig_range_not_isolated,
|
DECLARE_HOOK(android_vh_alloc_contig_range_not_isolated,
|
||||||
TP_PROTO(unsigned long start, unsigned end),
|
TP_PROTO(unsigned long start, unsigned end),
|
||||||
|
|||||||
@@ -1300,6 +1300,7 @@ __always_inline bool free_pages_prepare(struct page *page,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
(page + i)->flags &= ~PAGE_FLAGS_CHECK_AT_PREP;
|
(page + i)->flags &= ~PAGE_FLAGS_CHECK_AT_PREP;
|
||||||
|
trace_android_vh_mm_free_page(page + i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (PageMappingFlags(page)) {
|
if (PageMappingFlags(page)) {
|
||||||
@@ -1316,6 +1317,7 @@ __always_inline bool free_pages_prepare(struct page *page,
|
|||||||
|
|
||||||
page_cpupid_reset_last(page);
|
page_cpupid_reset_last(page);
|
||||||
page->flags &= ~PAGE_FLAGS_CHECK_AT_PREP;
|
page->flags &= ~PAGE_FLAGS_CHECK_AT_PREP;
|
||||||
|
trace_android_vh_mm_free_page(page);
|
||||||
reset_page_owner(page, order);
|
reset_page_owner(page, order);
|
||||||
free_page_pinner(page, order);
|
free_page_pinner(page, order);
|
||||||
page_table_check_free(page, order);
|
page_table_check_free(page, order);
|
||||||
|
|||||||
Reference in New Issue
Block a user