From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AAC42220F38 for ; Thu, 5 Mar 2026 01:14:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772673276; cv=none; b=b7y6FzkbpYRF1EfqSYdGTB1dY1zQRQ5VJX50Kgn7nBIjaivQSWb+qnbPVfffFg0ySqJFP+HCPZi72ixRp9AVU2TuHnfy1RmRkJzFib+hOFFrduStfr8u4EBaYxgofbeq/lE8wA8LPZJPVEgjYtxT2xGmCNzka4zsPTNHIJBVlfc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772673276; c=relaxed/simple; bh=ifGKWyqRAde8fdU1WltSjsgB/wrz2JI2uPwQ/lNVQVI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EQcAUVtZcy01T43wBHPFZQVYrjo25q7P9snwpuUBusmwMIVAYMBATYDBWrUzpGNqL0cl9I7YiaG2Srm32cEGtFn+828AZxhFrpmbyvxZskDaWvzdqSnlI8GNghA4g+2JjJ0V4DD/VqB7MHXqCaUZ54hKKwaBqwlqZOgryvirQ+4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Es9xueq1; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Es9xueq1" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 27269C4CEF7; Thu, 5 Mar 2026 01:14:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772673276; bh=ifGKWyqRAde8fdU1WltSjsgB/wrz2JI2uPwQ/lNVQVI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Es9xueq1nfwJ5E7GkgCxwNgbH6cb6SYs8CbMAANep/JYBd78CADJifJx86inVc9O9 G9xz3B6SCDJWVwn3NjaMLlfqKyNCqvJcs6SYJRh7XKv8ro0leRvJa1M820xIEC2ka8 fgKEpky0ZLoFnhmWErnLmcu9MdAoweVVBT/Baxipg4SBujbBGsFW6wyL1ChJpAkcy9 0tt2A33BhwPdDbX5jC+oGvMXgvi1RSEZYLFD/KaRTDXWoAT03P+RkgSZMeqZnnOyln saz5/yStNkv7uxyNDBY/l6ncWCn4vC1gJ8R2AkXDsPdFgu+93ItNODOB57/EkTq9oU E6dRFs1rqxvJA== From: SeongJae Park To: "Guilherme G. Piccoli" Cc: SeongJae Park , linux-mm@kvack.org, rppt@kernel.org, linux-kernel@vger.kernel.org, kernel-dev@igalia.com, kernel@gpiccoli.net, Andrew Morton , Steven Rostedt Subject: Re: [PATCH V2 1/2] mm/memblock: Print out errors on reserve_mem parser Date: Wed, 4 Mar 2026 17:14:28 -0800 Message-ID: <20260305011429.79193-1-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260304203300.1414286-3-gpiccoli@igalia.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit On Wed, 4 Mar 2026 17:14:10 -0300 "Guilherme G. Piccoli" wrote: > The parsing of kernel parameter "reserve_mem=" is subject to > multiple failures, like duplicate naming, malformed expression > or even lack of available memory. Right now, all of these fail > silently. Let's add some messages so the kernel log can provide > useful information in case of failures. Makes sense to me. > > Cc: Andrew Morton > Cc: Mike Rapoport > Cc: Steven Rostedt > Signed-off-by: Guilherme G. Piccoli Reviewed-by: SeongJae Park > --- > > > V2: no changes. > > mm/memblock.c | 28 +++++++++++++++++++--------- > 1 file changed, 19 insertions(+), 9 deletions(-) > > > diff --git a/mm/memblock.c b/mm/memblock.c > index b3ddfdec7a80..2d2646f7a120 100644 > --- a/mm/memblock.c > +++ b/mm/memblock.c > @@ -2642,23 +2642,25 @@ static int __init reserve_mem(char *p) > int len; > > if (!p) > - return -EINVAL; > + goto err_param; > > /* Check if there's room for more reserved memory */ > - if (reserved_mem_count >= RESERVE_MEM_MAX_ENTRIES) > + if (reserved_mem_count >= RESERVE_MEM_MAX_ENTRIES) { > + pr_err("reserve_mem: no more room for reserved memory\n"); > return -EBUSY; > + } > > oldp = p; > size = memparse(p, &p); > if (!size || p == oldp) > - return -EINVAL; > + goto err_param; > > if (*p != ':') > - return -EINVAL; > + goto err_param; > > align = memparse(p+1, &p); > if (*p != ':') > - return -EINVAL; > + goto err_param; > > /* > * memblock_phys_alloc() doesn't like a zero size align, > @@ -2672,7 +2674,7 @@ static int __init reserve_mem(char *p) > > /* name needs to have length but not too big */ > if (!len || len >= RESERVE_MEM_NAME_SIZE) > - return -EINVAL; > + goto err_param; > > /* Make sure that name has text */ > for (p = name; *p; p++) { > @@ -2680,11 +2682,13 @@ static int __init reserve_mem(char *p) > break; > } > if (!*p) > - return -EINVAL; > + goto err_param; > > /* Make sure the name is not already used */ > - if (reserve_mem_find_by_name(name, &start, &tmp)) > + if (reserve_mem_find_by_name(name, &start, &tmp)) { > + pr_err("reserve_mem: name \"%s\" was already used\n", name); > return -EBUSY; > + } > > /* Pick previous allocations up from KHO if available */ > if (reserve_mem_kho_revive(name, size, align)) > @@ -2692,12 +2696,18 @@ static int __init reserve_mem(char *p) > > /* TODO: Allocation must be outside of scratch region */ > start = memblock_phys_alloc(size, align); > - if (!start) > + if (!start) { > + pr_err("reserve_mem: memblock allocation failed\n"); > return -ENOMEM; > + } > > reserved_mem_add(start, size, name); > > return 1; > +err_param: > + pr_err("reserve_mem: empty or malformed parameter\n"); > + return -EINVAL; > + Nit. Above blank line seems not needed. > } > __setup("reserve_mem=", reserve_mem); > > -- > 2.50.1 Thanks, SJ