hw/ppc: Pass error_fatal to load_image_targphys()
Pass error_fatal to load_image_targphys() calls in ppc machine initialization to capture detailed error information when loading firmware, kernel, and initrd images. Passing error_fatal automatically reports detailed error messages and exits immediately on failure. Eliminating redundant exit(1) calls, as error_fatal handles termination The behavior remains functionally identical, but error messages now come directly from the loader function with more context about the failure cause. Reviewed-by: Aditya Gupta <adityag@linux.ibm.com> Reviewed-by: BALATON Zoltan <balaton@eik.bme.hu> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Vishal Chourasia <vishalc@linux.ibm.com> Message-ID: <20251024130556.1942835-14-vishalc@linux.ibm.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
parent
1b5eafee86
commit
cd274e83d5
11 changed files with 28 additions and 128 deletions
|
|
@ -324,11 +324,7 @@ static void amigaone_init(MachineState *machine)
|
|||
error_report("Could not find firmware '%s'", machine->firmware);
|
||||
exit(1);
|
||||
}
|
||||
sz = load_image_targphys(filename, PROM_ADDR, PROM_SIZE, NULL);
|
||||
if (sz <= 0 || sz > PROM_SIZE) {
|
||||
error_report("Could not load firmware '%s'", filename);
|
||||
exit(1);
|
||||
}
|
||||
sz = load_image_targphys(filename, PROM_ADDR, PROM_SIZE, &error_fatal);
|
||||
}
|
||||
|
||||
/* Articia S */
|
||||
|
|
@ -413,12 +409,7 @@ static void amigaone_init(MachineState *machine)
|
|||
loadaddr = ROUND_UP(loadaddr + 4 * MiB, 4 * KiB);
|
||||
loadaddr = MAX(loadaddr, INITRD_MIN_ADDR);
|
||||
sz = load_image_targphys(machine->initrd_filename, loadaddr,
|
||||
bi->bd_info - loadaddr, NULL);
|
||||
if (sz <= 0) {
|
||||
error_report("Could not load initrd '%s'",
|
||||
machine->initrd_filename);
|
||||
exit(1);
|
||||
}
|
||||
bi->bd_info - loadaddr, &error_fatal);
|
||||
bi->initrd_start = loadaddr;
|
||||
bi->initrd_end = loadaddr + sz;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1226,14 +1226,8 @@ void ppce500_init(MachineState *machine)
|
|||
if (machine->kernel_filename && !kernel_as_payload) {
|
||||
kernel_base = cur_base;
|
||||
kernel_size = load_image_targphys(machine->kernel_filename,
|
||||
cur_base,
|
||||
machine->ram_size - cur_base, NULL);
|
||||
if (kernel_size < 0) {
|
||||
error_report("could not load kernel '%s'",
|
||||
machine->kernel_filename);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
cur_base, machine->ram_size - cur_base,
|
||||
&error_fatal);
|
||||
cur_base += kernel_size;
|
||||
}
|
||||
|
||||
|
|
@ -1242,14 +1236,7 @@ void ppce500_init(MachineState *machine)
|
|||
initrd_base = (cur_base + INITRD_LOAD_PAD) & ~INITRD_PAD_MASK;
|
||||
initrd_size = load_image_targphys(machine->initrd_filename, initrd_base,
|
||||
machine->ram_size - initrd_base,
|
||||
NULL);
|
||||
|
||||
if (initrd_size < 0) {
|
||||
error_report("could not load initial ram disk '%s'",
|
||||
machine->initrd_filename);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
&error_fatal);
|
||||
cur_base = initrd_base + initrd_size;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ static void ppc_core99_init(MachineState *machine)
|
|||
if (bios_size <= 0) {
|
||||
/* or load binary ROM image */
|
||||
bios_size = load_image_targphys(filename, PROM_BASE, PROM_SIZE,
|
||||
NULL);
|
||||
&error_fatal);
|
||||
}
|
||||
g_free(filename);
|
||||
}
|
||||
|
|
@ -212,12 +212,7 @@ static void ppc_core99_init(MachineState *machine)
|
|||
kernel_size = load_image_targphys(machine->kernel_filename,
|
||||
kernel_base,
|
||||
machine->ram_size - kernel_base,
|
||||
NULL);
|
||||
}
|
||||
if (kernel_size < 0) {
|
||||
error_report("could not load kernel '%s'",
|
||||
machine->kernel_filename);
|
||||
exit(1);
|
||||
&error_fatal);
|
||||
}
|
||||
/* load initrd */
|
||||
if (machine->initrd_filename) {
|
||||
|
|
@ -225,12 +220,7 @@ static void ppc_core99_init(MachineState *machine)
|
|||
initrd_size = load_image_targphys(machine->initrd_filename,
|
||||
initrd_base,
|
||||
machine->ram_size - initrd_base,
|
||||
NULL);
|
||||
if (initrd_size < 0) {
|
||||
error_report("could not load initial ram disk '%s'",
|
||||
machine->initrd_filename);
|
||||
exit(1);
|
||||
}
|
||||
&error_fatal);
|
||||
cmdline_base = TARGET_PAGE_ALIGN(initrd_base + initrd_size);
|
||||
} else {
|
||||
cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + KERNEL_GAP);
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ static void ppc_heathrow_init(MachineState *machine)
|
|||
if (bios_size <= 0) {
|
||||
/* or if could not load ELF try loading a binary ROM image */
|
||||
bios_size = load_image_targphys(filename, PROM_BASE, PROM_SIZE,
|
||||
NULL);
|
||||
&error_fatal);
|
||||
bios_addr = PROM_BASE;
|
||||
}
|
||||
g_free(filename);
|
||||
|
|
@ -168,12 +168,7 @@ static void ppc_heathrow_init(MachineState *machine)
|
|||
kernel_size = load_image_targphys(machine->kernel_filename,
|
||||
kernel_base,
|
||||
machine->ram_size - kernel_base,
|
||||
NULL);
|
||||
}
|
||||
if (kernel_size < 0) {
|
||||
error_report("could not load kernel '%s'",
|
||||
machine->kernel_filename);
|
||||
exit(1);
|
||||
&error_fatal);
|
||||
}
|
||||
/* load initrd */
|
||||
if (machine->initrd_filename) {
|
||||
|
|
@ -182,12 +177,7 @@ static void ppc_heathrow_init(MachineState *machine)
|
|||
initrd_size = load_image_targphys(machine->initrd_filename,
|
||||
initrd_base,
|
||||
machine->ram_size - initrd_base,
|
||||
NULL);
|
||||
if (initrd_size < 0) {
|
||||
error_report("could not load initial ram disk '%s'",
|
||||
machine->initrd_filename);
|
||||
exit(1);
|
||||
}
|
||||
&error_fatal);
|
||||
cmdline_base = TARGET_PAGE_ALIGN(initrd_base + initrd_size);
|
||||
} else {
|
||||
cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + KERNEL_GAP);
|
||||
|
|
|
|||
|
|
@ -198,7 +198,7 @@ static void pegasos_init(MachineState *machine)
|
|||
ELFDATA2MSB, PPC_ELF_MACHINE, 0, 0);
|
||||
if (sz <= 0) {
|
||||
sz = load_image_targphys(filename, pm->vof ? 0 : prom_addr, PROM_SIZE,
|
||||
NULL);
|
||||
&error_fatal);
|
||||
}
|
||||
if (sz <= 0 || sz > PROM_SIZE) {
|
||||
error_report("Could not load firmware '%s'", filename);
|
||||
|
|
@ -302,12 +302,7 @@ static void pegasos_init(MachineState *machine)
|
|||
pm->initrd_addr = ROUND_UP(pm->initrd_addr, 4);
|
||||
pm->initrd_addr = MAX(pm->initrd_addr, INITRD_MIN_ADDR);
|
||||
sz = load_image_targphys(machine->initrd_filename, pm->initrd_addr,
|
||||
machine->ram_size - pm->initrd_addr, NULL);
|
||||
if (sz <= 0) {
|
||||
error_report("Could not load initrd '%s'",
|
||||
machine->initrd_filename);
|
||||
exit(1);
|
||||
}
|
||||
machine->ram_size - pm->initrd_addr, &error_fatal);
|
||||
pm->initrd_size = sz;
|
||||
}
|
||||
|
||||
|
|
|
|||
28
hw/ppc/pnv.c
28
hw/ppc/pnv.c
|
|
@ -1009,7 +1009,6 @@ static void pnv_init(MachineState *machine)
|
|||
PnvMachineClass *pmc = PNV_MACHINE_GET_CLASS(machine);
|
||||
int max_smt_threads = pmc->max_smt_threads;
|
||||
char *fw_filename;
|
||||
long fw_size;
|
||||
uint64_t chip_ram_start = 0;
|
||||
int i;
|
||||
char *chip_typename;
|
||||
|
|
@ -1068,26 +1067,14 @@ static void pnv_init(MachineState *machine)
|
|||
exit(1);
|
||||
}
|
||||
|
||||
fw_size = load_image_targphys(fw_filename, pnv->fw_load_addr, FW_MAX_SIZE,
|
||||
NULL);
|
||||
if (fw_size < 0) {
|
||||
error_report("Could not load OPAL firmware '%s'", fw_filename);
|
||||
exit(1);
|
||||
}
|
||||
load_image_targphys(fw_filename, pnv->fw_load_addr, FW_MAX_SIZE,
|
||||
&error_fatal);
|
||||
g_free(fw_filename);
|
||||
|
||||
/* load kernel */
|
||||
if (machine->kernel_filename) {
|
||||
long kernel_size;
|
||||
|
||||
kernel_size = load_image_targphys(machine->kernel_filename,
|
||||
KERNEL_LOAD_ADDR, KERNEL_MAX_SIZE,
|
||||
NULL);
|
||||
if (kernel_size < 0) {
|
||||
error_report("Could not load kernel '%s'",
|
||||
machine->kernel_filename);
|
||||
exit(1);
|
||||
}
|
||||
load_image_targphys(machine->kernel_filename,
|
||||
KERNEL_LOAD_ADDR, KERNEL_MAX_SIZE, &error_fatal);
|
||||
}
|
||||
|
||||
/* load initrd */
|
||||
|
|
@ -1095,12 +1082,7 @@ static void pnv_init(MachineState *machine)
|
|||
pnv->initrd_base = INITRD_LOAD_ADDR;
|
||||
pnv->initrd_size = load_image_targphys(machine->initrd_filename,
|
||||
pnv->initrd_base,
|
||||
INITRD_MAX_SIZE, NULL);
|
||||
if (pnv->initrd_size < 0) {
|
||||
error_report("Could not load initial ram disk '%s'",
|
||||
machine->initrd_filename);
|
||||
exit(1);
|
||||
}
|
||||
INITRD_MAX_SIZE, &error_fatal);
|
||||
}
|
||||
|
||||
/* load dtb if passed */
|
||||
|
|
|
|||
|
|
@ -243,13 +243,7 @@ static void bamboo_init(MachineState *machine)
|
|||
if (initrd_filename) {
|
||||
initrd_size = load_image_targphys(initrd_filename, RAMDISK_ADDR,
|
||||
machine->ram_size - RAMDISK_ADDR,
|
||||
NULL);
|
||||
|
||||
if (initrd_size < 0) {
|
||||
error_report("could not load ram disk '%s' at %x",
|
||||
initrd_filename, RAMDISK_ADDR);
|
||||
exit(1);
|
||||
}
|
||||
&error_fatal);
|
||||
}
|
||||
|
||||
/* If we're loading a kernel directly, we must load the device tree too. */
|
||||
|
|
|
|||
|
|
@ -280,7 +280,8 @@ static void ibm_40p_init(MachineState *machine)
|
|||
bios_size = load_elf(filename, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
ELFDATA2MSB, PPC_ELF_MACHINE, 0, 0);
|
||||
if (bios_size < 0) {
|
||||
bios_size = load_image_targphys(filename, BIOS_ADDR, BIOS_SIZE, NULL);
|
||||
bios_size = load_image_targphys(filename, BIOS_ADDR, BIOS_SIZE,
|
||||
&error_fatal);
|
||||
}
|
||||
if (bios_size < 0 || bios_size > BIOS_SIZE) {
|
||||
error_report("Could not load bios image '%s'", filename);
|
||||
|
|
@ -380,12 +381,7 @@ static void ibm_40p_init(MachineState *machine)
|
|||
kernel_size = load_image_targphys(machine->kernel_filename,
|
||||
kernel_base,
|
||||
machine->ram_size - kernel_base,
|
||||
NULL);
|
||||
if (kernel_size < 0) {
|
||||
error_report("could not load kernel '%s'",
|
||||
machine->kernel_filename);
|
||||
exit(1);
|
||||
}
|
||||
&error_fatal);
|
||||
fw_cfg_add_i32(fw_cfg, FW_CFG_KERNEL_ADDR, kernel_base);
|
||||
fw_cfg_add_i32(fw_cfg, FW_CFG_KERNEL_SIZE, kernel_size);
|
||||
/* load initrd */
|
||||
|
|
@ -394,12 +390,7 @@ static void ibm_40p_init(MachineState *machine)
|
|||
initrd_size = load_image_targphys(machine->initrd_filename,
|
||||
initrd_base,
|
||||
machine->ram_size - initrd_base,
|
||||
NULL);
|
||||
if (initrd_size < 0) {
|
||||
error_report("could not load initial ram disk '%s'",
|
||||
machine->initrd_filename);
|
||||
exit(1);
|
||||
}
|
||||
&error_fatal);
|
||||
fw_cfg_add_i32(fw_cfg, FW_CFG_INITRD_ADDR, initrd_base);
|
||||
fw_cfg_add_i32(fw_cfg, FW_CFG_INITRD_SIZE, initrd_size);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -495,12 +495,7 @@ static void sam460ex_init(MachineState *machine)
|
|||
initrd_size = load_image_targphys(machine->initrd_filename,
|
||||
RAMDISK_ADDR,
|
||||
machine->ram_size - RAMDISK_ADDR,
|
||||
NULL);
|
||||
if (initrd_size < 0) {
|
||||
error_report("could not load ram disk '%s' at %x",
|
||||
machine->initrd_filename, RAMDISK_ADDR);
|
||||
exit(1);
|
||||
}
|
||||
&error_fatal);
|
||||
}
|
||||
|
||||
/* If we're loading a kernel directly, we must load the device tree too. */
|
||||
|
|
|
|||
|
|
@ -2854,11 +2854,7 @@ static void spapr_machine_init(MachineState *machine)
|
|||
error_report("Could not find LPAR firmware '%s'", bios_name);
|
||||
exit(1);
|
||||
}
|
||||
fw_size = load_image_targphys(filename, 0, FW_MAX_SIZE, NULL);
|
||||
if (fw_size <= 0) {
|
||||
error_report("Could not load LPAR firmware '%s'", filename);
|
||||
exit(1);
|
||||
}
|
||||
fw_size = load_image_targphys(filename, 0, FW_MAX_SIZE, &error_fatal);
|
||||
|
||||
/*
|
||||
* if Secure VM (PEF) support is configured, then initialize it
|
||||
|
|
@ -3117,12 +3113,7 @@ static void spapr_machine_init(MachineState *machine)
|
|||
spapr->initrd_size = load_image_targphys(initrd_filename,
|
||||
spapr->initrd_base,
|
||||
load_limit - spapr->initrd_base,
|
||||
NULL);
|
||||
if (spapr->initrd_size < 0) {
|
||||
error_report("could not load initial ram disk '%s'",
|
||||
initrd_filename);
|
||||
exit(1);
|
||||
}
|
||||
&error_fatal);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ static void virtex_init(MachineState *machine)
|
|||
/* If we failed loading ELF's try a raw image. */
|
||||
kernel_size = load_image_targphys(kernel_filename,
|
||||
boot_offset,
|
||||
machine->ram_size, NULL);
|
||||
machine->ram_size, &error_fatal);
|
||||
boot_info.bootstrap_pc = boot_offset;
|
||||
high = boot_info.bootstrap_pc + kernel_size + 8192;
|
||||
}
|
||||
|
|
@ -265,13 +265,7 @@ static void virtex_init(MachineState *machine)
|
|||
initrd_base = high = ROUND_UP(high, 4);
|
||||
initrd_size = load_image_targphys(machine->initrd_filename,
|
||||
high, machine->ram_size - high,
|
||||
NULL);
|
||||
|
||||
if (initrd_size < 0) {
|
||||
error_report("couldn't load ram disk '%s'",
|
||||
machine->initrd_filename);
|
||||
exit(1);
|
||||
}
|
||||
&error_fatal);
|
||||
high = ROUND_UP(high + initrd_size, 4);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue