From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Fri, 28 Nov 2025 18:22:28 +0100 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vP2Au-005rG1-30 for lore@lore.pengutronix.de; Fri, 28 Nov 2025 18:22:28 +0100 Received: from bombadil.infradead.org ([2607:7c80:54:3::133]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1vP2Au-0001hV-Ah for lore@pengutronix.de; Fri, 28 Nov 2025 18:22:28 +0100 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Y2/l7bqLKHmHrknC/iBWq4S4ujQo2cZ8Rtvg0m5YAW8=; b=kwnlN8w7/rvTKVPGMvQetZjovn mdsV8QUCEHuW+gspCK1YZPcMhkBQXXkre7j6oRWp8t/sSZb5pjFMXBGngqPnlAZPbWLf+KBYbzqgh OUHLA3kBZwwZNCRBg1iWQzlRAmBx72NI76E2zAx8WYf087iUT+shxhFIK2jUGklCqWQbZwVTzo8GK i26dnPq1PfHXZip+dYFRx8uLe0pbD5Tb2WDRzAiCGIVLr8721gAPcDMvtNB/NcmcP1CtPijAxGdUi oF8rIyx2KIf1bFzaae0U+FQAx3KjrfT0ATufIDICs+E8GHKkxt9kAxMrY1YMhePSKNqkSMN9RwBAh ax3r161Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vP2AX-00000000j19-3ntj; Fri, 28 Nov 2025 17:22:05 +0000 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vP2AS-00000000ixS-0lMF for barebox@lists.infradead.org; Fri, 28 Nov 2025 17:22:01 +0000 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1vP2AI-0001E7-MH; Fri, 28 Nov 2025 18:21:50 +0100 Received: from dude05.red.stw.pengutronix.de ([2a0a:edc0:0:1101:1d::54]) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vP2AI-002zVH-1b; Fri, 28 Nov 2025 18:21:50 +0100 Received: from localhost ([::1] helo=dude05.red.stw.pengutronix.de) by dude05.red.stw.pengutronix.de with esmtp (Exim 4.98.2) (envelope-from ) id 1vP2AI-000000009Ov-1h6G; Fri, 28 Nov 2025 18:21:50 +0100 From: Ahmad Fatoum To: barebox@lists.infradead.org Cc: Ahmad Fatoum Date: Fri, 28 Nov 2025 18:21:46 +0100 Message-ID: <20251128172149.36116-2-a.fatoum@pengutronix.de> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251128172149.36116-1-a.fatoum@pengutronix.de> References: <20251128172149.36116-1-a.fatoum@pengutronix.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20251128_092200_226303_50664779 X-CRM114-Status: GOOD ( 12.17 ) X-BeenThere: barebox@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "barebox" X-SA-Exim-Connect-IP: 2607:7c80:54:3::133 X-SA-Exim-Mail-From: barebox-bounces+lore=pengutronix.de@lists.infradead.org X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on metis.whiteo.stw.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-4.1 required=4.0 tests=AWL,BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.2 Subject: [PATCH 2/2] memory: keep memory_banks sorted X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on metis.whiteo.stw.pengutronix.de) Failing to sort the memory banks can lead to surprising behavior, e.g. kernel ending up beyond the lower 4G. Keep the memory banks sorted, also to support more optimal lookups in future. Signed-off-by: Ahmad Fatoum --- common/memory.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/common/memory.c b/common/memory.c index f179a3243ff1..2b1523c5d0bf 100644 --- a/common/memory.c +++ b/common/memory.c @@ -202,6 +202,17 @@ static int barebox_grow_memory_bank(struct memory_bank *bank, const char *name, return 0; } +static int sort_memory_banks(struct list_head *a, struct list_head *b) +{ + struct resource *res_a = list_entry(a, struct memory_bank, list)->res; + struct resource *res_b = list_entry(b, struct memory_bank, list)->res; + + /* banks are requested from iomem_resource, so they can't overlap + * and thus comparing just the start is sufficient + */ + return compare3(res_a->start, res_b->start); +} + int barebox_add_memory_bank(const char *name, resource_size_t start, resource_size_t size) { @@ -230,7 +241,7 @@ int barebox_add_memory_bank(const char *name, resource_size_t start, bank->res = res; - list_add_tail(&bank->list, &memory_banks); + list_add_sort(&bank->list, &memory_banks, sort_memory_banks); return 0; } -- 2.47.3