mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
mm/khugepaged: rename mthp_present_ptes bitmap to eligible_ptes
The name says less than the bit means. A set bit means not only that the PTE is present, but also that it passed the other checks: uffd, lazyfree, anonymity, sharing. The PTE can be considered a collapse source. mthp_collapse() then reads the bitmap starting at the PMD order, so the bitmap is not specific to mTHP either. Name it for what a set bit means, and update the comments that named it. No functional change. Link: https://lore.kernel.org/20261014171145.3292736-4-kas@kernel.org Signed-off-by: Kiryl Shutsemau (Meta) <kas@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Acked-by: David Hildenbrand (Arm) <david@kernel.org> Reviewed-by: Zi Yan <ziy@nvidia.com> Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com> Reviewed-by: Lance Yang <lance.yang@linux.dev> Assisted-by: LLM Cc: Lorenzo Stoakes <ljs@kernel.org> Cc: Liam R. Howlett <liam@infradead.org> Cc: Nico Pache <nico.pache@linux.dev> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: Dev Jain <dev.jain@arm.com> Cc: Barry Song <baohua@kernel.org> Cc: Usama Arif <usama.arif@linux.dev> Cc: Vlastimil Babka <vbabka@kernel.org> Cc: Jann Horn <jannh@google.com>
This commit is contained in:
parent
47cda827a0
commit
d950ec79fc
|
|
@ -115,8 +115,8 @@ struct collapse_control {
|
|||
/* nodemask for allocation fallback */
|
||||
nodemask_t alloc_nmask;
|
||||
|
||||
/* Each bit represents a single occupied (!none/zero) page. */
|
||||
DECLARE_BITMAP(mthp_present_ptes, MAX_PTRS_PER_PTE);
|
||||
/* Each bit marks a PTE the scan accepted as a collapse source */
|
||||
DECLARE_BITMAP(eligible_ptes, MAX_PTRS_PER_PTE);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -627,7 +627,7 @@ static void collapse_control_init_scan(struct collapse_control *cc)
|
|||
{
|
||||
memset(cc->node_load, 0, sizeof(cc->node_load));
|
||||
nodes_clear(cc->alloc_nmask);
|
||||
bitmap_zero(cc->mthp_present_ptes, MAX_PTRS_PER_PTE);
|
||||
bitmap_zero(cc->eligible_ptes, MAX_PTRS_PER_PTE);
|
||||
}
|
||||
|
||||
static void release_pte_folio(struct folio *folio)
|
||||
|
|
@ -1512,15 +1512,15 @@ static unsigned int max_order_from_offset(unsigned int offset)
|
|||
* mthp_collapse() consumes the bitmap that is generated during
|
||||
* collapse_scan_pmd() to determine what regions and mTHP orders fit best.
|
||||
*
|
||||
* Each bit in cc->mthp_present_ptes represents a single occupied (!none/zero)
|
||||
* page. We start at the PMD order and check if it is eligible for collapse;
|
||||
* Each bit in cc->eligible_ptes marks a PTE the scan accepted as a collapse
|
||||
* source. We start at the PMD order and check if it is eligible for collapse;
|
||||
* if not, we check the left and right halves of the PTE page table we are
|
||||
* examining at a lower order.
|
||||
*
|
||||
* For each of these, we determine how many PTE entries are occupied in the
|
||||
* range of PTE entries we propose to collapse, then we compare this to a
|
||||
* threshold number of PTE entries which would need to be occupied for a
|
||||
* collapse to be permitted at that order (accounting for max_ptes_none).
|
||||
* For each of these, we count the eligible PTEs in the range we propose to
|
||||
* collapse, then we compare this to the number of eligible PTEs the range
|
||||
* would need for a collapse to be permitted at that order (accounting for
|
||||
* max_ptes_none).
|
||||
*
|
||||
* If a collapse is permitted, we attempt to collapse the PTE range into a
|
||||
* mTHP.
|
||||
|
|
@ -1529,7 +1529,7 @@ static enum scan_result mthp_collapse(struct mm_struct *mm,
|
|||
unsigned long address, int referenced, int unmapped,
|
||||
struct collapse_control *cc, unsigned long enabled_orders)
|
||||
{
|
||||
unsigned int nr_occupied_ptes, nr_ptes, max_ptes_none;
|
||||
unsigned int nr_eligible_ptes, nr_ptes, max_ptes_none;
|
||||
enum scan_result last_result = SCAN_FAIL;
|
||||
int collapsed = 0;
|
||||
bool alloc_failed = false;
|
||||
|
|
@ -1544,18 +1544,18 @@ static enum scan_result mthp_collapse(struct mm_struct *mm,
|
|||
goto next_order;
|
||||
|
||||
max_ptes_none = collapse_max_ptes_none(cc, NULL, order);
|
||||
nr_occupied_ptes = bitmap_weight_from(cc->mthp_present_ptes, offset,
|
||||
nr_eligible_ptes = bitmap_weight_from(cc->eligible_ptes, offset,
|
||||
offset + nr_ptes);
|
||||
|
||||
/*
|
||||
* Swap PTEs accepted during the scan are counted in @unmapped,
|
||||
* not in the present-PTE bitmap. Account them for the PMD-order
|
||||
* not in cc->eligible_ptes. Account them for the PMD-order
|
||||
* candidate.
|
||||
*/
|
||||
if (is_pmd_order(order))
|
||||
nr_occupied_ptes += unmapped;
|
||||
nr_eligible_ptes += unmapped;
|
||||
|
||||
if (nr_occupied_ptes >= nr_ptes - max_ptes_none) {
|
||||
if (nr_eligible_ptes >= nr_ptes - max_ptes_none) {
|
||||
enum scan_result ret;
|
||||
|
||||
collapse_address = address + offset * PAGE_SIZE;
|
||||
|
|
@ -1761,8 +1761,8 @@ static enum scan_result collapse_scan_pmd(struct mm_struct *mm,
|
|||
}
|
||||
}
|
||||
|
||||
/* Set bit for occupied pages */
|
||||
__set_bit(i, cc->mthp_present_ptes);
|
||||
/* The scan accepted this PTE as a collapse source */
|
||||
__set_bit(i, cc->eligible_ptes);
|
||||
/*
|
||||
* Record which node the original page is from and save this
|
||||
* information to cc->node_load[].
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user