vmscan.c (f2bb566f5c977ff010baaa9e5e14d9a75b06e5f2) | vmscan.c (4aaf269c768dbacd6268af73fda2ffccaa3f1d88) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds 4 * 5 * Swap reorganised 29.12.95, Stephen Tweedie. 6 * kswapd added: 7.1.96 sct 7 * Removed kswapd_ctl limits, and swap out as many pages as needed 8 * to bring the system back to freepages.high: 2.4.97, Rik van Riel. --- 3973 unchanged lines hidden (view full) --- 3982 struct folio *folio; 3983 unsigned long addr = i ? (*start & PMD_MASK) + i * PMD_SIZE : *start; 3984 3985 pfn = get_pmd_pfn(pmd[i], vma, addr); 3986 if (pfn == -1) 3987 goto next; 3988 3989 if (!pmd_trans_huge(pmd[i])) { | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds 4 * 5 * Swap reorganised 29.12.95, Stephen Tweedie. 6 * kswapd added: 7.1.96 sct 7 * Removed kswapd_ctl limits, and swap out as many pages as needed 8 * to bring the system back to freepages.high: 2.4.97, Rik van Riel. --- 3973 unchanged lines hidden (view full) --- 3982 struct folio *folio; 3983 unsigned long addr = i ? (*start & PMD_MASK) + i * PMD_SIZE : *start; 3984 3985 pfn = get_pmd_pfn(pmd[i], vma, addr); 3986 if (pfn == -1) 3987 goto next; 3988 3989 if (!pmd_trans_huge(pmd[i])) { |
3990 if (IS_ENABLED(CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG) && | 3990 if (arch_has_hw_nonleaf_pmd_young() && |
3991 get_cap(LRU_GEN_NONLEAF_YOUNG)) 3992 pmdp_test_and_clear_young(vma, addr, pmd + i); 3993 goto next; 3994 } 3995 3996 folio = get_pfn_folio(pfn, memcg, pgdat, walk->can_swap); 3997 if (!folio) 3998 goto next; --- 81 unchanged lines hidden (view full) --- 4080 continue; 4081 4082 walk_pmd_range_locked(pud, addr, vma, args, bitmap, &pos); 4083 continue; 4084 } 4085#endif 4086 walk->mm_stats[MM_NONLEAF_TOTAL]++; 4087 | 3991 get_cap(LRU_GEN_NONLEAF_YOUNG)) 3992 pmdp_test_and_clear_young(vma, addr, pmd + i); 3993 goto next; 3994 } 3995 3996 folio = get_pfn_folio(pfn, memcg, pgdat, walk->can_swap); 3997 if (!folio) 3998 goto next; --- 81 unchanged lines hidden (view full) --- 4080 continue; 4081 4082 walk_pmd_range_locked(pud, addr, vma, args, bitmap, &pos); 4083 continue; 4084 } 4085#endif 4086 walk->mm_stats[MM_NONLEAF_TOTAL]++; 4087 |
4088#ifdef CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG 4089 if (get_cap(LRU_GEN_NONLEAF_YOUNG)) { | 4088 if (arch_has_hw_nonleaf_pmd_young() && 4089 get_cap(LRU_GEN_NONLEAF_YOUNG)) { |
4090 if (!pmd_young(val)) 4091 continue; 4092 4093 walk_pmd_range_locked(pud, addr, vma, args, bitmap, &pos); 4094 } | 4090 if (!pmd_young(val)) 4091 continue; 4092 4093 walk_pmd_range_locked(pud, addr, vma, args, bitmap, &pos); 4094 } |
4095#endif | 4095 |
4096 if (!walk->force_scan && !test_bloom_filter(walk->lruvec, walk->max_seq, pmd + i)) 4097 continue; 4098 4099 walk->mm_stats[MM_NONLEAF_FOUND]++; 4100 4101 if (!walk_pte_range(&val, addr, next, args)) 4102 continue; 4103 --- 1283 unchanged lines hidden (view full) --- 5387 unsigned int caps = 0; 5388 5389 if (get_cap(LRU_GEN_CORE)) 5390 caps |= BIT(LRU_GEN_CORE); 5391 5392 if (arch_has_hw_pte_young() && get_cap(LRU_GEN_MM_WALK)) 5393 caps |= BIT(LRU_GEN_MM_WALK); 5394 | 4096 if (!walk->force_scan && !test_bloom_filter(walk->lruvec, walk->max_seq, pmd + i)) 4097 continue; 4098 4099 walk->mm_stats[MM_NONLEAF_FOUND]++; 4100 4101 if (!walk_pte_range(&val, addr, next, args)) 4102 continue; 4103 --- 1283 unchanged lines hidden (view full) --- 5387 unsigned int caps = 0; 5388 5389 if (get_cap(LRU_GEN_CORE)) 5390 caps |= BIT(LRU_GEN_CORE); 5391 5392 if (arch_has_hw_pte_young() && get_cap(LRU_GEN_MM_WALK)) 5393 caps |= BIT(LRU_GEN_MM_WALK); 5394 |
5395 if (IS_ENABLED(CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG) && get_cap(LRU_GEN_NONLEAF_YOUNG)) | 5395 if (arch_has_hw_nonleaf_pmd_young() && get_cap(LRU_GEN_NONLEAF_YOUNG)) |
5396 caps |= BIT(LRU_GEN_NONLEAF_YOUNG); 5397 5398 return snprintf(buf, PAGE_SIZE, "0x%04x\n", caps); 5399} 5400 5401/* see Documentation/admin-guide/mm/multigen_lru.rst for details */ 5402static ssize_t store_enabled(struct kobject *kobj, struct kobj_attribute *attr, 5403 const char *buf, size_t len) --- 2361 unchanged lines hidden --- | 5396 caps |= BIT(LRU_GEN_NONLEAF_YOUNG); 5397 5398 return snprintf(buf, PAGE_SIZE, "0x%04x\n", caps); 5399} 5400 5401/* see Documentation/admin-guide/mm/multigen_lru.rst for details */ 5402static ssize_t store_enabled(struct kobject *kobj, struct kobj_attribute *attr, 5403 const char *buf, size_t len) --- 2361 unchanged lines hidden --- |