From patchwork Mon Apr 7 16:54:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank van der Linden X-Patchwork-Id: 14041335 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 858D3C36018 for ; Mon, 7 Apr 2025 16:54:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 10D9F6B0005; Mon, 7 Apr 2025 12:54:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0BE366B0007; Mon, 7 Apr 2025 12:54:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EED5B6B0008; Mon, 7 Apr 2025 12:54:56 -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 D01876B0005 for ; Mon, 7 Apr 2025 12:54:56 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 0D406BA8AF for ; Mon, 7 Apr 2025 16:54:57 +0000 (UTC) X-FDA: 83307847434.14.EE5983D Received: from mail-pf1-f202.google.com (mail-pf1-f202.google.com [209.85.210.202]) by imf16.hostedemail.com (Postfix) with ESMTP id 7BB1A180008 for ; Mon, 7 Apr 2025 16:54:55 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=u4Jg4Q1Y; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf16.hostedemail.com: domain of 3XgP0ZwQKCHseuckfnnfkd.bnlkhmtw-lljuZbj.nqf@flex--fvdl.bounces.google.com designates 209.85.210.202 as permitted sender) smtp.mailfrom=3XgP0ZwQKCHseuckfnnfkd.bnlkhmtw-lljuZbj.nqf@flex--fvdl.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744044895; a=rsa-sha256; cv=none; b=OvDX3KJ2oNnCJ9NvsqsHygRMzihdAY2NmanNubfJtpbCUmSnlKSFyUCPe2MAiLajgz2XsI vOdbAEwqGaoy81V9YPoaDqN7U/7UtoSppdUgmRnxRxZqmMh2+vmtZmC9aH6OfBQZeEY++r t2B+EOHkAQNbr8gw9pw+BMk6xtAQnQw= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=u4Jg4Q1Y; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf16.hostedemail.com: domain of 3XgP0ZwQKCHseuckfnnfkd.bnlkhmtw-lljuZbj.nqf@flex--fvdl.bounces.google.com designates 209.85.210.202 as permitted sender) smtp.mailfrom=3XgP0ZwQKCHseuckfnnfkd.bnlkhmtw-lljuZbj.nqf@flex--fvdl.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744044895; 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: references:dkim-signature; bh=TRYh3FjHNxiGvARm/fP0S56t2RPKrvBUVQVlOvdeY4E=; b=SDzGpFT1DdGjXk0nrKLKFesrD9xR2ZRI7snYwStATt6NN1C8kf3FvLIJTtdLJJebY18dUt 1zx0WgVCnAA+EwJ6q5UvJQOiZGVdVnQzbBwwvaHxjzgVwBvqY3HJU+Kose/wGufZIVatRV /ipGP2tI5r0XMK+IJmrHYz/tXSIOVQI= Received: by mail-pf1-f202.google.com with SMTP id d2e1a72fcca58-7398d70abbfso6514211b3a.2 for ; Mon, 07 Apr 2025 09:54:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1744044894; x=1744649694; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=TRYh3FjHNxiGvARm/fP0S56t2RPKrvBUVQVlOvdeY4E=; b=u4Jg4Q1Y2H4gQxULegUO8p4zwP2+/HetsEbr2zF+RF7Es1bRD9V6reuwf2F3tAygbx sAbCEFr4y0IJLVm7PEFng5pyoYq4qGITUBs/Y/JhTdZ/BMDjwMtniSzjMSSsjiS/escc 8u4SEQobFH2JZ1NOdPAWiczSWFRlpWNSgZIuWJgsA+uN3XimANEsW2JMY3JUPcQwOB6r tH8XaYPSCLyM5l1r80QgvFvr5d6aT/F4LIo+bd2VP3w9j6pi1t24hdIHPZ+BTVef2Iuk FerW4HmYZPGmYtz02UMurDVBNkNjjTIsMUnCgvg8nYOO4DJehLy8d2g4T5LHQKjSXNMt J6nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744044894; x=1744649694; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=TRYh3FjHNxiGvARm/fP0S56t2RPKrvBUVQVlOvdeY4E=; b=ZB9TEzO2gHuhD2F76PBsOgQhnIEt8/E7bWMi+jNMEtUrf6HkwliQHVotn9i44/K339 yICPVx8VHKU39hO+Fso7qXsf4DKTu2AltogOzkcW6Ip2EdVU7TuksxG3YbB3z7sHN0gb CB+eojpnCMWr1QrlxUcM0ueDhcCzVaL5FE7iRyoCf+XdwdzL5yaGoq7Teshq3vE9If+8 mvu700ehFUbbIg1bPE275vfjy5DSUM9+SESVIiRpUUlCNOIGB6v+H5UHqYMdDP+9sOpd GMvHIuuEILUwd96UbIbIWES72L5Hx8PMGcSwV/z6b8PDHWKBsJbTXDtwxUvwQoy5/K26 pCFg== X-Forwarded-Encrypted: i=1; AJvYcCVysy6FLmovffo2pX2sjq4puvuB+phVOyCgUTM+lMrIM9RlBEniXmDScFoR4GzUr1aGezEWZcliPw==@kvack.org X-Gm-Message-State: AOJu0YyFiiQHQS0OA53bbG+pGmujsbkN1O/acckbtZyuSp5LgzYNEHwk NEeXRC7ncyrpldqqXrEm0/QlKczt2JOTHgzviiy4kQKozRB5wceT5ca5C1HhbQ34/iPFag== X-Google-Smtp-Source: AGHT+IEFxZf59sAxGumU3ly+x8ORDzRN6nAlmqziGiY2+uTgimyQohhxk2gokvD5O/JvjXXGSaNxYudk X-Received: from pfbhq12.prod.google.com ([2002:a05:6a00:680c:b0:736:ae72:7543]) (user=fvdl job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:4653:b0:730:99cb:7c2f with SMTP id d2e1a72fcca58-73b6aa3729cmr10639839b3a.6.1744044894191; Mon, 07 Apr 2025 09:54:54 -0700 (PDT) Date: Mon, 7 Apr 2025 16:54:35 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.49.0.504.g3bcea36a83-goog Message-ID: <20250407165435.2567898-1-fvdl@google.com> Subject: [PATCH] mm/cma: report base address of single range correctly From: Frank van der Linden To: akpm@linux-foundation.org, muchun.song@linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: gushchin@linux.dev, Frank van der Linden , Geert Uytterhoeven X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 7BB1A180008 X-Stat-Signature: ycywpuhdqesryzecyakkkfr1abw83rq6 X-Rspam-User: X-HE-Tag: 1744044895-349129 X-HE-Meta: U2FsdGVkX1/iE3wCJf26iNq4JcAbXi3YpXDzCvXTwhmVev7ZQM+wjNr5690TlNPoihyZtzJur6VcRWMKxww6GgmDCrVt9t+wBm35nVeRzLpbZVHbmyovHmRpEK4TD/Cpuu5mJhYE8sYwvtc4zUJy92H6OIspiaYIOI21OctCHpZyyrLJjBQfHveq7F/2qnaFfAqdScMbNWKQfEP8mgz1nEfhYUGHMXjv7KFkGK+wHVvg6eIsW5ZFc7AQPXwhU2XPPJTXsBX3bowBbpoeV0UXcUmS036vO8wyo+6WwaIZ6IaXuZt3cKEze3G+xuxJuDofFPP7QQU7P45g7TxohVWVQOFegKKs5g1qgGkImyeUdkACdjd3ZQETT+p94WKEV6qtp6SPhcYv/aVEQp/iwmcUDYv+REM+GLUlB/nzbrVmw3Rcb6H1AF4E+2CqDei/96QyfR+dTFHL101lwiLKJ+WvtHz74W507ox3Qlx5ZL+j4ooQqDfydeQTjyILRaxNG3poQl1K9Kv0F8GrZo3kQzTM/eBY0EXufAFCrE+GnCXcmY5Ly3U841j9zi3kfwq+OLUIPyc+xbJ+oobDz0RV/yDQbxelonyi5uCgxE3jjQSEAd5M0EDKKEsz2j3m85GgXC9I0hrui4hWdm5CLkVsKRkv/8VEyj4XyxSvk4yo62ksvuTs7X97tStVQtPHAGx1n0eo1tKzgkX6xalq7asfyxjgUzJ/wywlEr7cDHW/ILJbiRSYqH+CNuzrSLMVfmGe9R3M3yFYJsQHdjFcphiR5glAPsVyK7Dvk3yjfgSiimBcC8gxFSz6KneAAFV7GZCdPPS3hBozLynOHag+IV9Z7CuF4RirFP3PA9vXMicQEwtJpRL3fPotJo0SQYU0wxqZYAoZTRzy+4TOuNgM6jYveg8IXBGN/+w05TX/KzVr04G/fmrkDj4FeZb3tOfSnK0HW42GcXuIo2skTfWZCs5fXEa wQUSJktv c/mf+qy2DyINKK2YIaab3b6FV4moHFVjBJeM/L6tQTmc0R4CkKq1gKxg9R9Z6mc6uUVR/m5CoajJbrOnB7T+qO2Fr7DnfZ63qXi7hlQ0gR5HmhAyEWEc45VJs68X2VF5kGQZdFMG8/PSEnS/E3odOtWPPalnWt+Elkajr9L3yO5fBs9VpR4TNvs8Pq610f47V/YNDDmmrr7ZQoAUU+WCqkpuEh66Ilwsx6JNsRAWe3o77mas= 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: The cma_declare_contiguous_nid code was refactored by commit c009da4258f9 ("mm, cma: support multiple contiguous ranges, if requested"), so that it could use an internal function to attempt a single range area first, and then try a multi-range one. However, that meant that the actual base address used for the !fixed case (base == 0) wasn't available one level up to be printed in the informational message, and it would always end up printing a base address of 0 in the boot message. Make the internal function take a phys_addr_t pointer to the base address, so that the value is available to the caller. Fixes: c009da4258f9 ("mm, cma: support multiple contiguous ranges, if requested") Reported-by: Geert Uytterhoeven Closes: https://lore.kernel.org/linux-mm/CAMuHMdVWviQ7O9yBFE3f=ev0eVb1CnsQvR6SKtEROBbM6z7g3w@mail.gmail.com/ Signed-off-by: Frank van der Linden Tested-by: Geert Uytterhoeven --- mm/cma.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/mm/cma.c b/mm/cma.c index b06d5fe73399..46aceeae4c50 100644 --- a/mm/cma.c +++ b/mm/cma.c @@ -35,7 +35,7 @@ struct cma cma_areas[MAX_CMA_AREAS]; unsigned int cma_area_count; -static int __init __cma_declare_contiguous_nid(phys_addr_t base, +static int __init __cma_declare_contiguous_nid(phys_addr_t *basep, phys_addr_t size, phys_addr_t limit, phys_addr_t alignment, unsigned int order_per_bit, bool fixed, const char *name, struct cma **res_cma, @@ -370,7 +370,7 @@ int __init cma_declare_contiguous_multi(phys_addr_t total_size, phys_addr_t align, unsigned int order_per_bit, const char *name, struct cma **res_cma, int nid) { - phys_addr_t start, end; + phys_addr_t start = 0, end; phys_addr_t size, sizesum, sizeleft; struct cma_init_memrange *mrp, *mlp, *failed; struct cma_memrange *cmrp; @@ -384,7 +384,7 @@ int __init cma_declare_contiguous_multi(phys_addr_t total_size, /* * First, try it the normal way, producing just one range. */ - ret = __cma_declare_contiguous_nid(0, total_size, 0, align, + ret = __cma_declare_contiguous_nid(&start, total_size, 0, align, order_per_bit, false, name, res_cma, nid); if (ret != -ENOMEM) goto out; @@ -580,7 +580,7 @@ int __init cma_declare_contiguous_nid(phys_addr_t base, { int ret; - ret = __cma_declare_contiguous_nid(base, size, limit, alignment, + ret = __cma_declare_contiguous_nid(&base, size, limit, alignment, order_per_bit, fixed, name, res_cma, nid); if (ret != 0) pr_err("Failed to reserve %ld MiB\n", @@ -592,14 +592,14 @@ int __init cma_declare_contiguous_nid(phys_addr_t base, return ret; } -static int __init __cma_declare_contiguous_nid(phys_addr_t base, +static int __init __cma_declare_contiguous_nid(phys_addr_t *basep, phys_addr_t size, phys_addr_t limit, phys_addr_t alignment, unsigned int order_per_bit, bool fixed, const char *name, struct cma **res_cma, int nid) { phys_addr_t memblock_end = memblock_end_of_DRAM(); - phys_addr_t highmem_start; + phys_addr_t highmem_start, base = *basep; int ret; /* @@ -724,8 +724,10 @@ static int __init __cma_declare_contiguous_nid(phys_addr_t base, ret = cma_init_reserved_mem(base, size, order_per_bit, name, res_cma); if (ret) memblock_phys_free(base, size); - - (*res_cma)->nid = nid; + else { + (*res_cma)->nid = nid; + *basep = base; + } return ret; }