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 328F3E77188 for ; Thu, 9 Jan 2025 03:24:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 464126B00AD; Wed, 8 Jan 2025 22:24:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3ECEC6B00AE; Wed, 8 Jan 2025 22:24:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2671D6B00AF; Wed, 8 Jan 2025 22:24:09 -0500 (EST) 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 EF7256B00AD for ; Wed, 8 Jan 2025 22:24:08 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 611BA43F41 for ; Thu, 9 Jan 2025 03:24:08 +0000 (UTC) X-FDA: 82986469776.18.43FB26F Received: from mail-yb1-f179.google.com (mail-yb1-f179.google.com [209.85.219.179]) by imf24.hostedemail.com (Postfix) with ESMTP id 7E0DD180003 for ; Thu, 9 Jan 2025 03:24:06 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Rs7iTTtu; spf=pass (imf24.hostedemail.com: domain of guoweikang.kernel@gmail.com designates 209.85.219.179 as permitted sender) smtp.mailfrom=guoweikang.kernel@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736393046; a=rsa-sha256; cv=none; b=A7yu5s5UXG2mQHXycbwLVj9yPm0LRkmhmA4KyCaEnvLDl8F6HVk0MGMaBynzsrvIsgdG+j vHjid8nIyT/pk1KKKRh2feyU+tDxkWScB5U++fYz/93CA4RPNt5BlxGc4z1QmHR1+GpJdd +ylDnbNtpP0pGbmXGlUpipD/27CsAQY= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Rs7iTTtu; spf=pass (imf24.hostedemail.com: domain of guoweikang.kernel@gmail.com designates 209.85.219.179 as permitted sender) smtp.mailfrom=guoweikang.kernel@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736393046; 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=GRLSY86jDj38piMUj3ondl6i6rtb0XKhVp9dcuevSW4=; b=wlA4OFRyhciZo7QBu68PFwylp/ZW843Omr1chWhUXREb2mqZLfrjYskceIHXEOGc8uFnz+ 2SU1Ci5wO1igItl+uZeU9rDeYlL8NNXhQQ3CMMt0I08a5X9uxZmj7L7Yq9XN+dUECdH2Fk JS9K4yOm00cPXr+hikDHBpjDGr1/9g8= Received: by mail-yb1-f179.google.com with SMTP id 3f1490d57ef6-e53c9035003so678035276.2 for ; Wed, 08 Jan 2025 19:24:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736393045; x=1736997845; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=GRLSY86jDj38piMUj3ondl6i6rtb0XKhVp9dcuevSW4=; b=Rs7iTTtuvXuBSqvxxf6Dj9KZkAZZuSDui6RGInDbCCi4gFRgYatuM173gJYhO2Frrq MgULyWBQSY4+VjZbIE3olx23j/ZXiYDDiVdPx//LaFq8QkQSb0hBMMcjAXlE0+07Esyo HbaV31XXPG6tsQ+a4nveTwhRi2RK7hZ+RkyBGCNdgShIfQ8lDYnqiJ46ndbpDM6jDHF0 WxfLJ3QEm+HKyCm8yl6ApvBudi1A5GDWBZSEXUbDDisWsD/8oiBXhBCoBNF2HqFc6BkK x/GRj8uEUowM0aK8JwSy6zqR2uJaHLOJ7VgBPITlkTb9ajyTxqju59wmdKlh1wkQm4aA EB8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736393045; x=1736997845; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=GRLSY86jDj38piMUj3ondl6i6rtb0XKhVp9dcuevSW4=; b=b8DnMXwkp4CfJssA+ieuZ+PXxp70CRvBvExpTYGqqWcS3iQDyqDNDDeQyQOLmZBqRa 0452d5XzQvP7hZMUuwBH1vrpWMuwQS884D4TAXQW2o2Et9qrByHpuBZwYRfKyxbbufKK /ESiivCkkMHsr4Uprtq0O71IKL2rIcvAzp/OpWWC9Zng7nKSnM7Om8aDy7Fi1VYuktuI IvqM8mVFuGx9VQf6jsLyo+bHfcR32l/EtcbtCyjbOOSBRqOIrzZ/KPxPmvOuLitX75nh h5dXYy/Y5sCE7s2Dxn5HvrgkjimjyvQ4ZsLNtXhUwUs5EnqHlGrPDxpdhLknqr87Ts3T zH+A== X-Forwarded-Encrypted: i=1; AJvYcCXj5mWzaNeNK1pIJYJr8spZkkgur9bjvqNJowySmdeoEKoLMxFwWNy3q5KzJgzWjj9ucsW9dGIakA==@kvack.org X-Gm-Message-State: AOJu0YwgX08d760bzaE5VoQ8F/Mrr00qqML9Gwp5oD7pN4E0pCxCZY6X l4gipLwNqeux8P+sn3sbL3gVv0ZJ+RslHowzIjOXzaiTXIeQ2AFVfQ/aAgtexS469GzdaPmSsUL 4fRhukWil0uLSsc92seGtgrPHsJE= X-Gm-Gg: ASbGnctGY9/TZG2tgl1Q7eMT2dmSiEPC8oFSxFTkim+QL4qSOI7OqNOudHcPVeFx3I0 33WggDKz3z2k9smqaV4QNZJ91B0/EGc/PTOUPLU4= X-Google-Smtp-Source: AGHT+IHvfTvUDS0zXsQQg9CNXMULF279yAXogHI35BfCjpIeW8nelvJnQZu37Y2PsKq7plss+pLNeg1Xfge/eRq1m8I= X-Received: by 2002:a05:690c:6310:b0:6ef:529e:6049 with SMTP id 00721157ae682-6f5311e731cmr37527307b3.4.1736393045408; Wed, 08 Jan 2025 19:24:05 -0800 (PST) MIME-Version: 1.0 References: <20241222111537.2720303-1-guoweikang.kernel@gmail.com> In-Reply-To: From: Weikang Guo Date: Thu, 9 Jan 2025 11:23:30 +0800 X-Gm-Features: AbW1kvaH0hebtYebvQdkx3zLZ5wD-efSqUXSkHjDcZ_ykv7GONR64h8CETvGcas Message-ID: Subject: Re: [PATCH v7] mm/memblock: Add memblock_alloc_or_panic interface To: Alexander Gordeev Cc: Andrew Morton , Mike Rapoport , linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org, linux-mm@kvack.org Content-Type: multipart/alternative; boundary="000000000000a98417062b3d8216" X-Rspamd-Queue-Id: 7E0DD180003 X-Stat-Signature: dqpcdhqos4z4z4pudjhon8tm7acjcg4z X-Rspam-User: X-Rspamd-Server: rspam09 X-HE-Tag: 1736393046-677219 X-HE-Meta: U2FsdGVkX1/hIScCtjvxOXlGFZOCC2dCbX3DWbuU03z31bQaXw/eSbsV/QXiFCWvZ4vH7456PlPzyZU5urTgstj1xsnKWkMMTac3HIM8L5l4QCj08BefFeUbCjsPAKSstyFzDiocqPEmLx/lkDrpY36Sk0Ab/tN7Cxcs6ueOjjr2r/ASJ7RnhYRVPbFjtQ2p5OJBOXU5W2PaqZuGwMOh1XYZpq1CIv3qog0buhas+STxEsCygcOVGAw0nGfLSxrE1bOQTXVg/ZvpDZfyImpJB8iVxBZq6HSkgKV3hxaa9rR+JKUof/muq4JU9NhGLekUwRkEQJU81WVKVNgVkD6nGdFFPNP52FaqMQlaYXs99GRKHu8XmhPXIX80cHv7japFSwy6hZHkQZjZ6Pu+s63z24sUtY9RHRdyc/au17CyDXzTOj5WOCdgSZ34xtkAAqTxgEbTBLx5qlzK0ZSpdIgmGWzcRD0xpUUvTmq7zhGkRP2xCZjB8MieVKVIJb+K1LOS7M4ulos2pawR7DBEL6CYYXXrzOxDcUk2t5EzlLbaLsRJDzD6fJpPwtPIw1IjsrTsT2loQOZZqFjP2EhOKrf2Eq9xJ3McZAn665dLGx7UrU/w6qcTEznPT91kciFG4ziHt+HmNZkiQxlLdDUJJcRA+96A2x7/VSwbdiQK9CjiftYwgnP7itmsp+p1XQaeT9jqb60byNgZaP5HyqojwlYdodAPWc/GlEhTjUMmU4k3g29+HHEerWSynynyNo0O3On5lktYUR7zXLQezaAoZecDjZfEPjMRFNJ0H68EHXFlJBeoDFnSggb8alrNTRdXYK8QP8s1XIG10M5TaJdv4ORuqIDQ3DF5u1/IVokKErlafjQ6sfZ5CrJWbdhc7iyMBgfPbJhS/mxCraeIhcWfn0hIJi+7a5Jxgw2+pZKNgk8OWUqyVb5+77uCHyS+XBwosXsXNLn6Gj9R6/TsQiKCvjU lGdnSJfO NC87eCQteOLsmC5Feqvebf9B0uPnajn2SeV0bdszKbxAtOXMoGzBDMKzeZgTRc0ptjQmCtdJkZ2QM2HHBVupm0+2TwJHSQVya9YlSE/2mjyXo6uJwOikibQvGp/KponOMw0tnDrlrUrstUNalQNwbR7RkNSWD/e6GpJe+9ST7kxpSOgkaB0NAZgXmji3smkkt8i4SJqhirBVzBmBe3Gu08MmZBoy2aC4Ys5mArZTuywD1KNE0Yo1tJW4AVSjehao7L9Z7oq1oyS3fyR+2ph3yJ/2rSSG/Wf+ECVY7QF2PIXW9GUhVfWiIfu/owojjb20q/bLubA7fnSdKkosUJObWZPQ9etdR2LVyYKd77d24mFSCorA3PXM72FK6IX1/OpWgBO3X3crz1L8yRLEXHa0VLBilbzcoJPcUGJ0QULjZ7zxqADS7AlnMiMM4hBZGLFf3KT+hPXo6sAQpwdUAWrpzciP2TU7lJcdkvQqrVFnsDvhgRYnwWNk52QwiB2ZUktKlsIXAmGsdsfWKYKAerwdbzPVC9g== 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: --000000000000a98417062b3d8216 Content-Type: text/plain; charset="UTF-8" Hi, Alexander Alexander Gordeev wrote on Tuesday, 7 January 2025 23:02 > > 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(). > About if we need add more interfaces like `or_panic` or `no_panic` , there has been a discussion, temporarily only modify the most frequently used `memblock_alloc`. - https://lore.kernel.org/lkml/CAOm6qnm4pN95kJK8bYfu7Z2Bp_6_Gn35v2WyMmYraQ+YMYQEdg@mail.gmail.com/T/#mf09ea8cb9c5e6cbb9a4b592625394b5639c73e1b > Please, find s390 comments below. > Thanks. Since the patch has been merged into `mm-everything`, I will submit another patch to fix your suggestion. > ... > > > 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. Sure. > > > 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(). OK, I confirmed that all the places where save_area_alloc is called have panic handle. > > > + 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! --- Guo --000000000000a98417062b3d8216 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi, Alexander

Alexander Gordeev &l= t;agordeev@linux.ibm.com> = wrote on Tuesday, 7 January 2025 23:02
>
> On Sun, Dec 22, 2024= at 07:15:37PM +0800, Guo Weikang wrote:
>
> Hi Guo,
>> > Before SLUB initialization, various subsystems used memblock_all= oc to
> > allocate memory. In most cases, when memory allocation f= ails, an immediate
> > panic is required. To simplify this behavio= r and reduce repetitive checks,
> > introduce `memblock_alloc_or_p= anic`. This function ensures that memory
> > allocation failures r= esult 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_lo= w().
>

About if we need add more interfaces like `or_panic` or= `no_panic` , there has been a
discussion, temporarily only modify the m= ost frequently used `memblock_alloc`.

=C2=A0- https://lore.kernel= .org/lkml/CAOm6qnm4pN95kJK8bYfu7Z2Bp_6_Gn35v2WyMmYraQ+YMYQEdg@mail.gmail.co= m/T/#mf09ea8cb9c5e6cbb9a4b592625394b5639c73e1b

> Please, find= s390 comments below.
>

Thanks. Since the patch has been merge= d into `mm-everything`, I will submit another
patch to fix your suggesti= on.

> ...
>
> > 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/s= 390/kernel/numa.c
> > @@ -22,10 +22,7 @@ void __init numa_setup(vo= id)
> > =C2=A0 =C2=A0 =C2=A0 node_set(0, node_possible_map);
&g= t; > =C2=A0 =C2=A0 =C2=A0 node_set_online(0);
> > =C2=A0 =C2=A0= =C2=A0 for (nid =3D 0; nid < MAX_NUMNODES; nid++) {
> > - =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NODE_DATA(nid) =3D memblock_alloc(si= zeof(pg_data_t), 8);
> > - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 if (!NODE_DATA(nid))
> > - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 panic("%s: Failed to allocate %zu b= ytes align=3D0x%x\n",
> > - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 __func__, sizeo= f(pg_data_t), 8);
> > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = NODE_DATA(nid) =3D memblock_alloc_or_panic(sizeof(pg_data_t), 8);
> &= gt; =C2=A0 =C2=A0 =C2=A0 }
>
> Please, also remove the cycle bo= dy brackets.

Sure.

>
> > =C2=A0 =C2=A0 =C2=A0 NOD= E_DATA(0)->node_spanned_pages =3D memblock_end_of_DRAM() >> PAGE_S= HIFT;
> > =C2=A0 =C2=A0 =C2=A0 NODE_DATA(0)->node_id =3D 0;
= > > diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c<= br>> > index 0ce550faf073..1298f0860733 100644
> > --- a/arc= h/s390/kernel/setup.c
> > +++ b/arch/s390/kernel/setup.c
> &= gt; @@ -376,11 +376,7 @@ static unsigned long __init stack_alloc_early(void= )
> > =C2=A0{
> > =C2=A0 =C2=A0 =C2=A0 unsigned long stac= k;
> >
> > - =C2=A0 =C2=A0 stack =3D (unsigned long)membl= ock_alloc(THREAD_SIZE, THREAD_SIZE);
> > - =C2=A0 =C2=A0 if (!stac= k) {
> > - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 panic("%= s: Failed to allocate %lu bytes align=3D0x%lx\n",
> > - =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 __func__, THREA= D_SIZE, THREAD_SIZE);
> > - =C2=A0 =C2=A0 }
> > + =C2=A0 = =C2=A0 stack =3D (unsigned long)memblock_alloc_or_panic(THREAD_SIZE, THREAD= _SIZE);
> > =C2=A0 =C2=A0 =C2=A0 return stack;
> > =C2=A0= }
> >
> > @@ -504,10 +500,7 @@ static void __init setup_r= esources(void)
> > =C2=A0 =C2=A0 =C2=A0 bss_resource.end =3D __pa_= symbol(__bss_stop) - 1;
> >
> > =C2=A0 =C2=A0 =C2=A0 for_= each_mem_range(i, &start, &end) {
> > - =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 res =3D memblock_alloc(sizeof(*res), 8);
> &= gt; - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (!res)
> > - = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 panic= ("%s: Failed to allocate %zu bytes align=3D0x%x\n",
> > = - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 __func__, sizeof(*res), 8);
> > + =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 res =3D memblock_alloc_or_panic(sizeof(*res), 8= );
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 res->fl= ags =3D IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM;
> >
> > = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 res->name =3D "Sys= tem RAM";
> > @@ -526,10 +519,7 @@ static void __init setup_r= esources(void)
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 std_res->start > res-&g= t;end)
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 continue;
> > = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 if (std_res->end > res->end) {
> > - =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 sub_res =3D memblock_alloc(sizeof(*sub_res), 8);
> > - = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 if (!sub_res)
> > - =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 panic("%s: Failed to allocate %zu byte= s align=3D0x%x\n",
> > - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 __func__, sizeof(*sub_res), 8);
&= gt; > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 sub_res =3D memblock_alloc_or_panic(size= of(*sub_res), 8);
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 *sub_res =3D= *std_res;
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 sub_res->end =3D= res->end;
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 std_res->start = =3D res->end + 1;
> > @@ -816,9 +806,7 @@ static void __init se= tup_randomness(void)
> > =C2=A0{
> > =C2=A0 =C2=A0 =C2=A0= struct sysinfo_3_2_2 *vmms;
> >
> > - =C2=A0 =C2=A0 vmms= =3D memblock_alloc(PAGE_SIZE, PAGE_SIZE);
> > - =C2=A0 =C2=A0 if = (!vmms)
> > - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 panic(&quo= t;Failed to allocate memory for sysinfo structure\n");
> > + = =C2=A0 =C2=A0 vmms =3D memblock_alloc_or_panic(PAGE_SIZE, PAGE_SIZE);
&g= t; > =C2=A0 =C2=A0 =C2=A0 if (stsi(vmms, 3, 2, 2) =3D=3D 0 && vm= ms->count)
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= add_device_randomness(&vmms->vm, sizeof(vmms->vm[0]) * vmms->= count);
> > =C2=A0 =C2=A0 =C2=A0 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)
> > =C2= =A0 =C2=A0 =C2=A0 if (!dump_available())
> > =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> > =C2=A0 =C2=A0 =C2=A0 sa = =3D save_area_alloc(true);
> > - =C2=A0 =C2=A0 regs =3D memblock_a= lloc(512, 8);
> > - =C2=A0 =C2=A0 if (!sa || !regs)
> > += =C2=A0 =C2=A0 if (!sa)
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 panic("could not allocate memory for boot CPU save area\n&q= uot;);
>
> 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().

OK, I confirmed= that all the places where =C2=A0save_area_alloc is called have panic handl= e.

>
> > + =C2=A0 =C2=A0 regs =3D memblock_alloc_or_pani= c(512, 8);
> > =C2=A0 =C2=A0 =C2=A0 copy_oldmem_kernel(regs, __LC_= FPREGS_SAVE_AREA, 512);
> > =C2=A0 =C2=A0 =C2=A0 save_area_add_reg= s(sa, regs);
> > =C2=A0 =C2=A0 =C2=A0 memblock_free(regs, 512);> > @@ -792,10 +792,7 @@ void __init smp_detect_cpus(void)
> &= gt; =C2=A0 =C2=A0 =C2=A0 u16 address;
> >
> > =C2=A0 =C2= =A0 =C2=A0 /* Get CPU information */
> > - =C2=A0 =C2=A0 info =3D = memblock_alloc(sizeof(*info), 8);
> > - =C2=A0 =C2=A0 if (!info)> > - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 panic("%s: Fai= led to allocate %zu bytes align=3D0x%x\n",
> > - =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 __func__, sizeof(*info= ), 8);
> > + =C2=A0 =C2=A0 info =3D memblock_alloc_or_panic(sizeof= (*info), 8);
> > =C2=A0 =C2=A0 =C2=A0 smp_get_core_info(info, 1);<= br>> > =C2=A0 =C2=A0 =C2=A0 /* Find boot CPU type */
> > =C2= =A0 =C2=A0 =C2=A0 if (sclp.has_core_type) {
> > diff --git a/arch/= s390/kernel/topology.c b/arch/s390/kernel/topology.c
> > index 0fd= 56a1cadbd..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,
>= ; > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 nr_masks *=3D info-= >mag[TOPOLOGY_NR_MAG - offset - 1 - i];
> > =C2=A0 =C2=A0 =C2= =A0 nr_masks =3D max(nr_masks, 1);
> > =C2=A0 =C2=A0 =C2=A0 for (i= =3D 0; i < nr_masks; i++) {
> > - =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 mask->next =3D memblock_alloc(sizeof(*mask->next), 8);<= br>> > - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (!mask->next= )
> > - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 panic("%s: Failed to allocate %zu bytes align=3D0x%x\n&q= uot;,
> > - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 __func__, sizeof(*mask->next), 8)= ;
> > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 mask->next = =3D memblock_alloc_or_panic(sizeof(*mask->next), 8);
> > =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 mask =3D mask->next;
> = > =C2=A0 =C2=A0 =C2=A0 }
> > =C2=A0}
> > @@ -569,10 +5= 66,7 @@ void __init topology_init_early(void)
> > =C2=A0 =C2=A0 = =C2=A0 }
> > =C2=A0 =C2=A0 =C2=A0 if (!MACHINE_HAS_TOPOLOGY)
&g= t; > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto out;
> = > - =C2=A0 =C2=A0 tl_info =3D memblock_alloc(PAGE_SIZE, PAGE_SIZE);
&= gt; > - =C2=A0 =C2=A0 if (!tl_info)
> > - =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 panic("%s: Failed to allocate %lu bytes align=3D0= x%lx\n",
> > - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 __func__, PAGE_SIZE, PAGE_SIZE);
> > + =C2=A0 = =C2=A0 tl_info =3D memblock_alloc_or_panic(PAGE_SIZE, PAGE_SIZE);
> &= gt; =C2=A0 =C2=A0 =C2=A0 info =3D tl_info;
> > =C2=A0 =C2=A0 =C2= =A0 store_topology(info);
> > =C2=A0 =C2=A0 =C2=A0 pr_info("T= he CPU configuration topology of the machine is: %d %d %d %d %d %d / %d\n&q= uot;,
>
> Thanks!

=
---=C2=A0
Guo
--000000000000a98417062b3d8216--