Re: [Qemu-devel] [PATCH v9 01/11] hw/arm: simplify arm_load_dtb
On 13/08/2019 23:55, Eduardo Habkost wrote: > > CCing ARM maintainers. I'd like to at least get one Acked-by from > them before queueing this on machine-next. > > > On Fri, Aug 09, 2019 at 02:57:21PM +0800, Tao wrote: >> From: Tao Xu >> >> In struct arm_boot_info, kernel_filename, initrd_filename and >> kernel_cmdline are copied from from MachineState. This patch add >> MachineState as a parameter into arm_load_dtb() and move the copy chunk >> of kernel_filename, initrd_filename and kernel_cmdline into >> arm_load_kernel(). >> >> Reviewed-by: Igor Mammedov >> Reviewed-by: Liu Jingqi >> Suggested-by: Igor Mammedov >> Signed-off-by: Tao Xu >> --- >> >> No changes in v9 >> --- >> hw/arm/aspeed.c | 5 + >> hw/arm/boot.c | 14 -- >> hw/arm/collie.c | 8 +--- >> hw/arm/cubieboard.c | 5 + >> hw/arm/exynos4_boards.c | 7 ++- >> hw/arm/highbank.c | 8 +--- >> hw/arm/imx25_pdk.c| 5 + >> hw/arm/integratorcp.c | 8 +--- >> hw/arm/kzm.c | 5 + >> hw/arm/mainstone.c| 5 + >> hw/arm/mcimx6ul-evk.c | 5 + >> hw/arm/mcimx7d-sabre.c| 5 + >> hw/arm/musicpal.c | 8 +--- >> hw/arm/nseries.c | 5 + >> hw/arm/omap_sx1.c | 5 + >> hw/arm/palm.c | 10 ++ >> hw/arm/raspi.c| 6 +- >> hw/arm/realview.c | 5 + >> hw/arm/sabrelite.c| 5 + >> hw/arm/sbsa-ref.c | 3 +-- >> hw/arm/spitz.c| 5 + >> hw/arm/tosa.c | 8 +--- >> hw/arm/versatilepb.c | 5 + >> hw/arm/vexpress.c | 5 + >> hw/arm/virt.c | 8 +++- >> hw/arm/xilinx_zynq.c | 8 +--- >> hw/arm/xlnx-versal-virt.c | 7 ++- >> hw/arm/xlnx-zcu102.c | 5 + >> hw/arm/z2.c | 8 +--- >> include/hw/arm/boot.h | 4 ++-- >> 30 files changed, 43 insertions(+), 147 deletions(-) >> >> diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c >> index 843b708247..f8733b86b9 100644 >> --- a/hw/arm/aspeed.c >> +++ b/hw/arm/aspeed.c >> @@ -241,9 +241,6 @@ static void aspeed_board_init(MachineState *machine, >> write_boot_rom(drive0, FIRMWARE_ADDR, fl->size, _abort); >> } >> >> -aspeed_board_binfo.kernel_filename = machine->kernel_filename; >> -aspeed_board_binfo.initrd_filename = machine->initrd_filename; >> -aspeed_board_binfo.kernel_cmdline = machine->kernel_cmdline; >> aspeed_board_binfo.ram_size = ram_size; >> aspeed_board_binfo.loader_start = sc->info->memmap[ASPEED_SDRAM]; >> aspeed_board_binfo.nb_cpus = bmc->soc.num_cpus; >> @@ -252,7 +249,7 @@ static void aspeed_board_init(MachineState *machine, >> cfg->i2c_init(bmc); >> } >> >> -arm_load_kernel(ARM_CPU(first_cpu), _board_binfo); >> +arm_load_kernel(ARM_CPU(first_cpu), machine, _board_binfo); >> } It looks OK to me. To be noted that the Aspeed machine use machine->kernel_filename to detect it is running without a bootloader which does some special settings, such as unlocking devices. In that case, we emulate the same behaviour. Acked-by: Cédric Le Goater Thanks, C. >> static void palmetto_bmc_i2c_init(AspeedBoardState *bmc) >> diff --git a/hw/arm/boot.c b/hw/arm/boot.c >> index c2b89b3bb9..ba604f8277 100644 >> --- a/hw/arm/boot.c >> +++ b/hw/arm/boot.c >> @@ -524,7 +524,7 @@ static void fdt_add_psci_node(void *fdt) >> } >> >> int arm_load_dtb(hwaddr addr, const struct arm_boot_info *binfo, >> - hwaddr addr_limit, AddressSpace *as) >> + hwaddr addr_limit, AddressSpace *as, MachineState *ms) >> { >> void *fdt = NULL; >> int size, rc, n = 0; >> @@ -627,9 +627,9 @@ int arm_load_dtb(hwaddr addr, const struct arm_boot_info >> *binfo, >> qemu_fdt_add_subnode(fdt, "/chosen"); >> } >> >> -if (binfo->kernel_cmdline && *binfo->kernel_cmdline) { >> +if (ms->kernel_cmdline && *ms->kernel_cmdline) { >> rc = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", >> - binfo->kernel_cmdline); >> + ms->kernel_cmdline); >> if (rc < 0) { >> fprintf(stderr, "couldn't set /chosen/bootargs\n"); >> goto fail; >> @@ -1261,7 +1261,7 @@ static void arm_setup_firmware_boot(ARMCPU *cpu, >> struct arm_boot_info *info) >> */ >> } >> >> -void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info *info) >> +void arm_load_kernel(ARMCPU *cpu, MachineState *ms, struct arm_boot_info >> *info) >> { >> CPUState *cs; >> AddressSpace *as = arm_boot_address_space(cpu, info); >> @@ -1282,7 +1282,9 @@ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info >> *info) >> * doesn't support secure. >> */ >> assert(!(info->secure_board_setup && kvm_enabled())); >> - >> +info->kernel_filename =
Re: [Qemu-devel] [PATCH v9 01/11] hw/arm: simplify arm_load_dtb
On Wed, 14 Aug 2019, at 07:30, Alistair Francis wrote: > On Fri, Aug 9, 2019 at 12:01 AM Tao wrote: > > > > From: Tao Xu > > > > In struct arm_boot_info, kernel_filename, initrd_filename and > > kernel_cmdline are copied from from MachineState. This patch add > > MachineState as a parameter into arm_load_dtb() and move the copy chunk > > of kernel_filename, initrd_filename and kernel_cmdline into > > arm_load_kernel(). > > > > Reviewed-by: Igor Mammedov > > Reviewed-by: Liu Jingqi > > Suggested-by: Igor Mammedov > > Signed-off-by: Tao Xu > > Reviewed-by: Alistair Francis > > Alistair > > > --- > > > > No changes in v9 > > --- > > hw/arm/aspeed.c | 5 + For the ASPEED machines: Acked-by: Andrew Jeffery
Re: [Qemu-devel] [PATCH v9 01/11] hw/arm: simplify arm_load_dtb
On Fri, Aug 9, 2019 at 12:01 AM Tao wrote: > > From: Tao Xu > > In struct arm_boot_info, kernel_filename, initrd_filename and > kernel_cmdline are copied from from MachineState. This patch add > MachineState as a parameter into arm_load_dtb() and move the copy chunk > of kernel_filename, initrd_filename and kernel_cmdline into > arm_load_kernel(). > > Reviewed-by: Igor Mammedov > Reviewed-by: Liu Jingqi > Suggested-by: Igor Mammedov > Signed-off-by: Tao Xu Reviewed-by: Alistair Francis Alistair > --- > > No changes in v9 > --- > hw/arm/aspeed.c | 5 + > hw/arm/boot.c | 14 -- > hw/arm/collie.c | 8 +--- > hw/arm/cubieboard.c | 5 + > hw/arm/exynos4_boards.c | 7 ++- > hw/arm/highbank.c | 8 +--- > hw/arm/imx25_pdk.c| 5 + > hw/arm/integratorcp.c | 8 +--- > hw/arm/kzm.c | 5 + > hw/arm/mainstone.c| 5 + > hw/arm/mcimx6ul-evk.c | 5 + > hw/arm/mcimx7d-sabre.c| 5 + > hw/arm/musicpal.c | 8 +--- > hw/arm/nseries.c | 5 + > hw/arm/omap_sx1.c | 5 + > hw/arm/palm.c | 10 ++ > hw/arm/raspi.c| 6 +- > hw/arm/realview.c | 5 + > hw/arm/sabrelite.c| 5 + > hw/arm/sbsa-ref.c | 3 +-- > hw/arm/spitz.c| 5 + > hw/arm/tosa.c | 8 +--- > hw/arm/versatilepb.c | 5 + > hw/arm/vexpress.c | 5 + > hw/arm/virt.c | 8 +++- > hw/arm/xilinx_zynq.c | 8 +--- > hw/arm/xlnx-versal-virt.c | 7 ++- > hw/arm/xlnx-zcu102.c | 5 + > hw/arm/z2.c | 8 +--- > include/hw/arm/boot.h | 4 ++-- > 30 files changed, 43 insertions(+), 147 deletions(-) > > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c > index 843b708247..f8733b86b9 100644 > --- a/hw/arm/aspeed.c > +++ b/hw/arm/aspeed.c > @@ -241,9 +241,6 @@ static void aspeed_board_init(MachineState *machine, > write_boot_rom(drive0, FIRMWARE_ADDR, fl->size, _abort); > } > > -aspeed_board_binfo.kernel_filename = machine->kernel_filename; > -aspeed_board_binfo.initrd_filename = machine->initrd_filename; > -aspeed_board_binfo.kernel_cmdline = machine->kernel_cmdline; > aspeed_board_binfo.ram_size = ram_size; > aspeed_board_binfo.loader_start = sc->info->memmap[ASPEED_SDRAM]; > aspeed_board_binfo.nb_cpus = bmc->soc.num_cpus; > @@ -252,7 +249,7 @@ static void aspeed_board_init(MachineState *machine, > cfg->i2c_init(bmc); > } > > -arm_load_kernel(ARM_CPU(first_cpu), _board_binfo); > +arm_load_kernel(ARM_CPU(first_cpu), machine, _board_binfo); > } > > static void palmetto_bmc_i2c_init(AspeedBoardState *bmc) > diff --git a/hw/arm/boot.c b/hw/arm/boot.c > index c2b89b3bb9..ba604f8277 100644 > --- a/hw/arm/boot.c > +++ b/hw/arm/boot.c > @@ -524,7 +524,7 @@ static void fdt_add_psci_node(void *fdt) > } > > int arm_load_dtb(hwaddr addr, const struct arm_boot_info *binfo, > - hwaddr addr_limit, AddressSpace *as) > + hwaddr addr_limit, AddressSpace *as, MachineState *ms) > { > void *fdt = NULL; > int size, rc, n = 0; > @@ -627,9 +627,9 @@ int arm_load_dtb(hwaddr addr, const struct arm_boot_info > *binfo, > qemu_fdt_add_subnode(fdt, "/chosen"); > } > > -if (binfo->kernel_cmdline && *binfo->kernel_cmdline) { > +if (ms->kernel_cmdline && *ms->kernel_cmdline) { > rc = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", > - binfo->kernel_cmdline); > + ms->kernel_cmdline); > if (rc < 0) { > fprintf(stderr, "couldn't set /chosen/bootargs\n"); > goto fail; > @@ -1261,7 +1261,7 @@ static void arm_setup_firmware_boot(ARMCPU *cpu, struct > arm_boot_info *info) > */ > } > > -void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info *info) > +void arm_load_kernel(ARMCPU *cpu, MachineState *ms, struct arm_boot_info > *info) > { > CPUState *cs; > AddressSpace *as = arm_boot_address_space(cpu, info); > @@ -1282,7 +1282,9 @@ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info > *info) > * doesn't support secure. > */ > assert(!(info->secure_board_setup && kvm_enabled())); > - > +info->kernel_filename = ms->kernel_filename; > +info->kernel_cmdline = ms->kernel_cmdline; > +info->initrd_filename = ms->initrd_filename; > info->dtb_filename = qemu_opt_get(qemu_get_machine_opts(), "dtb"); > info->dtb_limit = 0; > > @@ -1294,7 +1296,7 @@ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info > *info) > } > > if (!info->skip_dtb_autoload && have_dtb(info)) { > -if (arm_load_dtb(info->dtb_start, info, info->dtb_limit, as) < 0) { > +if (arm_load_dtb(info->dtb_start, info, info->dtb_limit, as, ms) < > 0) { >
Re: [Qemu-devel] [PATCH v9 01/11] hw/arm: simplify arm_load_dtb
CCing ARM maintainers. I'd like to at least get one Acked-by from them before queueing this on machine-next. On Fri, Aug 09, 2019 at 02:57:21PM +0800, Tao wrote: > From: Tao Xu > > In struct arm_boot_info, kernel_filename, initrd_filename and > kernel_cmdline are copied from from MachineState. This patch add > MachineState as a parameter into arm_load_dtb() and move the copy chunk > of kernel_filename, initrd_filename and kernel_cmdline into > arm_load_kernel(). > > Reviewed-by: Igor Mammedov > Reviewed-by: Liu Jingqi > Suggested-by: Igor Mammedov > Signed-off-by: Tao Xu > --- > > No changes in v9 > --- > hw/arm/aspeed.c | 5 + > hw/arm/boot.c | 14 -- > hw/arm/collie.c | 8 +--- > hw/arm/cubieboard.c | 5 + > hw/arm/exynos4_boards.c | 7 ++- > hw/arm/highbank.c | 8 +--- > hw/arm/imx25_pdk.c| 5 + > hw/arm/integratorcp.c | 8 +--- > hw/arm/kzm.c | 5 + > hw/arm/mainstone.c| 5 + > hw/arm/mcimx6ul-evk.c | 5 + > hw/arm/mcimx7d-sabre.c| 5 + > hw/arm/musicpal.c | 8 +--- > hw/arm/nseries.c | 5 + > hw/arm/omap_sx1.c | 5 + > hw/arm/palm.c | 10 ++ > hw/arm/raspi.c| 6 +- > hw/arm/realview.c | 5 + > hw/arm/sabrelite.c| 5 + > hw/arm/sbsa-ref.c | 3 +-- > hw/arm/spitz.c| 5 + > hw/arm/tosa.c | 8 +--- > hw/arm/versatilepb.c | 5 + > hw/arm/vexpress.c | 5 + > hw/arm/virt.c | 8 +++- > hw/arm/xilinx_zynq.c | 8 +--- > hw/arm/xlnx-versal-virt.c | 7 ++- > hw/arm/xlnx-zcu102.c | 5 + > hw/arm/z2.c | 8 +--- > include/hw/arm/boot.h | 4 ++-- > 30 files changed, 43 insertions(+), 147 deletions(-) > > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c > index 843b708247..f8733b86b9 100644 > --- a/hw/arm/aspeed.c > +++ b/hw/arm/aspeed.c > @@ -241,9 +241,6 @@ static void aspeed_board_init(MachineState *machine, > write_boot_rom(drive0, FIRMWARE_ADDR, fl->size, _abort); > } > > -aspeed_board_binfo.kernel_filename = machine->kernel_filename; > -aspeed_board_binfo.initrd_filename = machine->initrd_filename; > -aspeed_board_binfo.kernel_cmdline = machine->kernel_cmdline; > aspeed_board_binfo.ram_size = ram_size; > aspeed_board_binfo.loader_start = sc->info->memmap[ASPEED_SDRAM]; > aspeed_board_binfo.nb_cpus = bmc->soc.num_cpus; > @@ -252,7 +249,7 @@ static void aspeed_board_init(MachineState *machine, > cfg->i2c_init(bmc); > } > > -arm_load_kernel(ARM_CPU(first_cpu), _board_binfo); > +arm_load_kernel(ARM_CPU(first_cpu), machine, _board_binfo); > } > > static void palmetto_bmc_i2c_init(AspeedBoardState *bmc) > diff --git a/hw/arm/boot.c b/hw/arm/boot.c > index c2b89b3bb9..ba604f8277 100644 > --- a/hw/arm/boot.c > +++ b/hw/arm/boot.c > @@ -524,7 +524,7 @@ static void fdt_add_psci_node(void *fdt) > } > > int arm_load_dtb(hwaddr addr, const struct arm_boot_info *binfo, > - hwaddr addr_limit, AddressSpace *as) > + hwaddr addr_limit, AddressSpace *as, MachineState *ms) > { > void *fdt = NULL; > int size, rc, n = 0; > @@ -627,9 +627,9 @@ int arm_load_dtb(hwaddr addr, const struct arm_boot_info > *binfo, > qemu_fdt_add_subnode(fdt, "/chosen"); > } > > -if (binfo->kernel_cmdline && *binfo->kernel_cmdline) { > +if (ms->kernel_cmdline && *ms->kernel_cmdline) { > rc = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", > - binfo->kernel_cmdline); > + ms->kernel_cmdline); > if (rc < 0) { > fprintf(stderr, "couldn't set /chosen/bootargs\n"); > goto fail; > @@ -1261,7 +1261,7 @@ static void arm_setup_firmware_boot(ARMCPU *cpu, struct > arm_boot_info *info) > */ > } > > -void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info *info) > +void arm_load_kernel(ARMCPU *cpu, MachineState *ms, struct arm_boot_info > *info) > { > CPUState *cs; > AddressSpace *as = arm_boot_address_space(cpu, info); > @@ -1282,7 +1282,9 @@ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info > *info) > * doesn't support secure. > */ > assert(!(info->secure_board_setup && kvm_enabled())); > - > +info->kernel_filename = ms->kernel_filename; > +info->kernel_cmdline = ms->kernel_cmdline; > +info->initrd_filename = ms->initrd_filename; > info->dtb_filename = qemu_opt_get(qemu_get_machine_opts(), "dtb"); > info->dtb_limit = 0; > > @@ -1294,7 +1296,7 @@ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info > *info) > } > > if (!info->skip_dtb_autoload && have_dtb(info)) { > -if (arm_load_dtb(info->dtb_start, info, info->dtb_limit,
[Qemu-devel] [PATCH v9 01/11] hw/arm: simplify arm_load_dtb
From: Tao Xu In struct arm_boot_info, kernel_filename, initrd_filename and kernel_cmdline are copied from from MachineState. This patch add MachineState as a parameter into arm_load_dtb() and move the copy chunk of kernel_filename, initrd_filename and kernel_cmdline into arm_load_kernel(). Reviewed-by: Igor Mammedov Reviewed-by: Liu Jingqi Suggested-by: Igor Mammedov Signed-off-by: Tao Xu --- No changes in v9 --- hw/arm/aspeed.c | 5 + hw/arm/boot.c | 14 -- hw/arm/collie.c | 8 +--- hw/arm/cubieboard.c | 5 + hw/arm/exynos4_boards.c | 7 ++- hw/arm/highbank.c | 8 +--- hw/arm/imx25_pdk.c| 5 + hw/arm/integratorcp.c | 8 +--- hw/arm/kzm.c | 5 + hw/arm/mainstone.c| 5 + hw/arm/mcimx6ul-evk.c | 5 + hw/arm/mcimx7d-sabre.c| 5 + hw/arm/musicpal.c | 8 +--- hw/arm/nseries.c | 5 + hw/arm/omap_sx1.c | 5 + hw/arm/palm.c | 10 ++ hw/arm/raspi.c| 6 +- hw/arm/realview.c | 5 + hw/arm/sabrelite.c| 5 + hw/arm/sbsa-ref.c | 3 +-- hw/arm/spitz.c| 5 + hw/arm/tosa.c | 8 +--- hw/arm/versatilepb.c | 5 + hw/arm/vexpress.c | 5 + hw/arm/virt.c | 8 +++- hw/arm/xilinx_zynq.c | 8 +--- hw/arm/xlnx-versal-virt.c | 7 ++- hw/arm/xlnx-zcu102.c | 5 + hw/arm/z2.c | 8 +--- include/hw/arm/boot.h | 4 ++-- 30 files changed, 43 insertions(+), 147 deletions(-) diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 843b708247..f8733b86b9 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -241,9 +241,6 @@ static void aspeed_board_init(MachineState *machine, write_boot_rom(drive0, FIRMWARE_ADDR, fl->size, _abort); } -aspeed_board_binfo.kernel_filename = machine->kernel_filename; -aspeed_board_binfo.initrd_filename = machine->initrd_filename; -aspeed_board_binfo.kernel_cmdline = machine->kernel_cmdline; aspeed_board_binfo.ram_size = ram_size; aspeed_board_binfo.loader_start = sc->info->memmap[ASPEED_SDRAM]; aspeed_board_binfo.nb_cpus = bmc->soc.num_cpus; @@ -252,7 +249,7 @@ static void aspeed_board_init(MachineState *machine, cfg->i2c_init(bmc); } -arm_load_kernel(ARM_CPU(first_cpu), _board_binfo); +arm_load_kernel(ARM_CPU(first_cpu), machine, _board_binfo); } static void palmetto_bmc_i2c_init(AspeedBoardState *bmc) diff --git a/hw/arm/boot.c b/hw/arm/boot.c index c2b89b3bb9..ba604f8277 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -524,7 +524,7 @@ static void fdt_add_psci_node(void *fdt) } int arm_load_dtb(hwaddr addr, const struct arm_boot_info *binfo, - hwaddr addr_limit, AddressSpace *as) + hwaddr addr_limit, AddressSpace *as, MachineState *ms) { void *fdt = NULL; int size, rc, n = 0; @@ -627,9 +627,9 @@ int arm_load_dtb(hwaddr addr, const struct arm_boot_info *binfo, qemu_fdt_add_subnode(fdt, "/chosen"); } -if (binfo->kernel_cmdline && *binfo->kernel_cmdline) { +if (ms->kernel_cmdline && *ms->kernel_cmdline) { rc = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", - binfo->kernel_cmdline); + ms->kernel_cmdline); if (rc < 0) { fprintf(stderr, "couldn't set /chosen/bootargs\n"); goto fail; @@ -1261,7 +1261,7 @@ static void arm_setup_firmware_boot(ARMCPU *cpu, struct arm_boot_info *info) */ } -void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info *info) +void arm_load_kernel(ARMCPU *cpu, MachineState *ms, struct arm_boot_info *info) { CPUState *cs; AddressSpace *as = arm_boot_address_space(cpu, info); @@ -1282,7 +1282,9 @@ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info *info) * doesn't support secure. */ assert(!(info->secure_board_setup && kvm_enabled())); - +info->kernel_filename = ms->kernel_filename; +info->kernel_cmdline = ms->kernel_cmdline; +info->initrd_filename = ms->initrd_filename; info->dtb_filename = qemu_opt_get(qemu_get_machine_opts(), "dtb"); info->dtb_limit = 0; @@ -1294,7 +1296,7 @@ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info *info) } if (!info->skip_dtb_autoload && have_dtb(info)) { -if (arm_load_dtb(info->dtb_start, info, info->dtb_limit, as) < 0) { +if (arm_load_dtb(info->dtb_start, info, info->dtb_limit, as, ms) < 0) { exit(1); } } diff --git a/hw/arm/collie.c b/hw/arm/collie.c index 3db3c56004..72bc8f26e5 100644 --- a/hw/arm/collie.c +++ b/hw/arm/collie.c @@ -26,9 +26,6 @@ static struct arm_boot_info collie_binfo = { static void collie_init(MachineState *machine) { -const char *kernel_filename =