[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 8/8] target/mips: fulong2e: Dynamically generate S
From: |
Aleksandar Markovic |
Subject: |
[Qemu-devel] [PULL v2 8/8] target/mips: fulong2e: Dynamically generate SPD EEPROM data |
Date: |
Thu, 21 Feb 2019 19:53:40 +0100 |
From: BALATON Zoltan <address@hidden>
The machine comes with 256M memory module by default but it's
upgradable so it could have different memory size. There was a TODO
comment to replace static SPD EEPROM data with dynamically generated
one to support this. Now that we have a function for that, it's easy
to do. Although this would allow larger RAM sizes, the peculiar memory
map of the machine may need some special handling to map it as low and
high memory. Because I don't know what the correct place would be for
highmem, I've left memory size fixed at 256M for now and TODO is moved
there instead.
Signed-off-by: BALATON Zoltan <address@hidden>
Signed-off-by: Aleksandar Markovic <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Tested-by: Philippe Mathieu-Daudé <address@hidden>
---
hw/mips/mips_fulong2e.c | 31 +++++++++++++------------------
1 file changed, 13 insertions(+), 18 deletions(-)
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index 10e6ed5..eec6fd0 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -214,20 +214,6 @@ static void main_cpu_reset(void *opaque)
}
}
-static const uint8_t eeprom_spd[0x80] = {
- 0x80,0x08,0x07,0x0d,0x09,0x02,0x40,0x00,0x04,0x70,
- 0x70,0x00,0x82,0x10,0x00,0x01,0x0e,0x04,0x0c,0x01,
- 0x02,0x20,0x80,0x75,0x70,0x00,0x00,0x50,0x3c,0x50,
- 0x2d,0x20,0xb0,0xb0,0x50,0x50,0x00,0x00,0x00,0x00,
- 0x00,0x41,0x48,0x3c,0x32,0x75,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x9c,0x7b,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x48,0x42,0x35,0x34,0x41,0x32,
- 0x35,0x36,0x38,0x4b,0x4e,0x2d,0x41,0x37,0x35,0x42,
- 0x20,0x30,0x20
-};
-
static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq
intc,
I2CBus **i2c_bus, ISABus **p_isa_bus)
{
@@ -284,7 +270,6 @@ static void network_init (PCIBus *pci_bus)
static void mips_fulong2e_init(MachineState *machine)
{
- ram_addr_t ram_size = machine->ram_size;
const char *kernel_filename = machine->kernel_filename;
const char *kernel_cmdline = machine->kernel_cmdline;
const char *initrd_filename = machine->initrd_filename;
@@ -292,7 +277,10 @@ static void mips_fulong2e_init(MachineState *machine)
MemoryRegion *address_space_mem = get_system_memory();
MemoryRegion *ram = g_new(MemoryRegion, 1);
MemoryRegion *bios = g_new(MemoryRegion, 1);
+ ram_addr_t ram_size = machine->ram_size;
long bios_size;
+ uint8_t *spd_data;
+ Error *err = NULL;
int64_t kernel_entry;
PCIBus *pci_bus;
ISABus *isa_bus;
@@ -306,7 +294,7 @@ static void mips_fulong2e_init(MachineState *machine)
qemu_register_reset(main_cpu_reset, cpu);
- /* fulong 2e has 256M ram. */
+ /* TODO: support more than 256M RAM as highmem */
ram_size = 256 * MiB;
/* allocate RAM */
@@ -359,8 +347,14 @@ static void mips_fulong2e_init(MachineState *machine)
vt82c686b_southbridge_init(pci_bus, FULONG2E_VIA_SLOT, env->irq[5],
&smbus, &isa_bus);
- /* TODO: Populate SPD eeprom data. */
- smbus_eeprom_init(smbus, 1, eeprom_spd, sizeof(eeprom_spd));
+ /* Populate SPD eeprom data */
+ spd_data = spd_data_generate(DDR, ram_size, &err);
+ if (err) {
+ warn_report_err(err);
+ }
+ if (spd_data) {
+ smbus_eeprom_init_one(smbus, 0x50, spd_data);
+ }
mc146818_rtc_init(isa_bus, 2000, NULL);
@@ -374,6 +368,7 @@ static void mips_fulong2e_machine_init(MachineClass *mc)
mc->init = mips_fulong2e_init;
mc->block_default_type = IF_IDE;
mc->default_cpu_type = MIPS_CPU_TYPE_NAME("Loongson-2E");
+ mc->default_ram_size = 256 * MiB;
}
DEFINE_MACHINE("fulong2e", mips_fulong2e_machine_init)
--
2.7.4
- [Qemu-devel] [PULL v2 0/8] MIPS queue for February 21st, 2019, v2, Aleksandar Markovic, 2019/02/21
- [Qemu-devel] [PULL v2 3/8] tests/tcg: target/mips: Change directory name 'bit-counting' to 'bit-count', Aleksandar Markovic, 2019/02/21
- [Qemu-devel] [PULL v2 6/8] hw/pci-host/bonito.c: Add PCI mem region mapped at the correct address, Aleksandar Markovic, 2019/02/21
- [Qemu-devel] [PULL v2 1/8] hw/misc: mips_itu: Fix 32/64 bit issue in a line involving shift operator, Aleksandar Markovic, 2019/02/21
- [Qemu-devel] [PULL v2 4/8] tests/tcg: target/mips: Add wrappers for MSA integer compare instructions, Aleksandar Markovic, 2019/02/21
- [Qemu-devel] [PULL v2 2/8] tests/tcg: target/mips: Correct path to headers in some test source files, Aleksandar Markovic, 2019/02/21
- [Qemu-devel] [PULL v2 8/8] target/mips: fulong2e: Dynamically generate SPD EEPROM data,
Aleksandar Markovic <=
- [Qemu-devel] [PULL v2 7/8] target/mips: fulong2e: Fix bios flash size, Aleksandar Markovic, 2019/02/21
- [Qemu-devel] [PULL v2 5/8] target/mips: implement QMP query-cpu-definitions command, Aleksandar Markovic, 2019/02/21
- Re: [Qemu-devel] [PULL v2 0/8] MIPS queue for February 21st, 2019, v2, Peter Maydell, 2019/02/22