diff options
| author | Andrew Morton <akpm@linux-foundation.org> | 2026-01-31 14:20:03 -0800 |
|---|---|---|
| committer | Andrew Morton <akpm@linux-foundation.org> | 2026-01-31 14:20:03 -0800 |
| commit | f84b65b045f186b8fbaa32e090688ef3282b56c3 (patch) | |
| tree | 4c1e51b960d36e30b72b0c3c110ecee1a7821133 /mm/mm_init.c | |
| parent | 6fe0e6d599a6bb4b65704285d40d4972423b7aaa (diff) | |
| parent | bd58782995a2e6a07fd07255f3cc319f40b131c9 (diff) | |
| download | linux-next-f84b65b045f186b8fbaa32e090688ef3282b56c3.tar.gz linux-next-f84b65b045f186b8fbaa32e090688ef3282b56c3.zip | |
Merge branch 'mm-hotfixes-stable' into mm-stable to pick up "mm/shmem,
swap: fix race of truncate and swap entry split", needed for merging "mm,
swap: cleanup swap entry management workflow".
Diffstat (limited to 'mm/mm_init.c')
| -rw-r--r-- | mm/mm_init.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/mm/mm_init.c b/mm/mm_init.c index 0cfbdef91d72..1a29a719af58 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -2053,7 +2053,7 @@ static unsigned long __init deferred_init_pages(struct zone *zone, */ static unsigned long __init deferred_init_memmap_chunk(unsigned long start_pfn, unsigned long end_pfn, - struct zone *zone) + struct zone *zone, bool can_resched) { int nid = zone_to_nid(zone); unsigned long nr_pages = 0; @@ -2079,10 +2079,10 @@ deferred_init_memmap_chunk(unsigned long start_pfn, unsigned long end_pfn, spfn = chunk_end; - if (irqs_disabled()) - touch_nmi_watchdog(); - else + if (can_resched) cond_resched(); + else + touch_nmi_watchdog(); } } @@ -2095,7 +2095,7 @@ deferred_init_memmap_job(unsigned long start_pfn, unsigned long end_pfn, { struct zone *zone = arg; - deferred_init_memmap_chunk(start_pfn, end_pfn, zone); + deferred_init_memmap_chunk(start_pfn, end_pfn, zone, true); } static unsigned int __init @@ -2210,7 +2210,7 @@ bool __init deferred_grow_zone(struct zone *zone, unsigned int order) for (spfn = first_deferred_pfn, epfn = SECTION_ALIGN_UP(spfn + 1); nr_pages < nr_pages_needed && spfn < zone_end_pfn(zone); spfn = epfn, epfn += PAGES_PER_SECTION) { - nr_pages += deferred_init_memmap_chunk(spfn, epfn, zone); + nr_pages += deferred_init_memmap_chunk(spfn, epfn, zone, false); } /* |
