Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp321723pxk; Wed, 2 Sep 2020 02:11:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz7ZpdTLOvverDmtYCAmGShQynDdZQkaE3tUVlOslrxYA290+U1nL4MHovfu1mLM3qHBt/b X-Received: by 2002:a17:906:d282:: with SMTP id ay2mr5013662ejb.265.1599037899457; Wed, 02 Sep 2020 02:11:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599037899; cv=none; d=google.com; s=arc-20160816; b=RMDkL9DMAI2t1dsVfzNM0wECkjZXPAfcUsuD/LZ9ie4eWW1TLhH1kaAVO9XnJK8nyR J7nJU+2Fl3MrKc6Jj2Ink1T2R25+QJpHHhSGIS9G2CsklSodQMzIkBifwJpjSgIqzzKH XU+cJxSWO6e2VV93fEdHXmzN69QHCnDYFTJG+KfSzkwC3YgqQ9hIslAsxXra1V0htSyZ M6+0vzG1pj8qCedIlxNKrvz7pE9QVEZXHKdZSNYZpFskWgxi5VWsvC8PLuq6Oi+YDILC nP9sGb8WLizJJBvAAvagoCJRjJVPt09v/T2h565mKhBCndL2a3Onu3M8K0YQd93WDosY l/oA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=tDxGVhOX0cCEXcDAZ8mLZt95/LUEO78Nvk7je6okY4s=; b=X/EXYXV924X320BukzA1fpU/o5NU6sOx3xK42Pf6OmACHx2FBSeFL4QaXWyxz6LMP0 TgQSxRplGZnZ4UXlRWqGSx8cg94ABsj0JYbCZ4A4eHV5ET0bRQyc1aowPtLL9/ae58HL qPz3HPZ83LyanNs1l2asbyghQaxHFa4PoI3Qlz3T+m13uPVHYmiYvsB2zu4dbaBx2JTD PORaJ8Vl+uwS9IkL9zyMi7CMk63ZCOyBf1K/FV4DVHKp62U765anTUNaIG7GQLWQtwAg ykfC3yn1WhOiNBnZJq686PYo30a5gRbH5pPuN4Kb3xcEkCsnZP04PBM8J7g+v7cHzHdW 0aQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b="mXeGjyM/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j8si2000921edl.471.2020.09.02.02.11.16; Wed, 02 Sep 2020 02:11:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b="mXeGjyM/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726355AbgIBJJj (ORCPT + 99 others); Wed, 2 Sep 2020 05:09:39 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:65412 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726210AbgIBJJa (ORCPT ); Wed, 2 Sep 2020 05:09:30 -0400 Received: from pps.filterd (m0098414.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 08292jM8004758; Wed, 2 Sep 2020 05:09:18 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding; s=pp1; bh=tDxGVhOX0cCEXcDAZ8mLZt95/LUEO78Nvk7je6okY4s=; b=mXeGjyM/p43+bv+J3fpYg1C/MwliHRR/CFPpUZO+YYuVQncjli7efXUPBvDyyBVoUJdr a/JM68yNW24XzA1zlXvKwAJIFXomOJr9ooPrjKYQIftRmFTrt3b0aM7POFLgCNcdcmMP Nz4B0Ax/DPwYb3ogD9xyssR6YT1bSviSu+n55taE3HHV6XBIxCvDbmwE3B0G4qlbzXX1 NDiz89dfE5Q/h3p4r858MHwrHcPwUby63n9WeQskdLdKhOZcAXwnBAPBdyYmDk34Ctd9 HFdOj9L3iI2BtHufwIsngFYMtA4DCYrEhbFKTVGf0qpFCn0tWWOU50QKKO4Ieu9cdtOG Zw== Received: from ppma03fra.de.ibm.com (6b.4a.5195.ip4.static.sl-reverse.com [149.81.74.107]) by mx0b-001b2d01.pphosted.com with ESMTP id 33a8dnr4yh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 02 Sep 2020 05:09:18 -0400 Received: from pps.filterd (ppma03fra.de.ibm.com [127.0.0.1]) by ppma03fra.de.ibm.com (8.16.0.42/8.16.0.42) with SMTP id 082983SQ001107; Wed, 2 Sep 2020 09:09:16 GMT Received: from b06cxnps4074.portsmouth.uk.ibm.com (d06relay11.portsmouth.uk.ibm.com [9.149.109.196]) by ppma03fra.de.ibm.com with ESMTP id 337en8arxg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 02 Sep 2020 09:09:16 +0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06cxnps4074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 08299D0L30540124 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 2 Sep 2020 09:09:13 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 320C2AE074; Wed, 2 Sep 2020 09:09:13 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D7685AE056; Wed, 2 Sep 2020 09:09:12 +0000 (GMT) Received: from pomme.tlslab.ibm.com (unknown [9.145.28.120]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTP; Wed, 2 Sep 2020 09:09:12 +0000 (GMT) From: Laurent Dufour To: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-mm@kvack.org, Greg Kroah-Hartman Cc: nathanl@linux.ibm.com, cheloha@linux.ibm.com, "Rafael J. Wysocki" , Andrew Morton Subject: [PATCH] mm: check for memory's node later during boot Date: Wed, 2 Sep 2020 11:09:11 +0200 Message-Id: <20200902090911.11363-1-ldufour@linux.ibm.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235,18.0.687 definitions=2020-09-02_03:2020-09-02,2020-09-02 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 mlxlogscore=999 spamscore=0 mlxscore=0 suspectscore=0 adultscore=0 priorityscore=1501 lowpriorityscore=0 clxscore=1011 phishscore=0 impostorscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2006250000 definitions=main-2009020085 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org register_mem_sect_under_nodem() is checking the memory block's node id only if the system state is "SYSTEM_BOOTING". On PowerPC, the memory blocks are registered while the system state is "SYSTEM_SCHEDULING", the one before SYSTEM_RUNNING. The consequence on PowerPC guest with interleaved memory node's ranges is that some memory block could be assigned to multiple nodes on sysfs. This lately prevents some memory hot-plug and hot-unplug to succeed because links are remaining. Such a panic is then displayed: ------------[ cut here ]------------ kernel BUG at /Users/laurent/src/linux-ppc/mm/memory_hotplug.c:1084! Oops: Exception in kernel mode, sig: 5 [#1] LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries Modules linked in: rpadlpar_io rpaphp pseries_rng rng_core vmx_crypto gf128mul binfmt_misc ip_tables x_tables xfs libcrc32c crc32c_vpmsum autofs4 CPU: 8 PID: 10256 Comm: drmgr Not tainted 5.9.0-rc1+ #25 NIP: c000000000403f34 LR: c000000000403f2c CTR: 0000000000000000 REGS: c0000004876e3660 TRAP: 0700 Not tainted (5.9.0-rc1+) MSR: 800000000282b033 CR: 24000448 XER: 20040000 CFAR: c000000000846d20 IRQMASK: 0 GPR00: c000000000403f2c c0000004876e38f0 c0000000012f6f00 ffffffffffffffef GPR04: 0000000000000227 c0000004805ae680 0000000000000000 00000004886f0000 GPR08: 0000000000000226 0000000000000003 0000000000000002 fffffffffffffffd GPR12: 0000000088000484 c00000001ec96280 0000000000000000 0000000000000000 GPR16: 0000000000000000 0000000000000000 0000000000000004 0000000000000003 GPR20: c00000047814ffe0 c0000007ffff7c08 0000000000000010 c0000000013332c8 GPR24: 0000000000000000 c0000000011f6cc0 0000000000000000 0000000000000000 GPR28: ffffffffffffffef 0000000000000001 0000000150000000 0000000010000000 NIP [c000000000403f34] add_memory_resource+0x244/0x340 LR [c000000000403f2c] add_memory_resource+0x23c/0x340 Call Trace: [c0000004876e38f0] [c000000000403f2c] add_memory_resource+0x23c/0x340 (unreliable) [c0000004876e39c0] [c00000000040408c] __add_memory+0x5c/0xf0 [c0000004876e39f0] [c0000000000e2b94] dlpar_add_lmb+0x1b4/0x500 [c0000004876e3ad0] [c0000000000e3888] dlpar_memory+0x1f8/0xb80 [c0000004876e3b60] [c0000000000dc0d0] handle_dlpar_errorlog+0xc0/0x190 [c0000004876e3bd0] [c0000000000dc398] dlpar_store+0x198/0x4a0 [c0000004876e3c90] [c00000000072e630] kobj_attr_store+0x30/0x50 [c0000004876e3cb0] [c00000000051f954] sysfs_kf_write+0x64/0x90 [c0000004876e3cd0] [c00000000051ee40] kernfs_fop_write+0x1b0/0x290 [c0000004876e3d20] [c000000000438dd8] vfs_write+0xe8/0x290 [c0000004876e3d70] [c0000000004391ac] ksys_write+0xdc/0x130 [c0000004876e3dc0] [c000000000034e40] system_call_exception+0x160/0x270 [c0000004876e3e20] [c00000000000d740] system_call_common+0xf0/0x27c Instruction dump: 48442e35 60000000 0b030000 3cbe0001 7fa3eb78 7bc48402 38a5fffe 7ca5fa14 78a58402 48442db1 60000000 7c7c1b78 <0b030000> 7f23cb78 4bda371d 60000000 ---[ end trace 562fd6c109cd0fb2 ]--- To prevent this multiple links, make the node checking done for states prior to SYSTEM_RUNNING. Signed-off-by: Laurent Dufour Cc: Greg Kroah-Hartman Cc: "Rafael J. Wysocki" Cc: Andrew Morton Fixes: 4fbce633910e ("mm/memory_hotplug.c: make register_mem_sect_under_node() a callback of walk_memory_range()") --- drivers/base/node.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/base/node.c b/drivers/base/node.c index 508b80f6329b..8e9f39b562ef 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c @@ -789,7 +789,7 @@ static int register_mem_sect_under_node(struct memory_block *mem_blk, * case, during hotplug we know that all pages in the memory * block belong to the same node. */ - if (system_state == SYSTEM_BOOTING) { + if (system_state < SYSTEM_RUNNING) { page_nid = get_nid_for_pfn(pfn); if (page_nid < 0) continue; -- 2.28.0