qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 3/4] mips_fulong2e: Dynamically generate SPD EEP


From: Philippe Mathieu-Daudé
Subject: Re: [Qemu-devel] [PATCH 3/4] mips_fulong2e: Dynamically generate SPD EEPROM data
Date: Tue, 12 Feb 2019 01:00:23 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0

On 2/11/19 5:01 AM, BALATON Zoltan wrote:
> 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>

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 10e6ed585a..eec6fd02c8 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)
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]