From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 899A5E77197 for ; Tue, 7 Jan 2025 15:03:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 185966B007B; Tue, 7 Jan 2025 10:03:02 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 108878D0001; Tue, 7 Jan 2025 10:03:02 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E76C18D0006; Tue, 7 Jan 2025 10:03:01 -0500 (EST) 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 C6F928D0001 for ; Tue, 7 Jan 2025 10:03:01 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 465BAA0A2F for ; Tue, 7 Jan 2025 15:03:01 +0000 (UTC) X-FDA: 82980973362.14.07DA49E Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf16.hostedemail.com (Postfix) with ESMTP id 07F67180009 for ; Tue, 7 Jan 2025 15:02:58 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=rdj4BTKq; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf16.hostedemail.com: domain of agordeev@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=agordeev@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736262179; a=rsa-sha256; cv=none; b=FTIgCWrGnghdW+SYIHxqevAD4uyWYCRNfFhys+b9GEuNoLEqPULVOX9nHrP2QL1jflKEgv XnFdS90M6gn4rcFk6IUctVa5XlqvKPYGLVDzR4fUWYnvDGaPUxrPxpH38mZlTD6aDSjUZO M4peLFHbVl1K1ylFQg1T5CVl1ivk8iI= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=rdj4BTKq; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf16.hostedemail.com: domain of agordeev@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=agordeev@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736262179; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=nGMTr1inoVWG3ARe8QoGoEOSwdCntuqZy8bhdK6O/ME=; b=tqaMvL9oHv/rH626W36lIF9jzPwo1ySKLlUDv3dgw9XyQB70olRLXwCYOIhK+3BHqV8mmA hhxh0jJCgrrph3O5dGjvkMFf4lkJKESKqazScLmH9GX/BtE64JpQgrowjKvXsgX1W88O31 Z9AkheK/OzFcaF1fz4y0huCRriVqE3M= Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 50785q0m018311; Tue, 7 Jan 2025 15:02:55 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=pp1; bh=nGMTr1inoVWG3ARe8QoGoEOSwdCntu qZy8bhdK6O/ME=; b=rdj4BTKquX38fA+V7vs9vGrg6z7HxUyoh1JCIFg2qPrBrc ovRrqMTxob92ukiN9TlpZCs7CVUaqv6rh4Mi5tAIkhlcCaduaExoYeYLzmHkaH1C S0jV8pQzj2Q2N++he2cxLihvsXN9Ws2JTtsztsnqZdNHB0F+gy5J9PuEu1tgZtJk XpYyXE/McfMm5JLsDDKSEa0f3gOdZvqdAytY6OUzDZe71qUCT9y2i1ZigqqwPHmx 1mK+SyY6FXGKya5ump+AzYcnbek4K8yEjS0n+sKJkfNM1URBoiNo/3Sb4PjRN+s0 zgkOb4fRUrznizbOxQ8cOjfYiVbiPNEGSmJygikg== 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 4410f39tfg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 07 Jan 2025 15:02:55 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 507E2w4n027938; Tue, 7 Jan 2025 15:02:54 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 43yhhk2t7y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 07 Jan 2025 15:02:54 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 507F2nAY55837076 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 7 Jan 2025 15:02:50 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C602420043; Tue, 7 Jan 2025 15:02:49 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 683182004D; Tue, 7 Jan 2025 15:02:48 +0000 (GMT) Received: from li-008a6a4c-3549-11b2-a85c-c5cc2836eea2.ibm.com (unknown [9.155.204.135]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTPS; Tue, 7 Jan 2025 15:02:48 +0000 (GMT) Date: Tue, 7 Jan 2025 16:02:47 +0100 From: Alexander Gordeev To: Guo Weikang Cc: Andrew Morton , Mike Rapoport , Geert Uytterhoeven , Dennis Zhou , Tejun Heo , Christoph Lameter , Thomas Bogendoerfer , Sam Creasey , Huacai Chen , Will Deacon , Catalin Marinas , Oreoluwa Babatunde , rafael.j.wysocki@intel.com, Palmer Dabbelt , Hanjun Guo , Easwar Hariharan , Johannes Berg , Ingo Molnar , Dave Hansen , Christian Brauner , KP Singh , Richard Henderson , Matt Turner , Russell King , WANG Xuerui , Michael Ellerman , Stefan Kristiansson , Stafford Horne , Helge Deller , Nicholas Piggin , Christophe Leroy , Naveen N Rao , Madhavan Srinivasan , Geoff Levand , Paul Walmsley , Palmer Dabbelt , Albert Ou , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , Heiko Carstens , Vasily Gorbik , Christian Borntraeger , Sven Schnelle , Yoshinori Sato , Rich Felker , John Paul Adrian Glaubitz , Andreas Larsson , Richard Weinberger , Anton Ivanov , Johannes Berg , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, linux-alpha@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-openrisc@vger.kernel.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, kasan-dev@googlegroups.com, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-um@lists.infradead.org, linux-acpi@vger.kernel.org, xen-devel@lists.xenproject.org, linux-omap@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-mm@kvack.org, linux-pm@vger.kernel.org, Xi Ruoyao Subject: Re: [PATCH v7] mm/memblock: Add memblock_alloc_or_panic interface Message-ID: References: <20241222111537.2720303-1-guoweikang.kernel@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241222111537.2720303-1-guoweikang.kernel@gmail.com> X-TM-AS-GCONF: 00 X-Proofpoint-GUID: by_phAXyWBB4rrGUxAvoGmZnyCdgAMa_ X-Proofpoint-ORIG-GUID: by_phAXyWBB4rrGUxAvoGmZnyCdgAMa_ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1051,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-10-15_01,2024-10-11_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 mlxlogscore=985 spamscore=0 lowpriorityscore=0 adultscore=0 malwarescore=0 impostorscore=0 bulkscore=0 phishscore=0 suspectscore=0 priorityscore=1501 clxscore=1011 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2411120000 definitions=main-2501070126 X-Stat-Signature: 3ahqf36fm66nrdwus3kiziku4htjoftq X-Rspam-User: X-Rspamd-Queue-Id: 07F67180009 X-Rspamd-Server: rspam08 X-HE-Tag: 1736262178-359606 X-HE-Meta: U2FsdGVkX1+EvjLtgFUCaAlDqg8ds9U5ZwiZ6VgKbyg2wMLaL1retwec/2qSZ3IsfLj4/gHOvMbOcpPmN64Nb/d2TxkD5DuJGYus8CP5z+iQw2CIufK8CQpbL8obXBXWYzXIZm6TQ/Ez0opR2VVcDg/k3LsT0g9WicS5JL31lWHYhJUwd6sRlo10Usc4WeIrq+/5GQdihB/UEIXnJXxR/GmRDs9vKCeVfUo28t69WRiC1haBYH97oTMCZN0Uc+OsShb3WjOq/WUTXloJeoVRNdkRrvyxDvbB4Bhm0giDDsGFLDvoFZ326/Lfrlp2l1IcP/sW4IHePMufATbZ5YRF1XlfFqoZ/zgxQyc9xaJCvFSofJB1Ad8DSZ+3H+4fItoR9QFr1p9zcsz9eTq1a+h5OzX9Xk6M7Ui0gYJ+wyl5NkOysV1f5+so8VzUHB/7CUhMWm3dAr9hmq+dtammplmy79Lk7kVA7HJmRRZ6U2OhtNwnb55ZPe/AOpZv9+ETjYwBFlKBqeltMhURMuQ0l6uT0KLoJW+9w9RAhsIGMGm6/D3We/rl7q6zBEBZ4oTSMKP9deQgFB6NG/z286yfWOhs2E+h6CI4/xqjc22QSj72kYXquwhwxRRVbE6zqUQy0mglFLt4IxBYGtG/4enT9TiCkWDUp6U7T5zM0s449eG0a7SMYP8BWiStJhpN5qkK9NVMumS8QHvZQv9KMnY4yRNoq9kGwi+ohenDV02m4H/tvngWlmd29du0j9C0oBMmGjj/oh/M+BHH1fZGOl8S9pDl7S9wzE+Wsk9hE89Pbm0ERo6wCWNF2gGSLHQRNaibQf/yg3wZlnXsgh2PVjeNjojvYCbG32mi03ymIFTsw5Qos+/hcHlzKge0xxWjyGsTiNGj8HNbnfjtg0uYcoD7vXGCB/XHETsvCOA6X08rGRsg/DJANdHnsdNuQVoXeEjMJzy8biIDWUdhk0SFcXSXG5G IYHNzSmH SpQOE1Dp18wPn4mhnbGl3EjlaEKe3FybdQxaWRMqx8SBxkgm4su3fu7VK7qVAah5F8gJNjFvxE0KabmUlJrXoquNvoCpkd0ImNKi/l2c/zDqrJAqCJ5JQ8M//u/ZY1BK8vIZVIPFifrKIS/11bV6/zlxyacIm8j4jwA4lO8dF/10np3Fj8JkVqcndMP3jO7CRB/MmtlAJwEhwXbAV4l7/i3TEUgo/4hvep8UeEvFxWnHshFWrHfWMqyWmEA/vheXhmxZeVGxsDihEVWxX+4z8pDQdLRlzFj3aXZwMMKVbtbOVhVxMn+k+PQ3CRmlu5Q9DjHnrrGjTJJk6RssuOu1+dEgwkj887+2HoM/rjSS1JcvUw6GyVb7ERt7dvXSQylpti+te2eCxr/25p9c0eLUFBEjiGfrAEQ7B5VhLplwH8ca/RpsmrGmi4g2yC0GXDrvKB6gljxYq+QCOLrYJUSx0tuQ1OQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Sun, Dec 22, 2024 at 07:15:37PM +0800, Guo Weikang wrote: Hi Guo, > Before SLUB initialization, various subsystems used memblock_alloc to > allocate memory. In most cases, when memory allocation fails, an immediate > panic is required. To simplify this behavior and reduce repetitive checks, > introduce `memblock_alloc_or_panic`. This function ensures that memory > allocation failures result in a panic automatically, improving code > readability and consistency across subsystems that require this behavior. I believe, you also want to make similar function against memblock_alloc_low(). Please, find s390 comments below. ... > diff --git a/arch/s390/kernel/numa.c b/arch/s390/kernel/numa.c > index ddc1448ea2e1..a33e20f73330 100644 > --- a/arch/s390/kernel/numa.c > +++ b/arch/s390/kernel/numa.c > @@ -22,10 +22,7 @@ void __init numa_setup(void) > node_set(0, node_possible_map); > node_set_online(0); > for (nid = 0; nid < MAX_NUMNODES; nid++) { > - NODE_DATA(nid) = memblock_alloc(sizeof(pg_data_t), 8); > - if (!NODE_DATA(nid)) > - panic("%s: Failed to allocate %zu bytes align=0x%x\n", > - __func__, sizeof(pg_data_t), 8); > + NODE_DATA(nid) = memblock_alloc_or_panic(sizeof(pg_data_t), 8); > } Please, also remove the cycle body brackets. > NODE_DATA(0)->node_spanned_pages = memblock_end_of_DRAM() >> PAGE_SHIFT; > NODE_DATA(0)->node_id = 0; > diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c > index 0ce550faf073..1298f0860733 100644 > --- a/arch/s390/kernel/setup.c > +++ b/arch/s390/kernel/setup.c > @@ -376,11 +376,7 @@ static unsigned long __init stack_alloc_early(void) > { > unsigned long stack; > > - stack = (unsigned long)memblock_alloc(THREAD_SIZE, THREAD_SIZE); > - if (!stack) { > - panic("%s: Failed to allocate %lu bytes align=0x%lx\n", > - __func__, THREAD_SIZE, THREAD_SIZE); > - } > + stack = (unsigned long)memblock_alloc_or_panic(THREAD_SIZE, THREAD_SIZE); > return stack; > } > > @@ -504,10 +500,7 @@ static void __init setup_resources(void) > bss_resource.end = __pa_symbol(__bss_stop) - 1; > > for_each_mem_range(i, &start, &end) { > - res = memblock_alloc(sizeof(*res), 8); > - if (!res) > - panic("%s: Failed to allocate %zu bytes align=0x%x\n", > - __func__, sizeof(*res), 8); > + res = memblock_alloc_or_panic(sizeof(*res), 8); > res->flags = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM; > > res->name = "System RAM"; > @@ -526,10 +519,7 @@ static void __init setup_resources(void) > std_res->start > res->end) > continue; > if (std_res->end > res->end) { > - sub_res = memblock_alloc(sizeof(*sub_res), 8); > - if (!sub_res) > - panic("%s: Failed to allocate %zu bytes align=0x%x\n", > - __func__, sizeof(*sub_res), 8); > + sub_res = memblock_alloc_or_panic(sizeof(*sub_res), 8); > *sub_res = *std_res; > sub_res->end = res->end; > std_res->start = res->end + 1; > @@ -816,9 +806,7 @@ static void __init setup_randomness(void) > { > struct sysinfo_3_2_2 *vmms; > > - vmms = memblock_alloc(PAGE_SIZE, PAGE_SIZE); > - if (!vmms) > - panic("Failed to allocate memory for sysinfo structure\n"); > + vmms = memblock_alloc_or_panic(PAGE_SIZE, PAGE_SIZE); > if (stsi(vmms, 3, 2, 2) == 0 && vmms->count) > add_device_randomness(&vmms->vm, sizeof(vmms->vm[0]) * vmms->count); > memblock_free(vmms, PAGE_SIZE); > diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c > index 822d8e6f8717..d77aaefb59bd 100644 > --- a/arch/s390/kernel/smp.c > +++ b/arch/s390/kernel/smp.c > @@ -611,9 +611,9 @@ void __init smp_save_dump_ipl_cpu(void) > if (!dump_available()) > return; > sa = save_area_alloc(true); > - regs = memblock_alloc(512, 8); > - if (!sa || !regs) > + if (!sa) > panic("could not allocate memory for boot CPU save area\n"); Please, replace memblock_alloc() with memblock_alloc_or_panic() in save_area_alloc() and remove the error handling here and also in smp_save_dump_secondary_cpus(). > + regs = memblock_alloc_or_panic(512, 8); > copy_oldmem_kernel(regs, __LC_FPREGS_SAVE_AREA, 512); > save_area_add_regs(sa, regs); > memblock_free(regs, 512); > @@ -792,10 +792,7 @@ void __init smp_detect_cpus(void) > u16 address; > > /* Get CPU information */ > - info = memblock_alloc(sizeof(*info), 8); > - if (!info) > - panic("%s: Failed to allocate %zu bytes align=0x%x\n", > - __func__, sizeof(*info), 8); > + info = memblock_alloc_or_panic(sizeof(*info), 8); > smp_get_core_info(info, 1); > /* Find boot CPU type */ > if (sclp.has_core_type) { > diff --git a/arch/s390/kernel/topology.c b/arch/s390/kernel/topology.c > index 0fd56a1cadbd..cf5ee6032c0b 100644 > --- a/arch/s390/kernel/topology.c > +++ b/arch/s390/kernel/topology.c > @@ -548,10 +548,7 @@ static void __init alloc_masks(struct sysinfo_15_1_x *info, > nr_masks *= info->mag[TOPOLOGY_NR_MAG - offset - 1 - i]; > nr_masks = max(nr_masks, 1); > for (i = 0; i < nr_masks; i++) { > - mask->next = memblock_alloc(sizeof(*mask->next), 8); > - if (!mask->next) > - panic("%s: Failed to allocate %zu bytes align=0x%x\n", > - __func__, sizeof(*mask->next), 8); > + mask->next = memblock_alloc_or_panic(sizeof(*mask->next), 8); > mask = mask->next; > } > } > @@ -569,10 +566,7 @@ void __init topology_init_early(void) > } > if (!MACHINE_HAS_TOPOLOGY) > goto out; > - tl_info = memblock_alloc(PAGE_SIZE, PAGE_SIZE); > - if (!tl_info) > - panic("%s: Failed to allocate %lu bytes align=0x%lx\n", > - __func__, PAGE_SIZE, PAGE_SIZE); > + tl_info = memblock_alloc_or_panic(PAGE_SIZE, PAGE_SIZE); > info = tl_info; > store_topology(info); > pr_info("The CPU configuration topology of the machine is: %d %d %d %d %d %d / %d\n", Thanks!