From patchwork Tue Jul 25 10:02: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: 13326253 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 E56F5C001DE for ; Tue, 25 Jul 2023 10:02:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8A2E46B0075; Tue, 25 Jul 2023 06:02:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 82ADA6B0078; Tue, 25 Jul 2023 06:02:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6F50E6B007B; Tue, 25 Jul 2023 06:02:43 -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 623626B0075 for ; Tue, 25 Jul 2023 06:02:43 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 299731A0D45 for ; Tue, 25 Jul 2023 10:02:43 +0000 (UTC) X-FDA: 81049695006.08.3042EC6 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf29.hostedemail.com (Postfix) with ESMTP id 8CADA12000F for ; Tue, 25 Jul 2023 10:02:40 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=iDysrotq; spf=pass (imf29.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690279360; 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=aKFNefd2TBLZ6cEsX29AYF2dHHKvLqjSwjs//gL5bUw=; b=BiOxDez/YAc7J+bWlX4Qb87w/EZ0fFRcXyfSVijylCluA0Dhw7hO2wGd4m8q4vfM38fLvs qHi+qgrFPv31W/PZangCuWB2E4aAc7p2AYf9Fvo1YmFf2UFTfgUqILH7grqVQ9ltxE1C8B hJfd2ZEZ1rvhElexUoPTNNqQeIC3Ri0= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=iDysrotq; spf=pass (imf29.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690279360; a=rsa-sha256; cv=none; b=mHuPc2crei1/DTYrz2CNDf9nKfP7NTDIGGbM1ApJKoe9JgmVRypKPcLfXBdSP3SS0ubf3l ej7IWtblVWX1auxuqtmzH7W09FaqpNQmZC3Z1S0Zfv3uOYlasTlhFqBg1vpJ+CdJXXBiYl PQYm4m0zhe8PT0pM4YTJLoycA7YD4l0= Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36P9eHZj023829; Tue, 25 Jul 2023 10:02: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=aKFNefd2TBLZ6cEsX29AYF2dHHKvLqjSwjs//gL5bUw=; b=iDysrotqZuAZnh3veHRKjytaUeQRo3Mt26bp8zTJqnlSDsamQGKOh/uf8jmfZrCm6TIj AxOsN8yBfuceEhU49t0nBE1H1wQEEs7K7O+/IhrTrWb8PiK1ZsVwroJJ8hXdX1S9LC40 d71Xk6xdUvNXBZ7i70Lz7q6yqhphOFIyoaoPp+0ABIBS6cl/P85WQMTfDfO/zToSoN1D HHRaMTmK3rScOsKIuZCxnASnlkk8FhVzxyt1Zdpp0infBwmr+2m/gWrbkF/qb1jNo4OK 55PUeaucpKmxv6rwUYBRAG6PL7e7Xr8e9uFK+++yH9XEZWgdO82WNwjppi4jMcCEGagT vQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3s25vjqxb2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:33 +0000 Received: from m0360072.ppops.net (m0360072.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 36P9fwIl028320; Tue, 25 Jul 2023 10:02: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 3s25vjqxa2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:27 +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 36P98Peo002375; Tue, 25 Jul 2023 10:02:26 GMT Received: from smtprelay04.wdc07v.mail.ibm.com ([172.16.1.71]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3s0txjtupr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:26 +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 36PA2QS036503924 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 25 Jul 2023 10:02:26 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E406A58069; Tue, 25 Jul 2023 10:02:25 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3438158051; Tue, 25 Jul 2023 10:02:22 +0000 (GMT) Received: from skywalker.in.ibm.com (unknown [9.109.212.144]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Tue, 25 Jul 2023 10:02:21 +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 v5 1/7] mm/hotplug: Simplify ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE kconfig Date: Tue, 25 Jul 2023 15:32:06 +0530 Message-ID: <20230725100212.531277-2-aneesh.kumar@linux.ibm.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230725100212.531277-1-aneesh.kumar@linux.ibm.com> References: <20230725100212.531277-1-aneesh.kumar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: 7y2FdsahyXQcG9UogtE78iXR_bBzmWfa X-Proofpoint-ORIG-GUID: rbPFVmwfURLlLfbaD8eMEp8oVv9RGhUA 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-25_04,2023-07-24_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 impostorscore=0 phishscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 mlxscore=0 clxscore=1015 mlxlogscore=696 malwarescore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307250082 X-Rspamd-Queue-Id: 8CADA12000F X-Rspam-User: X-Stat-Signature: x1kzrwuskphcg7cnq9dx65fjf1wta1gz X-Rspamd-Server: rspam01 X-HE-Tag: 1690279360-514616 X-HE-Meta: U2FsdGVkX18iyPqPWjjSIJI88/2WiQ1DsFpyKLX0tEue7KmKkUt8nmG2FgHOSLhEUa/Eyc/sqQi0DNKKpN1peNjp+7dGMDBRBETfCDT0KC358+1TJw8rEmhxfinrn5DVyvWltyrvmHtS2l352GpmKZroIahHMAjWbsV9rcThUoDsrRgsdsscmUWX8rdPLRUqjnwN3JM4q+JIJdPTw6EOtv0YjZisbssE3MQOvqxpyvV1GIIGUr/YUAzc7/kuXvm9GSjQEZwJ4WUSJyHc1oA0+ufAbSQaGraxA/2WxDN6S8oG+e8S/4bYWDDHFf+U6oTcaYxbz5vFSDyX0b14p/Dpg/GwDJFd2XnWM+n8MNCtfC+VkcGiZeAkODodJ7j94pCYjs9nI1Exj2dofXOp1y8ONE5WqIJFcoVZBnISgEtbTL95jTN9hveQjYOuXCT4/KOHj+bj1/W/HLmjVWvRia+U9/1YX4GhhFYgHwuCfN4TdKiOQRXn7uZ/W1Gi5Px5v80ueC6Ax2wZ6WKT1A1EdD7o+WDIjchQSJF2CkxtQB0Zs9QXJf/pMk0OpgyrHhhzTuIaSLZTZ//yGMz/6a5N+/HhtdILFGUjIYaLu5MHqJOGOqxtS0Ltj8h8aWE5Bnd6ku3bzd7IDDW06arvvm+gB8Zj52xduWrvs4OEuAEOwdWMN1zaGQqAfl+iDbzmgdX+AueWVDjtmz6/mpwRkDw504uy3DzolO957JCvh4Hx229eWFOeCCHc+STKvmkl4th2JofBLLX2kmBcv5/VgtOMWKWehvc0khycY5d3eMq3LcQD/B0jekkqE8wjAU5VClhnxc0IrWoyy923sSmM6FDohB7jq84FBbz03E1igewLXs9AdMCeUhHmw6fTO3gtlGCd0OxzIbaBFtDvu0dqUGZBf2cKmXOLtr/QU2Yq2SRSDg2id+Q6XRomNQHHo+VwYhaw0gyGVEl5xN3iPXoNy4Vz2Z5 gWymIC5B psEp18J4dChV+03XDqyGEE+qtSOzE2jpB0Ed+wdVlYxSYX7edXSh/on/JOK6hSdMuaKPOU43d0/uSIsiUBkrOBUaLF+s8KDl0hbrHN9c/1Ff6YWvKYup1tyzrk/3hD0tFlHCeMvnue125Mam3pArzq+qk0Cx1rbQpSAlArPLxex/KMcMD5Qte7HZs2oMdtJlDZS7WtjsGtGvLqWX4f9w6CpUULw== 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 b1573257a4d6..0f749cfab8e6 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 @@ -347,9 +348,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 5fe49c030961..721dc88423c7 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -571,6 +571,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 25 10:02: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: 13326254 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 339A3C001E0 for ; Tue, 25 Jul 2023 10:02:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AED386B0078; Tue, 25 Jul 2023 06:02:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A9D046B007B; Tue, 25 Jul 2023 06:02:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8EF0C8D0001; Tue, 25 Jul 2023 06:02: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 828A36B0078 for ; Tue, 25 Jul 2023 06:02:44 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 4A467160D1C for ; Tue, 25 Jul 2023 10:02:44 +0000 (UTC) X-FDA: 81049695048.26.8101038 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf18.hostedemail.com (Postfix) with ESMTP id 9B8131C0010 for ; Tue, 25 Jul 2023 10:02:40 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=P3Z4AZh7; spf=pass (imf18.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690279360; a=rsa-sha256; cv=none; b=n15iTP/L7nXsA2NdUvp3k5vSl+WXT2MTcx5GN8FDN+kJXMD0tW5E/XX6wBIVwYCI9PTzMC /a9WJmkMeer76qv/b0k6MxYzHfc+Fu8ER1YRbPUiR7LvqDYpfvJVaom6JRT8f6qBC+lC+S uOhrrBUMzV9UlTKf/yE67NRO3LOS8TQ= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=P3Z4AZh7; spf=pass (imf18.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690279360; 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=GB1lCglV8LwUrneFfqAgwx4CmNBI9hR7fw7cHMyn2BU=; b=zO122uWOTGYr48KHzcq7zoPen57tQ287X4I3Jp1Sv0kaSbM4SF3pYc53fE2cvaObSv9Adx 2xoYIvW+H3SLL4MaVG4SA7oCEDkd1b76nTsvo0l7jSeDlXeMP2v/bg4JxFtczQ2vP8gnKj /YiFH3dFlVbczbLpHYk1LembKv2t3Lo= Received: from pps.filterd (m0353722.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36P9tNPK022247; Tue, 25 Jul 2023 10:02: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=GB1lCglV8LwUrneFfqAgwx4CmNBI9hR7fw7cHMyn2BU=; b=P3Z4AZh7vl56a3I1bDgkMQ1mJsguRpdiGdQ0OSatyBM55Mf4NIpdPWRtFQwa3E2lDiF4 2FNqw5rjLBc1UHRD1k0KQtjoDqH1Uwi87mF8vPbUTYZEn2RXDeBOacbd7pGoCVe5bZaY y4RG0RPSZNeC8Z0l6TxEZx7dPlmHmYxGJDlm7EW/tGvYpnvD4jLsuMvTPiSimcl/rYV5 jHKVv+5MCI5yJ7u1b2G3w1y8dICquEucOvIPR0A8580LwPZVkgz8/W57ifTzHOAiPIva 1512HxgaPhTXm+eWv0cfIiViXJMdhKgXUI7rKUo/r0L9oyPvOo89fiJlEm2UniE3PpA/ rg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3s2bpqguqy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:32 +0000 Received: from m0353722.ppops.net (m0353722.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 36P9ebbx002191; Tue, 25 Jul 2023 10:02:32 GMT Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3s2bpqguqa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:32 +0000 Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 36PA2D4r014387; Tue, 25 Jul 2023 10:02:31 GMT Received: from smtprelay03.dal12v.mail.ibm.com ([172.16.1.5]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3s0stxu8yr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:31 +0000 Received: from smtpav02.dal12v.mail.ibm.com (smtpav02.dal12v.mail.ibm.com [10.241.53.101]) by smtprelay03.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 36PA2UXE6226446 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 25 Jul 2023 10:02:30 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 667F95805A; Tue, 25 Jul 2023 10:02:30 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8E1B458051; Tue, 25 Jul 2023 10:02:26 +0000 (GMT) Received: from skywalker.in.ibm.com (unknown [9.109.212.144]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Tue, 25 Jul 2023 10:02:26 +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 v5 2/7] mm/hotplug: Allow memmap on memory hotplug request to fallback Date: Tue, 25 Jul 2023 15:32:07 +0530 Message-ID: <20230725100212.531277-3-aneesh.kumar@linux.ibm.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230725100212.531277-1-aneesh.kumar@linux.ibm.com> References: <20230725100212.531277-1-aneesh.kumar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: oeXic4QMWbD_ylfj6OlL41jfzQQL1IrO X-Proofpoint-ORIG-GUID: -E0t8eMXrLlWSN02ujcXTrk5D4u0dxYN 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-25_04,2023-07-24_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 suspectscore=0 mlxscore=0 spamscore=0 impostorscore=0 phishscore=0 adultscore=0 mlxlogscore=953 bulkscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307250082 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 9B8131C0010 X-Stat-Signature: 138zz7qnr9tk1tojx1k3pu9x11ky3gaq X-Rspam-User: X-HE-Tag: 1690279360-39222 X-HE-Meta: U2FsdGVkX1+0evs0bE0EGVSzww365nR62wD21G7EAYje8DPxWmxddrnpxyJzlK0gtesmOsgtwp3EEDZWkfh9WWpFQv4YI5LEA51eUNbcUctOd2FLn5wvFwIzFc4KiH9S5Xdc9qq8DSjxDZXh9kYCSfB5Ftb3DuZcE8a4YLmW5gP7N8+cS/aZ/xVHi+7LPbLDZlymKO4OCMwlnnUmKsqYM5StUFroYShZP2+OZOcvY7uWqHU1dVDqwI8FQNUAxx5NrTdZXJjDiYSHte3340RvwJKcace880hX58BUhz4YsxyOQ88uJpskRdFIU+47WdpyfcRguX8WUjZA8eo4n3CCE34FSgeOV7iA3eK9yOFvPV0XM0jBVrCLHNv5bKXpggxMRlRdAj6erb6DQyYr9PCA6wTEGUKgbd5nJxnJjPCO9oyk1z2TkPEPxX3UkxlI7cCMuX80tu0oCfs/DGZTuMHE2uBpbS/bSEIpVCjFQdYuofQtq1tTtIkYg0SggTlqZLVf84CGJWBffRxDL09qtC6VXk3rhKpEL+Lc2t387gjNEtfPHEpkqOc2UnVDZO/2bIhCpacSODVx8eA5TJbdLbuuIrEjut14eGdzqpiAezbnXMr+JBd5N12F1e1C3wo4WGens5xiGGE07ud/t4w9uN7pkDQ5IesciSSL/rbAA2ieLK4dcymhBeGichE9ZaGOS9JT68+X1Sufi3o7gzfwrnoltLjVXATVdYWAjpzL8FPI5TaL+a3t6D62PbUsyXIP957sMkETffL1J2OJUwtf1jjE+HDfII2aCjVnzQWC8shwgLGJIlKwrWGcUCwfZhR7r7ey/SkPYgdxo528/SDlDMHPhWTeFv15knEkWd2RpDmy1i5JUTIxFPcpqTtXKlpnnSNGfC+z/uZhk+LvrECK5rNVIRDxvjxslBkoM5cj3Xc0OscbA/N315MwRnXTvBT/WgTYm8LLvgfWdza5yEx7Oo+ 4SWff7g6 Mrb1OfMLhYkbhAmKaZFxlYY8/YkIX4/aSwpLOvv1O2fXgRWdJdLyoAN86OHsWodjpn2UZjj01Ujoi8YCk1CvKiVx1EHlxzuamVeLkXg3hIFp8+D1mel4jdXRXE5x7I8n8vsKMNb/X4+Evh/qcQV9Sj4WYuWpj6z+jc3moTjj/EUFIEhU= 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. Acked-by: David Hildenbrand Signed-off-by: Aneesh Kumar K.V --- 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 7cfd13c91568..eca32ccd45cc 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 25 10:02: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: 13326262 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 DD4F0C001DE for ; Tue, 25 Jul 2023 10:05:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 76BD36B0083; Tue, 25 Jul 2023 06:05:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 71B586B0085; Tue, 25 Jul 2023 06:05:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 595406B0087; Tue, 25 Jul 2023 06:05:31 -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 4358E6B0083 for ; Tue, 25 Jul 2023 06:05:31 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 1B75E1C9703 for ; Tue, 25 Jul 2023 10:05:31 +0000 (UTC) X-FDA: 81049702062.14.912F486 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf24.hostedemail.com (Postfix) with ESMTP id 7E348180022 for ; Tue, 25 Jul 2023 10:05:28 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=shP7B5uj; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf24.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=1690279528; 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=D6w7Lot4e8BcNeMjCVSUtPdDiB71BA0lpgavvF7b3RE=; b=4FSoRoGUXk7McNsdkEtVHCHIAO1OgQqDCzNW/yKTFd0TNxiBXY7QbIewdYsK5MYuiFC1gg 7hPJmlC++Yy8t3UJLf3Gdk/6sYkjalQ6Mi41ufm8E//FCohQNLviDLMwSMPxVPUdmlrAzD wyvN8AsT3sAS6vXOfFnMiex+7yobtVE= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=shP7B5uj; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf24.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=1690279528; a=rsa-sha256; cv=none; b=vP5GF3eZihOnNpoFmn+4gc75JJDWH0lt0l/2AziVpuqcWUhUnD9isLKmwyaOQyj4gBQv7X 3qCuYhzKRVxjKBMIeBWtiIsErGgYpYBjkmpAJ+mgaWhrFYp8VimvcFZNL3jDlo/tam1CUq Opp7MaIUgE9RZtrRbJzMMVkVmbw+OgA= 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 36PA4sBX021896; Tue, 25 Jul 2023 10:05:22 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=D6w7Lot4e8BcNeMjCVSUtPdDiB71BA0lpgavvF7b3RE=; b=shP7B5ujmWDO+U2BiS7P6H6gPz3mHhqA/ZfnNIRxek6l4gFdg2c1xroGKxcOYXVouvAt Fwap1KMxUVYk6S9pl55JMEvAiq+/TfMSP4mVuvJQ+kia2geGq3yi4vb+T3wUFamBRcXT xkNKnxQQAImeVfA8Dn/KX6CQ/WKW+STHxGeJayR3yQIZELAFmYU7THD39vHI1tMJFHZ+ wCyrREvaO16QWnn+HK5ojqMfJ6n9UiSPsnfbZaTRd7Lc84CjYkTrFcdX6oqtUl/9r4hs /Ni5aHvTK51QkdJPWxJWL/Cu4T/S4ulUag86sXXaPSEUKK9QxO90RqACddWF0kxu/WAZ 8g== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3s255jsdxx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:05:21 +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 36PA5KkD024411; Tue, 25 Jul 2023 10:05:20 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 3s255jsdqt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:05:16 +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 36P9hPjv002281; Tue, 25 Jul 2023 10:02:35 GMT Received: from smtprelay07.dal12v.mail.ibm.com ([172.16.1.9]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 3s0unjam2j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:35 +0000 Received: from smtpav02.dal12v.mail.ibm.com (smtpav02.dal12v.mail.ibm.com [10.241.53.101]) by smtprelay07.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 36PA2YEJ21889350 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 25 Jul 2023 10:02:35 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C8AAC58060; Tue, 25 Jul 2023 10:02:34 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F08BA5805C; Tue, 25 Jul 2023 10:02:30 +0000 (GMT) Received: from skywalker.in.ibm.com (unknown [9.109.212.144]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Tue, 25 Jul 2023 10:02:30 +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 v5 3/7] mm/hotplug: Allow architecture to override memmap on memory support check Date: Tue, 25 Jul 2023 15:32:08 +0530 Message-ID: <20230725100212.531277-4-aneesh.kumar@linux.ibm.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230725100212.531277-1-aneesh.kumar@linux.ibm.com> References: <20230725100212.531277-1-aneesh.kumar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: wa5YJNwiOKhzS4Z2on0AOQ9xoLeTsKUK X-Proofpoint-ORIG-GUID: HOPEk8GXVZCohyAsTaTDWTuv_qE2mfns 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-25_04,2023-07-24_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 bulkscore=0 lowpriorityscore=0 malwarescore=0 mlxlogscore=999 adultscore=0 priorityscore=1501 spamscore=0 clxscore=1015 impostorscore=0 suspectscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307250087 X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 7E348180022 X-Stat-Signature: xw3pxsre56gsj9o8mikzat33x3g5zrhc X-HE-Tag: 1690279528-256307 X-HE-Meta: U2FsdGVkX19f/lt5OkV+S1ot25AvnmAzBlE/Qzh9i7uTBW0oATBYW2e+v6JnQa7vw/QVI5sNvPJHekDrM0wSbTPKtiUGUH05HFsU9b9obYAa0/H51WPhe2PIgm4v6gOasu6NBG8Zrr46ZNX9hoBDqJcQG6xubF+Bsy7AN+PujRjZ9foaV+p1v4WphkeLcQcY4l2WA512LUGp7dSs4uXfPWHrNSJtiwooCfUp4LLAlIMq/LwzOOaehCuE3hWh/9MbEe77qMZlqo8YIRbaIJh/RcuE+Dw7d+8G3HyDqZBgZkY+8Wdq1+m7F6aHWkvsJzObSOZYn955Q6rSIAyDVSuUa8FSwbQSHAUP5qWkilOHAi8m0BG7UwQo4iOjy2l1FOXoDvP+YO2BuqhtsMg0CgnSnp3OqJLoXBL2eLaIVJe4wmqSNCLrGw+MH4+zbn7pEXtaQlQSrCXO3Yt4LKBvQKwyO+U8YGEOPWYp6BZ0BOOOmJQwQgf+ZjY+Sl6muMpwbJ9UphExxtmY28Eh06ZgKUhl//+IZFCa/7Rx1YwfIzTFFlr+wo0y+tSA/673tIBxJ2FYx6GjsprXlGLZMii2H05eLuK9ZqBVxWq83XDREv2RUOfgcd2JFwQVJIxP0C/NNDJxl1igZdce45CLZCxJguxh8xc7AJItHIw6AVAfHMMaLM+bdUTU3MPgjsHxVnSKlBXGp1R5KZcG9R++amkG635udixnY+HOpvzL9zhla1sqVkNoaWD9hrAFbuD+HGowvscwAHCQ1JboOuQkhBB6XLF3e1TZG92TezZxkA6LXT+7Ah2XYGdmlbiaPbmIWQF9a5WycC5Onk41XMvouyv7gQMg7p/bb/SNDQP58CG1EswSramxauQHvm2AMvpYHhsa6/RBRLE4p6jhyq56jtmPbO/tuucqsU9djcHWPH57EffFj9n1HdU1DCy4U1HWFcIaviR4AWwOag1Cw/+SJ6C2oZO vfIW+fyD /Zx9mfhuDWwxDNgEVvo0VFpJytFPSQZeqRiO7hYX1cmIjgq7cRZrVOB5Rj8kNiOhacAjYT7ELezYQj+F6jow8ND4kqGmwdWZJeYhsT79KlUJrIF9vFyYpSncKvevWgRxmFKG4Jv6/xlfxOSJF+FS1FsNeG3ho+odntOsHP62BX00f8uhy7PU5MPoygjCaM3V3wKM14d1/OBNmNd0ptRo9dZriIXnpPbsY1Y/eIfBDOghVzKfuHkFcZ5Tc/BFGVRqN82c4 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. The PMD_SIZE check is moved there. Acked-by: David Hildenbrand Signed-off-by: Aneesh Kumar K.V --- mm/memory_hotplug.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index eca32ccd45cc..457824a6ecb8 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1247,9 +1247,24 @@ 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 +1296,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 25 10:02: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: 13326255 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 74D58C001DE for ; Tue, 25 Jul 2023 10:02:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 177976B007B; Tue, 25 Jul 2023 06:02:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1267B8D0001; Tue, 25 Jul 2023 06:02:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 01EA76B007E; Tue, 25 Jul 2023 06:02:51 -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 E7CBF6B007B for ; Tue, 25 Jul 2023 06:02:51 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id BFCF7160737 for ; Tue, 25 Jul 2023 10:02:51 +0000 (UTC) X-FDA: 81049695342.12.327028E Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf05.hostedemail.com (Postfix) with ESMTP id 43321100012 for ; Tue, 25 Jul 2023 10:02:48 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=PoOjFh9I; spf=pass (imf05.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690279369; 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=m/N/ZGS4poz7rvG6PnELWOzMCVASA/Tj6XRMe7JZvjw=; b=nlTPqPp8qni1kUGOkj8UO/VzyqVCNToj8003rTrZiCIgBGvumM2ZBdG7U6i6vFKk+WCPJB N2V2Lqf2A5zXdUKMbNRKNEVqD3YTGZR/S0XM1bA1huyi7QKXP0GT11T92wKZPUBwxjoySp DBX4L988b2nNOSqtgnQ311rU0I1crrE= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690279369; a=rsa-sha256; cv=none; b=o6G7gzqBWtaEYs8ZC2qGKrCCBrk0Q3L+INCgMl7PtJkxudbs8JoH6lvME6f2CnEd9R+B84 vurhve7u1mKscivyZEvPnifC9iEqb9inUmCfKz0rdRZwTMFRI7IB1csHjsTQKs5eR79g9F Ya4sniy39tpFZVQsBDmTI3i+/G8f0h4= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=PoOjFh9I; spf=pass (imf05.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com Received: from pps.filterd (m0353724.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36P9dIjp027204; Tue, 25 Jul 2023 10:02:42 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=m/N/ZGS4poz7rvG6PnELWOzMCVASA/Tj6XRMe7JZvjw=; b=PoOjFh9INOvArDvZ2x0rlM5C8LXM6A1p8G/Oavu4Ux7sKuvSNN/DrmAvnaoOv5IQ86IT ooNYM9qCYT7+li/kIZtWP25qTYWb7cDVbQxhraM4TTp6mWrN++xZg3qO08oVhFH3tbhX J770FAEHPVA2jvY+4zwwc8zm+VCbKpRq0FMgupZgxnchgWNB/btEeK3nCCITQvWBo35t pBf1LixkbmrX0ewwUJEYZ7NUjTzHun+sQ0QflMC5OutSE5cGDf+HicURBKiVVKDrnMG/ WKJ7LeNBJFF2MOmAK6SChZZFNt4E5FMgnYBylaK/CuLsde/jQQ+Hb35PFBE4ilOi1ad/ Ig== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3s206365k7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:42 +0000 Received: from m0353724.ppops.net (m0353724.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 36P9e96V030089; Tue, 25 Jul 2023 10:02:41 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 3s206365j1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:41 +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 36P8S1DM002059; Tue, 25 Jul 2023 10:02:39 GMT Received: from smtprelay04.wdc07v.mail.ibm.com ([172.16.1.71]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3s0temu1bu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:39 +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 36PA2dUB33292804 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 25 Jul 2023 10:02:39 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 11D0858062; Tue, 25 Jul 2023 10:02:39 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5092A5805E; Tue, 25 Jul 2023 10:02:35 +0000 (GMT) Received: from skywalker.in.ibm.com (unknown [9.109.212.144]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Tue, 25 Jul 2023 10:02:35 +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 v5 4/7] mm/hotplug: Support memmap_on_memory when memmap is not aligned to pageblocks Date: Tue, 25 Jul 2023 15:32:09 +0530 Message-ID: <20230725100212.531277-5-aneesh.kumar@linux.ibm.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230725100212.531277-1-aneesh.kumar@linux.ibm.com> References: <20230725100212.531277-1-aneesh.kumar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: mexUxeru00NjjcMvWOlGxMknQ1u94Xm7 X-Proofpoint-ORIG-GUID: lvvumE8sev8_oknKHlQ6RnkRzSV8q_w_ 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-25_04,2023-07-24_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 malwarescore=0 priorityscore=1501 bulkscore=0 phishscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 suspectscore=0 spamscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307250082 X-Rspamd-Queue-Id: 43321100012 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: ou7azq9g9nygrnsw374nbt6rig9q8xbz X-HE-Tag: 1690279368-268556 X-HE-Meta: U2FsdGVkX1+0HpV2CnxbbdN6NHHqYRUlSFCzq3e7h8eHpkWliEe3xUxX7Uv3Ta6/2rNvyZYUS6pmFlomiLuu0qTyRTUA1HPyNogFv7foh/g0Cl7AYyX44ppO/Vc8wNMm17zn/dPZEEzdgClpvsMdbzgUVKIssfQ4nz/JAjB3iffP9GtFyM59fLC3eO0lfxuc7QQnXBeSeGbK2iMNVYt+uZjvbHLFrdXRsnSgbg3PGSweDN/D178pxDnUGQVnHPzQoHbF48hOpYMfVhsATEss4QPrlWTy9SHdcU7A/972H9nEzkf/U7SgsA809dt+iP0InPiez7hRGgf5mdaeOba1HlKZoslSu0XpUDdtoYqphYZ3kL4onnnz8SXleTDQvMVDMhNkb0hwd2Wy1ZcZSL8aO8xTweO92rK5Gjq5OBwLl1J9iDGY4ux79PewUkWqqfwCkbUhv0DZUrclccrPPBciwqobDLJqpTzec5Pwp5mRDQOPVnEXJRsWYyqV7cLIg0/RqQmztjENB2ffsuuRNvhOgjGWbxhhl5ys5IWMd8b18QQ+OxsKwsO5abIXYmoKT0GJUfj04ADz9A9bOEmmXLqphINbZgnfMc6HRDb30k/f23Dq0+NbvIcjEjiynorWo29PtrQdRn59ne4wAmzKb5deHY39ORb3dw+7sBvoPwn+cuv5asI1Bvq9XZahIqTCVulJx51yYc//J68Pt5Rr0FNBECox70BapDgtA5au9HGVB1Nn2lJLA+R2OfC4FooeawA5LYNUgJzw/jQ4xqVTZffCGT8jAEVczbzFJ8SAWaxnax9kuVKrnm3b+xsQr1394Rs0xaF34DlX2Cc7DseyKhGb4zJZFZ0+lvyrkFUorONDEkOBuNUJVSf6jLN7FeirqBiXJ4j1tlw7mtXtY5YnH9Hsan83UaBKlV94HYUV/Ao1p+o4UeGDqg058bf5Uq08DcCGZCEJcek1c4qp+u14qsr neSqbHFu E+lpZpO8PijROu9yZUGbj34e9/lwNZkTxuPIPv93dLTkyzNj63HWdW3znsTrpl4AJ3oVLlnJ3sEtRhWgauU8SoGMqQEEQTGO2lbHzgkXGyQd3zGsgB/V9QfkDSliGpWPsXRM++2V1xhLeFrENOk6R9F94a5R0UaeREbwQNASN0VZSt0kVA+Un/1l4Y2fVeFxwDgKm89h7sMY1rYWwjqDdcWIJE+6NdrjNADorGJiptLh/5GA= 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: Currently, memmap_on_memory feature is only supported with memory block sizes that result in vmemmap pages covering full page blocks. This is because memory onlining/offlining code requires applicable ranges to be pageblock-aligned, for example, to set the migratetypes properly. This patch helps to lift that restriction by reserving more pages than required for vmemmap space. This helps the start address to be page block aligned with different memory block sizes. Using this facility implies the kernel will be reserving some pages for every memoryblock. This allows the memmap on memory feature to be widely useful with different memory block size values. For ex: with 64K page size and 256MiB memory block size, we require 4 pages to map vmemmap pages, 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 Acked-by: David Hildenbrand --- .../admin-guide/mm/memory-hotplug.rst | 12 ++ mm/memory_hotplug.c | 121 ++++++++++++++++-- 2 files changed, 119 insertions(+), 14 deletions(-) diff --git a/Documentation/admin-guide/mm/memory-hotplug.rst b/Documentation/admin-guide/mm/memory-hotplug.rst index bd77841041af..2994958c7ce8 100644 --- a/Documentation/admin-guide/mm/memory-hotplug.rst +++ b/Documentation/admin-guide/mm/memory-hotplug.rst @@ -433,6 +433,18 @@ The following module parameters are currently defined: memory in a way that huge pages in bigger granularity cannot be formed on hotplugged memory. + + With value "force" it could result in memory + wastage due to memmap size limitations. For + example, if the memmap for a memory block + requires 1 MiB, but the pageblock size is 2 + MiB, 1 MiB of hotplugged memory will be wasted. + Note that there are still cases where the + feature cannot be enforced: for example, if the + memmap is smaller than a single page, or if the + architecture does not support the forced mode + in all configurations. + ``online_policy`` read-write: Set the basic policy used for automatic zone selection when onlining memory blocks without specifying a target zone. diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 457824a6ecb8..5b472e137898 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -41,17 +41,89 @@ #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_memmap_pages(void) +{ + unsigned long memmap_size; + + memmap_size = PHYS_PFN(memory_block_size_bytes()) * sizeof(struct page); + return memmap_size >> PAGE_SHIFT; +} + +static inline unsigned long memory_block_memmap_on_memory_pages(void) +{ + unsigned long nr_pages = memory_block_memmap_pages(); + + /* + * In "forced" memmap_on_memory mode, we add extra pages to align the + * vmemmap size to cover full pageblocks. That way, we can add memory + * even if the vmemmap size is not properly aligned, however, we might waste + * memory. + */ + if (memmap_mode == MEMMAP_ON_MEMORY_FORCE) + return pageblock_align(nr_pages); + return nr_pages; +} + #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) { + unsigned long memmap_pages = memory_block_memmap_on_memory_pages(); + + pr_info("Memory hotplug will reserve %ld pages in each memory block\n", + memmap_pages - memory_block_memmap_pages()); + } + 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"); + return param_get_bool(buffer, kp); +} + +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 (Y/N/force)"); static inline bool mhp_memmap_on_memory(void) { - return memmap_on_memory; + return memmap_mode != MEMMAP_ON_MEMORY_DISABLE; } #else static inline bool mhp_memmap_on_memory(void) @@ -1266,7 +1338,7 @@ 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; + unsigned long memmap_pages = memory_block_memmap_on_memory_pages(); /* * Besides having arch support and the feature enabled at runtime, we @@ -1294,10 +1366,28 @@ 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; + + /* + * start pfn should be pageblock_nr_pages aligned for correctly + * setting migrate types + */ + if (!pageblock_aligned(memmap_pages)) + return false; + + if (memmap_pages == PHYS_PFN(memory_block_size_bytes())) + /* No effective hotplugged memory doesn't make sense. */ + return false; + + return arch_supports_memmap_on_memory(size); } /* @@ -1310,7 +1400,10 @@ 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), + }; struct memory_group *group = NULL; u64 start, size; bool new_node = false; @@ -1355,8 +1448,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 = memory_block_memmap_on_memory_pages(); params.altmap = &mhp_altmap; } /* fallback to not using altmap */ @@ -1368,8 +1460,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, - group); + ret = create_memory_block_devices(start, size, mhp_altmap.free, group); if (ret) { arch_remove_memory(start, size, NULL); goto error; @@ -2095,6 +2186,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 = nr_vmemmap_pages; mhp_altmap.alloc = nr_vmemmap_pages; altmap = &mhp_altmap; } From patchwork Tue Jul 25 10:02:10 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: 13326256 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 D3007C001DF for ; Tue, 25 Jul 2023 10:02:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6F54F6B007D; Tue, 25 Jul 2023 06:02:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6A6C36B007E; Tue, 25 Jul 2023 06:02:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 56C596B0080; Tue, 25 Jul 2023 06:02:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 49D7B6B007D for ; Tue, 25 Jul 2023 06:02:54 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 06E7D40DD3 for ; Tue, 25 Jul 2023 10:02:54 +0000 (UTC) X-FDA: 81049695468.07.AAC069D Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf11.hostedemail.com (Postfix) with ESMTP id 96F804001C for ; Tue, 25 Jul 2023 10:02:51 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=lmAdjlXV; spf=pass (imf11.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690279371; 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=9FoAFYimQvxvhq6QRw3I1G6YmiFvhLpdqTM8y0x/APg=; b=o9pkHn6rlO0KwzfjrFQFsMqGgKLUHolsgg8O4TptA7heigh0Y6RQrnyg44VMR+oUoWVd8f 41vpg0ncVstbctoYKYw/8f+AhnqqTBFrxTVXgh8lH4mmhYvQzdALLhtR0lM0ZN9xNBOC6F 8PNs8LuNzkdM8aB3YnpVo/aMK6j3j8M= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690279371; a=rsa-sha256; cv=none; b=sDho0K9oLOtpUOWnHIy8/pSRCgf7eOB8g8LAt2o25s9P+t73cdekK5El9q5gHPS7Sxra9b DzL0dEYHV9NibE+pH5Hs4Hss8Pt7rSQjoJE/PGdIkIjX24JLwF4yQNVxS+gkHGlCopageZ vjLLruKmjCNTCCDrE3ylIP6Ql/Q5Jnc= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=lmAdjlXV; spf=pass (imf11.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com Received: from pps.filterd (m0353724.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36P9dGLd027140; Tue, 25 Jul 2023 10:02:45 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=9FoAFYimQvxvhq6QRw3I1G6YmiFvhLpdqTM8y0x/APg=; b=lmAdjlXVKRGi4Fx1mVaPB7vwC2QRrGhZl4muqaU789kVQoI4uAryTav5shupbpD4ZwTK Zcd0/5H/fsOymT5mj1FG7Y0rpxpjYUKBP2hP9wzjYZu49JcpHztGPD8FgKEH254mETj4 JDbCkGjsCvVjOQN2F2+dK0kYuz23/AHI+UNdt/aJPNfuL6T3CHQFdcFckSSvhlzbYJaX RGijA4BxEhzcMrU9roS7tHXUSSn3QLn8gn/0dB5bzYB5UzbIscU/26ZuKOY8BBDUUt4/ BogMHrdkB/sIVzNLsZSw+E1RRfAi56bmjg9ceAQs+5e6ImYO9OaepQywW8P9cp1DEaaD Og== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3s206365n0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:45 +0000 Received: from m0353724.ppops.net (m0353724.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 36P9eO3P030851; Tue, 25 Jul 2023 10:02:44 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 3s206365md-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:44 +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 36P9hPjx002281; Tue, 25 Jul 2023 10:02:43 GMT Received: from smtprelay03.dal12v.mail.ibm.com ([172.16.1.5]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 3s0unjam31-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:43 +0000 Received: from smtpav02.dal12v.mail.ibm.com (smtpav02.dal12v.mail.ibm.com [10.241.53.101]) by smtprelay03.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 36PA2hDE6226474 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 25 Jul 2023 10:02:43 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 43D945805C; Tue, 25 Jul 2023 10:02:43 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 904AD5805E; Tue, 25 Jul 2023 10:02:39 +0000 (GMT) Received: from skywalker.in.ibm.com (unknown [9.109.212.144]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Tue, 25 Jul 2023 10:02:39 +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 v5 5/7] powerpc/book3s64/memhotplug: Enable memmap on memory for radix Date: Tue, 25 Jul 2023 15:32:10 +0530 Message-ID: <20230725100212.531277-6-aneesh.kumar@linux.ibm.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230725100212.531277-1-aneesh.kumar@linux.ibm.com> References: <20230725100212.531277-1-aneesh.kumar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: _2Vuo1r6chdVRnOGmwrE8Y-t0v0rAhzE X-Proofpoint-ORIG-GUID: gKeHGuOleK4aWSfjOu3s69fgMSI6iccV 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-25_04,2023-07-24_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 malwarescore=0 priorityscore=1501 bulkscore=0 phishscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 suspectscore=0 spamscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307250082 X-Rspamd-Queue-Id: 96F804001C X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: mh7i9dpnyxsfrrh1tyaiod13czsd9s1o X-HE-Tag: 1690279371-671436 X-HE-Meta: U2FsdGVkX1+vT+hrmHY+gsv6Mj+z+MoS9VdIbjzvCu2yEYFYt6XAfyshiUYNDuLOOCv/e05EvlsCrUFKPCWSnxXFG0CTJbpfharJ5clpg53UoVu+gCIrzX85tzdGXkSRreCyGdZpMiOkPHBe7d8EqEWS2pWUc/C9hxWlEbRZUMWZmwvJ1EFy4DxbhNUu/QGJtGtTlZxnmzR5g3S3lCj68UyF1epD8FdViOHmG29HJM6mVG7W7lqLx+8j3tADKGdnOLLWO296wkzLO1rw5qH7Sg01bps+apkypzlla6LaUaMY34F6RkFqcpBtIsaysgufwVAx8OADNVpf0Ka7V4Ey/JXkbB8QUwKw/8MhILRbD3F7VaPs/x3UbEKdEULdsgu/QH121ZSci5QJvd+rHfsWLMstPOkKmKHOoXSYu+nh/6Qbp0B4ZT+hHiAUE1bswfkU9fAIdfoudxD44oFYIDskX4aB6goa0RGIvwepjzMF+J/nWRv3p0n8CmztZ/7CCZZ28necVy0YxqnEognj0bfB2Qe42K6iVcHO0ACqiguodIaAK0xcUL0/gPuzh4CqeVW3MuqqI9lqq94Y/HswqcH7RNkk8RTp7kiDhvF73WMXTYWtKbpCdeCOn0i87sCjBcWicQt878DyB82mblQwPTvYKyEisxgG2c2dbKZRRllr4uEm/fGqM4CtbEkzgIXlPsCoscrggQ8uGlz7o7MXZw81MeGQ4GrL4UsUXr8e2tx1hncPEyei0cYO+sG/coB+vs6IG8bQ5GHnm3kB9rHlG8bK4zhb84sR/deZJBbMBr0Jq1lU9fx9ZEfdOEUPJitud2gZjKbi8L/GJIL4/L7IHNcvoRALk+2NAu6L6buLfVWMNr6rCMCBuh1vmESGhSl8sxvskemHlJNU0d9NDI/diwQgfyJMN71ABRep5R2jMecsLynOLkgiMGZJI0+i1yfpaCMQGcBGZTgfrZp/2ujvkNr ubTOMOuW L0JLHmn32eQoiK5YKVls2nCG3tBJHRYRsLzcsfaolzi1979PRPMtG/aIvpbtkRmTEJ41qmPnug7GZL2JvGO8GroUx28rTwf6zaFxg7EcvdvYXGJqDPZVn/FQSnnEyXRA/7D6dTNdfpcfcDCQLNrlmz2YJzYKVb4GRJ07ivYsw64gdBpH3k5mBTCtV0ZH61nI1gpGBnh4dY+94pD5kEAJSYBhqMzp5+0GHk2exsiDYyxIju3I= 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 Reviewed-by: David Hildenbrand --- arch/powerpc/Kconfig | 1 + arch/powerpc/include/asm/pgtable.h | 24 +++++++++++++++++++ .../platforms/pseries/hotplug-memory.c | 3 ++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index d0497d13f5b4..938294c996dc 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 a4893b17705a..9b4a1fd24025 100644 --- a/arch/powerpc/include/asm/pgtable.h +++ b/arch/powerpc/include/asm/pgtable.h @@ -161,6 +161,30 @@ static inline pgtable_t pmd_pgtable(pmd_t pmd) 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; + /* + * With 4K page size and 2M PMD_SIZE, we can align + * things better with memory block size value + * starting from 128MB. Hence align things with PMD_SIZE. + */ + if (IS_ENABLED(CONFIG_PPC_4K_PAGES)) + return IS_ALIGNED(vmemmap_size, PMD_SIZE); + 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; From patchwork Tue Jul 25 10:02:11 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: 13326257 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 3F4C7C001DE for ; Tue, 25 Jul 2023 10:03:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D5D7D6B007E; Tue, 25 Jul 2023 06:02:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D0DAE6B0080; Tue, 25 Jul 2023 06:02:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BAEC56B0081; Tue, 25 Jul 2023 06:02:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id AE67A6B007E for ; Tue, 25 Jul 2023 06:02:59 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 2964C1C9D22 for ; Tue, 25 Jul 2023 10:02:59 +0000 (UTC) X-FDA: 81049695678.19.2DA0A22 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf22.hostedemail.com (Postfix) with ESMTP id 90078C000D for ; Tue, 25 Jul 2023 10:02:56 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=X7qt5qiV; 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=1690279376; 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=TI2fojHJqZOTXOjXW4T4ghtxOCpIAVJVu66eni78XAw=; b=qVF7rZnFV3O6XTjsc5OF8UB8FkZ4VOdLBqwCb6ZsWua+mUuvxmCOFkEVMQgRX3U1rkbifd G7G1i8qYN6UbPfleUugCY5vEwatekDKMfvDe1xFErfMvsTUubXIaJZM9A7F0c0j14hmwJ0 vHkdb+fX9mnaqUElz8qGPzxjgrrAkvc= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=X7qt5qiV; 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=1690279376; a=rsa-sha256; cv=none; b=yY4WNolIJoj5MMiFTGBSvM4v0jjcrlRoqtj6PtVW2iJLhKEm9c7VU2qUr6/BYFAyG3m6qU ntFxgyp8KqE+39CBTgw8uL6gVSnsiOhsLy1Ynj9cWGt4P6ns/NMxUCCmwDNPb4/r4Uz5G4 KBXHwTAMMQ6eBtXoNBjKEjnEv4Bh6D0= 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 36P9bQwd030208; Tue, 25 Jul 2023 10:02:50 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=TI2fojHJqZOTXOjXW4T4ghtxOCpIAVJVu66eni78XAw=; b=X7qt5qiVZ6RjMw7m1C80iMAgUvrG66DWeHpDWtSValC+SDhVCMxG0pWbvvGpspSxXLgg oRkDpAilAYWDDyC4UpCerU2cuUZBZ348vYLNFDLZ0ycVy+zqZjEZB1gURlZa2OuHw8Zp npIv2VeQgUeJFs+FrsFG9QwyrYZrGOLY0u+ZTxgqy3qQ3NdLeBM2uzSpC4LmfZvqiYZ3 f+TMo58K9PeoR0Kx5sMlBnRxlz0iVEV19ilQlDpOetpXvCDCubuSaoT2MwDzk0HqsfbV SDvCjw/SsITQV7M7YImjjicMrmCEfTAQu9aDuZL+Qbmxo8H5xawCZkFSOjprOV9+1/D7 EA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3s261dggyq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:49 +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 36P9bK7a029475; Tue, 25 Jul 2023 10:02:49 GMT Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3s261dggy1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:49 +0000 Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 36P7luSx014370; Tue, 25 Jul 2023 10:02:48 GMT Received: from smtprelay07.dal12v.mail.ibm.com ([172.16.1.9]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3s0stxu91g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:48 +0000 Received: from smtpav02.dal12v.mail.ibm.com (smtpav02.dal12v.mail.ibm.com [10.241.53.101]) by smtprelay07.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 36PA2l4X34341420 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 25 Jul 2023 10:02:47 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6732458051; Tue, 25 Jul 2023 10:02:47 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D4A555805C; Tue, 25 Jul 2023 10:02:43 +0000 (GMT) Received: from skywalker.in.ibm.com (unknown [9.109.212.144]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Tue, 25 Jul 2023 10:02:43 +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 v5 6/7] mm/hotplug: Embed vmem_altmap details in memory block Date: Tue, 25 Jul 2023 15:32:11 +0530 Message-ID: <20230725100212.531277-7-aneesh.kumar@linux.ibm.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230725100212.531277-1-aneesh.kumar@linux.ibm.com> References: <20230725100212.531277-1-aneesh.kumar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: RvBgdAoKzzhcWz91Zef8ylqTCyK2VZzP X-Proofpoint-ORIG-GUID: U-CQf83aWfBGnJpJq-ybP6Qtdoe_YkeF 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-25_04,2023-07-24_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 impostorscore=0 phishscore=0 malwarescore=0 clxscore=1015 spamscore=0 adultscore=0 lowpriorityscore=0 bulkscore=0 mlxlogscore=781 suspectscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307250082 X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 90078C000D X-Stat-Signature: 7qosdo86ndd7hia1dm6sx51qmkku9z9b X-Rspam-User: X-HE-Tag: 1690279376-641425 X-HE-Meta: U2FsdGVkX19kz4JkqD6o3u5HYplA/tbagmegQc8sN/h5NIRsFWSMcp6ClFpBHhdGnGvYvSs1HZacTLVoOG25AqQWV4EaurK0wuwVaISCj463aKYtpNtrYNs9BreIjZozwxaNkotqBxmDjCdDVqBlTPBgERTefcYPiCa/oRxZ2uJQs/nCOh+YcygWgwL5psgH5lh7470wFQTaJVNCVYPGsCGcFQWgbpDVWwfZFm5zvT+kv5l1QCtOVSpGwKR1zMglbntUXjybDbdZ5G59xHqHnNSZ6LP/CuNrA0IQkKwYU47vK27cL5N3r/0ouiRpP0g5+WOv+inioyL0hYGhV9eeWsTAVVxduZ1MJadEkaWqKwrixgA0jWwnIwn/QANJbh8tg40b3oVYY4n67Bf4qBRqSF9ty3abZOuFXajtvvv6Mv3T/enJ9aruu5hyoK7NhuUnbVHeZiqhS9nuKA74ADsllB0OCqWz/TMlrsutt546ryCj7pD+PwNwpMX70tkSgpkmSNGS2w4nsj/NC0payF8JLirwOBpElXvbgSRS6E4nQIvlfiQIZ11alNDHJv3dBL4+IRHqaXf0X8+F4IlqDR5eCGjrGOsqN7Y4TCL46ZQyst3Zq85nF/kVN22/XmM8CQmKSjAPARmZXEWOtFBtPm/8Ye1zVJs6stVp2eqDa47f6biN1ErmsK2KzvYioLUDLVjoVYwZlOctMHqYYecojkkzEsNn0eX3kaeZrLptvq75AM88X1+wlz0p66Qn+bBRab2dIUZMyX3Uh3p8cerjjkiqf4XzcNQBKCDbt9RgrJ+WtN1Z0Dr0AX+L5p2Gt4zVL3vyoJg2Vuvdj15g81+n1DxY2WkQTGESvZVmSE/RIZHXSgjeFdwHUpG6b0na8vSOFn4SugfgDpPkDnilrKSV4euC45hZNwhfSWdbCzzVHTUe+M/sgvv8kmSO4VMmGdMxysxXkuEJ6z39HwJCmZ2p55q 4d17f6XT 6vL0PBakc5cPH6U5/tqzTRFNlAgDDYQX/Zf/WLPgxndJGwQELH7qQQDoFGrNfP2HtlME1lWuzhxZSNPU3NUDARZGcVWn9LWBMt1TMGoYMAFbZxiC6WCNWJ4UQwvVKOQ0M49kU/Id+31FCdSRGdpkav5jD7CQDgWtgezf9K6n4z9B0dp/kgn9Uq4V/hddPrc0XLEO+ 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 | 41 ++++++++++++++++++++++------------------- 3 files changed, 47 insertions(+), 34 deletions(-) diff --git a/drivers/base/memory.c b/drivers/base/memory.c index b456ac213610..0210ed7b7696 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->free; + 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->free; + 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 5b472e137898..96e794f39313 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1460,7 +1460,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.free, group); + ret = create_memory_block_devices(start, size, params.altmap, group); if (ret) { arch_remove_memory(start, size, NULL); goto error; @@ -2066,12 +2066,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) @@ -2146,9 +2152,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)); @@ -2171,24 +2176,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 = nr_vmemmap_pages; - mhp_altmap.alloc = nr_vmemmap_pages; altmap = &mhp_altmap; } } @@ -2206,6 +2202,13 @@ static int __ref try_remove_memory(u64 start, u64 size) arch_remove_memory(start, size, altmap); + /* + * Now that we are tracking alloc and free correctly + * we can add check to verify altmap free pages. + */ + 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); From patchwork Tue Jul 25 10:02:12 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: 13326261 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 8F2A0C001DF for ; Tue, 25 Jul 2023 10:05:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2FF3B6B007B; Tue, 25 Jul 2023 06:05:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 287858D0001; Tue, 25 Jul 2023 06:05:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1021F6B0085; Tue, 25 Jul 2023 06:05:18 -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 EB1CE6B007B for ; Tue, 25 Jul 2023 06:05:17 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id ACE10120D4B for ; Tue, 25 Jul 2023 10:05:17 +0000 (UTC) X-FDA: 81049701474.06.D3EDF78 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf12.hostedemail.com (Postfix) with ESMTP id 2D3A140021 for ; Tue, 25 Jul 2023 10:05:14 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=QElIOO9R; spf=pass (imf12.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690279515; 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=qsU83/eOe5kjugOv8M+CXiuvNzVVJM8wGItDRM9Ulbo=; b=oSujOGyRYAv4GOrMQc0IQKQTVx4xX1w9nISTfrX0NEHehb+jwMRMkGPg/kO4nMGGdYEFir P5+FZH2CFJodw9F2f7AfvTlVSGksT/2oo6TLk4+U37aUxZJoQgrjedn5fLitaMKy4sGM+h Lv9rayO7ScuAu4TPz+OWE6qh8+GCZ9M= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690279515; a=rsa-sha256; cv=none; b=GqE4yz+G5uINOlR/1gHwbUJqXIE98PJjvVIcQHcgJu6XtnN+g/HwNDesl+kEabfU/bogRY Qq1PUcCvIlCzelNDSdIhBmMgissoXwdFtdbbQ1Op8TUkCNI/rCfyMIwqUE8GVBDIn9P61Q JZurYBBmRHsV06ATh2eThy5LCufjMNU= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=QElIOO9R; spf=pass (imf12.hostedemail.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36P97otW017483; Tue, 25 Jul 2023 10:05:08 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=qsU83/eOe5kjugOv8M+CXiuvNzVVJM8wGItDRM9Ulbo=; b=QElIOO9R1cijdKArOb+/7MCXxstibU/v0zTCAk1EYsZx70DW26j2sv4u4NeBYNkpi23Q NRjpUGcvZmPpwf+7TPpaJsgYjn0ML+w07xILY2XB5BQa3si3kQ75XBJDUTmEo7umTyTU RTzwRmDOhBDSGrTmX50TETQ+4HIJwwfHVyMvBWEDn9rcEh5O8qtzFI3O9S3SlhSjm0pT PI/GSmoJsnvFZtP6ukFn+mz1TcPgq+MwpwOMnLelZMYx8UymbAQ+YBCkyHrchYaHnfx8 x5pHGL//nnMAe+rB9P3GTOHcUYwwPQRmO2FE3+KkweY6MiV9/2PeXUC/EGjhoLHPG2qj YQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3s20jtf5j7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:05:06 +0000 Received: from m0360083.ppops.net (m0360083.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 36PA0SC2030029; Tue, 25 Jul 2023 10:04:45 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 3s20jtf4b7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:04:42 +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 36P8da4t003714; Tue, 25 Jul 2023 10:02:54 GMT Received: from smtprelay03.wdc07v.mail.ibm.com ([172.16.1.70]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3s0txjtusc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Jul 2023 10:02:54 +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 36PA2pRd2884346 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 25 Jul 2023 10:02:51 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 56A215805F; Tue, 25 Jul 2023 10:02:51 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F148E58051; Tue, 25 Jul 2023 10:02:47 +0000 (GMT) Received: from skywalker.in.ibm.com (unknown [9.109.212.144]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Tue, 25 Jul 2023 10:02:47 +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 v5 7/7] mm/hotplug: Enable runtime update of memmap_on_memory parameter Date: Tue, 25 Jul 2023 15:32:12 +0530 Message-ID: <20230725100212.531277-8-aneesh.kumar@linux.ibm.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230725100212.531277-1-aneesh.kumar@linux.ibm.com> References: <20230725100212.531277-1-aneesh.kumar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: fXFt-EK2vDamQt_gvKn28gyP6SRS3QRX X-Proofpoint-GUID: _Ks0d0ClKFtg6SwX-t9KGdVTXczUJ7Za 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-25_04,2023-07-24_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=743 clxscore=1015 priorityscore=1501 impostorscore=0 phishscore=0 mlxscore=0 bulkscore=0 malwarescore=0 spamscore=0 suspectscore=0 lowpriorityscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307250087 X-Rspamd-Queue-Id: 2D3A140021 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: 6nn46tdw4bkam35ghmnej1ec7f9cm3fm X-HE-Tag: 1690279514-555639 X-HE-Meta: U2FsdGVkX1/u7tn8Biq7zOF7UW3/nODIt98mhX0cc+p7EkzYfy0w6qN+PQUd/ir+K03lUpe5JMWuZKrW0AMM9HgV+QIAUMB1cRy0rBc+R9oP07gVfxlwVIGy0X5LNmI6Z8Xaq0Q4YZCyyf+tXrhHYeNqosgsYqAsc4uFINNYX55QsyRk0HjQ6occ4ve1DVovFBY+Vajc76QngeBVQHU6aDD4/fwd0tYinHiNFlW43aVNu9EBRgx/xby5SPXBdXsqnwzE3jYnUO5e96sCwi7Sj/GhqUyqdMQTeo1pPNK9bbzXgxUMglVpwweIT0mlGxCNy8ol09YhSkCzeuj2kvxpErj10eRG3ccwy7BO3IGkhmK+0RdhZ6vSZ8dkFyN2bxK3yXAHx1uxKMu4zjJg8BCwdt0GoTEBnnEfvAxIxFJrHm+w3eQxRZnYF5OEkDx1FFtADZVvHfiRRnQfP3XlpBeyrIMfxNwCAXhBA2h0EpSrL/dBLYPGPDgkGrWIFR4Bh8CcFx+SIqXZKZ9PhivQDfWmo/Qe58/CNx0RdO6a3kpnoL7vJyn2VQpl9HlH2GaFA7STXu7Nk4yo8JNxeveCbgI7oJLk/LJbW7MrL5OfO0lRCi41iSqVs+jttHJM0qLaEZOJP00dt3HF/FGl59T1e2Ybz529KdS9F3GNE/0cGEGDKg+FCfdzrFewhxDTR+3+nyneMYOByZYkQv2AgYx0SnpmOpk2Hqw/ziUTVk+QveraIKujdy/pATyV2Wjv1gpGcrG8nEyiK6FCas4y/seAr1eAvkhNmHDJlnFP3dl1bNPs83jaFlYzWAXiL9an3VK2sRrKKfn3ql9CAMAjewnhnyOKa5h2QXj6oI6sZJ3hOHHVS2mtnVb+APGTcVOiAldiCG35Unw7eyFiq2u9jSzsn7DLaWYFHK2biwFJc11qwWYVNFioeqV8cpro3voKlJv8WLZ7FSAy9+NRC5d3zxje9XS EtgMXXi4 ajaABLFl+ZIJ01PqcOfumHHEp2VKCOaKvHoA43RXUWTSB4iLjvV7pDb6FIxEYw3xsh1rfX7BDc/J9Mh1hHU0kD07P4aBn/fWjMzv+lisciAcR/fyf9WH7I26R/jtZnafS0BqXdt3BDPuU/PHYx8ApJK1S6EqWqqRQjM8HldMhPv4Nt9fvkj+zg4dRgg== 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: Signed-off-by: Aneesh Kumar K.V Acked-by: David Hildenbrand --- mm/memory_hotplug.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 96e794f39313..6cb6eac1aee5 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -95,7 +95,12 @@ static int set_memmap_mode(const char *val, const struct kernel_param *kp) mode = MEMMAP_ON_MEMORY_DISABLE; matched: + /* + * Avoid changing memmap mode during hotplug. + */ + get_online_mems(); *((int *)kp->arg) = mode; + put_online_mems(); if (mode == MEMMAP_ON_MEMORY_FORCE) { unsigned long memmap_pages = memory_block_memmap_on_memory_pages(); @@ -116,7 +121,7 @@ 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_param_cb(memmap_on_memory, &memmap_mode_ops, &memmap_mode, 0644); 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 (Y/N/force)"); @@ -2175,18 +2180,16 @@ static int __ref try_remove_memory(u64 start, u64 size) * We only support removing memory added with MHP_MEMMAP_ON_MEMORY in * the same granularity it was added - a single memory block. */ - if (mhp_memmap_on_memory()) { - 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; - } - altmap = &mhp_altmap; + 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; } + altmap = &mhp_altmap; } /* remove memmap entry */