From b0542322bfd7bc84fe8572f7536fe48a96e70b57 Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 9 May 2024 00:47:45 +0200 Subject: [PATCH] Fixed DRB DIMM splitting (AMI Apollo now boots with 8 MB RAM), and extended the MB500N workaround to MR BIOS'es as well. --- src/chipset/intel_4x0.c | 2 +- src/mem/spd.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/chipset/intel_4x0.c b/src/chipset/intel_4x0.c index 26a973be0..9a2635b12 100644 --- a/src/chipset/intel_4x0.c +++ b/src/chipset/intel_4x0.c @@ -518,7 +518,7 @@ i4x0_write(int func, int addr, uint8_t val, void *priv) case INTEL_430FX: case INTEL_430VX: case INTEL_430TX: - if (!strcmp(machine_get_internal_name(), "mb500n")) + if (!strcmp(machine_get_internal_name(), "mb500n") || (strstr(machine_get_internal_name(), "mr") != NULL)) regs[0x52] = val; else regs[0x52] = (regs[0x52] & 0xf4) | (val & 0x0b); diff --git a/src/mem/spd.c b/src/mem/spd.c index a3bcba46d..a0896a05a 100644 --- a/src/mem/spd.c +++ b/src/mem/spd.c @@ -136,7 +136,7 @@ spd_populate(uint16_t *rows, uint8_t slot_count, uint16_t total_size, uint16_t m /* Look for a module to split. */ split = 0; for (row = 0; row < slot_count; row++) { - if ((rows[row] < (min_module_size << 1)) || (rows[row] != (1 << log2i(rows[row])))) + if ((rows[row] <= (min_module_size << 1)) || (rows[row] != (1 << log2i(rows[row])))) continue; /* no module here, module is too small to be split, or asymmetric module */ /* Find next empty row. */