From nobody Sat Sep 26 11:46:59 2026 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) (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 43BFD308F39 for ; Tue, 1 Sep 2026 21:46:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788299200; cv=none; b=gMKCQpPBDN2eyEQJKVvbP2Mvf2nxOj8ruPo9ggVQLB40xoeC7coZ3HK6mLKVHak9pme520ZjKobNBPhmmDNcQTAx5K3e40xK5LZlxDdQ6muM2gRiuIEgQ7tFwQLQMY/Vvl/F1Ds8UOssH/yf1qupGleTyj1NnC+EztITbpAUaL4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788299200; c=relaxed/simple; bh=K1Wl/C/kiCwsRppKYsbDUf5OBFrVx/C5S3UJ3x2cFWU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NsRKPAKncoQBIIe3xe9CXTf/WlSIJsO8eIexs4KvGiaOHdkXLIMiXNo+NYTxQnG9L6eI9+a9L2WAoB5s+zXozfhlb9VFzXFPtusTuBIORPGa+LB/1zo0IDcoLniAmLF13PRefAFKN/WvU0/gDlLw1SwcsyGwH2Njvvu3R7DTlV0= 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=IGdXuGWX; arc=none smtp.client-ip=209.85.218.49 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="IGdXuGWX" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-c25420fe973so48086466b.0 for ; Tue, 01 Sep 2026 14:46:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788299197; x=1788903997; 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=jvfhRVJLik6BIqM90QcnUBNMu0LkZxv6XmlGLkglzY0=; b=IGdXuGWXNBAnBqxs0sX9JV23rnUHpmPRmPMLZ70pi9t2FgwnlaZbcXKspGlsw3Iw49 U5N9XpJke3wsHjR1hwcBqsoFR1eY00M8RQlodKs6FtvAHvk1CuLWomhplzOI9ju9fn/6 XKV27DrCGYHsnnzlEjdNcg+HyADqPyxQQs4nHWT/mA2PuOTwPt2oNlPCwJwa3JxYVeZp VqmDVjujAoQ45uy2Kfz1YZ6/lJTCriqEBnJ92uc3ogJxUagGCLVqDBktqrALCe420D9c /YUZ4POMgv2/PxgGwtOh5TUj2ahDLyRjmZGIeWJp/eqjG0ed8hcYt2qZQmcevgk1tw2O KNGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788299197; x=1788903997; 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=jvfhRVJLik6BIqM90QcnUBNMu0LkZxv6XmlGLkglzY0=; b=YItuMIuDP4w9Z1fqQN4b81nvGvaqW2Q3YOMOVS2ULkkxDwk+sIO+Osbwf+s26TbE/V kK1bot3z3WzhQ727j+6zACtu2k05Ioszu86mb4CqPvd07fVv8s3tsyLCzQlg/x0oQnNK +YSBAUeUOcY6RYHvHgXOx9GO+2fU6sO1XUHwX2ACzvD6Ka40MGffREYY5AsuPWxpVQbE wguFYSqewua35o9xJ8+VezD80npCopmYSP1VktGCJ38yhRKoT622XMjRcvAtzVsyknK3 Mc3OJDkWQiEFyKyhqNdSjL9If+sV87TmMt364YH0+e1zVhxCcETUDo3Z9IpnZsKcu2PH ta3A== X-Forwarded-Encrypted: i=1; AKwUvBxvWVYX9FEBCTU+tY9DGU3Bk3Lm5o39vNbOvvFXmOaCHbo16ntQ7m47ZgkCNJPnHPKmkJXbmAUx3GMPLmQ=@vger.kernel.org X-Gm-Message-State: AFuF++m6AG28wlLLiMEJlsq/Om2xBdmkhOaRoI75n7cpNVeSYinRAj4+ 4VBw4Ivr6Jeo7CMYfSytU5OlI9MjwYkuUs9LoVh80PuLeOZ7rBWhMo9A X-Gm-Gg: AR+sD13iMUA87I8C81Z4zPo0MnHN1MhGOjoMwNUKVuiXmcZR5sYyY9gvl5AlvOP9Pm1 8VBghCmu3h+NHn7ehktPrOVA53iaFnbuEM/JJ/IjPPeJVfrQPYxLCNxVYijkONb86I0ndQ3+pdZ NG47j9I9ZEqrXMlsr3XNTR+2EDph8F3AiidJIUmw5+E+jtVu1SG144LWm43SjvFGPZcWLAhYGiF JdnBc94FYB5KBkjx05AdjbR5uFmyDmy2lXyFrW8k4Yb0WUt7PM8oSNmI5K2WPuC0YXT0AtroTlZ issr6r2GiL3UAb7uQgCsb1jKkpI+90MnoqS84BA4LfnPcB5Gp35J90u2XxLnBVjWPysqTLa7QJ1 iPUwWPn99sAG/AOP3l7+zYUsg02V/JVQjZfFMbNybFvDn0yQHfN1oRUDpEMg+xzyoP9Gko6v4I6 VcWAczn8gVB1YMMOXIY69Md8G7X9YbnrRTX05Pp7o7i8tNdhYRAqblDRTATO5HO/r0KbkZ3nPnz 4cjn5CsafErkDbcCjc1oToHX2zmkSg1teeVH6y+8Q== X-Received: by 2002:a17:907:c1b:b0:c25:8878:3e09 with SMTP id a640c23a62f3a-c25d561620amr12442066b.22.1788299197377; Tue, 01 Sep 2026 14:46:37 -0700 (PDT) Received: from buildhost.darklands.se ([2001:9b1:ff:d701:51eb:176f:63d9:53f8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c25cffc70fdsm27500866b.4.2026.09.01.14.46.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 14:46:36 -0700 (PDT) From: Magnus Lindholm To: sparclinux@vger.kernel.org Cc: davem@davemloft.net, andreas@gaisler.com, linux-kernel@vger.kernel.org, sam@ravnborg.org, glaubitz@physik.fu-berlin.de, Magnus Lindholm Subject: [PATCH v3 1/6] sparc32: use memblock when mapping the kernel Date: Tue, 1 Sep 2026 23:45:45 +0200 Message-ID: <20260901214611.60560-2-linmag7@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260901214611.60560-1-linmag7@gmail.com> References: <20260901214611.60560-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 Signed-off-by: Magnus Lindholm Reviewed-by: Sam Ravnborg --- 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 1b24c5e8d73d..23a6383feb15 100644 --- a/arch/sparc/mm/srmmu.c +++ b/arch/sparc/mm/srmmu.c @@ -846,39 +846,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 Sat Sep 26 11:46:59 2026 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) (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 5C90239B94A for ; Tue, 1 Sep 2026 21:46:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788299201; cv=none; b=lEv+SuzOo2MNyx9iPplcmoFeLVwZqD1DjcAckxmtAhfEcw+7EykykkjEDCG9+cRGbq9gyvWf50YYMkrUKd63/8MrQE8MPbHBMyVK7cySzQD6A15ZOrLMsNnpqC9O4gmaI/zH1YAm8I/OAWSgIow84j1bU2W7U8GddVSyYBfTBUU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788299201; c=relaxed/simple; bh=zE1KksifcHbHAHvPFyNIwbkqyuCe7h4Fiw2QNazvKy4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dPKtqmy7REm7+ffezq8xBEFAA1O+hVsDxeCjNu3aZwzmqN4fHkYmgQae5sTIxqaSvXOG2PPKcDrR/QiATmSd5n+NHdR23ZR5R/ZUuH9gz14QxClX9LIAhiODF5ZqFSOakkaGUaTUbOXtZJLYvSUWRpAafR+KNLNKxKrZ8QaX5P0= 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=U2oH4aPu; arc=none smtp.client-ip=209.85.218.50 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="U2oH4aPu" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-c2544ff970dso37530466b.2 for ; Tue, 01 Sep 2026 14:46:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788299199; x=1788903999; 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=5xhEm2040oiMbVomt7wZPED9xDDq0R7WfA01fbUVQBQ=; b=U2oH4aPucRRE0MDxBGJ5Vebc7fF+soCvK03sfyIZSBe2Q1XOJl7TYmFan2xUONxt5n vzOJn5asgjUn/24RVnFfDCjy6EUcAJpBvsZTWlLNzhC7/fXGBhZklnWnFbbnrhtzYxDV 10cKmhIM/ICMxqeZO0hwlX14kzXIitSwn4UI2GIakTZvIWVdncod6Zwaw5Fv1sn5MjCa CnB6/yDY6g7G2xVNp6qhO3uRDAGSG8aaFJtr6odnNpOTnbtwOa7SXuvsOeLmvwjkDbZ9 N57tJn+RmdeB/YqhNJUH9LyeDNyrR5+JtFrlrDu0l6TSUeUiFlZUcfwa4TbyLbdKcGX2 3Ktw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788299199; x=1788903999; 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=5xhEm2040oiMbVomt7wZPED9xDDq0R7WfA01fbUVQBQ=; b=Gozx4uXi7eevLYY3hsI/zvgAzLPc+OFgG4x70wSxuaA8226AKmLLcctVYKe2LErqys 7Hy8XnfrehX98D9eA/XV3bXq2e9L8EXJ8h6v8roiFySSustn8nmrZKSIDKpfdL8OWE20 ot2aydfMT5l7glw+yzv5UYUEqEoSH7gVDfzbDp5D4KE12dzdmVeAHrVzVku5Ji3TLQiJ iNz0Mea/ENsD+GzracNRHPubx8Uqj3v47R9hRGv9AUGOCnYDkoTbECWGYJ6CCbR3L0QN LcJ/S5ujZoj7+A28Yk47lgVO8cX+cSRAvTPo+mLxbbdH2Hm7dYjCH1WSu40deCSnzvO2 Jl1w== X-Forwarded-Encrypted: i=1; AHgh+RrQlkexppDgrygmfoWK5UqaVwTiSdabPcB3P65yK7UNcEkujJDC7ulrdsqulxG/V7ey4RF2LTZlsCTEuL0=@vger.kernel.org X-Gm-Message-State: AFuF++mOHvle6l8ZJBD7F0IQa1EOAKBWTn33r2qp+rIg5ODTXDA0BTQv AUcrjae10Qk/XEEHjdqtes9pZL7+In+JjREAuWakT2rrV2T2g4qeIn61 X-Gm-Gg: AR+sD12qpFPbGLWuyZWxIy/AYCASoe26+qIrVTKxA/Sh1asSm60RzScqZeSWe3Ni0r1 NW3S7E9EhWbI/lC04Jxu1j9VqZcYoXmL11/oWUdqITvEbYDvsRdg4QGg9u8lwnGXMOXnTC6WD+e EeFXtbj5xTfJOnwrJjoVnqJjTk0vJKLltCZmoTwuupHOFZd0GRIMhUFijG9fVkA0tkupQga2zmk zS2ZRuxqc4/if1NA8cRIzTQ5tPS4q20gqvgIvOl0iQJNsnq/Vi/kjEM1w9VbPPP4dskg5vC6fB3 zasO4by9Jz1UUgZCh2VVPPg8KIvmMVLkyqWaXEvEoz03pXwkVSx+jOUHYjNSuH6DJEVt8ZMBdzL +xuuPB9G0S/FniqXOJcwYNNjClwRFXaNedIhexkSh1Ym+YkO0h9iJpXmqkobGkXOGxdf8PcNFiV niUy7Iz0QQ4np0uAzx8gn4tABlLH/l2REDCTjb3aQOmqH8MhEkm2IqAktKfe0Mv50p/alP/wYF+ uc+Htc9gHmsj97Oes21QUAPz0sklew= X-Received: by 2002:a17:907:980a:b0:c25:34c7:44d1 with SMTP id a640c23a62f3a-c25d4c89963mr22663566b.0.1788299198592; Tue, 01 Sep 2026 14:46:38 -0700 (PDT) Received: from buildhost.darklands.se ([2001:9b1:ff:d701:51eb:176f:63d9:53f8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c25cffc70fdsm27500866b.4.2026.09.01.14.46.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 14:46:38 -0700 (PDT) From: Magnus Lindholm To: sparclinux@vger.kernel.org Cc: davem@davemloft.net, andreas@gaisler.com, linux-kernel@vger.kernel.org, sam@ravnborg.org, glaubitz@physik.fu-berlin.de, Magnus Lindholm Subject: [PATCH v3 2/6] sparc32: use memblock to find available system memory Date: Tue, 1 Sep 2026 23:45:46 +0200 Message-ID: <20260901214611.60560-3-linmag7@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260901214611.60560-1-linmag7@gmail.com> References: <20260901214611.60560-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 Signed-off-by: Magnus Lindholm Reviewed-by: Sam Ravnborg --- 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 23a6383feb15..f094f6c105a2 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 Sat Sep 26 11:46:59 2026 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) (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 AA47F448B8E for ; Tue, 1 Sep 2026 21:46:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788299203; cv=none; b=jAJUv+C1ZpETJU5C/xLY7OThhkHui/PhhszFnZ3ju9EPrkf+lVqHiVGnNWP+rrMj5XV7b5ZN/aeLmShAd3Pmdb5jN2cjC4ovyyRPJcny1cS96pMp+sYsHCIF+h4p4gzdVP6Liozr46nCq2rtwh0ckC/wDEoPjGAp4thJHbXQqRk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788299203; c=relaxed/simple; bh=VmbFlELFJ3Rn+I0JOfMdlDLEE3OEnrmuWAkyZTBARKw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ATPVoCsfYQbNM1iZhVVUvDw1NqGq4UYLh4aLpjhSUG89pijmj/WAVdFNYldJJVSGJmiz/PC9IBIU4RZRwckMG7u5yESj49i4nZDomwkQnDsPHeNBzIn1Bw2tw6HLlVhuK01ufvuype0YvxOBpS5LyMe+7Q0eH8YtptJD5Lu6VLA= 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=U1emJxKZ; arc=none smtp.client-ip=209.85.218.44 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="U1emJxKZ" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-c2055573c8cso36118466b.3 for ; Tue, 01 Sep 2026 14:46:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788299200; x=1788904000; 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=uJ7HB4Zmwe3amRULeH6fSoLAudldxAC6NdOXYXWuTOQ=; b=U1emJxKZL//hS/mmCC/CoUxxCJeKsV5aRjHLMPZcqIiLPM8Y0pDao3UOvbrJ20joq3 8UTd1pCr9lVT6Zgk9C2jMgzKNQyM4a161yVOzAxEagafd5Igp6cyFbt63jhV0F/AMF7d WPYScR6OvmQWrMbVUDopRcf/1mNUf2j2Ny0n18fgp/n4DsNLPKas5iwQ9tuBR8Tk6zec 0EXe0Y42xFGDVfud/gel3n+eKY+nLRT2ce/h1JnS+eeHBM93dXlTDNVKQj6vHSySoF+R wCm4GVb7zFPhw97hmpt0CGYJuYGiX1B/5iKd6hOzchlLzuuCCvNdjnfEK6sYhP0OWMfq F1jQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788299200; x=1788904000; 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=uJ7HB4Zmwe3amRULeH6fSoLAudldxAC6NdOXYXWuTOQ=; b=ckhxR+eHwXtwzVk7Gze73r7N6na9Xn3wkRKj5LKO5hYWPfwaLSoYsSro8RLENW7DlG N28d2EfyTbq+S3xkdvKdZPUxGMejuquJ9/qyMVEg3wOx9BHQ/aOy3LaZy/HP1Br6kYW1 dOp82ubjAnAAOW03JK6gE4alyqf3OVfR79uImSR1NYsjpIXGytjFFwxe6YMXNBuo7+ij 7A/PDePqOPiHOAn5U4be8TMtokh93CVX0c48RGvNb5rNQ3StFeHmBQuHsq//cU2R6r3D ajARLyXpNi/af0mgGBsZa7zkE5dpa31ebxAGVgrd5UuT5+/m2+EjcGSTqCWRdkbgtqI2 ymTA== X-Forwarded-Encrypted: i=1; AHgh+RqJYTzzyfzPmemARN+u76KeOH8xASDQE00abOX/ZUjEl3BuKch/I7mQg5RaDmSShLWmDxBJQX+67Sb1tHQ=@vger.kernel.org X-Gm-Message-State: AFuF++noipU1TWGqYA6ebfcTzHafuT+WjR9U7hSTDTXqlEyg3LesrtaR opuWEcMnQBs5SLAKcRr/BH8KP2efZTVUI4UzVjAJugQLCwDHM+IeyHIV X-Gm-Gg: AR+sD12JrvN4Oxo3CEldjN6wT49fegO7shIcj/ppngYzP2GbPpgr06rSQvFiNja2IKW r/5cX/Jba9QT0uLs1EV1tksUoi/V1iwoLn8FM78c7c/hovJ3SqRwHd9h9BD6xfGK180GzKz33RC 1R5gNSKvb8ZlRZL+xH7w3VZ4kucdItal1pNcZdUE/maIIqo/lVPaBdU3lsQJBZPQIViqC62H+RU FulqA7MxpMP6oBGRdoffhxfsbhdicQMmc8HxsA7G40ep/7zE7uvbZJnjKHIqBlVJkqcVrrlihED oRT9pvqxy5jZbgr1p1JOULxN6xrGzpgrjphPnM55YhyZwKxwfWq2ZE64CJP8ej0v5LA1bIg72fG XTr+UrRe/fUB6qfcbEv1eaTPK/GDtdmeYIE/W0guw5egimZV7CvLs1oO//icYuPHdlUPHIv1HeZ jL6wwLFbIE5Q/Y6uW/Kt9Z7hdj42U/6fj/sVoJZtSVegHUZbP14y7a//CEid+5tFoIWoLO1S2se X/c2H6OukaCtCXmMbOehMzUE2VmWgE= X-Received: by 2002:a17:907:80c:b0:c1c:5aa1:de57 with SMTP id a640c23a62f3a-c25d548f0ccmr12610166b.13.1788299199717; Tue, 01 Sep 2026 14:46:39 -0700 (PDT) Received: from buildhost.darklands.se ([2001:9b1:ff:d701:51eb:176f:63d9:53f8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c25cffc70fdsm27500866b.4.2026.09.01.14.46.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 14:46:39 -0700 (PDT) From: Magnus Lindholm To: sparclinux@vger.kernel.org Cc: davem@davemloft.net, andreas@gaisler.com, linux-kernel@vger.kernel.org, sam@ravnborg.org, glaubitz@physik.fu-berlin.de, Magnus Lindholm Subject: [PATCH v3 3/6] sparc32: populate memblock from the PROM memory map Date: Tue, 1 Sep 2026 23:45:47 +0200 Message-ID: <20260901214611.60560-4-linmag7@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260901214611.60560-1-linmag7@gmail.com> References: <20260901214611.60560-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 Signed-off-by: Magnus Lindholm Reviewed-by: Sam Ravnborg --- 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 Sat Sep 26 11:46:59 2026 Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) (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 3972A3DDB1F for ; Tue, 1 Sep 2026 21:46:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788299204; cv=none; b=W17McDiB5EGJ5EYTmjGKAWx3ip9/7WB1oAAntOARdrY80essEwQCdfLLR1ukuP6EKD4RyGj7FAsoxp96kgtyWJZKuWlIC6p4akHSmPJn9WJ5b7HNroO/QM7iI/pPpBBDw7XdekEXf1aPUPSZFXU+Tyl79NzPKrMHLJdw1XQ17FQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788299204; c=relaxed/simple; bh=z+smutewlOq/DVax40CqKK7q1Y7YvZUwgS3R4KOIJ/Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aGo4YoQx1vIslko0mIpJ71jqIYFerwj0/QqTasqcwAWJlGlwocdDA8bLylAdtAL+vDcs1aUQCOMgJz9Jor7X/W839Y+JW5kUREL49vunFYjfGwHeTesQjMo0duBXHYaAhTtfJ8gr8a1Zlea34gY+/CxSkSPKcI00wgSwup+croo= 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=Wbd1D/hP; arc=none smtp.client-ip=209.85.218.45 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="Wbd1D/hP" Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-c2055573c8cso36120666b.3 for ; Tue, 01 Sep 2026 14:46:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788299201; x=1788904001; 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=yiQkNyFj/w6aOeqdi5RimSxmu3RrYESQzCuwF1FuMeo=; b=Wbd1D/hPpOGUfCMd3HsWyo0SWLBzdC3827/KrsQgdIU310mgnJsJnOgfw9JkLtGNnO DhteeuOmObBQs7D6iRUjZfDTh+Bt4Ufmqu89NEV2cqANrsMclw7hD2Jx+n0qahfSO8S8 Lal2U4WN9GcLv7P1V6fZs1VC65NkVeJiLPkCL+Bs219Iz3GL/hwM4nmQQ6k75rQpgKQC hgxnxuBw7R0ajpQ+oboZMsXUs8pK2lLzbrTV7G8P/vwdbQFRibbtdxUUeNnnZuKE7j51 4mFwAffBEaympy8wGgndRm6aBNqZoik3Mry0so7m11MD82Ots121AII1y+lGcgTOTeDr T/4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788299201; x=1788904001; 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=yiQkNyFj/w6aOeqdi5RimSxmu3RrYESQzCuwF1FuMeo=; b=cazRCxU1PY64n8zFKc9NX8ClYBrdk9d6CHzGCjM4tHAQJ08eJmwBBnffiW+4+D05bJ zkDzAb2gy2TalYOuBYuUfzSrA8eued9JmNQo60zH2ozIaS6IoYDK/Rx+s15qs8o/aujV a27ZB2wZJMDWViopJlVPXJ2kogQR+Kajxw0uD2TdpDTKWTqeI2SJVU3+XYYYxHItE/jq NEVA5Nzq/j9EArgu3/7AKOKrEwwwnRFyZpyJp8VsBMeaBgOpdyekH7drUlNA7qRmb0Rz E38mGbDXqEVGLecjSW+mW1Zfa93+p0fbBvKuVcaCvniFg6CENcWclFgv2PkIKCsA88m9 6vlA== X-Forwarded-Encrypted: i=1; AHgh+RqFo4YZvtAuXhM8uVk8dzioKFcBp6/dh/cePoKfihSNNCLiz6xt9Uz0CGC0j5biKZElus1PsvhPiCzfIF0=@vger.kernel.org X-Gm-Message-State: AFuF++mjul9L/k6dvPiB6J5EfjlQMliuTUrH+oKGttr9PgQzswa7GMls 5HeNAUWyaCEKwjt93bXtbJXqjyzoX5rK78BqTBPcZcFnHnKHqLsuKdrN7oywIg== X-Gm-Gg: AR+sD10u9WxBVSR+VzBiXKulxHzix3DH3nAQiwRoEGThg8vfirMwFUIJ7r9T7epXOJc y2QlH/Vs8InLa2RTFQeD1J4ct/AFuU/Bvw19S22FhoVBwn0wSXmiO7jyMWVnr78pwd0MEtQ70Cx f7mbE9k4vFmlmUIPVIdthAbg3fC+PX2NXej8n8JKFYiFMPzM1JpdEyBUkDrXGNMtf8zbTAlZRtP OnoDUV5TP8WSfrRoRCQQTUCyMP+c1HHh2UofYuVH8OgdpASDeDtoO+m5JtpN4iz25iMcLk1hiGk eOCEp+5ikD3Rr3dFs7gMF3l9aTtQ3lvUGnQx9aOdGYa+ttb/+14Fml0pvmUJhC11lZkxCH9cGT4 DbjwyZHlxc1aSc3IywjzOrkn9IJII8mtsxE8s2SVP+uEPIfg5bKaXZCo5TvGMQK5qT0UHysVxxM GZt5YswWCRW9/hQbmS8RpCrXqJSgcQZHh/XDm574oMDTi1YeKDNsgPjAnK6C2sdWnyzqp0+PLW9 0LRVXrgYGbJH6W/s+BadAOYFVcRwwaq9euEZdscyA== X-Received: by 2002:a17:906:478d:b0:c25:848a:4a8d with SMTP id a640c23a62f3a-c25d52875e3mr17277066b.5.1788299201163; Tue, 01 Sep 2026 14:46:41 -0700 (PDT) Received: from buildhost.darklands.se ([2001:9b1:ff:d701:51eb:176f:63d9:53f8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c25cffc70fdsm27500866b.4.2026.09.01.14.46.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 14:46:40 -0700 (PDT) From: Magnus Lindholm To: sparclinux@vger.kernel.org Cc: davem@davemloft.net, andreas@gaisler.com, linux-kernel@vger.kernel.org, sam@ravnborg.org, glaubitz@physik.fu-berlin.de, Magnus Lindholm Subject: [PATCH v3 4/6] sparc32: drop unused valid address bitmap Date: Tue, 1 Sep 2026 23:45:48 +0200 Message-ID: <20260901214611.60560-5-linmag7@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260901214611.60560-1-linmag7@gmail.com> References: <20260901214611.60560-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 Signed-off-by: Magnus Lindholm Reviewed-by: Sam Ravnborg --- 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 Sat Sep 26 11:46:59 2026 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (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 5F75845FFA6 for ; Tue, 1 Sep 2026 21:46:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788299208; cv=none; b=RDTv6ja2lSWWap1s6BykomP8X5IxoggKnncQb2JcXgbWMuudrB12OkB1TjfM9tiwNKOj/WyJAKzc60m8FRpNkNfNDy/VRi/bfdqQaKmWtuFSipS+FX74239Uc6JFLwFK1NVfWfNVUW9ca4JrK3PFYuOHbXdrgrY+GSw27EOQV9k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788299208; c=relaxed/simple; bh=xkHk4MuXc5lr4jC4UT0ZGrYsNjH0gVMEDgW6mvaMF6o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eDfCne35A59COjD021ypOAHK10WugIGh9LtA/XnoLrdl4Is2IwzEQyqKiyk8ODfsP8dH7cHM37YmJkfBUAzthaR7ZXDhYEIzFf4+YLmV4aX/WP7amyiHHEQbFZ4fWcAQ0qx6CQSCcgGhSIut96iEXETHMtDFvb8DFz20G/lX1hk= 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=q6Xc/FYn; arc=none smtp.client-ip=209.85.218.54 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="q6Xc/FYn" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-c253425b253so36570466b.1 for ; Tue, 01 Sep 2026 14:46:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788299203; x=1788904003; 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=UGm4IDGvOdbWdGjGNpIa4Fzo8KiMv00zfoFtZAPxRH4=; b=q6Xc/FYn/ZjRzfOeFsBBmCXca574WBzlmqn6+5QVS21LvslMXkGnaf0TpveRHeVDUN 3/23FqzfUteg1b/GpG3Cn0kHUWFmpC38etCewJFu2lYlKPgiGrnAH4EQtzk5i+vcTXnT HIxEYs0auWLjgr+arXkR0ZTFHwJGZ7arb7XByx99X/HJ+rLT1jM1xgPYfcD+u/wN/2Yw r7L5JtfSisovuAF8uQtgURgPv1vjY3WZJz1HcDWxrBdPotGt/EmxSl4R9fzm+XYlXLiI jjvVYSyajEPwsbUXlCu6c+rZ6x8BwuPax8nSj5+EaZihvmciSLF92SFRLZQvqUmi7MxD TcUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788299203; x=1788904003; 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=UGm4IDGvOdbWdGjGNpIa4Fzo8KiMv00zfoFtZAPxRH4=; b=fBXh8U4qT9nOx7z3H4F0xkXVAuteo9EmzNCHNo3PQAF0ciK2fATWGwSgRNKk54hafd pJBeCoFXE0Msf1TCgpLl9pudJ/wRQF3st7SMGOGbUghojgB8GoZjY/frZw9Xy7CB4VPT +HLpKRCARLNtca3LSxbv+G+G0ar3ihWc+2IpWUxdsXZKcK2mLK/RREkEH+pR+NdFqZ5r JuZpKKCUQSaOJ3Radtk/RbfcBRU0EwtEcwsY54E39wIPNuhj3mGFuYIcReEQuH5HyqBt M/CD0CDViz3HTRxEBwIdj2UoHVpZ33qNQJ97bCUzL4ZxMkPtKOwByUPFS75V4S1cV/b9 Kv5A== X-Forwarded-Encrypted: i=1; AHgh+RpTT9FzvNJBAGEZJTTEZ3uSj7KGamqdM2SfgyL1xblpFTMov998/Q+LGgTc9bo33Ko1lruaOoUYqZ1UjGI=@vger.kernel.org X-Gm-Message-State: AFuF++lgZ/xT1OkyE1UJ09BlZoAiF2ypdVm+qlX7RG0nkzsYHmt1gX/s yxJbWCBlIr9dF7y59Xq35o0XISK4edVk1Ql/ax62RHJMIPbm4bmuqgF9 X-Gm-Gg: AR+sD10YPL/2eYf3GpW93QFZT7jBk0iX8WUVCH/iTO2pkJBGAAmtZB7t4fTEZM5pjWN OWEoyMRg5Ag/ticJrMTXuNMR9Glwhz+PfjGgu/fbTXkXs3pkyYcHcRs3nDoSwWOlt1sS731ntYw E35WO4LTKkmxh5c4nZUmpGTokLWjmvzdQB7QvM2hptVk3uQz75Rji0SCs9cmQpZ/dLb+QQvswwY pZt1NZSSjHfTEHM9jynpS+r28/ASNIa+xSQbS5JaSQ9EbErSi7B6sfk4AeN2+tyWY9eHT7OEK0U /5/15Io2P7NjQEADIXE5ncSrXFYUl4CD9kRjnvmdGdSs1BKqC5v0b96EEknQJgeIfTKIkNvnUCh EGAlGz9Feg+Ssomxj7WSTKCnwkTx6Qh4BW6RVlUn6p1f/f/shyufLiyDpskiPBGbRNo9yWtOLaG biGxnH3PKiPv5096aAjhfj/DPnJgS5KgFZW3W18sHAhE65uZAakSO1/0gQbFpuMyA6/gfk30GdF rlgwI/BL/qHd333k/OtPMER7IoLtb4= X-Received: by 2002:a17:907:c48d:b0:c24:b11c:6c05 with SMTP id a640c23a62f3a-c25d543f68bmr17528766b.14.1788299202593; Tue, 01 Sep 2026 14:46:42 -0700 (PDT) Received: from buildhost.darklands.se ([2001:9b1:ff:d701:51eb:176f:63d9:53f8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c25cffc70fdsm27500866b.4.2026.09.01.14.46.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 14:46:41 -0700 (PDT) From: Magnus Lindholm To: sparclinux@vger.kernel.org Cc: davem@davemloft.net, andreas@gaisler.com, linux-kernel@vger.kernel.org, sam@ravnborg.org, glaubitz@physik.fu-berlin.de, Magnus Lindholm Subject: [PATCH v3 5/6] sparc32: move early memory setup to setup_arch Date: Tue, 1 Sep 2026 23:45:49 +0200 Message-ID: <20260901214611.60560-6-linmag7@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260901214611.60560-1-linmag7@gmail.com> References: <20260901214611.60560-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 replace last_valid_pfn with the standard max_low_pfn variable. Set the standard max_pfn variable to the end of physical memory and use it as the highmem zone limit. This tightens LEON's _pfn_valid() upper bound from all RAM to the lowmem limit, with no functional change because LEON does not use 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 Signed-off-by: Magnus Lindholm Reviewed-by: Sam Ravnborg --- 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..815131c77ed7 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_low_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 f094f6c105a2..e333d3eac451 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; @@ -871,7 +869,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) @@ -884,7 +882,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. */ @@ -910,9 +907,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 Sat Sep 26 11:46:59 2026 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (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 C9030459AC4 for ; Tue, 1 Sep 2026 21:46:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788299213; cv=none; b=Z5bA1lp4ovh/iB+b22+FLlCpwIb5OZukcHFYp3x+FlFTjfX5pW+TsMwsK+R1RlhMtkgP+e0HNowHZvhcz1Fh0fGCzjqH00+lXTR1/dtew5dZVGSbWlGtmNI+oUQsa5yWyvDWhlvRYKS2reKzrReRhpzBrBXoa6pCRw0G7alIRVw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788299213; c=relaxed/simple; bh=GDJx9sH2sNSxbOwzq4dSkcb9spfCBs4Kvg21wjvIkiU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=E6FkDOYl8gBDeh/hihjfmg2ajvYTZwLaBcsU46vBxIU05b/9cBWOQsRVb0Pa2pt9nM6CuHgqDkv6PuBYO/AsFOAokD2Vkv/Ts1ZlH8+2fdv5IB72ur1TWe/f8EdxPS2GKoukgVp3arFYX9P37ua1LUb81PdV+lePWuH5j3zxTsk= 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=ZCcs465C; arc=none smtp.client-ip=209.85.218.52 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="ZCcs465C" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-c250f28f1cdso50292666b.0 for ; Tue, 01 Sep 2026 14:46:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788299204; x=1788904004; 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=lUPNB03Hug6YvdWlUe1liatgYB+MaJgHVJDKZWHDKdE=; b=ZCcs465CWg0D90E4HsDKDpZQXFZye8tCUZOaH8P0vA/xC9XHetwfDDX0cbnsCQY97M hGqOFb5im7s/A/VAgJiysulu2osF1KL6k5MmVYQw+jW+egYSAUeBgOIzEtOvUbd1t1iH l8GjgMlW3T2ok6MFPaMMWR3tt1nALRT1fFawEl/wMAq5cL8c7Z3eqtj6S4ib1dHJHU4m U1TtOlU9efqubMzCLrHjClaZoF7iTeANm0ppmnTkzcdrkWlnsFH5+XpHD78wphqROZiK BTgNsiZJ67suVOykDZcfjKEJDcGumWD5xyheaVLIGhV9yjW1JoHa4PMJsrPFGz7RQa54 soiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788299204; x=1788904004; 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=lUPNB03Hug6YvdWlUe1liatgYB+MaJgHVJDKZWHDKdE=; b=WbtTplizupFhvFywlSeNd/CoEU8efaLoGmLRIxOeo5326j3oJG6lJN/xQ3sgI4qBtL cjfk5mCweEP44DxEOn5DyyFW++C+WJ3h3Z1fY5hsHvWMn9Uu+fztl84d4vK2wkVT1Jsx 9CHKIxmGKw56sReLf+cEnp5GGxgBG2aG11rpKRl0HlAujnExctsjDGAfi4RTT478Yptb SR2q3AWUCmUFlgvVd0a5FdStaXRBAOFr/BGwHmIUvs53KtwyPt8HHy1opTHyl+6Ctlvs VwO3tuzBxmbB0kQ6twGoejE7yv1Y9q3KYj0YTAERYXCs7GT8hGQCYUCS+BEjs+a48Iog MF+A== X-Forwarded-Encrypted: i=1; AHgh+RqMj5ANKBkEOi0dGWtUKSyDxh7qrTKJWgQVqiv+zTOC34eHBhGzvGQNoeFt+u5QaoYsj66+RcUA5O4DlOY=@vger.kernel.org X-Gm-Message-State: AFuF++mOCN/HuUfbsUmxQr0wxauowSSOPGhgoGv77UMoGw0c25VAmWjd sy8HIHNdGMBHy01IWUT0Q7rSkEmWXRylWNRRQNV/M5Bp14H8xp9hZEcs X-Gm-Gg: AR+sD13sJeGo4CDZP8MRJgZ/0T1oAmAFY7apV9OdysdvDE4AP+4WHvBqgGAAmwo97za 7qqiU+MeBtpP0vXD7JGRenni6dnP1LuDFVv6oO3XsWpZXHnNVj1QPy1kdl8yNWfRrCF9+NRboZV ln/Ub8eUvRD1j70+WhYDsuK2J2HAQHJ+AEL1salbkGiofSo9qsKwDWy8blk1NeWDhN7FOiEGwcC lYok9k1ILf8eUowb37d+Paw0V7hYceBWyapaLiqCcJXeZwgoYc4WJcpq+1XVQroTiXmCbZ9HWZg MAjK12q5eCdstnneKuf4qJSeArLgACC0rHUcFFoQm3eZ60uLu6Pfxqv6D2th+VXM9hkAlq6ql0W twnqpTLMw350Ld63rl45uZLflNT9nhaCaJv8yqEpfUmVtm8PDnpTqxnEt/TNgOrsrL3Lsbjcreu C9YCEyQrta1vBwhmm4LCY11efrwkYJeN5DB2KBY0tXxZs04kyqu1HyORzY2JiUcvPHOV6aUiy76 LJtqCZqyuYnQW0HNeZrW1cStsQ4ZI8z X-Received: by 2002:a17:907:d89:b0:c24:6985:d7a1 with SMTP id a640c23a62f3a-c25d547b88amr14288366b.7.1788299203837; Tue, 01 Sep 2026 14:46:43 -0700 (PDT) Received: from buildhost.darklands.se ([2001:9b1:ff:d701:51eb:176f:63d9:53f8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c25cffc70fdsm27500866b.4.2026.09.01.14.46.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 14:46:43 -0700 (PDT) From: Magnus Lindholm To: sparclinux@vger.kernel.org Cc: davem@davemloft.net, andreas@gaisler.com, linux-kernel@vger.kernel.org, sam@ravnborg.org, glaubitz@physik.fu-berlin.de, Magnus Lindholm Subject: [PATCH v3 6/6] sparc32: drop sp_banks Date: Tue, 1 Sep 2026 23:45:50 +0200 Message-ID: <20260901214611.60560-7-linmag7@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260901214611.60560-1-linmag7@gmail.com> References: <20260901214611.60560-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 Signed-off-by: Magnus Lindholm Reviewed-by: Sam Ravnborg --- 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 c1bccbedf567..5daa5fd8eaa5 100644 --- a/arch/sparc/include/asm/page_32.h +++ b/arch/sparc/include/asm/page_32.h @@ -26,22 +26,6 @@ sparc_flush_page_to_ram(page); \ } 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