From nobody Mon Sep 28 03:16:47 2026 Received: from mail-ej2-f22.google.com (mail-ej2-f22.google.com [74.125.228.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3D99038330E for ; Sun, 27 Sep 2026 21:43:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790545428; cv=none; b=Q15VDIXA/FwyljAdy3Ogh8KxKgeu6UsAXV7YUNFRwzAXtCNLDrVhXK3akyJrCIIrim40EJ05EeatizDie2HE6x3q5HDOi8cxcNAfwAimF7SLu5Hf5rk4pOLXjTUMZqagHAZZdDk2OSLQnW4s8LiUrXLhPoTXjMgZij9dEpFg1F8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790545428; c=relaxed/simple; bh=Xk5HW6iHgeHF8sKpghX9kJ+ATqknktzLKDmcmvhn+s0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OjQtNgUfZszCdICB4uWRWQHgePkx0bfBvp0LKldvU7B7wWqbWh/B/G237pCzesrJTaIv9j1CZMYkRgEKF1uwbMxg82SHR1oD0ROJ89WULNtX3EDs+bYCnQKGx1w7oOgGCepTdU4TsSIQz/W/htQEU53VxNyKVsN33c+GJan4rbI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=JtM3vgHD; arc=none smtp.client-ip=74.125.228.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JtM3vgHD" Received: by mail-ej2-f22.google.com with SMTP id a640c23a62f3a-c2afd63c3e0so201771466b.0 for ; Sun, 27 Sep 2026 14:43:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790545425; x=1791150225; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=VgwIZlTH0lKclnCFBSlWFJ3rfoI779fFQpV/lMz8kts=; b=JtM3vgHDOPruojH6q/ZCXVMvPg0I2FJbrNk7eGEkeDl+7Hy7jdw8FqLr4GQAtRQsMT IXv3F7uk9BkklSl0jzzhKt/BI6MFrNys9+UHGotyWpVfi+Xm+SmrZXs+yfsUyBBw7DGS xU7mIBmUiRNr4InK3YKDI9LCyhPWrV062Oi2sN2r6JkYfojZN0Ou2gAeNlhsF8H1erQp menrfyvsMZbOEvzQyerg+wdllZaqxg79QPwi/Ae665p+zIFWGc7KGaZ+wEAEso2vmE1w 5Y0O6opjRlM9HrsbP558LBTfY3r2sGlxYFKcbl6Naj5AwuyD7O1l36zVWrJJlKjxhOfx oWAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790545425; x=1791150225; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=VgwIZlTH0lKclnCFBSlWFJ3rfoI779fFQpV/lMz8kts=; b=p/SPuTyo/T4AGl5pFQ1JEKWSN4lsQLv5vpBkidSgIqdgI82+Wqma8A8L0BmS5+EqNu Ktw/k815JSgpFfFd+plMMquJrl32WiYIlTHSj3zpOP1/eIG4OO3rBfDyXwoQ1Mv6YKwk tuzGwWJV4Do880rHDnuLeu6VaK3AkdK2HlvIaM3zD2OlUFPvpmVQQeyrUejtNKQhIxDP DccMIHxStPxNp387eQAVG71WTKB2oBisBCbXqQPpTmlIgVx4S4T48iDM1kgZx5llKJVF Ie0vYtwLCEvhBpOhSQEgbcXlJVP7CDdaOuBqZB5qu3fvxN5KGzt2hr+44he9gbiXfQcj hAYw== X-Forwarded-Encrypted: i=1; AKwUvBwpPRxSx/EfjYFcoxdG2V5k6HJVvhIr7ibkz/wuPxGdNEHOV6nN4CQnFGrekQPiC39Zgo0ymIjP00kFDIo=@vger.kernel.org X-Gm-Message-State: AFuF++nw7E48iFGeDDjXC26+fXNhakcgJrlt4tKvt9CaUZhi/v2X6MsL h4uNdm1SUB2g2Ay9qwcQaO5RqAtylxqLGZT3IAOQ4GRZKOk7OLvM9zaG X-Gm-Gg: AYBFou0bNDhkxVpfBK8OXcxnXWWBrvMww2DJUJ0ZV3CnQeGpNQQravBeylt5W4H9wcd hpIr/tuvF+mtWp/qeqPfmKw1KJZ7uuMVV3GCMpEHvUimmUF0UEkzo/1U10znU9zXT5jJ8o35LSA Cmrzu0TL9gV5ZVhRpOJElZYcCnDHJD4zWP4QbKKHMejhT4ykUcznzuTqr00TvUzszHiZwVdx4mX jsWxsdKMt4Lyu+UTRVmHFMo5tqP0WKL/zuF7bft6C28+9+Z/2VSBCLwWL9qk68gbvJfzXXp+f2f N6rcpRTgHcN/sKUxY0aKrN807p2i9Y4ZwZPhYGqQIM5wM0DT32+DHuo51UyuN3TJJxCtdE5za5H KcfyWjvgADB4XWrHv8IwmI8oQcrS+GzvaOsh+To2WTzNvk3D2dMgnK4cWzagQ4AfDO9eX2z/HOE B7RJRfoVEolSoGo+l6bIOSJv5ZC1KkdoE8mXwBwerTNhT4oxcAhR/U05CcIxRV8YXvVqvp8fa8J 1I9mkJWoXZrUfyWLejRstkblubyw/yU+daHVvfk X-Received: by 2002:a17:907:1999:b0:c26:19de:9126 with SMTP id a640c23a62f3a-c2ac2569975mr965081666b.25.1790545425094; Sun, 27 Sep 2026 14:43:45 -0700 (PDT) Received: from buildhost.darklands.se ([2001:9b1:ff:d701:51eb:176f:63d9:53f8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2ae757b9c1sm376091866b.33.2026.09.27.14.43.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 14:43:44 -0700 (PDT) From: Magnus Lindholm To: davem@davemloft.net, andreas@gaisler.com Cc: sam@ravnborg.org, sparclinux@vger.kernel.org, linux-kernel@vger.kernel.org, linmag7@gmail.com Subject: [PATCH v4 1/6] sparc32: use memblock when mapping the kernel Date: Sun, 27 Sep 2026 23:43:12 +0200 Message-ID: <20260927214334.886582-2-linmag7@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927214334.886582-1-linmag7@gmail.com> References: <20260927214334.886582-1-linmag7@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" memblock already contains the available memory ranges when map_kernel() runs. Iterate those ranges directly and remove the sp_banks-specific mapping helper. memblock range ends are exclusive, so use end - start as the range size. Suggested-by: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Magnus Lindholm --- arch/sparc/mm/srmmu.c | 47 +++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c index 9a74902ad181..110e2f248c60 100644 --- a/arch/sparc/mm/srmmu.c +++ b/arch/sparc/mm/srmmu.c @@ -817,39 +817,34 @@ static void __init do_large_mapping(unsigned long vad= dr, unsigned long phys_base *__nocache_fix(pgdp) =3D __pgd(big_pte); } =20 -/* Map sp_bank entry SP_ENTRY, starting at virtual address VBASE. */ -static unsigned long __init map_spbank(unsigned long vbase, int sp_entry) -{ - unsigned long pstart =3D (sp_banks[sp_entry].base_addr & PGDIR_MASK); - unsigned long vstart =3D (vbase & PGDIR_MASK); - unsigned long vend =3D PGDIR_ALIGN(vbase + sp_banks[sp_entry].num_bytes); - /* Map "low" memory only */ - const unsigned long min_vaddr =3D PAGE_OFFSET; - const unsigned long max_vaddr =3D PAGE_OFFSET + SRMMU_MAXMEM; - - if (vstart < min_vaddr || vstart >=3D max_vaddr) - return vstart; - - if (vend > max_vaddr || vend < min_vaddr) - vend =3D max_vaddr; - - while (vstart < vend) { - do_large_mapping(vstart, pstart); - vstart +=3D PGDIR_SIZE; pstart +=3D PGDIR_SIZE; - } - return vstart; -} - static void __init map_kernel(void) { - int i; + phys_addr_t start, end; + u64 i; =20 if (phys_base > 0) { do_large_mapping(PAGE_OFFSET, phys_base); } =20 - for (i =3D 0; sp_banks[i].num_bytes !=3D 0; i++) { - map_spbank((unsigned long)__va(sp_banks[i].base_addr), i); + for_each_mem_range(i, &start, &end) { + unsigned long vbase =3D (unsigned long)__va(start); + unsigned long pstart =3D start & PGDIR_MASK; + unsigned long vstart =3D vbase & PGDIR_MASK; + unsigned long vend =3D PGDIR_ALIGN(vbase + end - start); + const unsigned long min_vaddr =3D PAGE_OFFSET; + const unsigned long max_vaddr =3D PAGE_OFFSET + SRMMU_MAXMEM; + + /* Map low memory only. */ + if (vstart < min_vaddr || vstart >=3D max_vaddr) + continue; + if (vend > max_vaddr || vend < min_vaddr) + vend =3D max_vaddr; + + while (vstart < vend) { + do_large_mapping(vstart, pstart); + vstart +=3D PGDIR_SIZE; + pstart +=3D PGDIR_SIZE; + } } } =20 --=20 2.43.0 From nobody Mon Sep 28 03:16:47 2026 Received: from mail-ej2-f42.google.com (mail-ej2-f42.google.com [74.125.228.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6E12A3C456F for ; Sun, 27 Sep 2026 21:43:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790545430; cv=none; b=sQhLum9a3wKmTd2jzEA0NKjM6C8k7ooUtS1HTcCFcZlxhdhYEL9gqzHZAmo3Uh2MrLMeb8PLa12v6J5W5TsB4qGc9MY/DUg6TYeohljgGYwrJfXYiWXjtyt/DQbQKi9gJZQP38SRTjm3eAzUD7yduTcv12Us4Bxl1H3F947Ndk8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790545430; c=relaxed/simple; bh=+7B04P3KtWGS5Yj2YGU8kpSoOlbeBAUVoQM7IwEIbXU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZjVTULZSwyrTlYddYd0Vxs9VRIkTNHMhj6EJMWZHyvKpFu9/7rWF31qI8v+yBNjEeAVo2lnkEkk4h0SFF75wVRXYcWmoEgOxPhcwwSrCSQ9yENpzxE6SaaCuBh5z9sRUohPMUFRlY+iWS9Mw9VBXk443cj/OsL5hqdVXnBLuTwA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HqIii8TZ; arc=none smtp.client-ip=74.125.228.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HqIii8TZ" Received: by mail-ej2-f42.google.com with SMTP id a640c23a62f3a-c2b40e4744eso173542666b.2 for ; Sun, 27 Sep 2026 14:43:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790545427; x=1791150227; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=hF4GBMeX+jM3tIEPITZKNJjLTuPGbNXnyD85O+h6i7I=; b=HqIii8TZUkSgI7m7b35EHBJ2kOdTa5ThBnOGuecUclb0zcMQjVHLffN75B6v8m2czt BmaEP9gWE97X37qnb6HaIhC0PTB8PwFxt6CYWXN775gE296LeCOORcnwYeQ7wEWPMWg8 BZDrmyzB/1Ys+9ju/bfFmNdR0svmVtmv+X9ilsSdXdRGNuovwb7f+HJ4e1oit4HfBfk0 TNazXWHAKyp4rXiaz6k4BPlGNQV4O4sUApgBKO3RmopfI+g8CIJ9Li6bS0G1gQHaT1RQ +bHKWHEtPmb9sGSiZeD7Edh2Nh1XwhIWNtL/YvGvvcTeOu1tlNo9+YVUqhQTj/4IXBpY Enbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790545427; x=1791150227; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=hF4GBMeX+jM3tIEPITZKNJjLTuPGbNXnyD85O+h6i7I=; b=Src71u/GX7BLqtF118ejXLkJyLoOBYS/IW/htknYO3aVm78l2iP7icBZqYwBFI4NS0 Irt1OL8CrMBAYm4RxTSQerKQFDl5OMiMEVwG2dfMMsKCC29UM0cLv26p2c72aQA84/b8 qPKteUmPZ5ZUU4mWPsXFMseWhyMNApa0CdTiQ1WrTrRBshseW32C2HSeNuMYNTzKxhIH EZ5o5JCFqD/fTo+L+vL7AyFovsDvsLE8Rim3wArbeOkTemA15t7Msr4aRyd5Hqn69mxX nfdD4AWCTv8P6kcskhlmnryFRC/8gP2AOEM1gqaf7fS/lKKchUpsNORNDcFt0oImgNLG NPWQ== X-Forwarded-Encrypted: i=1; AKwUvBxS29jEkA6RmNw4LRbPSHsx0WznDFOf0plPHTB+D/4PwwAhXzjacUu+YAIkIw1ZRNMMWo0jsJKWoVkRml0=@vger.kernel.org X-Gm-Message-State: AFuF++lXi0b+4PC9C0FrIsz0qqNfXa6YSoPYmNTPux5o0qo7/nat2VkS SBGr0bJOfMg8gPZ63NqMlWaHPcShXYSOIt+LIQ9H3WdoWIcKvdG7b+gu X-Gm-Gg: AYBFou1DQ0C5jb1A9sxad9/HW1AtLNFjm8o7D16Bj5YOph4MYts3SmcuP9RyPib8v1u qcFldSlrePekmLFOwiz9i4FzzR5djVBnPMgFLWoyBpS9iadFCqMhMJFT/pu6m+KOCKEicPzAiTG 3ae2Hq1hBVLfWTCOIygXuyVkSwQ8jh1zVZFRxI0GWIy0/t9+waB3tFQUOeHqHL7WBbR+YPO4BvD irSHJdb+HeaJ8taE5D6MNVvBVv2ycx7rsKkYtvYx0SfMyAp3LvZprEr3sVxWpjpUhpRfn4AiXU9 6KfOlt2mrQv/KdRaD7m/bDJcNl1zsO5MkJT4r6jIkC/s+XNovFPW64xTdgDURU6O9HewnQv+OTZ v/s+q5BqHjvj3q552l5N3S0Z12TXGDdzMIBgAIZDf2uLLIVXOamOvmqCEY3iKKPyAxVLZpk1rVl c4qfPCYsA6AvgNGmVER65A7wjtLVDHOcIzvaH4R0wXbJ5Oy9g7uocie3s5ff3Umc4/vX/O+D6ZM Bf31DSdB3uiiTX/l0ziTHIxeuAgcPp/cEffHaJe X-Received: by 2002:a17:907:8e11:b0:c2d:c739:30e1 with SMTP id a640c23a62f3a-c2dc7393f1bmr204864966b.32.1790545426573; Sun, 27 Sep 2026 14:43:46 -0700 (PDT) Received: from buildhost.darklands.se ([2001:9b1:ff:d701:51eb:176f:63d9:53f8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2ae757b9c1sm376091866b.33.2026.09.27.14.43.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 14:43:45 -0700 (PDT) From: Magnus Lindholm To: davem@davemloft.net, andreas@gaisler.com Cc: sam@ravnborg.org, sparclinux@vger.kernel.org, linux-kernel@vger.kernel.org, linmag7@gmail.com Subject: [PATCH v4 2/6] sparc32: use memblock to find available system memory Date: Sun, 27 Sep 2026 23:43:13 +0200 Message-ID: <20260927214334.886582-3-linmag7@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927214334.886582-1-linmag7@gmail.com> References: <20260927214334.886582-1-linmag7@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The SRMMU nocache pool is sized after memblock has been populated. Use memblock_phys_mem_size() instead of summing the private sp_banks array. Suggested-by: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Magnus Lindholm --- arch/sparc/mm/srmmu.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c index 110e2f248c60..7b57a10c961f 100644 --- a/arch/sparc/mm/srmmu.c +++ b/arch/sparc/mm/srmmu.c @@ -226,25 +226,13 @@ void srmmu_free_nocache(void *addr, int size) static void srmmu_early_allocate_ptable_skeleton(unsigned long start, unsigned long end); =20 -/* Return how much physical memory we have. */ -static unsigned long __init probe_memory(void) -{ - unsigned long total =3D 0; - int i; - - for (i =3D 0; sp_banks[i].num_bytes; i++) - total +=3D sp_banks[i].num_bytes; - - return total; -} - /* * Reserve nocache dynamically proportionally to the amount of * system RAM. -- Tomas Szepe , June 2002 */ static void __init srmmu_nocache_calcsize(void) { - unsigned long sysmemavail =3D probe_memory() / 1024; + unsigned long sysmemavail =3D memblock_phys_mem_size() / 1024; int srmmu_nocache_npages; =20 srmmu_nocache_npages =3D --=20 2.43.0 From nobody Mon Sep 28 03:16:47 2026 Received: from mail-ej2-f12.google.com (mail-ej2-f12.google.com [74.125.228.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CB5143C73E1 for ; Sun, 27 Sep 2026 21:43:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.140 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790545431; cv=none; b=pGDqzKTZFS1SRLzGzqcdNUq/p8d0i8vhxGluR0SKFHkIaY7hJHrgP/4MqFZDpglanvgltK7igD0Cq7xOde99K5lgnC2trm0JcooYPIGFdcSDPD/+YXJVez3Ug01NWEO2FnGneihaMvE/8m1nsFc8qcn0Ji3+VVExYDx3slhJEZU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790545431; c=relaxed/simple; bh=W/J+iGtW2cqgl8E7D4V33DEgbjzhDkQun/Hg3T6koUM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=E7r+NR6gbNwTyiC7ise70jZI5jBgM2W77S3vTJqtcyqz6RgN2cod8XmE+iiV/u+5gXFhW7/b/POGgisJL/rNvA8UKj69FZP3UGIKhgjYbH2x/dNk6c1Q29kqBuVHcB4XGgwhUYL2JfI6v0XGZYVqZ73WatVYYlopl8LPpxjWtiI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HSaruF45; arc=none smtp.client-ip=74.125.228.140 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HSaruF45" Received: by mail-ej2-f12.google.com with SMTP id a640c23a62f3a-c2940ff2313so153126866b.1 for ; Sun, 27 Sep 2026 14:43:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790545428; x=1791150228; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=hMvMI0qdiExZzcrJJ7xCboaNG2SDA0ACb0R/plvY+Ac=; b=HSaruF45GNcKGL+Gozr8wITY5cACgJq7E+VQV7TnCqiYu2Erie3RhnPqvIcHTBK8ml Ozq3hq71qrQpQfIKSPTwf78BvnMrhBRjw8+Dx0eyRfV3pb2yytKOSnVPMOklepkDhKFH pC7te2/IzCaSxoPppEBVDiaH7asWA11mYNJv9akCASZKdWeNMmVMGqk8BQ/9iQKhIqGy GWNoHd+KUaAD29873r6bfau24RfRbEOAv4txJOwaglc+sFMWDp89BM5tFwKjWvqSEB33 s6w8mpBjRfxKHQalVEYi6K73++UCpFLmKKej8FJHn+3xdOBxmcYDanCDdCn0+eKEp03w zuRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790545428; x=1791150228; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=hMvMI0qdiExZzcrJJ7xCboaNG2SDA0ACb0R/plvY+Ac=; b=ZsDr9cDTs7P10cDmRR1v6ASxwDydgjchN3dmexKyfSn4Jr8s/8bjLJKgUv/4P+GZ8M J7xi/kwgdmgQj3duDO0IkdeSx44pDv4gGDy1z4rsDM+QWfOhOjw8soYOVjA4stSZshPK 4X5nhlnxpgIPx/yyJFHFRf73pXTlwfeL70rhnDHXWq9QmoBP93t0+kc2r5ZLzZHIAkYe GREDQ4nnvZzSxpbp9TuPxrZlON6QV+KoXF4m01zxEOv1G56x2g43QMxX4dTwkMGxVI0l y5/sXtjmvm+5lQGdaZITDZUpASr9CsTQncrJIlqbWBDYH3Ej5AAnemipZfUo/cuGDniI edkg== X-Forwarded-Encrypted: i=1; AKwUvBzXjON3EYTEd2J9hDxluHsOMD4APM3oKXQYiIOsg+l4fKHdFs4QOVVcVfVvWNP+4qENRQ6mbf72nXWpU8E=@vger.kernel.org X-Gm-Message-State: AFuF++nQ4/vaaExcnplQK7eT7R5tKMpEBwg9RtRCPvjrBUCS8eEx+XVb h8xMotQoZlDdgLGWc05BhbCp5LT8d2vd2d2kWCOGfA4Ot8iDuEakiaV7bny/5g== X-Gm-Gg: AYBFou3vV9VwBlglBXdFGwkzjfWk8uI5iGLTtfiYhpqVFGmSed3uU4HD4nPCWrorUyx E8M1Nm/0saahWiQBU4PoF9hgRfZErkVdp92CCLFdbEE8D2o36OFKSInywnKdTqGYAtRz/4y667M qTyMw2HPsAUfYRaq6zgHAHBvROPl5OplLuLOyBLuykSieZKxszYZhDBzNylq3ZaDVpA4PPGCJlk lHMqxOer2EnCO1MoqpDVa5XAS3XUQ0GZMlgKyF2rLyD6EP5zQbNU/Vp+iWvNAAjeGRKISVuWIKA WQzIXazKufyOKAQW1vDdeqL8g1Oj+5N5kBbVnq2xARM/OIhd38WWkIzPux0gSFxSE2IqLTYLwqP /RH+8jm9DFEQpUV+TN+sDGsLQ6otgfyXe8Me3C8M4Vr44t/m09jCM60rpbvfqoJeBsrZeQFkVqS 4Ro06Fh5hfUnx2ZQfSkEnb/AVMLnPsZEzRvGC3CddBKpuC2a6rtHQH9RT6jGkHBH7+NbozD9M9x 4xF3K/2nYFCK8M/pRw7opYLmMddDwT/QKp/3Bvc X-Received: by 2002:a17:907:7211:b0:c26:25e6:5c73 with SMTP id a640c23a62f3a-c2ac21f983bmr984152266b.2.1790545427944; Sun, 27 Sep 2026 14:43:47 -0700 (PDT) Received: from buildhost.darklands.se ([2001:9b1:ff:d701:51eb:176f:63d9:53f8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2ae757b9c1sm376091866b.33.2026.09.27.14.43.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 14:43:47 -0700 (PDT) From: Magnus Lindholm To: davem@davemloft.net, andreas@gaisler.com Cc: sam@ravnborg.org, sparclinux@vger.kernel.org, linux-kernel@vger.kernel.org, linmag7@gmail.com Subject: [PATCH v4 3/6] sparc32: populate memblock from the PROM memory map Date: Sun, 27 Sep 2026 23:43:14 +0200 Message-ID: <20260927214334.886582-4-linmag7@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927214334.886582-1-linmag7@gmail.com> References: <20260927214334.886582-1-linmag7@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add each available PROM memory range to memblock as it is discovered. Keep populating sp_banks temporarily so the remaining users continue to work while they are converted in the following patches. Since the complete PROM map is now present before bootmem_init(), enforce the mem=3D limit after the legacy bank processing. Adding a smaller overlapping range would otherwise leave memory beyond the requested limit in memblock during this intermediate commit. Suggested-by: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Magnus Lindholm --- arch/sparc/mm/init_32.c | 3 +++ arch/sparc/prom/memory.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/arch/sparc/mm/init_32.c b/arch/sparc/mm/init_32.c index e0e66f91ceeb..75050dfbc2ea 100644 --- a/arch/sparc/mm/init_32.c +++ b/arch/sparc/mm/init_32.c @@ -165,6 +165,9 @@ unsigned long __init bootmem_init(unsigned long *pages_= avail) memblock_add(sp_banks[i].base_addr, sp_banks[i].num_bytes); } =20 + if (cmdline_memory_size) + memblock_enforce_memory_limit(cmdline_memory_size); + /* Start with page aligned address of last symbol in kernel * image. */ diff --git a/arch/sparc/prom/memory.c b/arch/sparc/prom/memory.c index 269d6ab5ef5e..59962bc0bc82 100644 --- a/arch/sparc/prom/memory.c +++ b/arch/sparc/prom/memory.c @@ -7,6 +7,7 @@ */ =20 #include +#include #include #include =20 @@ -23,6 +24,7 @@ static int __init prom_meminit_v0(void) for (p =3D *(romvec->pv_v0mem.v0_available); p; p =3D p->theres_more) { sp_banks[index].base_addr =3D (unsigned long) p->start_adr; sp_banks[index].num_bytes =3D p->num_bytes; + memblock_add(p->start_adr, p->num_bytes & PAGE_MASK); index++; } =20 @@ -42,6 +44,7 @@ static int __init prom_meminit_v2(void) for (i =3D 0; i < num_ents; i++) { sp_banks[i].base_addr =3D reg[i].phys_addr; sp_banks[i].num_bytes =3D reg[i].reg_size; + memblock_add(reg[i].phys_addr, reg[i].reg_size & PAGE_MASK); } =20 return num_ents; --=20 2.43.0 From nobody Mon Sep 28 03:16:47 2026 Received: from mail-ej2-f12.google.com (mail-ej2-f12.google.com [74.125.228.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E6A573C5DBA for ; Sun, 27 Sep 2026 21:43:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.140 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790545433; cv=none; b=dibOvNLJY2IbqEcY+KWDziTQuL0f8zHmSq/qxgPsvVBOFPp6h8czDzhmAdEhpuE/ByG6X/z+2h2kRuWF8Abh6d/ZV7OQnAfWtqVCKow1qY3UW6jp6mJsEmnW9mzw188iSYvfw/LzXJWYeMs07qqxaF6jU6/yYD225By1tU1Su/k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790545433; c=relaxed/simple; bh=/dsZPKgs3LiEVy3t0FVgwAqo7s2V/HbIC3nNFSOG314=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Poiqk5ZdDGTNv/AXJsBiKPYw8ntR7VDyghYJHElCRXYDNNCAOEkHsDBJibXdDd9yW11U9Eyt4wNGR9O8IfHwU6Kicp3oxGLyeelY8psgJJ0MIX6nM59lxssbMDPoRJfTHQ5kBppbprKJ0lxxZHg65ujD4Pyx8mfoVhf4/vRSrx0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FnGJ07dH; arc=none smtp.client-ip=74.125.228.140 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FnGJ07dH" Received: by mail-ej2-f12.google.com with SMTP id a640c23a62f3a-c293c683202so341431366b.3 for ; Sun, 27 Sep 2026 14:43:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790545429; x=1791150229; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=eMyYSrhfIYHYqjp8mHUnXor+qxDuOXc+/5yPGSD7oKw=; b=FnGJ07dHLWVCYz2tz2pJVe6fVowlwpQxQZ3dB7bSC8s/2oLOrcA/Xclk4YvyfPvCCM Ih6bW43R0cvWJNhSTYUbhyPiyZnHwjKXT+drrzJ6DYWinxeZ+ND7ZBwZ496e37jAXYO+ PsLlfLbXue8ai3SwJFWb+aQFsDX6rwIFUdP0UMkWGSCeT6Y3vDPScrvUhJexLgwXfvxx 13ekHq6uBzlELLoRJ9fwuYJJm95gg4ErEyAFqUiV4xixAaQa/kIhCXYpgOHYmq9q1yx0 kdiBBkxODJUVtzQzouayfLgy5U0NwnfEa1Y33KILBu5dMipSTRFGR5EbL92sxZaBeh0a AiIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790545429; x=1791150229; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=eMyYSrhfIYHYqjp8mHUnXor+qxDuOXc+/5yPGSD7oKw=; b=sfkU7bWyjNgpnRrXfH02wmelc0cf6+BowB8zAnHe/4xspPnuS9MS4tbexa2kqeHjCd l1Q2MIY2NpDf6MgGeFc2PpxPwxqnBLChf2pQF98uKdq96YAbxSf9XWuQJA+XhDRis7iT YG+tOMKAX01kY2Z3dGfGmnsE/80SQRo5wTQnp+oYssr7D95PbbgJRQYfEnvyIuH2PXtI 4Xzrnn4UbO3VxX7StfAYe+6Q7mpyg3pJwEG/1sGgvnX+4Eq2sk3lj73NwTj+BPPQnGdN vfC29TMigKLEMNT+PxhDPmca68oXDl55H75Y+lYjQ1e+R+luyKUhH5gfDwSN+zIPFRB7 fRNw== X-Forwarded-Encrypted: i=1; AKwUvBwhpx62HRsqi24zGo0nf6dYyeXcyZ1+LXBzCnUuItSVVfI6+RaZkRsYq5gHAjJ+jIlAajnrGNBcR40ZVVE=@vger.kernel.org X-Gm-Message-State: AFuF++n8qjuh87oy0sszViffj17bvZbihocN8wL6b2K2+THc926avP7e LepWA44wuooFyO6LH/YplUmy4x87gnEmBOkCCTXVJKKBI0ORByRLxj+Z X-Gm-Gg: AYBFou1nAtoxefuKCjLqMMw4OMbYir6mWAPD/lfU685fT6q4unugZAsGarmss1zM7zY 1ZCjD5O2/TAisZ07x3HIem73Xmz4n35+/0Fkua+dE8PqBlTVQlu7cB6HdywosCI+69acqWilO0F smixl6FAP2atyU2fJsvBw54yK/Te+0jPUBZ/LPm5ZmfnrMXI5JKt2njEmFne4P6jYP8hlkmKx2z awQYit63w6XxWLDAQH5Gyqu4U7mlu52gHgF8rxqa58dTv2FDbkAMnB8nQOKg8Yn8CsKG0xyQ+pf H8El9RIHNJJsDWGVRpPOsf44bScqkDW+o7fwy5Sz2XQqlu4LIZy50m9R8vvx0ftV4e8k9ryaAJA A2pEsjuZLCSJcFLOnBsp9GgRZ5oNFH6rsGxZThnIRCQXD3YLtAxjXYnoSOVRoVRjrsqR83ISrgK s9sKKJ8dBSV7RkuwJ/WBZXUwVFq/5GxzYuFSBXIj/UOw3P+81nncnweY06mvR1YobiEm1boyiYT P2ZEtk1ZZ+3R9seJc/SKRh9UD3gUTSrLzcnAvmsZw== X-Received: by 2002:a17:907:1b03:b0:c1c:4a80:30c4 with SMTP id a640c23a62f3a-c2ae97cb3b9mr671379566b.11.1790545429116; Sun, 27 Sep 2026 14:43:49 -0700 (PDT) Received: from buildhost.darklands.se ([2001:9b1:ff:d701:51eb:176f:63d9:53f8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2ae757b9c1sm376091866b.33.2026.09.27.14.43.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 14:43:48 -0700 (PDT) From: Magnus Lindholm To: davem@davemloft.net, andreas@gaisler.com Cc: sam@ravnborg.org, sparclinux@vger.kernel.org, linux-kernel@vger.kernel.org, linmag7@gmail.com Subject: [PATCH v4 4/6] sparc32: drop unused valid address bitmap Date: Sun, 27 Sep 2026 23:43:15 +0200 Message-ID: <20260927214334.886582-5-linmag7@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927214334.886582-1-linmag7@gmail.com> References: <20260927214334.886582-1-linmag7@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" sparc_valid_addr_bitmap is populated during early memory setup but never read. Remove the bitmap, its allocation and the population helper. Suggested-by: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Magnus Lindholm --- arch/sparc/mm/init_32.c | 36 ------------------------------------ 1 file changed, 36 deletions(-) diff --git a/arch/sparc/mm/init_32.c b/arch/sparc/mm/init_32.c index 75050dfbc2ea..6880d9cb30a5 100644 --- a/arch/sparc/mm/init_32.c +++ b/arch/sparc/mm/init_32.c @@ -13,7 +13,6 @@ #include #include #include -#include #include #include #include @@ -24,7 +23,6 @@ #include #include #include -#include #include =20 #include @@ -37,8 +35,6 @@ =20 #include "mm_32.h" =20 -static unsigned long *sparc_valid_addr_bitmap; - unsigned long phys_base; EXPORT_SYMBOL(phys_base); =20 @@ -218,27 +214,8 @@ void __init paging_init(void) device_scan(); } =20 -static void __init taint_real_pages(void) -{ - int i; - - for (i =3D 0; sp_banks[i].num_bytes; i++) { - unsigned long start, end; - - start =3D sp_banks[i].base_addr; - end =3D start + sp_banks[i].num_bytes; - - while (start < end) { - set_bit(start >> 20, sparc_valid_addr_bitmap); - start +=3D PAGE_SIZE; - } - } -} - void __init arch_mm_preinit(void) { - int i; - if (PKMAP_BASE+LAST_PKMAP*PAGE_SIZE >=3D FIXADDR_START) { prom_printf("BUG: fixmap and pkmap areas overlap\n"); prom_printf("pkbase: 0x%lx pkend: 0x%lx fixstart 0x%lx\n", @@ -248,19 +225,6 @@ void __init arch_mm_preinit(void) prom_printf("Please mail sparclinux@vger.kernel.org.\n"); prom_halt(); } - - i =3D last_valid_pfn >> ((20 - PAGE_SHIFT) + 5); - i +=3D 1; - sparc_valid_addr_bitmap =3D (unsigned long *) - memblock_alloc(i << 2, SMP_CACHE_BYTES); - - if (sparc_valid_addr_bitmap =3D=3D NULL) { - prom_printf("mem_init: Cannot alloc valid_addr_bitmap.\n"); - prom_halt(); - } - memset(sparc_valid_addr_bitmap, 0, i << 2); - - taint_real_pages(); } =20 void sparc_flush_page_to_ram(struct page *page) --=20 2.43.0 From nobody Mon Sep 28 03:16:47 2026 Received: from mail-ej2-f12.google.com (mail-ej2-f12.google.com [74.125.228.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 67E733C3C06 for ; Sun, 27 Sep 2026 21:43:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.140 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790545439; cv=none; b=WmPDEiFR0q73CfhY+6oZxUDMoGfX4It3KRrkARwwHpFNRslxjujq4qFp4l+Ok8G3JjlaCd0g17e3V+EN1sHf6vWmxojeB+2ceZSFIqhB38UumBVAqqsXI3Z46zYrprR2RMsXRNnS0fO3F7aB0xHfTeqMI5AqFMYXz08WS+GJc5w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790545439; c=relaxed/simple; bh=rHuHrAyuEjJSqJIqC9zJ6YYEatMKk6rnjWU97Dixo6Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pGo2rYk1bGdMQSem+2yFbYNTh42840wQMm5n1k1YsFOQheHiLAUfD2CEMvYmlOk5pTyaMIYa1axgMKd6XHnlUEXAmEc3ltQt/dxudRoo99VHdk0ffhytzJLmOvBzIkz6Cz+wXU/R/nx9srNiFl7MEzAnZtqqar4ufUAueIfgQtQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=c5mFbKqQ; arc=none smtp.client-ip=74.125.228.140 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="c5mFbKqQ" Received: by mail-ej2-f12.google.com with SMTP id a640c23a62f3a-c29703cb796so331780566b.2 for ; Sun, 27 Sep 2026 14:43:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790545430; x=1791150230; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=kQM3L5ONL8A+jCWhcUzOr2lF9Mv/EAI1temkvSPaPEg=; b=c5mFbKqQllXyQlaWWCN3Um9w1MigeQQLbbCC0Isp5NIHHqQGlG4YFfTP5BXxwzPXvM 8+cdyxC9hn83Sj/IiNYzcZHyRPq1YifBVT0+F4R1NtWMWYblW/WjqsJ3YUfIx86aFjkL B5v2QcKoEWXwSFB7Ck0ggjLuxfZGUwlSv+Fm7OTwounnNWh+NYEGG8nAJu/vFbi+u0Pl 5gakUqEV0n7hYzgAV/oQ7NU8FiBOr4fbPAOkSNCfcM05xRmwA77W8cJE67Si8poUo8Bl 6JSkE3+T32gvvsJi23rwScyxdIBLSVAUqSJY3q+mfZBZWcifr/BkUOekjz6BLvlNaCEY KexA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790545430; x=1791150230; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=kQM3L5ONL8A+jCWhcUzOr2lF9Mv/EAI1temkvSPaPEg=; b=T7JDFuF9U6I7GJJGPrYiJau+vKZ3chW7Ynt6MT2s4cLL7it4bJZ6AigBMMhUY8LgDS ii99Q43St8N+g5J5jaR6ompV29lJ4m0Mtg3mih+KINKgYyE93V/Sof0059KewZ8bHswQ 2JQ8aMsUi39m+CYQM07NdTPCn+h+EfHuJWuFiohv7P1vxJrtnVtykxB8LEHqvSxgrYk3 rfyRUrTH6LCdzPTn7hctp3yNnbQbnsyX9Anfkb6hZEuPCSNYqgw7Yv5KmRWp2VkbUEFn jtUpEp5eiwtDE2Z1WsUjdvWkaogkOOTm54z6rwcHv0hXdRlGU//QV26H/uwMgHiwmzG7 8Nkw== X-Forwarded-Encrypted: i=1; AKwUvBydprzbtkM4/UpuFFVledkyYaUYSGWPJ69DHMLQYWXCyqEIpxNVngIhKsnzo+ag3Kka3xyQyejXe8Qz3sM=@vger.kernel.org X-Gm-Message-State: AFq9FYInSadOdIoy5m5661eMedfTc2m073cr0xu4leZ3J+l+po8uavRY sB11pk9zPaDvf1YP0WFVyxdAqG3yXrLvHQ+8MwJXVYqKBAFbich1Od4VrVpQ/w== X-Gm-Gg: AYBFou3sjajz8GHNN1IGY1oQWHNSL54BVa+VapfiVsR62SJb127k4J9p21lY94HJlzE ldYOu3FRo/0B97cuHrYS7kKKH/EYAqBhLvRjCsSA+7uQ1GANDPa7pzeqsgL26MDcusp/xrGnWcv 8gB0gC7ldW7F4xby9U8BGmvTOIVVczRme/06enRdcTntcaGCWH1ESmCJFugrHv8MX9pgn8laODm HKTEpXtlgyUKCLHnqVnMdMKchDUaKZcRmjLxRWxKSH9uer/vCp8AyibjmmS4zqTPXrzs+1ZsiAl BVauOgRjbD3tjX6C8cETpHoW6RQrvuQOcMh7cSzDY9ur3S8oRf+tsBRuWxaUET+PlA9Jv+ammtO n/vLCVGck0n5w1qqGkbZP+g9eJqjp5z4lbpxyi/9WPWAtv4oKt+MWYAj0bp1Pbm/eqBNR4/cl4n WF134K47G5wFdhcqyuZm0yOeAnlSSZPxD9pbQZaAiosCaXZy7XTCDSq07g3e4iwB5CpfSe0dNp4 if/fO0xbiuftZq0h/I8oRyYrsbgW4QHzPAUUlpy X-Received: by 2002:a17:907:608a:b0:c29:51c2:ba69 with SMTP id a640c23a62f3a-c2ac23e5379mr933300566b.22.1790545430268; Sun, 27 Sep 2026 14:43:50 -0700 (PDT) Received: from buildhost.darklands.se ([2001:9b1:ff:d701:51eb:176f:63d9:53f8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2ae757b9c1sm376091866b.33.2026.09.27.14.43.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 14:43:49 -0700 (PDT) From: Magnus Lindholm To: davem@davemloft.net, andreas@gaisler.com Cc: sam@ravnborg.org, sparclinux@vger.kernel.org, linux-kernel@vger.kernel.org, linmag7@gmail.com Subject: [PATCH v4 5/6] sparc32: move early memory setup to setup_arch Date: Sun, 27 Sep 2026 23:43:16 +0200 Message-ID: <20260927214334.886582-6-linmag7@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927214334.886582-1-linmag7@gmail.com> References: <20260927214334.886582-1-linmag7@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Move the early memory configuration out of SRMMU paging setup and next to the rest of setup_arch(). Derive the PFN limits from memblock, reserve the kernel and initrd there, and retain mem=3D support with memblock_enforce_memory_limit(). Use for_each_mem_pfn_range() to find the lowmem boundary and set the standard max_pfn variable to the end of physical memory. Use max_pfn as the highmem zone limit and replace last_valid_pfn with max_pfn in LEON's _pfn_valid() check, preserving its existing bounds, including highmem. The removed bootmem code also printed a private HIGHMEM summary. Generic memory initialization already reports the highmem zone, so do not retain the duplicate message. When PAGE_OFFSET maps a relocated kernel, remove memory below phys_base from memblock because it cannot be reached through the linear map. This replaces the equivalent trimming of sp_banks. Suggested-by: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Magnus Lindholm --- arch/sparc/include/asm/highmem.h | 3 - arch/sparc/include/asm/leon.h | 2 +- arch/sparc/include/asm/pgtable_32.h | 3 +- arch/sparc/include/asm/pgtsrmmu.h | 1 - arch/sparc/kernel/setup_32.c | 112 ++++++++++++----------- arch/sparc/mm/init_32.c | 132 +--------------------------- arch/sparc/mm/leon_mm.c | 1 + arch/sparc/mm/srmmu.c | 8 +- 8 files changed, 67 insertions(+), 195 deletions(-) diff --git a/arch/sparc/include/asm/highmem.h b/arch/sparc/include/asm/high= mem.h index c7b2e208328b..b1b915ac604d 100644 --- a/arch/sparc/include/asm/highmem.h +++ b/arch/sparc/include/asm/highmem.h @@ -26,9 +26,6 @@ #include #include =20 -/* declarations for highmem.c */ -extern unsigned long highstart_pfn, highend_pfn; - #define kmap_prot __pgprot(SRMMU_ET_PTE | SRMMU_PRIV | SRMMU_CACHE) extern pte_t *pkmap_page_table; =20 diff --git a/arch/sparc/include/asm/leon.h b/arch/sparc/include/asm/leon.h index 053a24b67aed..2a1bdc2c2f1d 100644 --- a/arch/sparc/include/asm/leon.h +++ b/arch/sparc/include/asm/leon.h @@ -251,7 +251,7 @@ extern int leon_ipi_irq; =20 /* macros used in leon_mm.c */ #define PFN(x) ((x) >> PAGE_SHIFT) -#define _pfn_valid(pfn) ((pfn < last_valid_pfn) && (pfn >=3D PFN(phys_bas= e))) +#define _pfn_valid(pfn) ((pfn < max_pfn) && (pfn >=3D PFN(phys_base))) #define _SRMMU_PTE_PMASK_LEON 0xffffffff =20 /* diff --git a/arch/sparc/include/asm/pgtable_32.h b/arch/sparc/include/asm/p= gtable_32.h index f89b1250661d..91a6032cf6a2 100644 --- a/arch/sparc/include/asm/pgtable_32.h +++ b/arch/sparc/include/asm/pgtable_32.h @@ -37,8 +37,7 @@ struct vm_area_struct; struct page; =20 void load_mmu(void); -unsigned long calc_highpages(void); -unsigned long __init bootmem_init(unsigned long *pages_avail); +void __init find_ramdisk(unsigned long end_of_phys_memory); =20 #define pte_ERROR(e) __builtin_trap() #define pmd_ERROR(e) __builtin_trap() diff --git a/arch/sparc/include/asm/pgtsrmmu.h b/arch/sparc/include/asm/pgt= srmmu.h index a265822a475e..a2a6c8564c3e 100644 --- a/arch/sparc/include/asm/pgtsrmmu.h +++ b/arch/sparc/include/asm/pgtsrmmu.h @@ -98,7 +98,6 @@ restore %g0, %g0, %g0; =20 #ifndef __ASSEMBLER__ -extern unsigned long last_valid_pfn; =20 /* This makes sense. Honest it does - Anton */ /* XXX Yes but it's ugly as sin. FIXME. -KMW */ diff --git a/arch/sparc/kernel/setup_32.c b/arch/sparc/kernel/setup_32.c index 795714959da6..6ad85538964d 100644 --- a/arch/sparc/kernel/setup_32.c +++ b/arch/sparc/kernel/setup_32.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -254,28 +255,71 @@ static __init void leon_patch(void) =20 struct tt_entry *sparc_ttable; =20 -/* Drop RAM below the kernel; the linear map runs upward from phys_base - * and cannot reach it. - */ -static void __init trim_sp_banks_below(unsigned long base) +unsigned long phys_base; +EXPORT_SYMBOL(phys_base); + +unsigned long pfn_base; +EXPORT_SYMBOL(pfn_base); + +static unsigned long __init calc_max_low_pfn(void) { - int i, j =3D 0; + unsigned long limit =3D pfn_base + PHYS_PFN(SRMMU_MAXMEM); + unsigned long start_pfn, end_pfn; + unsigned long last_pfn =3D 0; + int i; + + for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, NULL) { + if (start_pfn >=3D limit) { + if (last_pfn < limit) + limit =3D last_pfn; + break; + } =20 - for (i =3D 0; sp_banks[i].num_bytes !=3D 0; i++) { - unsigned long start =3D sp_banks[i].base_addr; - unsigned long end =3D start + sp_banks[i].num_bytes; + last_pfn =3D end_pfn; + } =20 - if (end <=3D base) - continue; /* wholly below - drop it */ - if (start < base) - start =3D base; /* straddles - trim the front */ + return limit; +} =20 - sp_banks[j].base_addr =3D start; - sp_banks[j].num_bytes =3D end - start; - j++; +static void __init setup_memory(void) +{ + unsigned long ram_base =3D memblock_start_of_DRAM(); + unsigned long real_base =3D __get_phys(PAGE_OFFSET); + unsigned long size; + + memblock_set_bottom_up(true); + memblock_allow_resize(); + + phys_base =3D ram_base; + if (real_base && real_base !=3D phys_base) { + prom_printf("phys_base: RAM starts 0x%x but kernel is at 0x%x\n", + (unsigned int)phys_base, (unsigned int)real_base); + phys_base =3D real_base; + memblock_remove(0, phys_base); + prom_printf("phys_base: adopted 0x%x, RAM below it dropped\n", + (unsigned int)phys_base); } - sp_banks[j].base_addr =3D 0; - sp_banks[j].num_bytes =3D 0; + + if (cmdline_memory_size) + memblock_enforce_memory_limit(cmdline_memory_size); + + min_low_pfn =3D PFN_DOWN(memblock_start_of_DRAM()); + pfn_base =3D PHYS_PFN(phys_base); + max_pfn =3D PFN_DOWN(memblock_end_of_DRAM()); + max_low_pfn =3D max_pfn; + + if (max_low_pfn > pfn_base + PHYS_PFN(SRMMU_MAXMEM)) + max_low_pfn =3D calc_max_low_pfn(); + + find_ramdisk(memblock_end_of_DRAM()); + + /* Reserve the kernel text/data/bss. */ + size =3D __pa(PAGE_ALIGN((unsigned long)&_end)) - phys_base; + memblock_reserve(phys_base, size); + memblock_add(phys_base, size); + + /* Only allow low memory to be allocated by memblock. */ + memblock_set_current_limit(PFN_PHYS(max_low_pfn)); } =20 /* Called from head_32.S - before we have setup anything @@ -306,9 +350,6 @@ void __init sparc32_start_kernel(struct linux_romvec *r= p) =20 void __init setup_arch(char **cmdline_p) { - int i; - unsigned long highest_paddr; - sparc_ttable =3D &trapbase[0]; =20 /* Initialize PROM console and command line. */ @@ -343,36 +384,7 @@ void __init setup_arch(char **cmdline_p) =20 idprom_init(); load_mmu(); - - phys_base =3D 0xffffffffUL; - highest_paddr =3D 0UL; - for (i =3D 0; sp_banks[i].num_bytes !=3D 0; i++) { - unsigned long top; - - if (sp_banks[i].base_addr < phys_base) - phys_base =3D sp_banks[i].base_addr; - top =3D sp_banks[i].base_addr + - sp_banks[i].num_bytes; - if (highest_paddr < top) - highest_paddr =3D top; - } - - /* phys_base must describe what PAGE_OFFSET maps to, not where RAM starts= . */ - { - unsigned long real_base =3D __get_phys(PAGE_OFFSET); - - if (real_base && real_base !=3D phys_base) { - prom_printf("phys_base: RAM starts 0x%x but kernel is at 0x%x\n", - (unsigned int)phys_base, - (unsigned int)real_base); - phys_base =3D real_base; - trim_sp_banks_below(phys_base); - prom_printf("phys_base: adopted 0x%x, RAM below it dropped\n", - (unsigned int)phys_base); - } - } - - pfn_base =3D phys_base >> PAGE_SHIFT; + setup_memory(); =20 if (!root_flags) root_mountflags &=3D ~MS_RDONLY; diff --git a/arch/sparc/mm/init_32.c b/arch/sparc/mm/init_32.c index 6880d9cb30a5..ac4462f1cf76 100644 --- a/arch/sparc/mm/init_32.c +++ b/arch/sparc/mm/init_32.c @@ -35,66 +35,13 @@ =20 #include "mm_32.h" =20 -unsigned long phys_base; -EXPORT_SYMBOL(phys_base); - -unsigned long pfn_base; -EXPORT_SYMBOL(pfn_base); - struct sparc_phys_banks sp_banks[SPARC_PHYS_BANKS+1]; =20 /* Initial ramdisk setup */ extern unsigned int sparc_ramdisk_image; extern unsigned int sparc_ramdisk_size; =20 -unsigned long highstart_pfn, highend_pfn; - -unsigned long last_valid_pfn; - -unsigned long calc_highpages(void) -{ - int i; - int nr =3D 0; - - for (i =3D 0; sp_banks[i].num_bytes !=3D 0; i++) { - unsigned long start_pfn =3D sp_banks[i].base_addr >> PAGE_SHIFT; - unsigned long end_pfn =3D (sp_banks[i].base_addr + sp_banks[i].num_bytes= ) >> PAGE_SHIFT; - - if (end_pfn <=3D max_low_pfn) - continue; - - if (start_pfn < max_low_pfn) - start_pfn =3D max_low_pfn; - - nr +=3D end_pfn - start_pfn; - } - - return nr; -} - -static unsigned long calc_max_low_pfn(void) -{ - int i; - unsigned long tmp =3D pfn_base + (SRMMU_MAXMEM >> PAGE_SHIFT); - unsigned long curr_pfn, last_pfn; - - last_pfn =3D (sp_banks[0].base_addr + sp_banks[0].num_bytes) >> PAGE_SHIF= T; - for (i =3D 1; sp_banks[i].num_bytes !=3D 0; i++) { - curr_pfn =3D sp_banks[i].base_addr >> PAGE_SHIFT; - - if (curr_pfn >=3D tmp) { - if (last_pfn < tmp) - tmp =3D last_pfn; - break; - } - - last_pfn =3D (sp_banks[i].base_addr + sp_banks[i].num_bytes) >> PAGE_SHI= FT; - } - - return tmp; -} - -static void __init find_ramdisk(unsigned long end_of_phys_memory) +void __init find_ramdisk(unsigned long end_of_phys_memory) { #ifdef CONFIG_BLK_DEV_INITRD unsigned long size; @@ -124,83 +71,6 @@ static void __init find_ramdisk(unsigned long end_of_ph= ys_memory) #endif } =20 -unsigned long __init bootmem_init(unsigned long *pages_avail) -{ - unsigned long start_pfn, bytes_avail, size; - unsigned long end_of_phys_memory =3D 0; - unsigned long high_pages =3D 0; - int i; - - memblock_set_bottom_up(true); - memblock_allow_resize(); - - bytes_avail =3D 0UL; - for (i =3D 0; sp_banks[i].num_bytes !=3D 0; i++) { - end_of_phys_memory =3D sp_banks[i].base_addr + - sp_banks[i].num_bytes; - bytes_avail +=3D sp_banks[i].num_bytes; - if (cmdline_memory_size) { - if (bytes_avail > cmdline_memory_size) { - unsigned long slack =3D bytes_avail - cmdline_memory_size; - - bytes_avail -=3D slack; - end_of_phys_memory -=3D slack; - - sp_banks[i].num_bytes -=3D slack; - if (sp_banks[i].num_bytes =3D=3D 0) { - sp_banks[i].base_addr =3D 0xdeadbeef; - } else { - memblock_add(sp_banks[i].base_addr, - sp_banks[i].num_bytes); - sp_banks[i+1].num_bytes =3D 0; - sp_banks[i+1].base_addr =3D 0xdeadbeef; - } - break; - } - } - memblock_add(sp_banks[i].base_addr, sp_banks[i].num_bytes); - } - - if (cmdline_memory_size) - memblock_enforce_memory_limit(cmdline_memory_size); - - /* Start with page aligned address of last symbol in kernel - * image. - */ - start_pfn =3D (unsigned long)__pa(PAGE_ALIGN((unsigned long) &_end)); - - /* Now shift down to get the real physical page frame number. */ - start_pfn >>=3D PAGE_SHIFT; - - max_pfn =3D end_of_phys_memory >> PAGE_SHIFT; - - max_low_pfn =3D max_pfn; - highstart_pfn =3D highend_pfn =3D max_pfn; - - if (max_low_pfn > pfn_base + (SRMMU_MAXMEM >> PAGE_SHIFT)) { - highstart_pfn =3D pfn_base + (SRMMU_MAXMEM >> PAGE_SHIFT); - max_low_pfn =3D calc_max_low_pfn(); - high_pages =3D calc_highpages(); - printk(KERN_NOTICE "%ldMB HIGHMEM available.\n", - high_pages >> (20 - PAGE_SHIFT)); - } - - find_ramdisk(end_of_phys_memory); - - /* Reserve the kernel text/data/bss. */ - size =3D (start_pfn << PAGE_SHIFT) - phys_base; - memblock_reserve(phys_base, size); - memblock_add(phys_base, size); - - size =3D memblock_phys_mem_size() - memblock_reserved_size(); - *pages_avail =3D (size >> PAGE_SHIFT) - high_pages; - - /* Only allow low memory to be allocated via memblock allocation */ - memblock_set_current_limit(max_low_pfn << PAGE_SHIFT); - - return max_pfn; -} - /* * paging_init() sets up the page tables: We call the MMU specific * init routine based upon the Sun model type on the Sparc. diff --git a/arch/sparc/mm/leon_mm.c b/arch/sparc/mm/leon_mm.c index 1dc9b3d70eda..a43c5ffbbbe5 100644 --- a/arch/sparc/mm/leon_mm.c +++ b/arch/sparc/mm/leon_mm.c @@ -11,6 +11,7 @@ */ =20 #include +#include #include #include #include diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c index 7b57a10c961f..444295c20b94 100644 --- a/arch/sparc/mm/srmmu.c +++ b/arch/sparc/mm/srmmu.c @@ -59,8 +59,6 @@ int vac_line_size; =20 extern struct resource sparc_iomap; =20 -extern unsigned long last_valid_pfn; - static pgd_t *srmmu_swapper_pg_dir; =20 const struct sparc32_cachetlb_ops *sparc32_cachetlb_ops; @@ -842,7 +840,7 @@ void __init arch_zone_limits_init(unsigned long *max_zo= ne_pfns) { max_zone_pfns[ZONE_DMA] =3D max_low_pfn; max_zone_pfns[ZONE_NORMAL] =3D max_low_pfn; - max_zone_pfns[ZONE_HIGHMEM] =3D highend_pfn; + max_zone_pfns[ZONE_HIGHMEM] =3D max_pfn; } =20 void __init srmmu_paging_init(void) @@ -855,7 +853,6 @@ void __init srmmu_paging_init(void) pud_t *pud; pmd_t *pmd; pte_t *pte; - unsigned long pages_avail; =20 init_mm.context =3D (unsigned long) NO_CONTEXT; sparc_iomap.start =3D SUN4M_IOBASE_VADDR; /* 16MB of IOSPACE on all sun4m= 's. */ @@ -881,9 +878,6 @@ void __init srmmu_paging_init(void) prom_halt(); } =20 - pages_avail =3D 0; - last_valid_pfn =3D bootmem_init(&pages_avail); - srmmu_nocache_calcsize(); srmmu_nocache_init(); srmmu_inherit_prom_mappings(0xfe400000, (LINUX_OPPROM_ENDVM - PAGE_SIZE)); --=20 2.43.0 From nobody Mon Sep 28 03:16:47 2026 Received: from mail-ej2-f20.google.com (mail-ej2-f20.google.com [74.125.228.148]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 99EF738330E for ; Sun, 27 Sep 2026 21:43:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.148 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790545437; cv=none; b=KkFdgWv2of0JUVofxDMDOj6wxJ8rfC735PQ754YKPsTyGTr2yclsnD3SbUFi91D0IX79Ryv8qUvritSuXMSBcvWtthMIDyDBgfFZnDbAXC1+CUA2fOrJoW0UDoZc+hFHFFnTIZODvo5fHhY8M24CJzSDbRJ4qV/2YwZksSZT1kI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790545437; c=relaxed/simple; bh=1531Yq/nVppQGrlAquxN2x1KLWXV3EHMaR/ahEcKkNk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jK1TKAejeRW/KraumLp7yzdM6KwmpjrDlFC3/E3p3PwzGueRPLH0KU0eNSDNJrevLkLQ8/oxhyladFcDprgWmICbkYVzWHDoW7RoQpuraBVSBSJWQ0YJstfMA18vkWRA5oMuoHLlv/yuMoImmZ0enr7T87D0/vjMMf6n09s9V6I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=S6yRiXMi; arc=none smtp.client-ip=74.125.228.148 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="S6yRiXMi" Received: by mail-ej2-f20.google.com with SMTP id a640c23a62f3a-c293c683202so341433866b.3 for ; Sun, 27 Sep 2026 14:43:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790545432; x=1791150232; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=cCuCzlksNfjrgkZXx3iznj1+OuURI9PaCP0uSZRfzi0=; b=S6yRiXMiMyMZeV8tRHFus12pwjI0dhnHHeLmI4YZmMjNkhFD9C6W1Oxe+837kWnXhV dfdRzcuAaIrGj78K9GKIqnCrBbtHl23YkjhjkvS1on3HUIByvq1aduekiHTxpTwmQO1m 9ht1hFqxYEstex+N8d5U/hWbVgLYEcCvs7rVJtn+Dj0NdrbF/EOa/QKt4jQCyOdn+2iQ C+GO+9LEyQkA2eSBUdHS5EsuTv6Gu6FaV9V9DHoYxiiWPpcsoowU9S3adS8S4jYBpAs+ 04Hh3J0qK5eP3ecQecWSeEsJ4sl8in6ZRkpBO791ttKoXAarzq9F3LQXSwFO6l2uGypd yr6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790545432; x=1791150232; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=cCuCzlksNfjrgkZXx3iznj1+OuURI9PaCP0uSZRfzi0=; b=qxK4NcjP3r0ouAkejBKWEjbcSvAhPW7piZtAsHdmSR1MhXndWCdvaNT18kQK0DY0Qj b4iftsCbu6QD1sGJNnlDpXxq4Rvi/Sa6/IPlU967F8QOM6/GoKmSJT5jUNE8ynlHhl0i Gb0b6yxQ0BYfmedolSXYA5QYUTgjGEN33Ok9JxhVV5EbDI0zsXOe80v1DG1myor/atE0 AvKXsCf/mfF8L+6PAF9kMw/e7kCW+IsSSHNbjkOGhZG0R03vuwcn7EzrO6ixeHWtwYP/ U50Mx5sulwdCv9O3bTyNzn7TB/MB51Fbw1NIl9ZjvkMOs4JxbAbPKu2VSTTciDnRBLsH /23Q== X-Forwarded-Encrypted: i=1; AKwUvBzjQ6PuemfnaPwDIwTlUdrrB8J4E8jS3PQ5JUqo0+fC7S8EMdsOTcwijHRSTjY/GtZMtdfvEn5+7fGFqVU=@vger.kernel.org X-Gm-Message-State: AFuF++ktsdqgNFmY5fv9rwpNNPw1VsFM+OnpyTBMVrNzuycmXCnY+gsI L7abCsdYbXQObZzmKvjWHKNqSw6HEIrb+voQarPf2OH6H5+Xr0IWztdN X-Gm-Gg: AYBFou1yO0YBTH8fq/2Sn7z95FOuepiBKSDMrpgqpluRRwoNllFuC2C5B2feM1qrRHg ymYOtbM/7+wpr1MsvGvXUCS/ussZbnd6YPLMUKynCBpqVuB6nkY0O4owYNDRk1SUSfz6wIOKamv 4ZFAEIAepsO3OCjE95srP65GXZ45K/3EHO4oKXtNNXi93jM0VGTZItZbuYjKhuPDgMj4jd/w6+G 3+8g99sFAl6O7+yDwg0TXCWpbdAHaXJqIMdPZ84hGo/UzwJcA5Ed9IBUZwu0YT0yZf4185ugbdl jRGy7iQmIFhPNScu38UZ7tdbLq6oatxS6v8FfkCG03jIGPk39xIfyNZb2PzaXKuTFm8o6cslSmx r002j+1LRJdg/uNlasGrPS3ra96p3XtF2njtVAa9FnUPbxV4JDeKXfH9drFXxNxlAO+gCN011k+ EbUrvkntuJlsqXPD1WjexqHiraIPQi05svYF5JYRhy39/Tq4MQW4eiHheftI2Dc7y7ZnzV24Bjg zw85M5hwdX6phjJk31joPKVT1ENK+qhmJGEzs43Fg== X-Received: by 2002:a17:907:7ba6:b0:c26:19de:9ac8 with SMTP id a640c23a62f3a-c2ae9f31589mr606632666b.32.1790545431599; Sun, 27 Sep 2026 14:43:51 -0700 (PDT) Received: from buildhost.darklands.se ([2001:9b1:ff:d701:51eb:176f:63d9:53f8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2ae757b9c1sm376091866b.33.2026.09.27.14.43.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 14:43:51 -0700 (PDT) From: Magnus Lindholm To: davem@davemloft.net, andreas@gaisler.com Cc: sam@ravnborg.org, sparclinux@vger.kernel.org, linux-kernel@vger.kernel.org, linmag7@gmail.com Subject: [PATCH v4 6/6] sparc32: drop sp_banks Date: Sun, 27 Sep 2026 23:43:17 +0200 Message-ID: <20260927214334.886582-7-linmag7@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927214334.886582-1-linmag7@gmail.com> References: <20260927214334.886582-1-linmag7@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" All memory-map consumers now use memblock. Stop duplicating the PROM map in sp_banks and remove the array, its type, and its fixed bank limit. Suggested-by: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Magnus Lindholm --- arch/sparc/include/asm/page_32.h | 16 ----------- arch/sparc/mm/init_32.c | 2 -- arch/sparc/prom/memory.c | 48 ++++---------------------------- 3 files changed, 6 insertions(+), 60 deletions(-) diff --git a/arch/sparc/include/asm/page_32.h b/arch/sparc/include/asm/page= _32.h index 9f0b54f70908..7429291fb118 100644 --- a/arch/sparc/include/asm/page_32.h +++ b/arch/sparc/include/asm/page_32.h @@ -28,22 +28,6 @@ (void)(vaddr); \ } while (0) =20 -/* The following structure is used to hold the physical - * memory configuration of the machine. This is filled in - * prom_meminit() and is later used by mem_init() to set up - * mem_map[]. We statically allocate SPARC_PHYS_BANKS+1 of - * these structs, this is arbitrary. The entry after the - * last valid one has num_bytes=3D=3D0. - */ -struct sparc_phys_banks { - unsigned long base_addr; - unsigned long num_bytes; -}; - -#define SPARC_PHYS_BANKS 32 - -extern struct sparc_phys_banks sp_banks[SPARC_PHYS_BANKS+1]; - /* passing structs on the Sparc slow us down tremendously... */ =20 /* #define STRICT_MM_TYPECHECKS */ diff --git a/arch/sparc/mm/init_32.c b/arch/sparc/mm/init_32.c index ac4462f1cf76..2f693b70dbd8 100644 --- a/arch/sparc/mm/init_32.c +++ b/arch/sparc/mm/init_32.c @@ -35,8 +35,6 @@ =20 #include "mm_32.h" =20 -struct sparc_phys_banks sp_banks[SPARC_PHYS_BANKS+1]; - /* Initial ramdisk setup */ extern unsigned int sparc_ramdisk_image; extern unsigned int sparc_ramdisk_size; diff --git a/arch/sparc/prom/memory.c b/arch/sparc/prom/memory.c index 59962bc0bc82..3f65bde2bb89 100644 --- a/arch/sparc/prom/memory.c +++ b/arch/sparc/prom/memory.c @@ -8,30 +8,21 @@ =20 #include #include -#include #include =20 #include #include #include =20 -static int __init prom_meminit_v0(void) +static void __init prom_meminit_v0(void) { struct linux_mlist_v0 *p; - int index; =20 - index =3D 0; - for (p =3D *(romvec->pv_v0mem.v0_available); p; p =3D p->theres_more) { - sp_banks[index].base_addr =3D (unsigned long) p->start_adr; - sp_banks[index].num_bytes =3D p->num_bytes; + for (p =3D *(romvec->pv_v0mem.v0_available); p; p =3D p->theres_more) memblock_add(p->start_adr, p->num_bytes & PAGE_MASK); - index++; - } - - return index; } =20 -static int __init prom_meminit_v2(void) +static void __init prom_meminit_v2(void) { struct linux_prom_registers reg[64]; phandle node; @@ -41,51 +32,24 @@ static int __init prom_meminit_v2(void) size =3D prom_getproperty(node, "available", (char *) reg, sizeof(reg)); num_ents =3D size / sizeof(struct linux_prom_registers); =20 - for (i =3D 0; i < num_ents; i++) { - sp_banks[i].base_addr =3D reg[i].phys_addr; - sp_banks[i].num_bytes =3D reg[i].reg_size; + for (i =3D 0; i < num_ents; i++) memblock_add(reg[i].phys_addr, reg[i].reg_size & PAGE_MASK); - } - - return num_ents; -} - -static int sp_banks_cmp(const void *a, const void *b) -{ - const struct sparc_phys_banks *x =3D a, *y =3D b; - - if (x->base_addr > y->base_addr) - return 1; - if (x->base_addr < y->base_addr) - return -1; - return 0; } =20 /* Initialize the memory lists based upon the prom version. */ void __init prom_meminit(void) { - int i, num_ents =3D 0; - switch (prom_vers) { case PROM_V0: - num_ents =3D prom_meminit_v0(); + prom_meminit_v0(); break; =20 case PROM_V2: case PROM_V3: - num_ents =3D prom_meminit_v2(); + prom_meminit_v2(); break; =20 default: break; } - sort(sp_banks, num_ents, sizeof(struct sparc_phys_banks), - sp_banks_cmp, NULL); - - /* Sentinel. */ - sp_banks[num_ents].base_addr =3D 0xdeadbeef; - sp_banks[num_ents].num_bytes =3D 0; - - for (i =3D 0; i < num_ents; i++) - sp_banks[i].num_bytes &=3D PAGE_MASK; } --=20 2.43.0