From patchwork Tue Apr 8 16:40:00 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: 14043390 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 47108C369A5 for ; Tue, 8 Apr 2025 16:40:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DEBBB6B0096; Tue, 8 Apr 2025 12:40:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D9B506B0098; Tue, 8 Apr 2025 12:40:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C632A6B0099; Tue, 8 Apr 2025 12:40:10 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id A34F36B0096 for ; Tue, 8 Apr 2025 12:40:10 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 18919161204 for ; Tue, 8 Apr 2025 16:40:11 +0000 (UTC) X-FDA: 83311439022.13.4CCE168 Received: from mail-pf1-f201.google.com (mail-pf1-f201.google.com [209.85.210.201]) by imf22.hostedemail.com (Postfix) with ESMTP id 5D89DC000D for ; Tue, 8 Apr 2025 16:40:08 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=TZbcnmSI; spf=pass (imf22.hostedemail.com: domain of 3Z1H1ZwQKCCYHXFNIQQING.EQONKPWZ-OOMXCEM.QTI@flex--fvdl.bounces.google.com designates 209.85.210.201 as permitted sender) smtp.mailfrom=3Z1H1ZwQKCCYHXFNIQQING.EQONKPWZ-OOMXCEM.QTI@flex--fvdl.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744130408; 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=gBC1sLJQZwJnKDlXbyYuAnn0xSTsMYHN3avTvc3kulQ=; b=kmiLQhMCQgQF5a/UjdYL1cuM7fMt3rT1+6N7yngibpRHwAj6UWhd/Aeo6j+dBgWKfYfJeE 4svxT6bsOV7OLMYo3fqN8DeiiZLUuN+B2CNcxaFCwL+upy3etjPX5FwQktQUkg/9K7T3bQ Ft4J0wvFVKL1LLuGdJ5DFpula/EnAYY= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=TZbcnmSI; spf=pass (imf22.hostedemail.com: domain of 3Z1H1ZwQKCCYHXFNIQQING.EQONKPWZ-OOMXCEM.QTI@flex--fvdl.bounces.google.com designates 209.85.210.201 as permitted sender) smtp.mailfrom=3Z1H1ZwQKCCYHXFNIQQING.EQONKPWZ-OOMXCEM.QTI@flex--fvdl.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744130408; a=rsa-sha256; cv=none; b=WoqEJSeoxaChtcCNXES0j4PztVtBkyBwAoTeDTTzzynAjmpRSpDbZAWYj2iLWv1uC3HdOj +Zvumz0tblZtpNJnRTEXQBXOHx7XviKASWEihzVPEYZ5HxzU7XubXgNPWUeRufPBcmSl7r K++Y6nxlntk8N3bBfQFODeQVNuNGnGc= Received: by mail-pf1-f201.google.com with SMTP id d2e1a72fcca58-7369c5ed395so6815487b3a.0 for ; Tue, 08 Apr 2025 09:40:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1744130407; x=1744735207; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=gBC1sLJQZwJnKDlXbyYuAnn0xSTsMYHN3avTvc3kulQ=; b=TZbcnmSIWG1DW++nCPMlEKrvll+/eZLBGXhbs9o1gU2ukT4oQI7trX/YqHtWSZ89O1 2mIROj1byUz8e2gCMAKGMRcfQjEynQalQQF3gRvVFWIn7xBSb8gTMkQZSemviNC0uuFl 8J3htmxMqO4tuRkHVrJ/q5UB7EA+0NSKRDrCxb38Hg6PDSNxq+d1WgrzInxdQvjjVrL1 yE+/0XyHWf96HoS9lBax5mFt36PEjLdq06idwlJCGTJKtxiy5cuguBoa2YR0TWggDIGv sGmGsQaRaScyrccdb9y2kmGUYBBWdFbMmS8uLMzEDzrbLAYZFVYwpkfg5hRYE5O7JJRh 4mFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744130407; x=1744735207; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=gBC1sLJQZwJnKDlXbyYuAnn0xSTsMYHN3avTvc3kulQ=; b=mcyXDKzTmA6UwQ5bECY0+mxACU/sNcxfTmwD9AWsCDmX/vBXt3zahJhOtRaXT+AI6s o3vPV1y5bm3aXaEDvDZWDzeORfFWRKTeeK2bODwIoN7NFO3JB2l/oZXr4V79rmcHg4xQ VeUHX8jlwxjvj66gVZsL01cMHMZ4LkNCOUDue9yQY5T5jvgXe+4CVKOF3lZ+3kyhC4VW z35vKQNXfvaNUmPK8+ctTx5av/yJpbo/QHi9bOMK6VqqOKA6GRnH7CDDA5v8sFMGUeQW GueYfGK37jR3VMJJpLeam0U2rW6uMozuerNL++71I7H4HOZwAtti03q1C+mdiM4kf17F dBpA== X-Forwarded-Encrypted: i=1; AJvYcCV1nCCBdJ+drCxXsfHPZXONU/fi0LatJenVsZreOSXXn8CyW2FatGDHuL/3KNJENL8lsDnBXYV8wA==@kvack.org X-Gm-Message-State: AOJu0YzM/HoFL3vjFVWOhgLQ7TgFOEP0aczYMSBp3hFfe8DrQe0Uzplt z1mOTHfMr70l2+K1JcJP/fus+ZvH2LidtO3DjsjMu4SWhIECiicKbxMyKyYR+qnTx7KBDw== X-Google-Smtp-Source: AGHT+IExffKl5VV/YVWLgCHPNE/zWYqSSOjhsEEwE9JsaKtkrh21oqkcO58rcvsZIGPYCkdwm1CNFn6s X-Received: from pfgs23.prod.google.com ([2002:a05:6a00:1797:b0:732:6425:de9a]) (user=fvdl job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:398f:b0:730:9752:d02a with SMTP id d2e1a72fcca58-739e48cefc2mr25043956b3a.4.1744130407061; Tue, 08 Apr 2025 09:40:07 -0700 (PDT) Date: Tue, 8 Apr 2025 16:40:00 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.49.0.504.g3bcea36a83-goog Message-ID: <20250408164000.3215690-1-fvdl@google.com> Subject: [PATCH v2] 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: Frank van der Linden , Geert Uytterhoeven X-Rspamd-Queue-Id: 5D89DC000D X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: mt7st6or3et8dybzukdkyg3i38easc3h X-HE-Tag: 1744130407-698694 X-HE-Meta: U2FsdGVkX182UBIgV/sh8a6l/HkXCJuaRUZG7aQoWGr6+UQ9WPR/gwl+5pR9FoZU4RlXGw7hz9pWVdM0CP6hZTVl4Xfah7i5fDccOm1LTWMherTz4fVcivzJteuqdcJbwXadKmtewn9XMaYDtthW6OSL0uuCNrJ0xjooSiG7PZqryhnfuAfqimirPFI1DAUEgBxM7mr4sPh/E9pUrv1yJ7NYV7/TRcBvHXxx+lwMmg2HrpYOWy1Uv3dXBi8r4X7WNeGOUv6SKinlC+shyqQJyMT4o4QvCnBN4Gtr6kNwshl9EAx9OQlkV92CaOq7RtM+rolSnpjnN2koN5M7VVjtUtZcSFQzfgiSfApOqxAkSnSbe6rU7ycyHVEaiB4qUvKZv3P1ZrGA7mnQGnIhzFoSK+30lNCI59SF0BThQDYv+KP+iY3+u86oY/2PYeaDy50JwtFxAI7wcqZ6pTcjS3RFJIKqN2SLL8d9pu1fXfyA5RmLfJqTp8oe1ecsDMLcBXzugTH2Xo9PhJpKw4nv7p0/NyV50pxTvyBdf6gL+tl7DU2NWExK00tA2tDcKiwLSlAgUTwnozDffxTQc4atMpVeyjecGeIS6QQIDhEuKYuOh1rIwpSskoknV3SuW7sAQeCizNLD5/mqxJyy/a3jLL2Ytf2XJ21boWp0V33izt43R3UemAOr6mtcJQHfqaZYOQUJsC6MVm01fvlcJahnwrmUW7dQnvPznvo65Gfx7kMgvWoMU4F+1crvmvjCTNEtOFJ+m907ISnJG8Ssoo1MFhZNamMrkQethA8G20wQFX/ZkorvLNNZTMvz4CUPq22MB3120FRj5vg5agK80YpwVazuKJMGgwHamCuR8PHOeRRv9RHBwN2AR3PmetO+3ndai25l7j/ruTgbznwiMLDOs9vuq80me7evbmMLmg3OYybcCFUcjTTSXNn2wD66Ftot2MT/65mNsbvzQAduzuBRr0r wzrVjTn9 VKcoS0ahk14mV57s81zIkzKsfzT86CE85mJBVvma1LHAzxExqxFFUlm+4LkIuUJ1lN8pHolA/ml2ucDcL2cib85k+/Rr8KxFKSu7ITqbAfyB7c4NudvNy13rSFeDETsk7lHXjIkY0g9IqSbe4w6b6cXyNIPkJ+dlsaCYqdF4Mm0PdDDe7ih8Pn+Bg1ct1kw/h14P2oUAN6qYz44op7VUIKANnvHxjedEzNRMfoYBGxcnQZf9vhgsXrUFjOZLStd4sR88cfGfpyx+QcTozl6DcLkWr7Xzvqw4xeuTQmNyrfTSvVMWxpcI1iJSebHxWeFKp3PW3bCLRZyyfQJjDv6yQ/Nsv/ABqXWAStCn2vNBsKDLy5ARX4h4n2Zad4OxxUipkaF19rdF1bMAIPAFt1oIvplhExx4paW+AhkeYMbqVhRPmI4ePceLHzWHVmT5wwW2s5oIzm+pzi4y5NbiMXjehFKKhVZRlCHZWbi6gi7luXm3Sg+4R/tuhgQOsVLHAzXkXCjmMR5Sbcyx5QAkIfqWXOgMAPPrnlauR5XS4NVfoLq7Wi+C0B50vA1fi2GQNRrMTxAJvUPJ8Enjrbo3xa7mps471jHjJppL1UtQvLHL3efQEucjqRJ9Vy5Cnrgk66hKGcYgx 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/ Tested-by: Geert Uytterhoeven Signed-off-by: Frank van der Linden --- mm/cma.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/mm/cma.c b/mm/cma.c index b06d5fe73399..15632939f20a 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; /* @@ -722,12 +722,15 @@ 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) + if (ret) { memblock_phys_free(base, size); + return ret; + } (*res_cma)->nid = nid; + *basep = base; - return ret; + return 0; } static void cma_debug_show_areas(struct cma *cma)