ANDROID: mm: export __pte_offset_map/unuse_swap_pte/read_swap_cache_async

Export __pte_offset_map facilitate retrieving the corresponding PTE using PMD and an address.
Add and export unuse_swap_pte to facilitate releasing the PTE resources corresponding to pages preloaded via swapin.
Export read_swap_cache_async to facilitate asynchronously reading pages from the swap partition using PTE-prefetch scanning.

Bug: 415852480

Change-Id: Ie200656ec97b087936ca98c06b0a370f547d5d0a
Signed-off-by: jianhua hao <haojianhua1@xiaomi.com>
(cherry picked from commit 88cb3505ebf4d9eb1dd0d3c63403727eb4b239bd)
(cherry picked from commit c5defcb638906800d4ab6b50e79e9f25538aefbd)
This commit is contained in:
jianhua hao
2025-05-06 10:42:25 +08:00
committed by Suren Baghdasaryan
parent 4cf22d9783
commit 7f2f532bd0
3 changed files with 12 additions and 0 deletions

View File

@@ -10,6 +10,9 @@ extern struct swap_info_struct *swap_info[];
extern unsigned long generic_max_swapfile_size(void);
unsigned long arch_max_swapfile_size(void);
extern int unuse_swap_pte(struct vm_area_struct *vma, pmd_t *pmd,
unsigned long addr, swp_entry_t entry, struct folio *folio);
/* Maximum swapfile size supported for the arch (not inclusive). */
extern unsigned long swapfile_maximum_size;
/* Whether swap migration entry supports storing A/D bits for the arch */

View File

@@ -528,6 +528,8 @@ struct page *read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask,
return retpage;
}
EXPORT_SYMBOL_GPL(read_swap_cache_async);
static unsigned int __swapin_nr_pages(unsigned long prev_offset,
unsigned long offset,
int hits,

View File

@@ -1855,6 +1855,13 @@ out:
return ret;
}
int unuse_swap_pte(struct vm_area_struct *vma, pmd_t *pmd,
unsigned long addr, swp_entry_t entry, struct folio *folio)
{
return unuse_pte(vma, pmd, addr, entry, folio);
}
EXPORT_SYMBOL_GPL(unuse_swap_pte);
static int unuse_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
unsigned long addr, unsigned long end,
unsigned int type)