Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:mm\huge_memory.c Create Date:2022-07-28 16:02:42
Last Modify:2020-03-12 14:18:49 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:__split_huge_pmd

Proto:void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, unsigned long address, bool freeze, struct page *page)

Type:void

Parameter:

TypeParameterName
struct vm_area_struct *vma
pmd_t *pmd
unsigned longaddress
boolfreeze
struct page *page
2306  mmu_notifier_range_init( & range, MMU_NOTIFY_CLEAR, 0, vma, The address space we belong to. , address & HPAGE_PMD_MASK, (address & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE)
2309  mmu_notifier_invalidate_range_start( & range)
2310  ptl = pmd_lock(The address space we belong to. , pmd)
2316  VM_BUG_ON(freeze && !page)
2317  If page && page != Currently stuck as a macro due to indirect forward reference to* linux/mmzone.h's __section_mem_map_addr() definition:( * pmd) Then Go to out
2320  If pmd_trans_huge( * pmd) Then
2321  page = Currently stuck as a macro due to indirect forward reference to* linux/mmzone.h's __section_mem_map_addr() definition:( * pmd)
2322  If PageMlocked(page) Then LRU accounting for clear_page_mlock()
2324  Else if Not (pmd_devmap( * pmd) || is_pmd_migration_entry( * pmd)) Then Go to out
2326  __split_huge_pmd_locked(vma, pmd, start, freeze)
2327  out :
2328  spin_unlock(ptl)
2342  mmu_notifier_invalidate_range_only_end( & range)
Caller
NameDescribe
wp_huge_pmd`inline' is required to avoid gcc 4.1.2 build error
change_pmd_range
queue_pages_pmdqueue_pages_pmd() has four possible return values:* 0 - pages are placed on the right node or queued successfully
split_huge_pmd_address