From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7A940CCD184 for ; Thu, 9 Oct 2025 13:19:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A43BA8E0002; Thu, 9 Oct 2025 09:19:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 99E538E0095; Thu, 9 Oct 2025 09:19:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 83F668E0094; Thu, 9 Oct 2025 09:19:04 -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 6D2978E0002 for ; Thu, 9 Oct 2025 09:19:04 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id D9C9A1DFA31 for ; Thu, 9 Oct 2025 13:19:03 +0000 (UTC) X-FDA: 83978631366.26.6F2252F Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf12.hostedemail.com (Postfix) with ESMTP id A34A54000C for ; Thu, 9 Oct 2025 13:19:01 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b="e/92wk8E"; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf12.hostedemail.com: domain of sumanthk@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=sumanthk@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1760015941; a=rsa-sha256; cv=none; b=QbgoN956+1sL9gvm+fUR5CpAe4Q71tjeHogBtiVF9HULJU0SAsR1SGXJK6AW39e/zTap7o +ub+Jj7UyHPRl61EX6kkTqooDReCDx3LWl/Od9lcqsDRF5p2zzpyNKeXd+TeTBmUzYIVwh No3RN+apMPZvbElFQNmzITxaSU2Kdck= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b="e/92wk8E"; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf12.hostedemail.com: domain of sumanthk@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=sumanthk@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1760015941; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=ixhYVe2pc24hkcGpvIynsZsPtOkzbOJtj+sEGOBtOVA=; b=PB2FRG6fentld+ApdlWoppfF8nNbmPlSP/7Zb1hSegcI8vnBiOqsSx6E8mksoDBZMGm4zc m0Hs9zToO4E3sSdvGgt8iQupO4kh51wut776y7meDYBy3r6kIo7v6zaK/HvdNiNyFWgCPr 8Sc6TPl27JL99AaRh+Z3fQPr8Yv06UI= Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5998lWlP016972; Thu, 9 Oct 2025 13:19:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:message-id:mime-version :subject:to; s=pp1; bh=ixhYVe2pc24hkcGpvIynsZsPtOkzbOJtj+sEGOBtO VA=; b=e/92wk8EizfNUB5hKsSXnyusLPJh3QopLivdUingxc1EaJ53+7J2cKeiO 2EEnRv7Ho15SmAxH9CQ19yhsyydB1p3ze0DLX14p5H7qGisNdcX/yulFwy9IOC8x 2L2jSHMoGD9u3HqOAZsuq3g74Iw+zdBtcXLByw9OmCKiHrMwkcNFBxGk3EPRwa2i GsHpTVRp6psWJUunxr7iihSlkytHrZQWyOZLZTBZPw7Bo1wGAjwGqQQ64HFB+U7L 30fYvbO+FjFUtlvzVn3gmP6+QXNr035xybuoVHQmbnmWTBdUtfvkPDdwBshoRHyL 6Py62uS/fyjyohW13Jev3sUCgOtFQ== 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 49nv84mw9c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 09 Oct 2025 13:19:00 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 599CJrJr008366; Thu, 9 Oct 2025 13:18:59 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 49nvanvmyt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 09 Oct 2025 13:18:59 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 599DItLl41812450 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 9 Oct 2025 13:18:55 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7D61B20043; Thu, 9 Oct 2025 13:18:55 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 44FEA20040; Thu, 9 Oct 2025 13:18:55 +0000 (GMT) Received: from tuxmaker.lnxne.boe (unknown [9.152.85.9]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 9 Oct 2025 13:18:55 +0000 (GMT) From: Sumanth Korikkar To: Andrew Morton , David Hildenbrand , linux-mm Cc: LKML , linux-s390 , Gerald Schaefer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Sumanth Korikkar Subject: [PATCH v2 0/4] Support dynamic (de)configuration of memory Date: Thu, 9 Oct 2025 15:18:35 +0200 Message-ID: <20251009131839.3739108-1-sumanthk@linux.ibm.com> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=HKPO14tv c=1 sm=1 tr=0 ts=68e7b644 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=x6icFKpwvdMA:10 a=VwQbUJbxAAAA:8 a=20KFwNOVAAAA:8 a=VnNF1IyMAAAA:8 a=NBdnYRyKUmeqgR0V3jUA:9 a=HhbK4dLum7pmb74im6QT:22 a=cPQSjfK2_nFv0Q5t_7PE:22 a=pHzHmUro8NiASowvMSCR:22 a=Ew2E2A-JSTLzCXPT_086:22 X-Proofpoint-GUID: 12N06D22HleIoDqnjz0piqRpAPAO5LuX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDA4MDEyMSBTYWx0ZWRfX9QgSusyJRrUt dqQWQCpg6E/kbpqdjFHFojNYQIwBcug7t7Q4SYReiVbs3uE2bGD/zoSqZk6wJhIbclOJ4UWONt+ uPEgp7MAs3Gk/AD530zh7AGw4NCKW2Ixt5HVr2QRo+U0k9ObwAS8qQykBOkTAwVN24ani9o9isl 0HNYd9rnJU+Diu1mx7HyOGrfNsBM10uHQppVnncxA5qxvlk1n8uOk1k6GR1/oevkLfkC+0CJqYh BvMQEMS7NxBNpSaorkJANi1etGgCtDBGNpz9aI8sxBoYB17EL/PIbZnpRbDwz0it/gfnGyFHcQY MV7FerlZ6iy+RNVSxoZKVpMKjbafmFn6J19LKy+Hdwe20j2Bov3MS/vENqCP1N+cJXVgA4kxvzm fCqAK31D7sNPKSbgJG18/TaWvGwIWg== X-Proofpoint-ORIG-GUID: 12N06D22HleIoDqnjz0piqRpAPAO5LuX X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-09_04,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 spamscore=0 adultscore=0 clxscore=1015 phishscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510080121 X-Stat-Signature: 54jkitgmwg98md17uiu3hh1dkkdbgo8w X-Rspamd-Queue-Id: A34A54000C X-Rspamd-Server: rspam06 X-Rspam-User: X-HE-Tag: 1760015941-263682 X-HE-Meta: U2FsdGVkX1+6yHPQyeEm5VMh4scsOno3ku/XtQMiGdre9X9D7JxfjwXHAV4TE9mMAXqBP+1rh9KXEShjkTF6vNtnAQxL0SPzaXCyehAG4Rk5PkdoBT7RkPTIsg+Ck04Ci8N0E6IEqP9EMRYsHG8skE877RQWCIBu5XY+9HYYgCLQHPOBb8EBLFJhy8pLMxna501vhpdvCWxCfN+4+I5bbegO3lY6ZeO5PeUhyeI26e0m3PfWN4VaVVduyig5LcvMsKcDfg6yX+ptGxkkGceDkRd7toUgCDIB7fRLivJ/aaGQqeAvrPLoXjOqzH8TD7muW6mdBtCrS7cUhWHd7zC/2CtyAnyhPlQyLn4M1uWkQGmG6q3d+dmV/lu5Ik2o0XZmVYNOixgfYi6aP8h+RpX6tVcB2NN6Z56mfUZSZkOl+Yx02HUlo1yKV6VHhOHj7noYahs3zJzXmmKvSq/n03kE1RprAZdVl4Ve/dJXudpKRPw8TCSX5LgHjkfoIdQytMuuAlkI4Jl0bqF+azKyVucJB4mXZZPMg+/tZHRhMJPxeVrgpM/hHhHnFlbwSvhLrkccGyk/ALxHpX5mSgaYQdcwQ0X0QsIFsAJmmvpexldN6yUk1FoPvQ9V5lDU2lBCof73fe45BJmQbloA1EJszlLc9aGDZLItu6TLWt86AGDJTygkM/xmerPo60nP1ckVLLLmsSArxYWb2hwvBibB6JXG/FXMGk8MjSS7m+6YBQK388NHhMyFU0S0XOMgOTwboFzhcrEKAlu1f+xVlX56FQ2lRkTNJYQXrzistwhHDJ+LDvO1/PjjHLBEOdCtNQ7S/2LXi40UTIsFu2/lSzCD/kgIcQPSud/CKEl7Rf7/Fwrrbvd4rIxX9YQt3IYpOIbbMXSCpJFqODmXQ6MjzHxfiICkVB/l07jOujQVb/4fo5J9Wup/Lg68YlQji3l6N7sqImewcRI3grTQMpR+zGqQ7RS n/c3isHl bo43f2lkbXjcbSFKmEdDp93aXGhsKjSRGBuSpuf6gGHFLmkznU69TOwjMuB5FCjx4uLKn+Zxwz+rMnhG+TJx+7BoQ7uaB+9haDx8WKEJXOH3nCN8He5ktis7KX4tOK3Sy/675Vx53JmE4sX57vCRjpuZ2OMfJfwi2M7x8Qx4oaAHWTuAqgnmivLliO7DT8iFHxUnETU5Dz/efEgf0hZFXUSYukR+B8WUYsUPmAXVcb77C41AqgPj/juQVBA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Hi, Patchset provides a new interface for dynamic configuration and deconfiguration of hotplug memory on s390, allowing with/without memmap_on_memory support. It is a follow up on the discussion with David when introducing memmap_on_memory support for s390 and support dynamic (de)configuration of memory: https://lore.kernel.org/all/ee492da8-74b4-4a97-8b24-73e07257f01d@redhat.com/ https://lore.kernel.org/all/20241202082732.3959803-1-sumanthk@linux.ibm.com/ The original motivation for introducing memmap_on_memory on s390 was to avoid using online memory to store struct pages metadata, particularly for standby memory blocks. This became critical in cases where there was an imbalance between standby and online memory, potentially leading to boot failures due to insufficient memory for metadata allocation. To address this, memmap_on_memory was utilized on s390. However, in its current form, it adds struct pages metadata at the start of each memory block at the time of addition (only standby memory), and this configuration is static. It cannot be changed at runtime (When the user needs continuous physical memory). Inorder to provide more flexibility to the user and overcome the above limitation, add an option to dynamically configure and deconfigure hotpluggable memory block with/without memmap_on_memory. With the new interface, s390 will not add all possible hotplug memory in advance, like before, to make it visible in sysfs for online/offline actions. Instead, before memory block can be set online, it has to be configured via a new interface in /sys/firmware/memory/memoryX/config, which makes s390 similar to others. i.e. Adding of hotpluggable memory is controlled by the user instead of adding it at boottime. s390 kernel sysfs interface to configure/deconfigure memory with memmap_on_memory (with upcoming lsmem changes): * Initial memory layout: lsmem -o RANGE,SIZE,STATE,BLOCK,CONFIGURED,MEMMAP_ON_MEMORY RANGE SIZE STATE BLOCK CONFIGURED MEMMAP_ON_MEMORY 0x00000000-0x7fffffff 2G online 0-15 yes no 0x80000000-0xffffffff 2G offline 16-31 no yes * Configure memory echo 1 > /sys/firmware/memory/memory16/config lsmem -o RANGE,SIZE,STATE,BLOCK,CONFIGURED,MEMMAP_ON_MEMORY RANGE SIZE STATE BLOCK CONFIGURED MEMMAP_ON_MEMORY 0x00000000-0x7fffffff 2G online 0-15 yes no 0x80000000-0x87ffffff 128M offline 16 yes yes 0x88000000-0xffffffff 1.9G offline 17-31 no yes * Deconfigure memory echo 0 > /sys/firmware/memory/memory16/config lsmem -o RANGE,SIZE,STATE,BLOCK,CONFIGURED,MEMMAP_ON_MEMORY RANGE SIZE STATE BLOCK CONFIGURED MEMMAP_ON_MEMORY 0x00000000-0x7fffffff 2G online 0-15 yes no 0x80000000-0xffffffff 2G offline 16-31 no yes * Enable memmap_on_memory and online it. (Deconfigure first) echo 0 > /sys/devices/system/memory/memory5/online echo 0 > /sys/firmware/memory/memory5/config lsmem -o RANGE,SIZE,STATE,BLOCK,CONFIGURED,MEMMAP_ON_MEMORY RANGE SIZE STATE BLOCK CONFIGURED MEMMAP_ON_MEMORY 0x00000000-0x27ffffff 640M online 0-4 yes no 0x28000000-0x2fffffff 128M offline 5 no no 0x30000000-0x7fffffff 1.3G online 6-15 yes no 0x80000000-0xffffffff 2G offline 16-31 no yes (Enable memmap_on_memory and online it) echo 1 > /sys/firmware/memory/memory5/memmap_on_memory echo 1 > /sys/firmware/memory/memory5/config echo 1 > /sys/devices/system/memory/memory5/online lsmem -o RANGE,SIZE,STATE,BLOCK,CONFIGURED,MEMMAP_ON_MEMORY RANGE SIZE STATE BLOCK CONFIGURED MEMMAP_ON_MEMORY 0x00000000-0x27ffffff 640M online 0-4 yes no 0x28000000-0x2fffffff 128M online 5 yes yes 0x30000000-0x7fffffff 1.3G online 6-15 yes no 0x80000000-0xffffffff 2G offline 16-31 no yes * Disable memmap_on_memory and online it. (Deconfigure first) echo 0 > /sys/devices/system/memory/memory5/online echo 0 > /sys/firmware/memory/memory5/config lsmem -o RANGE,SIZE,STATE,BLOCK,CONFIGURED,MEMMAP_ON_MEMORY RANGE SIZE STATE BLOCK CONFIGURED MEMMAP_ON_MEMORY 0x00000000-0x27ffffff 640M online 0-4 yes no 0x28000000-0x2fffffff 128M offline 5 no yes 0x30000000-0x7fffffff 1.3G online 6-15 yes no 0x80000000-0xffffffff 2G offline 16-31 no yes (Disable memmap_on_memory and online it) echo 0 > /sys/firmware/memory/memory5/memmap_on_memory echo 1 > /sys/firmware/memory/memory5/config echo 1 > /sys/devices/system/memory/memory5/online lsmem -o RANGE,SIZE,STATE,BLOCK,CONFIGURED,MEMMAP_ON_MEMORY RANGE SIZE STATE BLOCK CONFIGURED MEMMAP_ON_MEMORY 0x00000000-0x7fffffff 2G online 0-15 yes no 0x80000000-0xffffffff 2G offline 16-31 no yes * Userspace changes: lsmem/chmem tool is also changed to use the new interface. I will send it to util-linux soon. Patch 1 adds support for removal of boot-allocated memory blocks. Patch 2 provides option to dynamically configure and deconfigure memory with/without memmap_on_memory. Patch 3 removes MHP_OFFLINE_INACCESSIBLE from s390. The mhp flag was used to mark memory as not accessible until memory hotplug online phase begins. However, with patch 2, it is no longer essential. Memory can be brought to accessible state before adding memory, as the memory is added during runttime now instead of boottime. Patch 4 removes the MEM_PREPARE_ONLINE/MEM_FINISH_OFFLINE notifiers. It is no longer needed. Memory can be brought to accessible state before adding memory now, with runtime (de)configuration of memory. Note: The patches apply to the linux-next branch. v2: Thanks David * Rename struct mblock/mblock_arg with struct sclp_mem/sclp_mem_arg. * Rename all mblocks/mblock references with sclp_mems/sclp_mem - structures, functions. * Rename create_online_mblock() with create_configured_sclp_mem(). * Rename config_mblock_show()/config_mblock_store() with config_sclp_mem_show()/config_sclp_mem_store(). * Remove contains_standby_increment() and sclp_mem_notifier. sclp mem state change is performed when adding/removing memory. sclp memory notifier - no longer needed with this patchset. * Recover sclp mem state when add_memory() fails. * Refactor and add function init_sclp_mem(). * Use unsigned long instead of unsigned long long. * Simplify and correct kobj handling. Thanks Heiko. Sumanth Korikkar (4): s390/mm: Support removal of boot-allocated virtual memory map s390/sclp: Add support for dynamic (de)configuration of memory s390/sclp: Remove MHP_OFFLINE_INACCESSIBLE mm/memory_hotplug: Remove MEM_PREPARE_ONLINE/MEM_FINISH_OFFLINE notifiers arch/s390/mm/pgalloc.c | 2 + arch/s390/mm/vmem.c | 21 ++- drivers/base/memory.c | 23 +-- drivers/s390/char/sclp_mem.c | 290 +++++++++++++++++++++++---------- include/linux/memory.h | 9 - include/linux/memory_hotplug.h | 18 +- include/linux/memremap.h | 1 - mm/memory_hotplug.c | 17 +- mm/sparse.c | 3 +- 9 files changed, 227 insertions(+), 157 deletions(-) -- 2.48.1