From patchwork Tue Jul 18 02:44:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aneesh Kumar K.V" X-Patchwork-Id: 13316689 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 8B6E9C001DE for ; Tue, 18 Jul 2023 02:44:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EEB796B0075; Mon, 17 Jul 2023 22:44:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E9C058D0001; Mon, 17 Jul 2023 22:44:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CEEEF6B007B; Mon, 17 Jul 2023 22:44:33 -0400 (EDT) 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 C19116B0075 for ; Mon, 17 Jul 2023 22:44:33 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 921591606CA for ; Tue, 18 Jul 2023 02:44:33 +0000 (UTC) X-FDA: 81023189226.19.9DB4E4F Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf26.hostedemail.com (Postfix) with ESMTP id 3DB26140017 for ; Tue, 18 Jul 2023 02:44:31 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=a1XHBgOL; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf26.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689648271; a=rsa-sha256; cv=none; b=R4m5AsVfYIpwVO/9IOuGOHkktozEryMwqBl/hFXMEd475N/9XBQIJtAEYPNs6zdf3vY0Dz RsYxeGV0JPz5cRsqffALnujeyg7vxHlZm2YjBA/xjM77wDA8x7Z300cznq4tXOVUTAXEA9 YQ0N/5lU96dDd1LnGFJ4gQC7GZpk6cs= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=a1XHBgOL; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf26.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689648271; 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:in-reply-to:references:references:dkim-signature; bh=j29IKbCWlUhdnBH/cY4p5rzuLemg+tF2hTex1PFnhYg=; b=0o6DT8JfUXJPWRvFrMQpM1iGbPeBB++VAQIJMSkXFDLMoyvXe1P9ewxGxYCs+2RmdR2YZo FlB4gb7fCUhcYNJIJjprhyarIz6WOaSfNW6IKE8rhXA7EfZhMUfLLpQwAOsLMl+/CtsLUQ 8Q+3LZm+Nicx+wFqomRTvNSn1alyM0M= Received: from pps.filterd (m0353723.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36I2ePF9012292; Tue, 18 Jul 2023 02:44:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=j29IKbCWlUhdnBH/cY4p5rzuLemg+tF2hTex1PFnhYg=; b=a1XHBgOLVsp3owDM0Ux4zj00G0sU+za9ovFkH1QfM5Vn+/tIkMv/WuSr7kThZCygX6zC iqJDAQxJ1wesoqrP6TuTRzSezS2FA20fBsRu13dby12epXM3Vbi7jPDwzNjjj7TDhLGI MM2hHo2pxUQv5xXI2/r4+AJoxzJ7H+POyLSx+GWj/MMdF4ApxVjUdHr7fakU88J87YGI /4D76ziJP41j2I5l3+jkD2WcRPGJ07Jl3zXz2pBT9XkYzjMLiNtTeX7Uy0XdsOE1avxM 9kTO6n6KErmch5jH4yFxTumNmUIe8KGB68jrzsrsG1qsyOg5s0EFbRug16FPEbE8+Xwb iQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rwhwhg8sr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:24 +0000 Received: from m0353723.ppops.net (m0353723.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 36I2iNsU021816; Tue, 18 Jul 2023 02:44:24 GMT Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rwhwhg8sf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:23 +0000 Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 36HK25A0030570; Tue, 18 Jul 2023 02:44:23 GMT Received: from smtprelay04.dal12v.mail.ibm.com ([172.16.1.6]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3rv79jhhj5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:23 +0000 Received: from smtpav02.dal12v.mail.ibm.com (smtpav02.dal12v.mail.ibm.com [10.241.53.101]) by smtprelay04.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 36I2iMGb21562002 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 18 Jul 2023 02:44:22 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 545D45805F; Tue, 18 Jul 2023 02:44:22 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3EA0658051; Tue, 18 Jul 2023 02:44:18 +0000 (GMT) Received: from skywalker.ibmuc.com (unknown [9.43.62.199]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Tue, 18 Jul 2023 02:44:17 +0000 (GMT) From: "Aneesh Kumar K.V" To: linux-mm@kvack.org, akpm@linux-foundation.org, mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org, npiggin@gmail.com, christophe.leroy@csgroup.eu Cc: Oscar Salvador , David Hildenbrand , Michal Hocko , Vishal Verma , "Aneesh Kumar K.V" Subject: [PATCH v4 1/6] mm/hotplug: Simplify ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE kconfig Date: Tue, 18 Jul 2023 08:14:04 +0530 Message-ID: <20230718024409.95742-2-aneesh.kumar@linux.ibm.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230718024409.95742-1-aneesh.kumar@linux.ibm.com> References: <20230718024409.95742-1-aneesh.kumar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: ogiL3HqwUQQPAuM12j1l9HP9aVH4WLEi X-Proofpoint-ORIG-GUID: mjI6BMUL8WFpSWDsybOGjIf3rNJlkN_B X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-17_15,2023-07-13_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 malwarescore=0 priorityscore=1501 spamscore=0 mlxlogscore=697 impostorscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 mlxscore=0 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307180022 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 3DB26140017 X-Stat-Signature: 364zxa11p84a54ooewfxeymfue9iz4fb X-HE-Tag: 1689648271-473540 X-HE-Meta: U2FsdGVkX1/onKp1O3RShuFk2rpWZ4ONmYe1l8TYLNYv8yfQfYi/FNiAfS+BzSdih3ZwR35jkrkkbyN6t1Eg9XrbSchLp7SpFho6+bYCX7/j5spfv54ngwx7Kyf48A+YOxkB0OTpBylSD5WGdO6wHPsyTqDGI3ySUR3Dl326+dMko28FMJn4QYclDDqz/zee4R2YBLumtog9q10g+LnBhd8DJcSBMmdD/8yiwy7djTzvd1J4F2DybL/u5A5bnBtx6QQy85ZlNOqRNI9wtAie35b2xcBK3RL9YCOh7FXP+spcoAXGSb13x3Jo8anB+3CiC92+t6PfRC2ZrgiFA/uxuHjg9gVoqLmFBMKSn4SBflMZpGoRG0MjyzW87TCVfLu4IsPnGaZZHBqcC46uVsi3j6qNVM0SYr3KIU0JgW+oIPcQXTdOIJetrBkPgSOP+o6vA+qSsagttAJVf87FfnyV0Gym1PrXk7nURWTDjlyuGay5Eq0EdeRpROFeeEDvN21oiH5m//tGO450uIl6iYoRb6apCiZdbBt+/IxvQO+uu4/Gj+u62Jpl30dGgiV0NSNNfjyRgijR8tETEQPmN9nlWEInvfFl1HGJR0SKQZ3hpWiAAYfWeq7GSzoiOSI/wCJy0ia0RTXPkjuJ1b9tFZX1Awyyac8aeBcdq4mB5mbve9baOPvFsBtVHvCmdvmNISKZzN3/tqIEfB0wKIMvG9wEBaLboplugCRxmv5YakEN7as4S5ouDoBZK9s5NlWtztl0+QdDn2cJ1Mn7PwqDw+l9wSHrKAQsEETOeU10WpUvGzC99ODi6ZMgcJb+UoldhlOjz0m226KKiMKNWjkm+MwFIhORD9ykHoTP6Zvw4kbc+ODajDZg+bXyMTaxj4WkJusJLgKruRUVrVMyCQuhChurBXo4rLcBwfPTwEFV7q5yfD3W5dbZzf31QoE4BZmMtuaIgpsJkXgrEYGq34G5stf HhtyvIxH otGiGA25Ux9034S2lpD0qnzaQisTwJx1JA6HRo7f1wRG3Wz29+64Havq6W/q75OGUxrSt7AmLmGYRZQMXIAfD2GZNg4kF4ge7okl/C3NHLhtAVMSDtqRdP4LFQyEEFESwasqx0KtGB8HzXQeNWKG76fkZwxUbaTdMyV+j6eEw5xz3o7tpswKtFGf5oskjIkjOLs6HwTIK1gK+ws7dEgC3UZgm2A== 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: Instead of adding menu entry with all supported architectures, add mm/Kconfig variable and select the same from supported architectures. No functional change in this patch. Acked-by: David Hildenbrand Signed-off-by: Aneesh Kumar K.V --- arch/arm64/Kconfig | 4 +--- arch/x86/Kconfig | 4 +--- mm/Kconfig | 3 +++ 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index a2511b30d0f6..20245bd72b8f 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -78,6 +78,7 @@ config ARM64 select ARCH_INLINE_SPIN_UNLOCK_IRQ if !PREEMPTION select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE if !PREEMPTION select ARCH_KEEP_MEMBLOCK + select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE select ARCH_USE_CMPXCHG_LOCKREF select ARCH_USE_GNU_PROPERTY select ARCH_USE_MEMTEST @@ -348,9 +349,6 @@ config GENERIC_CSUM config GENERIC_CALIBRATE_DELAY def_bool y -config ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE - def_bool y - config SMP def_bool y diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 78224aa76409..d0258e92a8af 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -102,6 +102,7 @@ config X86 select ARCH_HAS_DEBUG_WX select ARCH_HAS_ZONE_DMA_SET if EXPERT select ARCH_HAVE_NMI_SAFE_CMPXCHG + select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_SERIO @@ -2610,9 +2611,6 @@ config ARCH_HAS_ADD_PAGES def_bool y depends on ARCH_ENABLE_MEMORY_HOTPLUG -config ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE - def_bool y - menu "Power management and ACPI options" config ARCH_HIBERNATION_HEADER diff --git a/mm/Kconfig b/mm/Kconfig index 923bd35f81f2..932349271e28 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -572,6 +572,9 @@ config MHP_MEMMAP_ON_MEMORY endif # MEMORY_HOTPLUG +config ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE + bool + # Heavily threaded applications may benefit from splitting the mm-wide # page_table_lock, so that faults on different parts of the user address # space can be handled with less contention: split it at this NR_CPUS. From patchwork Tue Jul 18 02:44:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aneesh Kumar K.V" X-Patchwork-Id: 13316690 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 ED9C7EB64DC for ; Tue, 18 Jul 2023 02:44:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 882BC6B0078; Mon, 17 Jul 2023 22:44:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 832928D0001; Mon, 17 Jul 2023 22:44:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 722A76B007D; Mon, 17 Jul 2023 22:44:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 63ABD6B0078 for ; Mon, 17 Jul 2023 22:44:38 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 362BC1206CF for ; Tue, 18 Jul 2023 02:44:38 +0000 (UTC) X-FDA: 81023189436.21.5D5B5A4 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf02.hostedemail.com (Postfix) with ESMTP id EDA4880004 for ; Tue, 18 Jul 2023 02:44:35 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=S9hriD9o; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf02.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689648276; 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:in-reply-to:references:references:dkim-signature; bh=vaFf+Tj84fQOuQn1LSclsCakzJe93KcVYoOBxNETnCk=; b=XpPthwQHge2JaZHA9Z2SM6B8RTnkF9CP6Et/a/M06n/5P4DPRcIbjYtixhoKAtIZBd2CHW GERSIC7ePro3kmFltgp+Izi+D1zDBDZp5mkTuxKjgRtDvWfIWKeJ5olmLjJheb7sAkb2us NvCbpPHzvylqxjBfMfPoWhmnnXlGexA= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=S9hriD9o; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf02.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689648276; a=rsa-sha256; cv=none; b=1neoxO/OygydYre99Plh726col4Ut3cyeTimRFVGsZRsFLluybgsL8D+hBGzee+/kTpbg7 H4fd1Yz74cbCSQK2dVvOeXOVjqAH83QVvp8iLfdqZHbTi2nom5LZaRVwHPiJf52kN1oo0U FfuRXA9wTgqqXDZaW08I7QiGmFZQRgE= Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36I2PtkD019839; Tue, 18 Jul 2023 02:44:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=vaFf+Tj84fQOuQn1LSclsCakzJe93KcVYoOBxNETnCk=; b=S9hriD9ojrraVhrxWf8hp8wtHwgUI128b3vFevNnA5eC6k8PFZJSQt8UR8YiUvPBKQl2 J3XxZHQQ1eF+HrqEjXg+gBjW50AvpirdvIXOMAc0FiRBN0CJD0sRP96+hYihaqKorUIp IbTfy+aD6yztv81x/WSr2LlXs6E4upkCm2+WUy3lPmwYYWwnaJqW8G1VxtzDct6E79ro cbrvwMnq0+bShpeXRERcWFlfbuNb/D7fMIb5C5qmwGPGMwfET8SimQ72zvph9W1u6ad3 27e+3RKlNr/eib+nsCNBjvM9hegqsbvsAnfDny5qQm6+yELOpSq3OoKZ/dQ+VnORP1hB wg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rwhxv0e43-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:29 +0000 Received: from m0353725.ppops.net (m0353725.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 36I2c6x7020427; Tue, 18 Jul 2023 02:44:28 GMT Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rwhxv0e3v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:28 +0000 Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 36HK7mFv030687; Tue, 18 Jul 2023 02:44:27 GMT Received: from smtprelay03.wdc07v.mail.ibm.com ([172.16.1.70]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3rv79jhhj7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:27 +0000 Received: from smtpav02.dal12v.mail.ibm.com (smtpav02.dal12v.mail.ibm.com [10.241.53.101]) by smtprelay03.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 36I2iRtO62914838 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 18 Jul 2023 02:44:27 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E10395805E; Tue, 18 Jul 2023 02:44:26 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DE2BF58051; Tue, 18 Jul 2023 02:44:22 +0000 (GMT) Received: from skywalker.ibmuc.com (unknown [9.43.62.199]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Tue, 18 Jul 2023 02:44:22 +0000 (GMT) From: "Aneesh Kumar K.V" To: linux-mm@kvack.org, akpm@linux-foundation.org, mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org, npiggin@gmail.com, christophe.leroy@csgroup.eu Cc: Oscar Salvador , David Hildenbrand , Michal Hocko , Vishal Verma , "Aneesh Kumar K.V" Subject: [PATCH v4 2/6] mm/hotplug: Allow memmap on memory hotplug request to fallback Date: Tue, 18 Jul 2023 08:14:05 +0530 Message-ID: <20230718024409.95742-3-aneesh.kumar@linux.ibm.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230718024409.95742-1-aneesh.kumar@linux.ibm.com> References: <20230718024409.95742-1-aneesh.kumar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: neW0gZDso7HhNBLmR7uzg4mWlrocQ9X7 X-Proofpoint-ORIG-GUID: GdU3A1fgFYOOEzTISok73_QLpSDQCJaC X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-17_15,2023-07-13_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 priorityscore=1501 mlxscore=0 bulkscore=0 clxscore=1015 impostorscore=0 adultscore=0 phishscore=0 spamscore=0 malwarescore=0 mlxlogscore=897 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307180022 X-Rspamd-Queue-Id: EDA4880004 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: k8p5uwn1obmkpqnhij11ecex8795nruo X-HE-Tag: 1689648275-796962 X-HE-Meta: U2FsdGVkX1+7pRAOjp2PGN/wJteysE08kGUrBYbRnTiZSm/s7G+1nvmiYUjzThsxahJnZ7jmuZsYXlgDXBIx9QBAEgtBLp1AZup7Y4g52RLHtkzTMVOYFAuyXyyJdDIvOXfns3V1mrB9PXEiu+0ImiaD8ZQbdFE+dnu2Zi8JHPSBWTfxS4qpOCIiDWROV/qGhLxij8KJ+jKkudZxxHrcnPs+8HYF2yk61Shy023w5GIJJCex1PJ5fOwHOx7n/XVsfsOR03OP9ZuUBXG8hX7+0RQutuYcPciR06H+wxU0ZitW3s49v50zCCkAf6HkOccMSOHiOAwMJQgScpfywURW1A/0AjzsvGXerqdozl8h7n9w5aTv5I71rWBFTqojnxpVXzagI00I7ribCxwVwy9V6f/Mb7ufqNwxpdaHHVjUdNMaIanOZlN14AvMyMz2m0rdStiXkmjSWxymA1EBdMwvjaw7KtyuFxLgRs7r9+DKQwoU4uW6h9sKPvwh7MSNN5rMNtFYKwPzCGM7B5DszRtma3ZkPKdndT6zyDT/XOyZ5xPbu2dSfaoievjpiKEEltzBpjpui4JiNw8DuRMRc+Y8lTIaI1FP91whWo4HW1cB5oIP2TirrHo1jXKBTsFc7zNp/s7+N2WtTncxpwMVOgS3eZw9Ob5c7EvcqEUR/vX5p5qWIWKei/qnxdQMt5twhu/VbcC6o/lgi8alkhY1hN8UQQEUd1d//i7piGv3v044MhVQv9+gZk2ZM9D0EcYOfNXoayePDnBx3koblcHqU234HcMjQVuEZ/p19HJ580mNHxJ9qtrOBMf349nVS7WYVY98XZjxFZmZ/94Ok18vvWQ7NR8T7lv9uNoBWcBLM0cNjYjHmSXk0+SkF08IzePBts4jjH7l++1D+I3x0GT7U8/3zFAhvmNgYSeA8YWpK/AG/Hq+0KmEhj5+6R7AT82oX1BnsQe0nMthReW+R999Uwd LwJvC4ZC YDztGfqPOm33qp813sKpYI3ltk2gxqO/6dpxR8fyDsbWsaN1bgkg7YBVbQQZ2s4G2UOU/KIeUE8o/E313UR7+riMpwwtasQUHNEwHdn+MLNyDeSekl+bZ62qBQEzYinU/f6NCA23F1+0fowU= 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: If not supported, fallback to not using memap on memmory. This avoids the need for callers to do the fallback. Signed-off-by: Aneesh Kumar K.V Acked-by: David Hildenbrand --- drivers/acpi/acpi_memhotplug.c | 3 +-- include/linux/memory_hotplug.h | 3 ++- mm/memory_hotplug.c | 13 ++++++------- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/drivers/acpi/acpi_memhotplug.c b/drivers/acpi/acpi_memhotplug.c index 24f662d8bd39..d0c1a71007d0 100644 --- a/drivers/acpi/acpi_memhotplug.c +++ b/drivers/acpi/acpi_memhotplug.c @@ -211,8 +211,7 @@ static int acpi_memory_enable_device(struct acpi_memory_device *mem_device) if (!info->length) continue; - if (mhp_supports_memmap_on_memory(info->length)) - mhp_flags |= MHP_MEMMAP_ON_MEMORY; + mhp_flags |= MHP_MEMMAP_ON_MEMORY; result = __add_memory(mgid, info->start_addr, info->length, mhp_flags); diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h index 013c69753c91..7d2076583494 100644 --- a/include/linux/memory_hotplug.h +++ b/include/linux/memory_hotplug.h @@ -97,6 +97,8 @@ typedef int __bitwise mhp_t; * To do so, we will use the beginning of the hot-added range to build * the page tables for the memmap array that describes the entire range. * Only selected architectures support it with SPARSE_VMEMMAP. + * This is only a hint, the core kernel can decide to not do this based on + * different alignment checks. */ #define MHP_MEMMAP_ON_MEMORY ((__force mhp_t)BIT(1)) /* @@ -354,7 +356,6 @@ extern struct zone *zone_for_pfn_range(int online_type, int nid, extern int arch_create_linear_mapping(int nid, u64 start, u64 size, struct mhp_params *params); void arch_remove_linear_mapping(u64 start, u64 size); -extern bool mhp_supports_memmap_on_memory(unsigned long size); #endif /* CONFIG_MEMORY_HOTPLUG */ #endif /* __LINUX_MEMORY_HOTPLUG_H */ diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 3f231cf1b410..1b19462f4e72 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1247,7 +1247,7 @@ static int online_memory_block(struct memory_block *mem, void *arg) return device_online(&mem->dev); } -bool mhp_supports_memmap_on_memory(unsigned long size) +static bool mhp_supports_memmap_on_memory(unsigned long size) { unsigned long nr_vmemmap_pages = size / PAGE_SIZE; unsigned long vmemmap_size = nr_vmemmap_pages * sizeof(struct page); @@ -1339,13 +1339,12 @@ int __ref add_memory_resource(int nid, struct resource *res, mhp_t mhp_flags) * Self hosted memmap array */ if (mhp_flags & MHP_MEMMAP_ON_MEMORY) { - if (!mhp_supports_memmap_on_memory(size)) { - ret = -EINVAL; - goto error; + if (mhp_supports_memmap_on_memory(size)) { + mhp_altmap.free = PHYS_PFN(size); + mhp_altmap.base_pfn = PHYS_PFN(start); + params.altmap = &mhp_altmap; } - mhp_altmap.free = PHYS_PFN(size); - mhp_altmap.base_pfn = PHYS_PFN(start); - params.altmap = &mhp_altmap; + /* fallback to not using altmap */ } /* call arch's memory hotadd */ From patchwork Tue Jul 18 02:44:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aneesh Kumar K.V" X-Patchwork-Id: 13316691 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 8DD1CEB64DC for ; Tue, 18 Jul 2023 02:44:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 267B66B007B; Mon, 17 Jul 2023 22:44:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 218736B007D; Mon, 17 Jul 2023 22:44:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0E0088D0001; Mon, 17 Jul 2023 22:44:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 021626B007B for ; Mon, 17 Jul 2023 22:44:44 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id CB96E406ED for ; Tue, 18 Jul 2023 02:44:43 +0000 (UTC) X-FDA: 81023189646.20.461E8A5 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf14.hostedemail.com (Postfix) with ESMTP id 781DC10001B for ; Tue, 18 Jul 2023 02:44:41 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=M8abzvno; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf14.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689648281; 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:in-reply-to:references:references:dkim-signature; bh=LFO5IRzkMKVZdRJ6opEYm5rJX52kJBVizuyBJ43Omn4=; b=ZmWqt5qgHFbEqo61g/sE3SSX4lIL35HqGvrw1qgBwd/FGYjRDqgD2Gt4gLIYTyUul1SiOW heIeumA8Oiz5K940ngGuEcp/CtKaeHu9rfE1R7CHCBKh/dwSv0XXUT8+D/zw2fmU1FbWCM 2vias7xTKqU6p7MBtuxqe5RkVfp+/Bw= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=M8abzvno; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf14.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689648281; a=rsa-sha256; cv=none; b=G04Ies0h8Br++bZmondJevC4mcBNY/oASeTdxVONGPlNdOi9pncrYe98gOgX/+19qggEaT 03hrKMza6M/3HumGSlAGZ6/G8Bcs/OYxS29sx/cMPORYYgHiPllPiWMtFItsulvOX1qh8d S2iL3b3nncc1wju4FCkClp2XEgydTao= Received: from pps.filterd (m0353727.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36I2adQP023684; Tue, 18 Jul 2023 02:44:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=LFO5IRzkMKVZdRJ6opEYm5rJX52kJBVizuyBJ43Omn4=; b=M8abzvnot4XuiTVriLSW0P0FZt9gDg68RMHmaCE1cnrA6qi3gNxjhULN+9WFYcM4pV+v ZbjGPZAOKjHCxtdmg2QFlL7u+X6u0xtr3YANRx1iWbGXjDr3uYHTMsX8HerRBHKk+jV+ DkpHCAXRIo966n2GH86f0jyYPOkPUmOMYF3Zd/nqUHttPWqI5a8OXp+QoO2nw2gLZpYj 0lVKZXZ/LcL945YVOELFKJcX+iuaP7+tlcvMt7YUB9HxUFPOHugcz+bVtwxyBu+u68nI /dfm1lHNYHpg6f/3N36kIdozxRaUQhYDFxQCi1izXdobVcNFmCf/jKMzRnxdYr8190Rp 4A== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rwhrg8j05-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:34 +0000 Received: from m0353727.ppops.net (m0353727.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 36I2cVsk031373; Tue, 18 Jul 2023 02:44:33 GMT Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rwhrg8hym-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:33 +0000 Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 36HK0R9G009611; Tue, 18 Jul 2023 02:44:32 GMT Received: from smtprelay07.wdc07v.mail.ibm.com ([172.16.1.74]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 3rv80j1hfa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:32 +0000 Received: from smtpav02.dal12v.mail.ibm.com (smtpav02.dal12v.mail.ibm.com [10.241.53.101]) by smtprelay07.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 36I2iVgl48693704 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 18 Jul 2023 02:44:32 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8F2FB58051; Tue, 18 Jul 2023 02:44:31 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9011D5805C; Tue, 18 Jul 2023 02:44:27 +0000 (GMT) Received: from skywalker.ibmuc.com (unknown [9.43.62.199]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Tue, 18 Jul 2023 02:44:27 +0000 (GMT) From: "Aneesh Kumar K.V" To: linux-mm@kvack.org, akpm@linux-foundation.org, mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org, npiggin@gmail.com, christophe.leroy@csgroup.eu Cc: Oscar Salvador , David Hildenbrand , Michal Hocko , Vishal Verma , "Aneesh Kumar K.V" Subject: [PATCH v4 3/6] mm/hotplug: Allow architecture to override memmap on memory support check Date: Tue, 18 Jul 2023 08:14:06 +0530 Message-ID: <20230718024409.95742-4-aneesh.kumar@linux.ibm.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230718024409.95742-1-aneesh.kumar@linux.ibm.com> References: <20230718024409.95742-1-aneesh.kumar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: EUZEG1ly-gT1R2iEGt8yo1e8MelK0AqZ X-Proofpoint-ORIG-GUID: V5VzftnUMshQmHsa1P2MLoRyKh125z8f X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-17_15,2023-07-13_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 malwarescore=0 lowpriorityscore=0 spamscore=0 clxscore=1015 phishscore=0 suspectscore=0 priorityscore=1501 adultscore=0 bulkscore=0 mlxlogscore=999 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307180022 X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 781DC10001B X-Stat-Signature: 7oigy6kt9m54jwz7oia4gbhecf6fn96d X-Rspam-User: X-HE-Tag: 1689648281-327530 X-HE-Meta: U2FsdGVkX19U9AnvKkHSL1o68+HvApqaRqQ0NxuxyZygK/RnhgQk3FUrhGGhU9vvIevkzP8fOZ478xT1KJTxQb5KuJpn7lkK61tnJzCShx06odJxCFAiOb0DDumZBpY/oi53/bROgRlq+MD73UegHAikSoFmTFbUfmYnMTvZe1uXN8GUYnSJz92ae8x1yszRY1xk57x4EN3hsvpURx8LvJiK4IYv+N32XYTzH3uyYIWHO7b4dXWK5rlVDWBjZDfy95zWJnjp/WN9vjQBdessqm4CxC8rIEN09jOFfhuGbuTcCHwc5/NPtpN4XJqcKvp0RiZbJlCsnQ+ZVmNeX67lpmOYMnoC3NtGo52z1PvvaUcoRfZAS/L++iM7hkxmbMtOA4dr18g4x68K2TNjfiyI/2JDw2SOcMEMBpBA0Xydl6YvQ9FvIjvWLKgbQHkPn8O/JE2sT0Ek35r2MjVxciEFn43iqaXefD/lyPtA5Jy7Y3pdilI/y/SA5JfVAKy+ABkgDrrRjdHh/Fq3OE/ZpbZLKHJqeGeUzjz/fQoyFlrfg2PtR326HF7xN132aVav8A17VvxNT4nJWdtSs7CIgOTEBrAhHd74ena37VHgv2Q0v+BW2UeNDQCLSfxaNZZZE5CWUNn2XKGEQKIUeIHTyGpENeeLG9axt0sHhTsFAlMeMi/ANkiPV3HwMqClLo3WDOYLwvhRkpjrqaqWOxGEhEcpdfd6GqoulwuUkHEzLfTBXUXZ/NHeTsAoxVZDidMopZerRpPGUmOLYeflsUtNdfSDNe7FaGGG4l6YXI7zmglvbz5+PAC2vW/zlo4gfiF+CNg1E2dGixUj0fhjSxmYaylDNPET357+2TFYFMLedLHrqpHCXeVmgE8iRaJzLV1t5Z7IQeWLpYuyxz1/CazhqdbdNx48Rz36/7k+KU/fV3vr4MRXDaEST09p4rm62PU6r3tEMfVr5XUPiQI/GPrnQDO CpA2twvS g1UrdanA2Olnw/5eSuGuBm5ipr7Cg+o8/Qk4dWeFmx7qmQ6ttvCzxL6nMipDzwgjfNAAQRhAMLxrkdeFH9xcrXWlmm1n6vS1nW1psxnr3jfqeBiTzql0RmnMYN3HpcE0k6+0sSt6ituAYGjPdK7U1kimhzWVfDQ1xQNyCO7nw0prpevavmHgj8QorylNqStiuFuJY+yP2ksVgfzmNMf82dsK/R0jzg9QgTAP/75TqEmoR45I= 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: Some architectures would want different restrictions. Hence add an architecture-specific override. Both the PMD_SIZE check and pageblock alignment check are moved there. Signed-off-by: Aneesh Kumar K.V Acked-by: David Hildenbrand --- mm/memory_hotplug.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 1b19462f4e72..5921c81fcb70 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1247,9 +1247,25 @@ static int online_memory_block(struct memory_block *mem, void *arg) return device_online(&mem->dev); } +#ifndef arch_supports_memmap_on_memory +static inline bool arch_supports_memmap_on_memory(unsigned long size) +{ + unsigned long nr_vmemmap_pages = size >> PAGE_SHIFT; + unsigned long vmemmap_size = nr_vmemmap_pages * sizeof(struct page); + + /* + * As default, we want the vmemmap to span a complete PMD such that we + * can map the vmemmap using a single PMD if supported by the + * architecture. + */ + return IS_ALIGNED(vmemmap_size, PMD_SIZE); +} +#endif + static bool mhp_supports_memmap_on_memory(unsigned long size) { - unsigned long nr_vmemmap_pages = size / PAGE_SIZE; + + unsigned long nr_vmemmap_pages = size >> PAGE_SHIFT; unsigned long vmemmap_size = nr_vmemmap_pages * sizeof(struct page); unsigned long remaining_size = size - vmemmap_size; @@ -1281,8 +1297,8 @@ static bool mhp_supports_memmap_on_memory(unsigned long size) */ return mhp_memmap_on_memory() && size == memory_block_size_bytes() && - IS_ALIGNED(vmemmap_size, PMD_SIZE) && - IS_ALIGNED(remaining_size, (pageblock_nr_pages << PAGE_SHIFT)); + IS_ALIGNED(remaining_size, (pageblock_nr_pages << PAGE_SHIFT)) && + arch_supports_memmap_on_memory(size); } /* From patchwork Tue Jul 18 02:44:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aneesh Kumar K.V" X-Patchwork-Id: 13316692 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 5B726EB64DC for ; Tue, 18 Jul 2023 02:44:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F13166B007D; Mon, 17 Jul 2023 22:44:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E9BAE6B007E; Mon, 17 Jul 2023 22:44:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D3C6F8D0001; Mon, 17 Jul 2023 22:44:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id C7CEA6B007D for ; Mon, 17 Jul 2023 22:44:47 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 9B24F1206E7 for ; Tue, 18 Jul 2023 02:44:47 +0000 (UTC) X-FDA: 81023189814.28.DF9042B Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf03.hostedemail.com (Postfix) with ESMTP id 568CC20006 for ; Tue, 18 Jul 2023 02:44:45 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=o7Zg0QEy; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf03.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689648285; 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:in-reply-to:references:references:dkim-signature; bh=iiAMzf9/JUUpzASd6edLD6T9VcF+qOXLt17LVK5cPJ4=; b=RR0SEHbXP8NlF+h34nR42t4/EgGRR7/bnblWzWQjL2RnsX+CB95r0QXLjAweO0LnIDYyPY EUdVkhV3Zgkx6rIJM1yCudivv/EodAVRgs/uhfPt5VFnIOqAbW39YtAPQTwfGZ2JS0KO6P HkMUhVDcY6hgjJcOEGv1/9U4XeA9Cq0= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=o7Zg0QEy; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf03.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689648285; a=rsa-sha256; cv=none; b=3z1clBviSjoBB8Y1oWr8LMqcc2t7oQilErSkyha4MizUbbNPYx3D59B6/vaddJ4SDbgU2+ NNPi4UV8qCeRj06rreo3Mi4CPhT4jkKBiss1IlijvFBTYgni3lnN7Z8uRUWo01aQyJ7iJb YbC/1V4hYIAceydLuy+Qi1z+Fvd4100= Received: from pps.filterd (m0353723.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36I2eN5g012244; Tue, 18 Jul 2023 02:44:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=iiAMzf9/JUUpzASd6edLD6T9VcF+qOXLt17LVK5cPJ4=; b=o7Zg0QEyZSLjn+u++72sqDO+S8idWKIWuxEFlPkiSMCBYh3sJX9PF3JCxuAp7Ov0jYiW d/pHaX28z1ts77SLQSuWpnoLaKBhgjcry/7Wt1VxknrvvZoMUNlqZTD8EUw+qXYVD+1g 3HgVZBWjZ8i5PRqMxNQgBKFOnfdwR8twfG6vD9FAbehHMO2n4GBxiAC4oqFNVO/WC6xl Y0bqo8TbPH+dUnPjUk+mXqdsjqR43mSeNtPPynyWT/hZtI2jZ/L+Zpq9qUXJuPzh9mMC XO5ByAtTAdKhyBol4lS+/pJ9OsHa8xWK6y4GUxfaFl7/YjbsBxwSkYFNWjOVFbzU02au gg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rwhwhg8vs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:38 +0000 Received: from m0353723.ppops.net (m0353723.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 36I2ibR0022406; Tue, 18 Jul 2023 02:44:37 GMT Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rwhwhg8vj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:37 +0000 Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 36HMmEpS029129; Tue, 18 Jul 2023 02:44:37 GMT Received: from smtprelay05.dal12v.mail.ibm.com ([172.16.1.7]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3rv6smbtw2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:36 +0000 Received: from smtpav02.dal12v.mail.ibm.com (smtpav02.dal12v.mail.ibm.com [10.241.53.101]) by smtprelay05.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 36I2iaou4326056 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 18 Jul 2023 02:44:36 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2F9C35805C; Tue, 18 Jul 2023 02:44:36 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2522658051; Tue, 18 Jul 2023 02:44:32 +0000 (GMT) Received: from skywalker.ibmuc.com (unknown [9.43.62.199]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Tue, 18 Jul 2023 02:44:31 +0000 (GMT) From: "Aneesh Kumar K.V" To: linux-mm@kvack.org, akpm@linux-foundation.org, mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org, npiggin@gmail.com, christophe.leroy@csgroup.eu Cc: Oscar Salvador , David Hildenbrand , Michal Hocko , Vishal Verma , "Aneesh Kumar K.V" Subject: [PATCH v4 4/6] mm/hotplug: Allow pageblock alignment via altmap reservation Date: Tue, 18 Jul 2023 08:14:07 +0530 Message-ID: <20230718024409.95742-5-aneesh.kumar@linux.ibm.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230718024409.95742-1-aneesh.kumar@linux.ibm.com> References: <20230718024409.95742-1-aneesh.kumar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: NYGjjbxDG3yzk0yrnkp12ax3MuX9J-Am X-Proofpoint-ORIG-GUID: h_qhn8GUpWWyCJOSb143OV4IB6QMl6yj X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-17_15,2023-07-13_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 malwarescore=0 priorityscore=1501 spamscore=0 mlxlogscore=999 impostorscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 mlxscore=0 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307180022 X-Rspamd-Queue-Id: 568CC20006 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: knxdy5grfqah4t9z3d85agbwpmzehm7q X-HE-Tag: 1689648285-846375 X-HE-Meta: U2FsdGVkX19E8ctnG8EcT47T6r5sGZ33RcNhEKytEniziqRPGuAosB1dnaj2Ya8G6j8a5wfWAAX6HlaqwROcsdLFd7F5yo/XTcFq65cHvGQWwvG4mLxBlxVob2RN43IEm5LR2bj3K6VuaEtY6dMhBdMjQ4FFElVcCZTcAstdWUBrQcfHlbaKmdHCeVv/f+k/HXnKM8HqbDQPGSf5jwKjC3GamtMiNZX6Cr+MkXxrCZBzOS5xonOo7AEapNoIJH+kIRdzrSyxTGV5xcEYkfmDb4kwiZ9F/il0hhfL5WW/SxUz4r2BGTlg+QnkAN1/G0DwL2jpvOgTm3T/axDMi9APxzOTU2nAxWlh9MADnh3j62kcEtccqmi5MgrI490ZFPKUgcuZEiBZEfdL17u4GTf+ckclkknsrWoJ99NkAxnx5lL1LkzZ5n8ujCLGjewpbD4JHpFxbTbrco9rZeultGvRjqBJ640Psg9VLTxiOg/cDIGEeYjXfOYSN4uDEM9AFwCQ8U6neJ8UhVgDrV/woQt4YUZssoOqPwo6yP3BAXykO93pXIyu5Y+S3FjWZncq7534xfxjlo7gfr6HfB26VCPUzDL1CPgrHUeWb+SVTR8EaBTevaxpG/rqxd9UIC1ZgKN1mL50bLizh6yyPvF5tQNMdvvq5opcPTD5cVHxslazy+9gpc+uKNWjTvDlub3i0goHej7UINiT16O4NnWph/MbclXKa3/BErCRDlRhUW7Sx+62GoN1FqVLDsOz1zoZuGJN0MflLcLxRbBmS6uhyim7C+i+SNPdE8aCKw/ZFdPKccONRRU1S0/AJWVj4RrzDO3P9M60ekUHUGDUTevHH5LWDEAy4ShWQIPj/VAXc4YC3EiF+20/r7NAXLk0L//KR4qywIkXDSOamllnPV8t51++H5JYO5/UPm69sreCiCjKpLhV0mUrCrQdiV4QGwsRCvarJxP4hi/SyC3dwog0Gb/ iT/MhlU/ y2REBD/2tNqvkPPfYS07Zag5+bs8Sta4u4J/J/PxOXB+QPFViYRoGAMMnNQGdyan8+lB08ZXcDMURdK3qAweD2tRx7n3c67eFcsCurETITloTw2GNRHDBj+b4yBzPf7r/tfLTpffOUQhsN7o= 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: Add a new kconfig option that can be selected if we want to allow pageblock alignment by reserving pages in the vmemmap altmap area. This implies we will be reserving some pages for every memoryblock This also allows the memmap on memory feature to be widely useful with different memory block size values. Signed-off-by: Aneesh Kumar K.V --- mm/memory_hotplug.c | 109 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 96 insertions(+), 13 deletions(-) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 5921c81fcb70..c409f5ff6a59 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -41,17 +41,85 @@ #include "internal.h" #include "shuffle.h" +enum { + MEMMAP_ON_MEMORY_DISABLE = 0, + MEMMAP_ON_MEMORY_ENABLE, + MEMMAP_ON_MEMORY_FORCE, +}; + +static int memmap_mode __read_mostly = MEMMAP_ON_MEMORY_DISABLE; + +static inline unsigned long memory_block_align_base(unsigned long size) +{ + if (memmap_mode == MEMMAP_ON_MEMORY_FORCE) { + unsigned long align; + unsigned long nr_vmemmap_pages = size >> PAGE_SHIFT; + unsigned long vmemmap_size; + + vmemmap_size = DIV_ROUND_UP(nr_vmemmap_pages * sizeof(struct page), PAGE_SIZE); + align = pageblock_align(vmemmap_size) - vmemmap_size; + return align; + } else + return 0; +} + #ifdef CONFIG_MHP_MEMMAP_ON_MEMORY /* * memory_hotplug.memmap_on_memory parameter */ -static bool memmap_on_memory __ro_after_init; -module_param(memmap_on_memory, bool, 0444); -MODULE_PARM_DESC(memmap_on_memory, "Enable memmap on memory for memory hotplug"); +static int set_memmap_mode(const char *val, const struct kernel_param *kp) +{ + int ret, mode; + bool enabled; + + if (sysfs_streq(val, "force") || sysfs_streq(val, "FORCE")) { + mode = MEMMAP_ON_MEMORY_FORCE; + goto matched; + } + + ret = kstrtobool(val, &enabled); + if (ret < 0) + return ret; + if (enabled) + mode = MEMMAP_ON_MEMORY_ENABLE; + else + mode = MEMMAP_ON_MEMORY_DISABLE; + +matched: + *((int *)kp->arg) = mode; + if (mode == MEMMAP_ON_MEMORY_FORCE) { + pr_info("Memory hotplug will reserve %ld pages in each memory block\n", + memory_block_align_base(memory_block_size_bytes())); + } + return 0; +} + +static int get_memmap_mode(char *buffer, const struct kernel_param *kp) +{ + if (*((int *)kp->arg) == MEMMAP_ON_MEMORY_FORCE) + return sprintf(buffer, "force\n"); + if (*((int *)kp->arg) == MEMMAP_ON_MEMORY_ENABLE) + return sprintf(buffer, "y\n"); + + return sprintf(buffer, "n\n"); +} + +static const struct kernel_param_ops memmap_mode_ops = { + .set = set_memmap_mode, + .get = get_memmap_mode, +}; +module_param_cb(memmap_on_memory, &memmap_mode_ops, &memmap_mode, 0444); +MODULE_PARM_DESC(memmap_on_memory, "Enable memmap on memory for memory hotplug\n" + "With value \"force\" it could result in memory wastage due to memmap size limitations \n" + "For example, if the memmap for a memory block requires 1 MiB, but the pageblock \n" + "size is 2 MiB, 1 MiB of hotplugged memory will be wasted. Note that there are \n" + "still cases where the feature cannot be enforced: for example, if the memmap is \n" + "smaller than a single page, or if the architecture does not support the forced \n" + "mode in all configurations. (y/n/force)"); static inline bool mhp_memmap_on_memory(void) { - return memmap_on_memory; + return !!memmap_mode; } #else static inline bool mhp_memmap_on_memory(void) @@ -1264,7 +1332,6 @@ static inline bool arch_supports_memmap_on_memory(unsigned long size) static bool mhp_supports_memmap_on_memory(unsigned long size) { - unsigned long nr_vmemmap_pages = size >> PAGE_SHIFT; unsigned long vmemmap_size = nr_vmemmap_pages * sizeof(struct page); unsigned long remaining_size = size - vmemmap_size; @@ -1295,10 +1362,23 @@ static bool mhp_supports_memmap_on_memory(unsigned long size) * altmap as an alternative source of memory, and we do not exactly * populate a single PMD. */ - return mhp_memmap_on_memory() && - size == memory_block_size_bytes() && - IS_ALIGNED(remaining_size, (pageblock_nr_pages << PAGE_SHIFT)) && - arch_supports_memmap_on_memory(size); + if (!mhp_memmap_on_memory() || size != memory_block_size_bytes()) + return false; + + /* + * Make sure the vmemmap allocation is fully contained + * so that we always allocate vmemmap memory from altmap area. + */ + if (!IS_ALIGNED(vmemmap_size, PAGE_SIZE)) + return false; + /* + * Without page reservation remaining pages should be pageblock aligned. + */ + if (memmap_mode != MEMMAP_ON_MEMORY_FORCE && + !IS_ALIGNED(remaining_size, (pageblock_nr_pages << PAGE_SHIFT))) + return false; + + return arch_supports_memmap_on_memory(size); } /* @@ -1311,7 +1391,11 @@ int __ref add_memory_resource(int nid, struct resource *res, mhp_t mhp_flags) { struct mhp_params params = { .pgprot = pgprot_mhp(PAGE_KERNEL) }; enum memblock_flags memblock_flags = MEMBLOCK_NONE; - struct vmem_altmap mhp_altmap = {}; + struct vmem_altmap mhp_altmap = { + .base_pfn = PHYS_PFN(res->start), + .end_pfn = PHYS_PFN(res->end), + .reserve = memory_block_align_base(resource_size(res)), + }; struct memory_group *group = NULL; u64 start, size; bool new_node = false; @@ -1356,8 +1440,7 @@ int __ref add_memory_resource(int nid, struct resource *res, mhp_t mhp_flags) */ if (mhp_flags & MHP_MEMMAP_ON_MEMORY) { if (mhp_supports_memmap_on_memory(size)) { - mhp_altmap.free = PHYS_PFN(size); - mhp_altmap.base_pfn = PHYS_PFN(start); + mhp_altmap.free = PHYS_PFN(size) - mhp_altmap.reserve; params.altmap = &mhp_altmap; } /* fallback to not using altmap */ @@ -1369,7 +1452,7 @@ int __ref add_memory_resource(int nid, struct resource *res, mhp_t mhp_flags) goto error; /* create memory block devices after memory was added */ - ret = create_memory_block_devices(start, size, mhp_altmap.alloc, + ret = create_memory_block_devices(start, size, mhp_altmap.alloc + mhp_altmap.reserve, group); if (ret) { arch_remove_memory(start, size, NULL); From patchwork Tue Jul 18 02:44:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aneesh Kumar K.V" X-Patchwork-Id: 13316693 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 635A2EB64DC for ; Tue, 18 Jul 2023 02:44:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 06BF96B007E; Mon, 17 Jul 2023 22:44:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 01BC28D0001; Mon, 17 Jul 2023 22:44:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DFF8A6B0081; Mon, 17 Jul 2023 22:44:55 -0400 (EDT) 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 D400D6B007E for ; Mon, 17 Jul 2023 22:44:55 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id B5FF4B0ED1 for ; Tue, 18 Jul 2023 02:44:55 +0000 (UTC) X-FDA: 81023190150.18.445D006 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf15.hostedemail.com (Postfix) with ESMTP id 5FCECA000A for ; Tue, 18 Jul 2023 02:44:53 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=hGnztzR0; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf15.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689648293; 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:in-reply-to:references:references:dkim-signature; bh=LkFHfh9uSQDI/r/WIP7SzQwU2qKL/y6mKGMPa0SG5yE=; b=fj9c1j77zAbe58itzr83JOhOcBhbTJ/CRGA+kC+P5p3Xgh1H6qh/odNBbCRNPb4uG3dupQ z+vQbFB54ann9Boob375yESSNpN0ONXIlI6CIM3rTH415eDdqkIvLqSKXiWbHrM1N9cURU efvFUZZfi+99SPi1miYK3yL2IcpQ5fQ= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=hGnztzR0; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf15.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689648293; a=rsa-sha256; cv=none; b=I8Xt95KdVeZE2nywCmo+cRJtf9vvafv4FmVCEWxU/9Xe6B7ZDClXD/CaVyOYI8mF7sAJgm PqWp0LtAAzK262vBTl92O3lrgnEhOHKsuNrmWj3npVolD4TTr7d5yW8gNHBsxMbLMYZzJA UDkjmBy2lsFoGSLCKh35a5l/XjugkIo= Received: from pps.filterd (m0353726.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36I2grfG011835; Tue, 18 Jul 2023 02:44:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=LkFHfh9uSQDI/r/WIP7SzQwU2qKL/y6mKGMPa0SG5yE=; b=hGnztzR0ca/y8BLep+xPvHsJeAQouR0wTTgpn9wPZynwbr6Ibi8eaIdd4710udxN/fHK NH3BsJF9dkN/Ok2rZYnBGfuC/zg2rjSa74ynp9aWvI+nwv4Tt09XjtealdpG4Sj9GMpO 0DhmOhUqfMP8oz+arkHHG1/7xwGc9rU5lQeFFCvbWdovIJswPA0bnRgIwt4qdhHbwLz4 uZoX6vVPdHZ3ZD1dGUU5qbg79CBoHc25kWcq3UZGfX9QT4LYC8XKt/qwBheh1ZqzxpWN Xy4k1gzNEfTfvxcmNZ+ubDyYy/S/QoWPu8fv5q3rmbV9Z8IAdzJMcWJ43mA+3FJIBlD3 2A== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rwj6gr0vn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:43 +0000 Received: from m0353726.ppops.net (m0353726.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 36I2ig94016746; Tue, 18 Jul 2023 02:44:43 GMT Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rwj6gr0va-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:42 +0000 Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 36I0VVhP004183; Tue, 18 Jul 2023 02:44:42 GMT Received: from smtprelay04.wdc07v.mail.ibm.com ([172.16.1.71]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 3rv8g0vjkd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:42 +0000 Received: from smtpav02.dal12v.mail.ibm.com (smtpav02.dal12v.mail.ibm.com [10.241.53.101]) by smtprelay04.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 36I2ieOT35521104 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 18 Jul 2023 02:44:41 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BE5D35805F; Tue, 18 Jul 2023 02:44:40 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C4B8E5805A; Tue, 18 Jul 2023 02:44:36 +0000 (GMT) Received: from skywalker.ibmuc.com (unknown [9.43.62.199]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Tue, 18 Jul 2023 02:44:36 +0000 (GMT) From: "Aneesh Kumar K.V" To: linux-mm@kvack.org, akpm@linux-foundation.org, mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org, npiggin@gmail.com, christophe.leroy@csgroup.eu Cc: Oscar Salvador , David Hildenbrand , Michal Hocko , Vishal Verma , "Aneesh Kumar K.V" Subject: [PATCH v4 5/6] powerpc/book3s64/memhotplug: Enable memmap on memory for radix Date: Tue, 18 Jul 2023 08:14:08 +0530 Message-ID: <20230718024409.95742-6-aneesh.kumar@linux.ibm.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230718024409.95742-1-aneesh.kumar@linux.ibm.com> References: <20230718024409.95742-1-aneesh.kumar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: lLZ4TmkfpjG09hPnXuQpGqkJXDJoD7u3 X-Proofpoint-GUID: WJbr-P-9oOJ8U2sZnmQEHRwhlzTvvOQo X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-17_15,2023-07-13_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 mlxlogscore=999 impostorscore=0 suspectscore=0 spamscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 malwarescore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307180022 X-Rspamd-Queue-Id: 5FCECA000A X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 5mocchjgorz5w3r9dkua3kwiiw1j1mr9 X-HE-Tag: 1689648293-401951 X-HE-Meta: U2FsdGVkX1+Ko/pIi4O/rj7enyq2dBRcNE/g1lV0IYEza4SJd98nG9BjVWmnIxnvTCsT6ojtupmwqYbxoNqRlllOay4P8tUS3/RGVG62Q3YhTB1hNDWvOp2ZaYcdv8tmUXfVaeXmNsVZZMSUZss5e7l7+tH1eefP4dwqlQEy7lnpV9bnrC3jGWrYX/fZg8EVdUCkf5jBbU9key1tOabsS5cpml1kdNxSEMiZ/MuRpLynYaWJs9sQlmyu5Gtgah7bsLynFATxRpxsgIuuGIyEhUM1U2b/QYJIJjSWBcmEL4bez9f9TGvodSXwcOIk+71Js75mxSasgQWfPvBFZbeoZHo2OLNNw4o556q/+k/uNlDJkL1cOv3wjGhmPdsQRFLWGXmSSLkr3dx7l/HYz1L5KHC3t6wM2QNsCPsocEUDGDn+VLoc7L9o6rZ6VtwViowwCpKAXXqUHEF65Qa7zRXvbSO39nk+MS1bJnq4wUc078EP0HjXumwLtXYH9LxWE8/hHDT5DeGUKEnuxtifLQu/YJK2OzAAGtx4bBsSiDKiIrPWASMrG5MuSgn5Lc180rt7wt7ENjMOFuOOCGhsXrbPvLECFHpRuGwDo1/XQAfWWV1rxFVhc8cQrI2h1x0ckbqY2WwjI85+bQQBmZYMY4Ud/hkroEUlXgT04XPQdAVWgKB97Fc7oh4+DbU8WSmNbSZVtco7WBQcdOXyzysrmgsZbFistvcoW5S75wFrHoAantDOHk6PWdD9s2AoaPLyPF8QBEgAks9HikNBoRi9gCBaqmWYuU6fLthIfwP1wFC6Qe0qgavyJenfoRoOZWbiZSbh7fYw5/DoKotdsPf/YY/lEMzprUydnZFDyZB0GeYzdY0YPtwI2Okd1G0Py6eJpctgxRZEA1nreqtmtpmZLxFo9cvNjeSuNxsLW2D87bO73ZJmRPOcwT72BhvmDA9kzy2J8Xgu3Oq3TgpzBnuclfm AlgSm4T7 /EdRV7l1APbR2XVgJqhetK3jQXwvE6LEpm3Aqtx3inoHiOaPFVq8mQ8y1jVxqWAAnz/SCbRPoDIcQLmlKo11V5DSTv57xz233yIx67c+0kYMUxsdzZfxxJCwny7iRV0dfbKtyTvauHR/UYnlENk8jxXfljZ6SxH4NLkt8pk3YxPgu2IUSqxmyOYeLh/TB738DiwaR1z1s9d3fG+ePLQV+56fNZ4biJ0bn3xUw1I1/Ky0pUPo= 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: Radix vmemmap mapping can map things correctly at the PMD level or PTE level based on different device boundary checks. Hence we skip the restrictions w.r.t vmemmap size to be multiple of PMD_SIZE. This also makes the feature widely useful because to use PMD_SIZE vmemmap area we require a memory block size of 2GiB We can also use MHP_RESERVE_PAGES_MEMMAP_ON_MEMORY to that the feature can work with a memory block size of 256MB. Using altmap.reserve feature to align things correctly at pageblock granularity. We can end up losing some pages in memory with this. For ex: with a 256MiB memory block size, we require 4 pages to map vmemmap pages, In order to align things correctly we end up adding a reserve of 28 pages. ie, for every 4096 pages 28 pages get reserved. Signed-off-by: Aneesh Kumar K.V --- arch/powerpc/Kconfig | 1 + arch/powerpc/include/asm/pgtable.h | 24 +++++++++++++++++++ .../platforms/pseries/hotplug-memory.c | 3 ++- mm/memory_hotplug.c | 2 ++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 116d6add0bb0..f890907e5bbf 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -157,6 +157,7 @@ config PPC select ARCH_HAS_UBSAN_SANITIZE_ALL select ARCH_HAVE_NMI_SAFE_CMPXCHG select ARCH_KEEP_MEMBLOCK + select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE if PPC_RADIX_MMU select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_SERIO select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h index 68817ea7f994..3d35371395a9 100644 --- a/arch/powerpc/include/asm/pgtable.h +++ b/arch/powerpc/include/asm/pgtable.h @@ -169,6 +169,30 @@ static inline bool is_ioremap_addr(const void *x) int __meminit vmemmap_populated(unsigned long vmemmap_addr, int vmemmap_map_size); bool altmap_cross_boundary(struct vmem_altmap *altmap, unsigned long start, unsigned long page_size); +/* + * mm/memory_hotplug.c:mhp_supports_memmap_on_memory goes into details + * some of the restrictions. We don't check for PMD_SIZE because our + * vmemmap allocation code can fallback correctly. The pageblock + * alignment requirement is met using altmap->reserve blocks. + */ +#define arch_supports_memmap_on_memory arch_supports_memmap_on_memory +static inline bool arch_supports_memmap_on_memory(unsigned long size) +{ + unsigned long nr_pages = size >> PAGE_SHIFT; + unsigned long vmemmap_size = nr_pages * sizeof(struct page); + + if (!radix_enabled()) + return false; + + if (IS_ENABLED(CONFIG_PPC_4K_PAGES)) + return IS_ALIGNED(vmemmap_size, PMD_SIZE); + /* + * The pageblock alignment requirement is met by using + * reserve blocks in altmap. + */ + return true; +} + #endif /* CONFIG_PPC64 */ #endif /* __ASSEMBLY__ */ diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c index 9c62c2c3b3d0..1447509357a7 100644 --- a/arch/powerpc/platforms/pseries/hotplug-memory.c +++ b/arch/powerpc/platforms/pseries/hotplug-memory.c @@ -617,6 +617,7 @@ static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index) static int dlpar_add_lmb(struct drmem_lmb *lmb) { + mhp_t mhp_flags = MHP_NONE | MHP_MEMMAP_ON_MEMORY; unsigned long block_sz; int nid, rc; @@ -637,7 +638,7 @@ static int dlpar_add_lmb(struct drmem_lmb *lmb) nid = first_online_node; /* Add the memory */ - rc = __add_memory(nid, lmb->base_addr, block_sz, MHP_NONE); + rc = __add_memory(nid, lmb->base_addr, block_sz, mhp_flags); if (rc) { invalidate_lmb_associativity_index(lmb); return rc; diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index c409f5ff6a59..6da063c80733 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -2174,6 +2174,8 @@ static int __ref try_remove_memory(u64 start, u64 size) * right thing if we used vmem_altmap when hot-adding * the range. */ + mhp_altmap.base_pfn = PHYS_PFN(start); + mhp_altmap.free = PHYS_PFN(size) - nr_vmemmap_pages; mhp_altmap.alloc = nr_vmemmap_pages; altmap = &mhp_altmap; } From patchwork Tue Jul 18 02:44:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aneesh Kumar K.V" X-Patchwork-Id: 13316694 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 748DFC001DE for ; Tue, 18 Jul 2023 02:44:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C2E146B0080; Mon, 17 Jul 2023 22:44:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BDCD76B0081; Mon, 17 Jul 2023 22:44:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A7DE56B0082; Mon, 17 Jul 2023 22:44:56 -0400 (EDT) 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 913F86B0080 for ; Mon, 17 Jul 2023 22:44:56 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 6A5D41206E7 for ; Tue, 18 Jul 2023 02:44:56 +0000 (UTC) X-FDA: 81023190192.19.D267A34 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf22.hostedemail.com (Postfix) with ESMTP id 31ED1C000A for ; Tue, 18 Jul 2023 02:44:53 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=e0lJzWkg; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf22.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689648294; 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:in-reply-to:references:references:dkim-signature; bh=11P14/5LOzQ6oyW0oqG1KeDEyAZb780VlDIWivVS0k4=; b=B/m3VFwgEsGVgXZ6v8skPgUWRe7IYR/H5+e2ov5j0hAhCEdP4U5EvEQv45eS5XMNfVWx5F n5cpMyCcMbtFRljEhq7kgrNSQI4dYp664EWH0327VuQYjc6P6eborM9KbDz4+2Sys8ZbEm jqTwS/j5xTA7Yf9TR4MpTVRD0qQkSBw= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=e0lJzWkg; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf22.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689648294; a=rsa-sha256; cv=none; b=TGpcnvtYvIQNidDuPErHeeY7MOnS4OHokXs8zgKfTp43ardlmrpEHJ+utYgidwYoI1RbgT 19gFKH3bQvgJd8LcQ+3Yun1hX6/kM3igWpccRHgaSZtnZM3d4hOO4ALNEqhUlFji517+dW i21LkhkryNX8J/qNHMAUEDkcSHNir8c= Received: from pps.filterd (m0353723.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36I2eadg012633; Tue, 18 Jul 2023 02:44:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=11P14/5LOzQ6oyW0oqG1KeDEyAZb780VlDIWivVS0k4=; b=e0lJzWkgs9ZUaNODAXvkDYmGuTQBxHyXjwo4nGx9zrYQZ8L1Sx8krVDbFQTWaBUK9p8I a3cVYWs+wkvQ2nUgwNYqMx6XV+LjglRiluHYwG98WrUKfGOURs3xRVO860wyWxbCYOYi YdPshj4KuIDnDkrSnzRlARwR0zMZ0fJLqq5KiEf+RCbnfB4VJ2GSsEY+EFiP0Xl4W7Tf X7CRJ8akFLNEp1QnJtySOHvW8RH7VhxoJCMLnH53s0xfWD0JvJpIXY7gP44l7+w7Vheq VUMYZD9c28f+Efgfx3ReFjeHd9f3fi7OMnPMaJtppfX2W1/BSs3xydz+2j6dHPVXDL2l rQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rwhwhg8ya-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:47 +0000 Received: from m0353723.ppops.net (m0353723.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 36I2gCV5016478; Tue, 18 Jul 2023 02:44:46 GMT Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rwhwhg8xx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:46 +0000 Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 36HNMd0t029366; Tue, 18 Jul 2023 02:44:46 GMT Received: from smtprelay06.dal12v.mail.ibm.com ([172.16.1.8]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3rv6smbtw7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 02:44:45 +0000 Received: from smtpav02.dal12v.mail.ibm.com (smtpav02.dal12v.mail.ibm.com [10.241.53.101]) by smtprelay06.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 36I2ijZS1114812 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 18 Jul 2023 02:44:45 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2C53A5805A; Tue, 18 Jul 2023 02:44:45 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6093158051; Tue, 18 Jul 2023 02:44:41 +0000 (GMT) Received: from skywalker.ibmuc.com (unknown [9.43.62.199]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Tue, 18 Jul 2023 02:44:41 +0000 (GMT) From: "Aneesh Kumar K.V" To: linux-mm@kvack.org, akpm@linux-foundation.org, mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org, npiggin@gmail.com, christophe.leroy@csgroup.eu Cc: Oscar Salvador , David Hildenbrand , Michal Hocko , Vishal Verma , "Aneesh Kumar K.V" Subject: [PATCH v4 6/6] mm/hotplug: Embed vmem_altmap details in memory block Date: Tue, 18 Jul 2023 08:14:09 +0530 Message-ID: <20230718024409.95742-7-aneesh.kumar@linux.ibm.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230718024409.95742-1-aneesh.kumar@linux.ibm.com> References: <20230718024409.95742-1-aneesh.kumar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: 80HNeVbqkHY7c_Zq4sMSnfsjMChL1vGq X-Proofpoint-ORIG-GUID: nR08k9cYKfcC3ilt5cBRUZQUfZyeGnrl X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-17_15,2023-07-13_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 malwarescore=0 priorityscore=1501 spamscore=0 mlxlogscore=652 impostorscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 mlxscore=0 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307180022 X-Rspamd-Queue-Id: 31ED1C000A X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: tmdofxe7zh9wg9s1eszwtk6nhsti1jw9 X-HE-Tag: 1689648293-373800 X-HE-Meta: U2FsdGVkX19zeGYe7jcrMYTxfOTtVTJHzdhLMX8EYfawIGqJkG3ws2rZYS9pBlDMLmnkkQ6fDFr9Gn3ZGjDqsxCj1L5rZQc06CYHgTKgxRa20DQoa7m+GlpcyxA80OpQnPaadVL/W/nQI3UxYZp4O9rB4IDlqYRAHHx5+B//BFs4Ke7YLtwZ251/i/dQM0FgF+3hKYOeCtsMF5z9E9EOlJ2ICvBLD6X6n8P+BhQEEpgNTKbAT2eBsDI7R5UViKFGAibMbsVfeEzyEmzqlUyynBuUMrEhZ/uh0Pl/fyx77Dh61kZgLEQDUb2ScTpWRl2SSHjBZSnlly+VyQKi9vUvdQ3RTrj7mstx27xO8cfB+KHEuVI9i5Gzdst8T1HoDRGWIcN2vyqaykX9VQOhMuF1gedjT6zMvirYdFpHGGkICUf1EHeC6qNRVfBVoQDkA/Z//KfArKqph5pXJYuO0db3OOTBE04rpz4u+qwDILoGP3+0md7cyyKBqbEut3rEALQaKBwN+rAt0PfbN2qE2Sz+6Fi5lQ9++2baX71FMWAR+nscr6IsQjitbMHdp0e+O1FvNKfyVnTsUOpA2oM0nevKFIIJ/UGQnOvxF9FGc65QfB7aBNFItq2R9YjZUdMRndaifExAzcBojcjKPOjLYetATTNNHM9uRhur5XMTBHVKtUEvkfoUZj3U0xHKBhUMQdM3FZBuKrHiaBVrSv1CswS4ADh0/gxf7elOHMMPXB6nPv+UHuIGgbwDHc5rt4h8DYFveliK/LufVAFQQStcgWvX76JH+bo6jWoSURouy/cGU6DK8zuZbG3xKkZmuSOWcKn7l9FJS++owLC80aAgYXLax2CUVUrVVFJKTOcP2Vcd0LM6VlmmyEKF2voevXQ6U3BLn8Ln/QgjeNN5GJTCfZXXbZ73Ee+fQyXkAeFCgYT4sMgwBHJ+USRrDpjuttb4qbguGM/913x9kPyIeoRMeRL 4q7p3l30 pzbpMWiiFmsDxI+UK7W6QiLv3+5aNX8Lt97is3iSqVo3+cQO438+i621Y0cK+YFLmYDhPtEhype0g2x7LhNQuWMtAbCN2M8ZMdqaB4QRdnakneg4eFCXiOzeP06Wg5hhBDeYwbRei1SwfBIz/ywcOx/E9okgIQMeg4zgUmRb0O6G7PJG6SYqxqaEwtBB6GZbALo7z 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: With memmap on memory, some architecture needs more details w.r.t altmap such as base_pfn, end_pfn, etc to unmap vmemmap memory. Instead of computing them again when we remove a memory block embed vmem_altmap details in struct memory_block if we are using memmap on memory block feature. No functional change in this patch Signed-off-by: Aneesh Kumar K.V --- drivers/base/memory.c | 32 +++++++++++++++++++++++--------- include/linux/memory.h | 8 ++------ mm/memory_hotplug.c | 38 ++++++++++++++++++-------------------- 3 files changed, 43 insertions(+), 35 deletions(-) diff --git a/drivers/base/memory.c b/drivers/base/memory.c index b456ac213610..cef6506f0209 100644 --- a/drivers/base/memory.c +++ b/drivers/base/memory.c @@ -106,6 +106,7 @@ static void memory_block_release(struct device *dev) { struct memory_block *mem = to_memory_block(dev); + kfree(mem->altmap); kfree(mem); } @@ -183,7 +184,7 @@ static int memory_block_online(struct memory_block *mem) { unsigned long start_pfn = section_nr_to_pfn(mem->start_section_nr); unsigned long nr_pages = PAGES_PER_SECTION * sections_per_block; - unsigned long nr_vmemmap_pages = mem->nr_vmemmap_pages; + unsigned long nr_vmemmap_pages = 0; struct zone *zone; int ret; @@ -200,6 +201,9 @@ static int memory_block_online(struct memory_block *mem) * stage helps to keep accounting easier to follow - e.g vmemmaps * belong to the same zone as the memory they backed. */ + if (mem->altmap) + nr_vmemmap_pages = mem->altmap->alloc + mem->altmap->reserve; + if (nr_vmemmap_pages) { ret = mhp_init_memmap_on_memory(start_pfn, nr_vmemmap_pages, zone); if (ret) @@ -230,7 +234,7 @@ static int memory_block_offline(struct memory_block *mem) { unsigned long start_pfn = section_nr_to_pfn(mem->start_section_nr); unsigned long nr_pages = PAGES_PER_SECTION * sections_per_block; - unsigned long nr_vmemmap_pages = mem->nr_vmemmap_pages; + unsigned long nr_vmemmap_pages = 0; int ret; if (!mem->zone) @@ -240,6 +244,9 @@ static int memory_block_offline(struct memory_block *mem) * Unaccount before offlining, such that unpopulated zone and kthreads * can properly be torn down in offline_pages(). */ + if (mem->altmap) + nr_vmemmap_pages = mem->altmap->alloc + mem->altmap->reserve; + if (nr_vmemmap_pages) adjust_present_page_count(pfn_to_page(start_pfn), mem->group, -nr_vmemmap_pages); @@ -726,7 +733,7 @@ void memory_block_add_nid(struct memory_block *mem, int nid, #endif static int add_memory_block(unsigned long block_id, unsigned long state, - unsigned long nr_vmemmap_pages, + struct vmem_altmap *altmap, struct memory_group *group) { struct memory_block *mem; @@ -744,7 +751,14 @@ static int add_memory_block(unsigned long block_id, unsigned long state, mem->start_section_nr = block_id * sections_per_block; mem->state = state; mem->nid = NUMA_NO_NODE; - mem->nr_vmemmap_pages = nr_vmemmap_pages; + if (altmap) { + mem->altmap = kmalloc(sizeof(struct vmem_altmap), GFP_KERNEL); + if (!mem->altmap) { + kfree(mem); + return -ENOMEM; + } + memcpy(mem->altmap, altmap, sizeof(*altmap)); + } INIT_LIST_HEAD(&mem->group_next); #ifndef CONFIG_NUMA @@ -783,14 +797,14 @@ static int __init add_boot_memory_block(unsigned long base_section_nr) if (section_count == 0) return 0; return add_memory_block(memory_block_id(base_section_nr), - MEM_ONLINE, 0, NULL); + MEM_ONLINE, NULL, NULL); } static int add_hotplug_memory_block(unsigned long block_id, - unsigned long nr_vmemmap_pages, + struct vmem_altmap *altmap, struct memory_group *group) { - return add_memory_block(block_id, MEM_OFFLINE, nr_vmemmap_pages, group); + return add_memory_block(block_id, MEM_OFFLINE, altmap, group); } static void remove_memory_block(struct memory_block *memory) @@ -818,7 +832,7 @@ static void remove_memory_block(struct memory_block *memory) * Called under device_hotplug_lock. */ int create_memory_block_devices(unsigned long start, unsigned long size, - unsigned long vmemmap_pages, + struct vmem_altmap *altmap, struct memory_group *group) { const unsigned long start_block_id = pfn_to_block_id(PFN_DOWN(start)); @@ -832,7 +846,7 @@ int create_memory_block_devices(unsigned long start, unsigned long size, return -EINVAL; for (block_id = start_block_id; block_id != end_block_id; block_id++) { - ret = add_hotplug_memory_block(block_id, vmemmap_pages, group); + ret = add_hotplug_memory_block(block_id, altmap, group); if (ret) break; } diff --git a/include/linux/memory.h b/include/linux/memory.h index 31343566c221..f53cfdaaaa41 100644 --- a/include/linux/memory.h +++ b/include/linux/memory.h @@ -77,11 +77,7 @@ struct memory_block { */ struct zone *zone; struct device dev; - /* - * Number of vmemmap pages. These pages - * lay at the beginning of the memory block. - */ - unsigned long nr_vmemmap_pages; + struct vmem_altmap *altmap; struct memory_group *group; /* group (if any) for this block */ struct list_head group_next; /* next block inside memory group */ #if defined(CONFIG_MEMORY_FAILURE) && defined(CONFIG_MEMORY_HOTPLUG) @@ -147,7 +143,7 @@ static inline int hotplug_memory_notifier(notifier_fn_t fn, int pri) extern int register_memory_notifier(struct notifier_block *nb); extern void unregister_memory_notifier(struct notifier_block *nb); int create_memory_block_devices(unsigned long start, unsigned long size, - unsigned long vmemmap_pages, + struct vmem_altmap *altmap, struct memory_group *group); void remove_memory_block_devices(unsigned long start, unsigned long size); extern void memory_dev_init(void); diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 6da063c80733..6a8adbe030f9 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1452,8 +1452,7 @@ int __ref add_memory_resource(int nid, struct resource *res, mhp_t mhp_flags) goto error; /* create memory block devices after memory was added */ - ret = create_memory_block_devices(start, size, mhp_altmap.alloc + mhp_altmap.reserve, - group); + ret = create_memory_block_devices(start, size, params.altmap, group); if (ret) { arch_remove_memory(start, size, NULL); goto error; @@ -2054,12 +2053,18 @@ static int check_memblock_offlined_cb(struct memory_block *mem, void *arg) return 0; } -static int get_nr_vmemmap_pages_cb(struct memory_block *mem, void *arg) +static int get_vmemmap_altmap_cb(struct memory_block *mem, void *arg) { + struct vmem_altmap *altmap = (struct vmem_altmap *)arg; /* - * If not set, continue with the next block. + * If we have any pages allocated from altmap + * return the altmap details and break callback. */ - return mem->nr_vmemmap_pages; + if (mem->altmap) { + memcpy(altmap, mem->altmap, sizeof(struct vmem_altmap)); + return 1; + } + return 0; } static int check_cpu_on_node(int nid) @@ -2134,9 +2139,8 @@ EXPORT_SYMBOL(try_offline_node); static int __ref try_remove_memory(u64 start, u64 size) { - struct vmem_altmap mhp_altmap = {}; - struct vmem_altmap *altmap = NULL; - unsigned long nr_vmemmap_pages; + int ret; + struct vmem_altmap mhp_altmap, *altmap = NULL; int rc = 0, nid = NUMA_NO_NODE; BUG_ON(check_hotplug_memory_range(start, size)); @@ -2159,24 +2163,15 @@ static int __ref try_remove_memory(u64 start, u64 size) * the same granularity it was added - a single memory block. */ if (mhp_memmap_on_memory()) { - nr_vmemmap_pages = walk_memory_blocks(start, size, NULL, - get_nr_vmemmap_pages_cb); - if (nr_vmemmap_pages) { + ret = walk_memory_blocks(start, size, &mhp_altmap, + get_vmemmap_altmap_cb); + if (ret) { if (size != memory_block_size_bytes()) { pr_warn("Refuse to remove %#llx - %#llx," "wrong granularity\n", start, start + size); return -EINVAL; } - - /* - * Let remove_pmd_table->free_hugepage_table do the - * right thing if we used vmem_altmap when hot-adding - * the range. - */ - mhp_altmap.base_pfn = PHYS_PFN(start); - mhp_altmap.free = PHYS_PFN(size) - nr_vmemmap_pages; - mhp_altmap.alloc = nr_vmemmap_pages; altmap = &mhp_altmap; } } @@ -2194,6 +2189,9 @@ static int __ref try_remove_memory(u64 start, u64 size) arch_remove_memory(start, size, altmap); + if (altmap) + WARN(altmap->alloc, "Altmap not fully unmapped"); + if (IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK)) { memblock_phys_free(start, size); memblock_remove(start, size);