]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
powerpc/fadump: define MIN_RMA in bytes rather than MB
authorSayali Patil <sayalip@linux.ibm.com>
Tue, 16 Jun 2026 06:14:35 +0000 (11:44 +0530)
committerMadhavan Srinivasan <maddy@linux.ibm.com>
Tue, 16 Jun 2026 09:38:25 +0000 (15:08 +0530)
The MIN_RMA size checks in fadump_setup_param_area() use
(MIN_RMA * 1024 * 1024), which is evaluated in int and can
overflow when MIN_RMA is increased to values such as SZ_2G,
triggering compiler warnings such as:

warning: integer overflow in expression of type 'int'
results in '0' [-Woverflow]

Define MIN_RMA directly in bytes using SZ_1M and update the
callers accordingly. This avoids repeated unit conversions and
prevents integer overflow.

Also convert MIN_RMA back to MB when populating the firmware
architecture vector, since firmware expects the value in MB.

Suggested-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Sayali Patil <sayalip@linux.ibm.com>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/310b040acef712fdc79e3e37d0f4c2213938b556.1781589284.git.sayalip@linux.ibm.com
arch/powerpc/include/asm/prom.h
arch/powerpc/kernel/fadump.c
arch/powerpc/kernel/prom_init.c

index f679a11a7e7f0310d87b321e2c3d6454f01716d3..f4991d10d89ec262414bc4ce43d1be00b6714756 100644 (file)
  * Updates for PPC64 by Peter Bergner & David Engebretsen, IBM Corp.
  */
 #include <linux/types.h>
+#include <linux/sizes.h>
 #include <asm/firmware.h>
 
 struct device_node;
 struct property;
 
-#define MIN_RMA                        768             /* Minimum RMA (in MB) for CAS negotiation */
+/* Minimum RMA in bytes for CAS negotiation */
+#define MIN_RMA                        (768ULL * SZ_1M)
 
 #define OF_DT_BEGIN_NODE       0x1             /* Start of node, full name */
 #define OF_DT_END_NODE         0x2             /* End node */
index a313b1653124bf490565124d73503945b068f432..7f79c9aea4a9276df79577fa41484a6c12a3245f 100644 (file)
@@ -1759,10 +1759,10 @@ void __init fadump_setup_param_area(void)
                 * 2. The range should be between MIN_RMA and RMA size (ppc64_rma_size)
                 * 3. It must not overlap with the fadump reserved area.
                 */
-               if (ppc64_rma_size < MIN_RMA*1024*1024)
+               if (ppc64_rma_size < MIN_RMA)
                        return;
 
-               range_start = MIN_RMA * 1024 * 1024;
+               range_start = MIN_RMA;
                range_end = min(ppc64_rma_size, fw_dump.boot_mem_top);
        }
 
index f26e80cbc61563feaf7c59a2a6452e85f678c770..53503937de0eef1d37d4c592347e257e2807189f 100644 (file)
@@ -1061,7 +1061,7 @@ static const struct ibm_arch_vec ibm_architecture_vec_template __initconst = {
                .virt_base = cpu_to_be32(0xffffffff),
                .virt_size = cpu_to_be32(0xffffffff),
                .load_base = cpu_to_be32(0xffffffff),
-               .min_rma = cpu_to_be32(MIN_RMA),
+               .min_rma = cpu_to_be32(MIN_RMA / SZ_1M),
                .min_load = cpu_to_be32(0xffffffff),    /* full client load */
                .min_rma_percent = 0,   /* min RMA percentage of total RAM */
                .max_pft_size = 48,     /* max log_2(hash table size) */