qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH v3 3/3] hw/mips/boston: Add FDT generator


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v3 3/3] hw/mips/boston: Add FDT generator
Date: Sun, 3 Oct 2021 19:45:26 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.0

On 10/2/21 20:45, Jiaxun Yang wrote:
> Generate FDT on our own if no dtb argument supplied.
> Avoid introducing unused device in FDT with user supplied dtb.
> 
> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> --
> v2: Address f4bug cmments (Thanks!)
> ---
>  hw/mips/boston.c | 234 +++++++++++++++++++++++++++++++++++++++++++++--
>  1 file changed, 226 insertions(+), 8 deletions(-)

>  static void boston_mach_init(MachineState *machine)
>  {
>      DeviceState *dev;
> @@ -555,21 +771,23 @@ static void boston_mach_init(MachineState *machine)
>                             NULL, 0, EM_MIPS, 1, 0);
>  
>          if (kernel_size) {
> +            int dt_size;
> +            g_autofree const void *dtb_file_data, *dtb_load_data;
>              hwaddr dtb_paddr = QEMU_ALIGN_UP(kernel_high, 64 * KiB);
>              hwaddr dtb_vaddr = cpu_mips_phys_to_kseg0(NULL, dtb_paddr);
>  
>              s->kernel_entry = kernel_entry;
>              if (machine->dtb) {
> -                int dt_size;
> -                g_autofree const void *dtb_file_data, *dtb_load_data;
> -
>                  dtb_file_data = load_device_tree(machine->dtb, &dt_size);
> -                dtb_load_data = boston_fdt_filter(s, dtb_file_data, NULL, 
> &dtb_vaddr);

Isn't it better to let boston_fdt_filter() here, ...

> -
> -                /* Calculate real fdt size after filter */
> -                dt_size = fdt_totalsize(dtb_load_data);
> -                rom_add_blob_fixed("dtb", dtb_load_data, dt_size, dtb_paddr);
> +            } else {
> +                dtb_file_data = create_fdt(s, boston_memmap, &dt_size);

... and pass kernel_cmdline & machine->ram_size to create_fdt(),
filling the bootargs & memory nodes?

>              }
> +
> +            dtb_load_data = boston_fdt_filter(s, dtb_file_data, NULL, 
> &dtb_vaddr);
> +
> +            /* Calculate real fdt size after filter */
> +            dt_size = fdt_totalsize(dtb_load_data);
> +            rom_add_blob_fixed("dtb", dtb_load_data, dt_size, dtb_paddr);
>          } else {
>              /* Try to load file as FIT */
>              fit_err = load_fit(&boston_fit_loader, machine->kernel_filename, 
> s);
> 



reply via email to

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