From: Heiko Carstens <hca@linux.ibm.com>
To: Kairui Song <ryncsn@gmail.com>
Cc: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
Chris Li <chrisl@kernel.org>, Barry Song <v-songbaohua@oppo.com>,
Hugh Dickins <hughd@google.com>,
Yosry Ahmed <yosryahmed@google.com>,
"Huang, Ying" <ying.huang@linux.alibaba.com>,
Baoquan He <bhe@redhat.com>, Nhat Pham <nphamcs@gmail.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Kalesh Singh <kaleshsingh@google.com>,
Matthew Wilcox <willy@infradead.org>,
linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org
Subject: Re: [PATCH v3 6/7] mm, swap: remove swap slot cache
Date: Tue, 29 Apr 2025 09:31:22 +0200 [thread overview]
Message-ID: <20250429073122.8629Bfd-hca@linux.ibm.com> (raw)
In-Reply-To: <CAMgjq7CJO-GdmZGN7_xG6gtneAv3Wv8qv6FjE9udh18_qmCgRA@mail.gmail.com>
On Mon, Apr 28, 2025 at 11:31:59PM +0800, Kairui Song wrote:
> On Mon, Apr 28, 2025 at 9:53 PM Heiko Carstens <hca@linux.ibm.com> wrote:
> > > + if (order) {
> > > + /*
> > > + * Should not even be attempting large allocations when huge
> > > + * page swap is disabled. Warn and fail the allocation.
> > > + */
> > > + if (!IS_ENABLED(CONFIG_THP_SWAP) || size > SWAPFILE_CLUSTER) {
> > > + VM_WARN_ON_ONCE(1);
> > > + return entry;
> > > + }
> > > + }
>
> The !CONFIG_THP_SWAP check existed before because slot cache should
> reject high order allocation. But slot cache is gone, so large
> allocation will directly go to the allocator.
>
> It was not a meaningful WARN in the first place, and now the allocator
> should just fail silently for high order allocation, that's totally
> fine and expected and will just inform the caller to split the folio.
>
> I'll just change the WARN_ON condition to `if (order && size >
> SWAPFILE_CLUSTER)` then, this should silence the WARN.
If I understand your suggestion correctly then this would be the
resulting code:
diff --git a/mm/swapfile.c b/mm/swapfile.c
index 2eff8b51a945..5a7797143948 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -1276,7 +1276,7 @@ int folio_alloc_swap(struct folio *folio, gfp_t gfp)
* Should not even be attempting large allocations when huge
* page swap is disabled. Warn and fail the allocation.
*/
- if (order && (!IS_ENABLED(CONFIG_THP_SWAP) || size > SWAPFILE_CLUSTER)) {
+ if (order && size > SWAPFILE_CLUSTER) {
VM_WARN_ON_ONCE(1);
return -EINVAL;
}
However, with that change I get this splat (and a few more) instead:
------------[ cut here ]------------
DEBUG_LOCKS_WARN_ON(l->owner != current)
WARNING: CPU: 4 PID: 934 at ./include/linux/local_lock_internal.h:52 folio_alloc_swap+0x22e/0x560
Modules linked in:
CPU: 4 UID: 0 PID: 934 Comm: swapon01 Not tainted 6.15.0-rc4-00021-gca91b9500108-dirty #2 PREEMPT
Hardware name: IBM 3931 A01 704 (z/VM 7.4.0)
Krnl PSW : 0704f00180000000 000003ffe05231b2 (folio_alloc_swap+0x232/0x560)
R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:3 PM:0 RI:0 EA:3
Krnl GPRS: 000003ff80000002 0000000000000003 0000000000000028 000003ffe2fe6c90
0000000000000003 000003ff80000003 000003ffe19fc538 000003720322c000
0000000000000000 000002f2ab38f000 000002f200000100 000003720322c000
0000000000000000 000002f3f0eda278 000003ffe05231ae 0000037febbdb3f8
Krnl Code: 000003ffe05231a2: c020008e69bc larl %r2,000003ffe16f051a
000003ffe05231a8: c0e5ffe2f4dc brasl %r14,000003ffe0181b60
#000003ffe05231ae: af000000 mc 0,0
>000003ffe05231b2: a7f4ff92 brc 15,000003ffe05230d6
000003ffe05231b6: a7080001 lhi %r0,1
000003ffe05231ba: a7a80001 lhi %r10,1
000003ffe05231be: a7980000 lhi %r9,0
000003ffe05231c2: a7f4ff04 brc 15,000003ffe0522fca
Call Trace:
[<000003ffe05231b2>] folio_alloc_swap+0x232/0x560
[<000003ffe046d2d2>] shrink_folio_list+0xe02/0x12d0
[<000003ffe046edc8>] shrink_inactive_list+0x188/0x5a0
[<000003ffe046f7d4>] shrink_lruvec+0x104/0x400
[<000003ffe046fd0c>] shrink_node_memcgs+0x23c/0x2c0
[<000003ffe046fe3a>] shrink_node+0xaa/0x420
[<000003ffe0470500>] do_try_to_free_pages+0xd0/0x5c0
[<000003ffe0472144>] try_to_free_mem_cgroup_pages+0x144/0x290
[<000003ffe057b33a>] try_charge_memcg+0x1ca/0x420
[<000003ffe057b5ea>] charge_memcg+0x5a/0x1a0
[<000003ffe057d5d4>] __mem_cgroup_charge+0x44/0x160
[<000003ffe04bb6ac>] alloc_anon_folio+0x27c/0x5d0
[<000003ffe04bbbac>] do_anonymous_page+0x1ac/0x7b0
[<000003ffe04bdec2>] __handle_mm_fault+0x212/0x4c0
[<000003ffe04be20c>] handle_mm_fault+0x9c/0x230
[<000003ffe015422c>] do_exception+0x1dc/0x540
[<000003ffe125c560>] __do_pgm_check+0x130/0x220
[<000003ffe126e3ae>] pgm_check_handler+0x11e/0x170
INFO: lockdep is turned off.
Last Breaking-Event-Address:
[<000003ffe0181c96>] __warn_printk+0x136/0x140
irq event stamp: 4120751
hardirqs last enabled at (4120751): [<000003ffe126d0ee>] _raw_spin_unlock_irq+0x3e/0x80
hardirqs last disabled at (4120750): [<000003ffe126cca8>] _raw_spin_lock_irq+0x98/0xd0
softirqs last enabled at (4104986): [<000003ffe018c1fc>] handle_softirqs+0x2fc/0x550
softirqs last disabled at (4104969): [<000003ffe018b9c6>] __irq_exit_rcu+0x126/0x140
---[ end trace 0000000000000000 ]---
next prev parent reply other threads:[~2025-04-29 7:31 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-13 16:59 [PATCH v3 0/7] mm, swap: remove swap slot cache Kairui Song
2025-03-13 16:59 ` [PATCH v3 1/7] mm, swap: avoid reclaiming irrelevant swap cache Kairui Song
2025-03-13 16:59 ` [PATCH v3 2/7] mm, swap: drop the flag TTRS_DIRECT Kairui Song
2025-03-13 16:59 ` [PATCH v3 3/7] mm, swap: avoid redundant swap device pinning Kairui Song
2025-03-13 16:59 ` [PATCH v3 4/7] mm, swap: don't update the counter up-front Kairui Song
2025-03-13 16:59 ` [PATCH v3 5/7] mm, swap: use percpu cluster as allocation fast path Kairui Song
2025-03-13 16:59 ` [PATCH v3 6/7] mm, swap: remove swap slot cache Kairui Song
2025-04-28 13:52 ` Heiko Carstens
2025-04-28 15:31 ` Kairui Song
2025-04-29 7:31 ` Heiko Carstens [this message]
2025-04-29 9:28 ` Kairui Song
2025-03-13 16:59 ` [PATCH v3 7/7] mm, swap: simplify folio swap allocation Kairui Song
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250429073122.8629Bfd-hca@linux.ibm.com \
--to=hca@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=bhe@redhat.com \
--cc=chrisl@kernel.org \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=kaleshsingh@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-s390@vger.kernel.org \
--cc=nphamcs@gmail.com \
--cc=ryncsn@gmail.com \
--cc=v-songbaohua@oppo.com \
--cc=willy@infradead.org \
--cc=ying.huang@linux.alibaba.com \
--cc=yosryahmed@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.