Incidencia #48449

More than 1GB RAM with pegasos2

Abrir Fecha: 2023-07-28 14:20 Última actualización: 2023-07-28 23:54

Informador:
Propietario:
Tipo:
Estado:
Open [Owner assigned]
Componente:
Hito:
(Ninguno)
Prioridad:
5 - Medium
Gravedad:
5 - Medium
Resolución:
Ninguno
Fichero:
Ninguno
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

Apologies if you already know the issue here, but wanted to share in case it reveals anything new.

A newer firmware is available at https://morph.zone/modules/newbb_plus/viewtopic.php?forum=53&topic_id=13586&post_id=156631&viewmode=flat&sortorder=0&showonepost=1

With this firmware, when increasing the RAM to 2GB it complains about the density value. I could not for the life of me get it to work mucking with the eeprom values. And as far as I can see from https://www.rom.by/files/4_01_02_04R13.PDF / https://en.wikipedia.org/wiki/Serial_presence_detect the value is correct. bit 0 of byte 31 should be set to 1 and as far as I can tell it is. I also see conversations where people are discussing a single 2gb kingston dimm that works with their systems, so it would seems to me either 1 or 2 gb bank density would be required depending on the number of banks.

PegasosII Boot Strap (c) 2002-2004 bplan GmbH
Running on CPU PVR:80020102
Enable L1 ICache...                                                    Done.
Clean/Flush Block enabled
Reading W83194 :                                                       FAILED.
Setting Front Side Bus to 133MHz...                                    FAILED.
Memory changed since last boot
Configuring Memory
Error Detecting Module Density
Memory Config FAILED
Configuring PCI0...                                                    Done.
Configuring PCI1...                                                    Done.
Configuring ETH...                                                     Done.
Releasing IDE reset ...                                                Done.
Configuring Legacy Devices
Initializing KBD...                                                    Done.
Testing 00000000 Bytes, Pass: 00000000 Failed: 00000000
RAM TEST (fill random)...                                              Done.

Interestingly this happens if I comment out this malta bug workaround such that there's just 1 bank even with 1GB. https://gitlab.com/qemu-project/qemu/-/blob/master/hw/i2c/smbus_eeprom.c#L237-241

Using two dimms does work. I don't know if conditionally doing something like if 2gb is specified; as far as I can tell the only value permitted over 1gb.

diff --git a/hw/ppc/pegasos2.c b/hw/ppc/pegasos2.c
index 4447bbe8ec..c7bd2bb639 100644
--- a/hw/ppc/pegasos2.c
+++ b/hw/ppc/pegasos2.c
@@ -195,8 +195,9 @@ static void pegasos2_init(MachineState *machine)
 
     dev = PCI_DEVICE(object_resolve_path_component(via, "pm"));
     i2c_bus = I2C_BUS(qdev_get_child_bus(DEVICE(dev), "i2c"));
-    spd_data = spd_data_generate(DDR, machine->ram_size);
+    spd_data = spd_data_generate(DDR, machine->ram_size/2);
     smbus_eeprom_init_one(i2c_bus, 0x57, spd_data);
+    smbus_eeprom_init_one(i2c_bus, 0x56, spd_data);
 
     /* other PC hardware */
     pci_vga_init(pci_bus);

PegasosII Boot Strap (c) 2002-2004 bplan GmbH
Running on CPU PVR:80020102
Enable L1 ICache...                                                    Done.
Clean/Flush Block enabled
Reading W83194 :                                                       FAILED.
Setting Front Side Bus to 133MHz...                                    FAILED.
Memory changed since last boot
Configuring Memory
QZFQZFQZFQZFQZFQZFQZFQZFQZFQZFQZFQZFQZFQZFQZFQZFQZFQZFQZFQZFQZFQZFQZFQZFMemory Config Done
Configuring PCI0...                                                    Done.
Configuring PCI1...                                                    Done.
Configuring ETH...                                                     Done.
Releasing IDE reset ...                                                Done.
Configuring Legacy Devices
Initializing KBD...                                                    Done.
Testing 80000000 Bytes, Pass: 00000000 Failed: 00000000
RAM TEST (fill random)...                                              Done.

Ticket History (3/3 Histories)

2023-07-28 14:20 Updated by: jmontleon
  • New Ticket "More than 1GB RAM with pegasos2" created
2023-07-28 22:39 Updated by: balaton
Comentario

Thanks for the report and analysis. I knew about the problem but considered only for AmigaOS because booting without firmware using -kernel boot.img which is the preferred way as the firmware is non-free and boots slower anyway, this isn't a problem and MorphOS booted with -kernel already for a while. (Now also AmigaOS can be booted with -kernel using BBoot in another subproject from the front page). QEMU is currnetly in freeze for 8.1 release but once development is open again I can send a patch upstream with tis. I'll probably make it conditional just to avoid additional delay with reading an additional EEPROM unless it's needed. Or I may want to restore the ability od spd_data_generate() to better support splitting RAM into SIMM size pieces so the differnte SIMMs don't need to be half of RAM that I orginally had but was lost in simplification in the meantime.

I did not understand the comment about the malta fix causing two banks to be added. Is that a problem with this patch or removing that would also fix this or how does that relate to the issue?

2023-07-28 23:54 Updated by: jmontleon
Comentario

Regarding the malta fix creating two banks, I was attempting to explain that I believe it's the only reason 1GB works right now. Without the split into 2 banks you end up with 1 bank with a density of 1GB. In that case it throws the same error as if you were trying to use 2 banks each with 1GB density. With the split you end up with two banks with 512MB so the firmware is happy.

Attachment File List

No attachments

Editar

Please login to add comment to this ticket » Entrar