From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 46D2ED35E5D for ; Wed, 6 Nov 2024 02:10:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D4BD46B008C; Tue, 5 Nov 2024 21:10:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id CD36B6B0096; Tue, 5 Nov 2024 21:10:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B4DB56B00A3; Tue, 5 Nov 2024 21:10:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 927FE6B008C for ; Tue, 5 Nov 2024 21:10:45 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 533B7141A24 for ; Wed, 6 Nov 2024 02:10:45 +0000 (UTC) X-FDA: 82754040642.23.BBC9A23 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf08.hostedemail.com (Postfix) with ESMTP id 2558D160022 for ; Wed, 6 Nov 2024 02:10:20 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=HdKDaL4J; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf08.hostedemail.com: domain of sashal@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sashal@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730858960; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=QBeMZLI/h91yz63JyAQr868T0F3I90Th2uMAnjRzOr4=; b=6dQE5t+nJDGw/PpjwHl9lw7brM3xR8K3Uicc5v1GNKnI9QOVotBGQiSrqL0YBrHb53lauE Bss3qNnyGb325JpMN/eJThmvjFQFILOEalk7KvVjGEL9op6KYaG6YcPNiY1rbT9HrwGVF6 bGeR/f+paSWRmiYGUmkTBKcrQe7fMcw= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=HdKDaL4J; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf08.hostedemail.com: domain of sashal@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sashal@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730858960; a=rsa-sha256; cv=none; b=Uahg8P6ompKGRf9+mJPS3xT9a3A2LhEYAHQe7odMAmytKEQ4qMBZvBmGamzxKFqqx6zZno T9ZURxcEdaGVZ3PO7oWlqQPvLXJSG0AMLdkSqfMwn0zNmNBX0a6mDfjMiIlzqFOQgX+PFQ /Q95gDVhnUkqfoePm6BW/kewrvLlAP8= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 058805C10AE; Wed, 6 Nov 2024 02:09:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C58CBC4CECF; Wed, 6 Nov 2024 02:10:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1730859042; bh=YOEqtlHUrsf/XjbfMYojjf6Vm6w7CDFWN9jC0lFdV3g=; h=From:To:Cc:Subject:Date:From; b=HdKDaL4JqOa9xl03uN7cqkDSAJVHizwjU4nKzG8GyN0bqjD0yngQIqudLBY5gPWZN C92lWzYu0ptrWJzTFD3SrgfqkRk/TkjvVZOjedTb2nGoWSg+bQ6b6tN2CsLZXdIFvo s/INBeFSKir9b7TR6zXLPdNkThNx8Tbu0y3GURCRS0d0RI+wZJWn/XyBP9vh0T00if HlW2twYrIsp5+stHrkR82cwzhgssVMxTk8OXDDRPfN5pQ08gPS9Og/Twkhxe+ytxwt 2+bEmTn28lN519yEY3cOFeyqa7nrWRC4AYj7XM+onf82KAlaCvQI9XwQneFRMopQ7D F41tbDNXfG8QA== From: Sasha Levin To: stable@vger.kernel.org, baohua@kernel.org Cc: Barry Song , Oven Liyang , Kairui Song , "Huang, Ying" , Yu Zhao , David Hildenbrand , Chris Li , Hugh Dickins , Johannes Weiner , Matthew Wilcox , Michal Hocko , Minchan Kim , Yosry Ahmed , SeongJae Park , Kalesh Singh , Suren Baghdasaryan , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: FAILED: Patch "mm: avoid unconditional one-tick sleep when swapcache_prepare fails" failed to apply to v6.1-stable tree Date: Tue, 5 Nov 2024 21:10:37 -0500 Message-ID: <20241106021038.181730-1-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Patchwork-Hint: ignore X-stable: review Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 2558D160022 X-Stat-Signature: u5c85hn859fwmzkegxu31ey46hxs8wi5 X-HE-Tag: 1730859020-828217 X-HE-Meta: U2FsdGVkX19+GRGENCS15kC4Nc+b8/Z1/PGvP/kZTT1McR7+hhn+wJP+K7SBg+or8+Abn8TE2CHPCIyX8YlrDk9PqIRTZTfwiloXw2+sabCgyJ5YzSvTyHIA0FipR0Dfpt5kkUiBaIRo/jDyP/ix44AtCPAz7ChxWKS1FbJjcsrxPT7QSoPmcyYImuoCbArikneZoMdD+KYH95iK8canp5UtMjcJKcH8D01zuS9g05+oSgyGEy76JAoTxaMw86dUZiJtRK7UauT5fDL++G1FS5mfG6Fp5+Z11vco9YFBMKab+vmiCfEE/CYLTRB5cEUQFGBt+QC3O9KjnwjYLMrL7uw0VUVtGQYulbl0Kw4AKq8gydmCN91r204n3p4Egjf6HEVlr89Q6BzIZTeSPaYjopn/q70MrFj/9GCt7xKkWxvS7XQyMxCCvMJ5TEyht+0J0Jn4EiFvEGf4GpzajI1bLjzGCPrsOx7Y1wZEG5gWuuWnfSlq/9D4Nprg8imnf+nMeooyZDzhFVpWCgkkN5gBQ6SvRvO809/9vS1h9I9Js1xzDwysW1wyW8bStBTDYVBcyKcX9O4eM7ZHGmC2J4GV2lDuaSLYI6OIRIDvAVz/0sgcNCJiUfHPHuIFyh3JeIH2UfQYdIPVgooCapdmVrGO/s1iT7qYsis7QadjR6+2+CRGlU+jVN2ahkek+lCGvjyIlxxfCVNm2Y3uguMJxa5uCW92OFaknKZqISEwWtJyOEjQGd+muySTErEUTx7rysniN/g8J+PZr1/6Hl5b+6Yf7rYtJoMjwblW63yAXnN1x3b0k9WDfZRVB++FQmVmxtYJ4G0CSoKMNsWDpjSPBo33kawrvIr6BBi7SM3d34PG8yxezwvp83j5QtXBR5LGljLOwYvIcQbCDYHwFe+WMxx1oUNkK+2EU9thK8EVyACGt3kna3+s40JUc8ruZXhspZUMBKSw4FyWCmsXEdobf/7 1xlfm8HM XPNFS7qpSDyDiqAx887q1247nvMW1JIKs/jgmXuSbtSossvbvwRo6nN7xRTdXsIcOxAYlp8wiYehRzxGj6IRStiOSyLIzJSJRBnVYmenxTxaDozO3Z1fRdrS4BZm/B3Ybq5ExisVhhJVLpfO+MoQPrpFGMSx+f+5MvzxsUW9U3X238wJ0C+4+UwWy9CZ69wYrsJmrpbIXQZ5gvtaDIZxlTTYVaWF6Mvgw2TrVyxHotYegO3U7Br6C0iOK5b8/7f0vruenco4osu8HfBntSa0fLbZftckis4C01W/Fp2sN3cuFj+wbSYZwmmEIB/Aj5nL2WUu7rAwXsFpzbwTL7IUdaNipfc7ZmhfHlsNoRVyGfK5dxvjiY4kXV/jeOP99zDgt3dfTl5dKrsiseovk+RKrqDzFrTm+45hSOIaFwKFZ5YOSJK9avm4jfBNEy+w5mYqaye3lIXibMEBJYgC3q/c7avF55oEut7w9K80guQgoMniEYQo1edG2e9gdIjT1N5rTtQLZeFNmo6nWxCjMXFKfqcLYlRceQkHnYmVtZsTzEDKToYGwectIe+x2NHyijbkTZtgeQr2+AP4uSGX+bpFZKV4VMBw4nxTxjKbXv5x6KpF5gNXsxcS92VveBTGKJ9RnouxKI0Tk/eVesyprmqnnXmL/8Q== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: The patch below does not apply to the v6.1-stable tree. If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to . Thanks, Sasha ------------------ original commit in Linus's tree ------------------ >From 01626a18230246efdcea322aa8f067e60ffe5ccd Mon Sep 17 00:00:00 2001 From: Barry Song Date: Fri, 27 Sep 2024 09:19:36 +1200 Subject: [PATCH] mm: avoid unconditional one-tick sleep when swapcache_prepare fails Commit 13ddaf26be32 ("mm/swap: fix race when skipping swapcache") introduced an unconditional one-tick sleep when `swapcache_prepare()` fails, which has led to reports of UI stuttering on latency-sensitive Android devices. To address this, we can use a waitqueue to wake up tasks that fail `swapcache_prepare()` sooner, instead of always sleeping for a full tick. While tasks may occasionally be woken by an unrelated `do_swap_page()`, this method is preferable to two scenarios: rapid re-entry into page faults, which can cause livelocks, and multiple millisecond sleeps, which visibly degrade user experience. Oven's testing shows that a single waitqueue resolves the UI stuttering issue. If a 'thundering herd' problem becomes apparent later, a waitqueue hash similar to `folio_wait_table[PAGE_WAIT_TABLE_SIZE]` for page bit locks can be introduced. [v-songbaohua@oppo.com: wake_up only when swapcache_wq waitqueue is active] Link: https://lkml.kernel.org/r/20241008130807.40833-1-21cnbao@gmail.com Link: https://lkml.kernel.org/r/20240926211936.75373-1-21cnbao@gmail.com Fixes: 13ddaf26be32 ("mm/swap: fix race when skipping swapcache") Signed-off-by: Barry Song Reported-by: Oven Liyang Tested-by: Oven Liyang Cc: Kairui Song Cc: "Huang, Ying" Cc: Yu Zhao Cc: David Hildenbrand Cc: Chris Li Cc: Hugh Dickins Cc: Johannes Weiner Cc: Matthew Wilcox (Oracle) Cc: Michal Hocko Cc: Minchan Kim Cc: Yosry Ahmed Cc: SeongJae Park Cc: Kalesh Singh Cc: Suren Baghdasaryan Cc: Signed-off-by: Andrew Morton --- mm/memory.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 3ccee51adfbbd..bdf77a3ec47bc 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -4187,6 +4187,8 @@ static struct folio *alloc_swap_folio(struct vm_fault *vmf) } #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ +static DECLARE_WAIT_QUEUE_HEAD(swapcache_wq); + /* * We enter with non-exclusive mmap_lock (to exclude vma changes, * but allow concurrent faults), and pte mapped but not yet locked. @@ -4199,6 +4201,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) { struct vm_area_struct *vma = vmf->vma; struct folio *swapcache, *folio = NULL; + DECLARE_WAITQUEUE(wait, current); struct page *page; struct swap_info_struct *si = NULL; rmap_t rmap_flags = RMAP_NONE; @@ -4297,7 +4300,9 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) * Relax a bit to prevent rapid * repeated page faults. */ + add_wait_queue(&swapcache_wq, &wait); schedule_timeout_uninterruptible(1); + remove_wait_queue(&swapcache_wq, &wait); goto out_page; } need_clear_cache = true; @@ -4604,8 +4609,11 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) pte_unmap_unlock(vmf->pte, vmf->ptl); out: /* Clear the swap cache pin for direct swapin after PTL unlock */ - if (need_clear_cache) + if (need_clear_cache) { swapcache_clear(si, entry, nr_pages); + if (waitqueue_active(&swapcache_wq)) + wake_up(&swapcache_wq); + } if (si) put_swap_device(si); return ret; @@ -4620,8 +4628,11 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) folio_unlock(swapcache); folio_put(swapcache); } - if (need_clear_cache) + if (need_clear_cache) { swapcache_clear(si, entry, nr_pages); + if (waitqueue_active(&swapcache_wq)) + wake_up(&swapcache_wq); + } if (si) put_swap_device(si); return ret; -- 2.43.0