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 0F53CC48BC3 for ; Mon, 19 Feb 2024 06:25:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 79FF06B0081; Mon, 19 Feb 2024 01:25:22 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7293D6B0082; Mon, 19 Feb 2024 01:25:22 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5CA746B0083; Mon, 19 Feb 2024 01:25:22 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 43A4A6B0081 for ; Mon, 19 Feb 2024 01:25:22 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 18897140234 for ; Mon, 19 Feb 2024 06:25:22 +0000 (UTC) X-FDA: 81807566484.24.B261CE8 Received: from out30-118.freemail.mail.aliyun.com (out30-118.freemail.mail.aliyun.com [115.124.30.118]) by imf04.hostedemail.com (Postfix) with ESMTP id 41E4B4000B for ; Mon, 19 Feb 2024 06:25:17 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=I1wonQdM; spf=pass (imf04.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.118 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708323920; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=4e6PzOjHu2rxoIzo+Hqu3hM9J0NeXmb2Cc/9pG/uG3s=; b=EJcljRW8R2OG3eHY3EUu11ZPNkGN5pHkwGus8BXNjCQe+uPB4lXjaZVET9L5PKoMbaraYW xea1kzZF0M8LGSX/dk8VQHikhJBv6TmebDDjXDlg2BhN0y8p/pd70jQfWE76g9GFi/PrIj CBh72SG15MZs+0Myfb9HR6Q9Dl10axg= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=I1wonQdM; spf=pass (imf04.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.118 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708323920; a=rsa-sha256; cv=none; b=8ZJ8KoYaFqKodO+UGV8hXyK+Ha1IJAmky8uFR0GlkYssoUtoRfwxAUM3zbaj2c2po61ZoE pyRLqWmYZQhLjtoE0LKft+N1Wsb/Z26d1s/2uAi22EPs8BS+WA0JHlSqrs3Rjt6IvwzOLf t6SuEQlNL8BOVNqZOYyyu4sL9XYqlfU= DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1708323913; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; bh=4e6PzOjHu2rxoIzo+Hqu3hM9J0NeXmb2Cc/9pG/uG3s=; b=I1wonQdM+h64ocDGSmTO1GQcV2LMtDll0GwTLexJ6Cz+OO5jid6iV0o42xKP3EPERS4rd3cxDNBbN5tkQtTWSzFRC6uw8ZEdDnL+aX7IHOTLo+NlRCtUC41lNCOmORJ2EQ/yDxw6LLZ3JL4+QoS/2po6w3iWS7onIVXxY+Oa61U= X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R401e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046049;MF=baolin.wang@linux.alibaba.com;NM=1;PH=DS;RN=9;SR=0;TI=SMTPD_---0W0p1Nty_1708323912; Received: from 30.97.56.48(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0W0p1Nty_1708323912) by smtp.aliyun-inc.com; Mon, 19 Feb 2024 14:25:12 +0800 Message-ID: <517e58d4-7537-4d9f-8893-0130c65c3fdb@linux.alibaba.com> Date: Mon, 19 Feb 2024 14:25:11 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] mm/vmscan: Fix a bug calling wakeup_kswapd() with a wrong zone index To: Byungchul Park , akpm@linux-foundation.org, ying.huang@intel.com, osalvador@suse.de, hannes@cmpxchg.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, kernel_team@skhynix.com, stable@vger.kernel.org References: <20240216111502.79759-1-byungchul@sk.com> From: Baolin Wang In-Reply-To: <20240216111502.79759-1-byungchul@sk.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 41E4B4000B X-Rspam-User: X-Stat-Signature: we4cehx4x5uca3wfrc7zydibs8kgyx4n X-Rspamd-Server: rspam01 X-HE-Tag: 1708323917-514282 X-HE-Meta: U2FsdGVkX188SmXdePw9Gwnv+50GJwJsMk3jZ3DkqJRPGKpeOAKSipKxP5Q7xTQwQiViALdnSyqQrNYC544xtXi3XYUZ5gKMzfs8UaDgsf184koPHKJMafD4xmebkCJCJt4It43pH4qeDWaPXw8uPZP6X50O68CSmJF8FVhyrBc8yEO7vWkj68ticTCreg8Qyb0ev1h3Ak3fVGsbWHTKWlLl3g96jy7eV6JRO8Dn6bIxppd4J8PDzk8Wz18CQIHnnGhTugzhK5gHNLc+ft5vXTqdncMMivxzVXABAxkjR3mGawNy7Ele1F1QUg9iPHq8O/wAKh6fMljhT8elBv1UrAJmMIBVJQ/gMwRJsc04bsKeFFYhQzBfLvxViD6BKX4+b1XfuZKAbq6jY+EI/kMevkXGbp98lvJbaJEgve3Y5QIdzwLIj6XZs3ZQ+bO95sbA882vy+ebLXi1zNwSowoCMr9tYv5ULqnumRES9LYEsk3/qlieC/SVClOg8QgyzHvpdSx2g++6dcuuNNL/ahOUrO60/KGUgXkGKo0plIeCnaxBomJS/eJTXcEcfKNUQ8xyB4nMyRov1aAfT4g4oZxhEJud39yfWplg8Nhhkc0B48GWC+kmERJIIVOpp3TegtDhxlXmgiBr3ZKtktmVuaqGy3goS93KacIV3KXb8ROmqKe4H2zwOEQj2rD4VE6u28Q4xvL5Fha3Jk6FzX9P7X48SaD8OCI5pNwXQJORsYmKmGTIBXKNdAOcnYFzjDvEjOL8/1ZFxMej0skjygucUlzpiSqK3ov3eX0URXPpI7V0SWPboxMvUpkcve3bCybeawf5GZIwnDUaM5Ar13bKeBW+Mo4G2EFSrPUZiAkLUprpsr8DBTUhbi0y+EUfZ1MyRiCxgeo/T3Ssny2AnqHcaehJGIzktvvGUn8z94B27jEd6UoIXDWYSV2HW96W4ZcqX4Y1y8ovgdBADgTbsR/mM29 dl9hnjex Z5nr/QsBJHM8Wfrxly5AJNTATMvDrQG5oZwgt4lAUXgZO2JjJPHwM5eo9LkijSTJUBCp9OmPrBdMYvyt+Pb3EmdGdm0l4lpgPrUWOCrmuIubfSRSS+zjRlmDeGBRUIxqNnL8MC559g7Cg/H5/bwfhFM8Ss21+zKmABXuTk3gIwul040p4wOkKxhS4qoJtXe7FchhZ4Xd00qRCjienbos9KiA5dJRfhIeD28afXqrBfmzLkwbsfW8cWALOjMu5VKNIXwxgsNSMQQIdew8qalYIXv1oHHaKF8f2eTuSlJPJ7C7jiItcL9D5EX9uzglkBa4t80zKGsua1GzweWx0W+fysJXl49hGIauqOzW4DUXgFm66Q7alvoGFjeI6NGqNGZbSfhVzanF3C/jUSydkPCB5BkjnfGh5YU0+uynednoH6m/NDaSIiK85IJC45A== 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: On 2024/2/16 19:15, Byungchul Park wrote: > With numa balancing on, when a numa system is running where a numa node > doesn't have its local memory so it has no managed zones, the following > oops has been observed. It's because wakeup_kswapd() is called with a > wrong zone index, -1. Fixed it by checking the index before calling > wakeup_kswapd(). > >> BUG: unable to handle page fault for address: 00000000000033f3 >> #PF: supervisor read access in kernel mode >> #PF: error_code(0x0000) - not-present page >> PGD 0 P4D 0 >> Oops: 0000 [#1] PREEMPT SMP NOPTI >> CPU: 2 PID: 895 Comm: masim Not tainted 6.6.0-dirty #255 >> Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS >> rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014 >> RIP: 0010:wakeup_kswapd (./linux/mm/vmscan.c:7812) >> Code: (omitted) >> RSP: 0000:ffffc90004257d58 EFLAGS: 00010286 >> RAX: ffffffffffffffff RBX: ffff88883fff0480 RCX: 0000000000000003 >> RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88883fff0480 >> RBP: ffffffffffffffff R08: ff0003ffffffffff R09: ffffffffffffffff >> R10: ffff888106c95540 R11: 0000000055555554 R12: 0000000000000003 >> R13: 0000000000000000 R14: 0000000000000000 R15: ffff88883fff0940 >> FS: 00007fc4b8124740(0000) GS:ffff888827c00000(0000) knlGS:0000000000000000 >> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 >> CR2: 00000000000033f3 CR3: 000000026cc08004 CR4: 0000000000770ee0 >> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 >> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 >> PKRU: 55555554 >> Call Trace: >> >> ? __die >> ? page_fault_oops >> ? __pte_offset_map_lock >> ? exc_page_fault >> ? asm_exc_page_fault >> ? wakeup_kswapd >> migrate_misplaced_page >> __handle_mm_fault >> handle_mm_fault >> do_user_addr_fault >> exc_page_fault >> asm_exc_page_fault >> RIP: 0033:0x55b897ba0808 >> Code: (omitted) >> RSP: 002b:00007ffeefa821a0 EFLAGS: 00010287 >> RAX: 000055b89983acd0 RBX: 00007ffeefa823f8 RCX: 000055b89983acd0 >> RDX: 00007fc2f8122010 RSI: 0000000000020000 RDI: 000055b89983acd0 >> RBP: 00007ffeefa821a0 R08: 0000000000000037 R09: 0000000000000075 >> R10: 0000000000000000 R11: 0000000000000202 R12: 0000000000000000 >> R13: 00007ffeefa82410 R14: 000055b897ba5dd8 R15: 00007fc4b8340000 >> > > Signed-off-by: Byungchul Park > Reported-by: Hyeongtak Ji > Cc: stable@vger.kernel.org > Fixes: c574bbe917036 ("NUMA balancing: optimize page placement for memory tiering system") This means that there is no memory on the target node? if so, we can add a check at the beginning to avoid calling unnecessary migrate_misplaced_folio(). diff --git a/mm/memory.c b/mm/memory.c index e95503d7544e..a64a1aac463f 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -5182,7 +5182,7 @@ static vm_fault_t do_numa_page(struct vm_fault *vmf) else last_cpupid = folio_last_cpupid(folio); target_nid = numa_migrate_prep(folio, vma, vmf->address, nid, &flags); - if (target_nid == NUMA_NO_NODE) { + if (target_nid == NUMA_NO_NODE || !node_state(target_nid, N_MEMORY)) { folio_put(folio); goto out_map; } (similar changes for do_huge_pmd_numa_page()) > --- > mm/migrate.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/mm/migrate.c b/mm/migrate.c > index fbc8586ed735..51ee6865b0f6 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -2825,6 +2825,14 @@ static int numamigrate_isolate_folio(pg_data_t *pgdat, struct folio *folio) > if (managed_zone(pgdat->node_zones + z)) > break; > } > + > + /* > + * If there are no managed zones, it should not proceed > + * further. > + */ > + if (z < 0) > + return 0; > + > wakeup_kswapd(pgdat->node_zones + z, 0, > folio_order(folio), ZONE_MOVABLE); > return 0;