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: Jiaxun Yang
Subject: Re: [PATCH v3 3/3] hw/mips/boston: Add FDT generator
Date: Sun, 3 Oct 2021 21:20:03 +0100
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.1.2



在 2021/10/3 18:45, Philippe Mathieu-Daudé 写道:
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?
That will be done in boston_fdt_filter, which shares between FDT generator path
and dtb file path.

Thanks.
- Jiaxun

              }
+
+            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]