All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heiko Carstens <hca@linux.ibm.com>
To: Kairui Song <kasong@tencent.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: Mon, 28 Apr 2025 15:52:52 +0200	[thread overview]
Message-ID: <20250428135252.25453B17-hca@linux.ibm.com> (raw)
In-Reply-To: <20250313165935.63303-7-ryncsn@gmail.com>

Hi Kairui,

On Fri, Mar 14, 2025 at 12:59:34AM +0800, Kairui Song wrote:
> From: Kairui Song <kasong@tencent.com>
> 
> Slot cache is no longer needed now, removing it and all related code.
...
> Signed-off-by: Kairui Song <kasong@tencent.com>
> Reviewed-by: Baoquan He <bhe@redhat.com>
> ---
>  include/linux/swap.h       |   3 -
>  include/linux/swap_slots.h |  28 ----
>  mm/Makefile                |   2 +-
>  mm/swap_slots.c            | 295 -------------------------------------
>  mm/swap_state.c            |   8 +-
>  mm/swapfile.c              | 194 ++++++++----------------
>  6 files changed, 67 insertions(+), 463 deletions(-)
>  delete mode 100644 include/linux/swap_slots.h
>  delete mode 100644 mm/swap_slots.c
...
> diff --git a/mm/swapfile.c b/mm/swapfile.c
...
> +swp_entry_t folio_alloc_swap(struct folio *folio)
>  {
> -	int order = swap_entry_order(entry_order);
> -	unsigned long size = 1 << order;
> +	unsigned int order = folio_order(folio);
> +	unsigned int size = 1 << order;
>  	struct swap_info_struct *si, *next;
> -	int n_ret = 0;
> +	swp_entry_t entry = {};
> +	unsigned long offset;
>  	int node;
>  
> +	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;
> +		}
> +	}

This warning triggers on s390. CONFIG_THP_SWAP is disabled and order
is 8 when this triggers (reproduced with ltp's swapon01 test case):

------------[ cut here ]------------
WARNING: CPU: 1 PID: 895 at mm/swapfile.c:1227 folio_alloc_swap+0x438/0x440
Modules linked in:
CPU: 1 UID: 0 PID: 895 Comm: swapon01 Not tainted 6.14.0-rc6-00227-g0ff67f990bd4-dirty #25
Hardware name: IBM 3931 A01 704 (z/VM 7.4.0)
Krnl PSW : 0704d00180000000 000003ffe051210c (folio_alloc_swap+0x43c/0x440)
           R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:1 PM:0 RI:0 EA:3
Krnl GPRS: 0000000080000000 0000000000000001 0000000000000013 0000000000070000
           0000000000000006 fffffef40e9da000 0000000000000000 0000037202fc4000
           0000037f00000100 0000000000000100 0000037fe2e4b770 0000037202fc4000
           0000000000000000 0000000000000000 000003ffe0512108 0000037fe2e4b3c8
Krnl Code: 000003ffe05120fe: b9160044            llgfr   %r4,%r4
           000003ffe0512102: c0e5ffdf8c0b        brasl   %r14,000003ffe0103918
          #000003ffe0512108: af000000            mc      0,0
          >000003ffe051210c: a7f4fe94            brc     15,000003ffe0511e34
           000003ffe0512110: c0040069ce74        brcl    0,000003ffe124bdf8
           000003ffe0512116: eb8ff0580024        stmg    %r8,%r15,88(%r15)
           000003ffe051211c: b90400ef            lgr     %r14,%r15
           000003ffe0512120: e3f0ffb8ff71        lay     %r15,-72(%r15)
Call Trace:
 [<000003ffe051210c>] folio_alloc_swap+0x43c/0x440 
 [<000003ffe050afa6>] add_to_swap+0x56/0xf0 
 [<000003ffe045fdc0>] shrink_folio_list+0xe80/0x13b0 
 [<000003ffe0461946>] shrink_inactive_list+0x1a6/0x550 
 [<000003ffe04624a2>] shrink_lruvec+0x2b2/0x410 
 [<000003ffe0462840>] shrink_node_memcgs+0x240/0x2d0 
 [<000003ffe0462986>] shrink_node+0xb6/0x3e0 
 [<000003ffe046302a>] do_try_to_free_pages+0xda/0x610 
 [<000003ffe0464d2c>] try_to_free_mem_cgroup_pages+0x14c/0x2a0 
 [<000003ffe0568270>] try_charge_memcg+0x220/0x5d0 
 [<000003ffe056867a>] charge_memcg+0x5a/0x270 
 [<000003ffe056a484>] __mem_cgroup_charge+0x44/0x80 
 [<000003ffe04acf20>] alloc_anon_folio+0x280/0x610 
 [<000003ffe04ad45a>] do_anonymous_page+0x1aa/0x5e0 
 [<000003ffe04af4c4>] __handle_mm_fault+0x244/0x500 
 [<000003ffe04af820>] handle_mm_fault+0xa0/0x170 
 [<000003ffe01533f8>] do_exception+0x1d8/0x4a0 
 [<000003ffe11fb92a>] __do_pgm_check+0x13a/0x220 
 [<000003ffe120c3ce>] pgm_check_handler+0x11e/0x170 
---[ end trace 0000000000000000 ]---

  reply	other threads:[~2025-04-28 13:53 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 [this message]
2025-04-28 15:31     ` Kairui Song
2025-04-29  7:31       ` Heiko Carstens
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=20250428135252.25453B17-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=kasong@tencent.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=nphamcs@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.