diff mbox series

[v2,2/2] hw/arm: remove exit(1) in case of missing ROM

Message ID 159531211130.24117.1461702940326067827.stgit@pasha-ThinkPad-X280
State New
Headers show
Series Romless QEMU shutdown patches | expand

Commit Message

Pavel Dovgalyuk July 21, 2020, 6:15 a.m. UTC
This patch updates ARM-based machines to allow starting them without ROM.
In this case CPU starts to execute instructions from the empty memory,
but QEMU allows introspecting the machine configuration.

Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru>

--

v2:
 - useless error reports were dropped (suggested by Peter Maydell)
---
 hw/arm/digic_boards.c |    8 ++++++--
 hw/arm/gumstix.c      |   12 ------------
 hw/arm/omap_sx1.c     |    5 -----
 hw/arm/palm.c         |    8 +-------
 4 files changed, 7 insertions(+), 26 deletions(-)
diff mbox series

Patch

diff --git a/hw/arm/digic_boards.c b/hw/arm/digic_boards.c
index d5524d3e72..4f39a001bb 100644
--- a/hw/arm/digic_boards.c
+++ b/hw/arm/digic_boards.c
@@ -101,8 +101,12 @@  static void digic_load_rom(DigicState *s, hwaddr addr,
         char *fn = qemu_find_file(QEMU_FILE_TYPE_BIOS, filename);
 
         if (!fn) {
-            error_report("Couldn't find rom image '%s'.", filename);
-            exit(1);
+            if (bios_name) {
+                error_report("Couldn't find rom image '%s'.", filename);
+                exit(1);
+            } else {
+                return;
+            }
         }
 
         rom_size = load_image_targphys(fn, addr, max_size);
diff --git a/hw/arm/gumstix.c b/hw/arm/gumstix.c
index 3a4bc332c4..fb9fd6ab9c 100644
--- a/hw/arm/gumstix.c
+++ b/hw/arm/gumstix.c
@@ -59,12 +59,6 @@  static void connex_init(MachineState *machine)
     cpu = pxa255_init(address_space_mem, connex_ram);
 
     dinfo = drive_get(IF_PFLASH, 0, 0);
-    if (!dinfo && !qtest_enabled()) {
-        error_report("A flash image must be given with the "
-                     "'pflash' parameter");
-        exit(1);
-    }
-
     if (!pflash_cfi01_register(0x00000000, "connext.rom", connex_rom,
                                dinfo ? blk_by_legacy_dinfo(dinfo) : NULL,
                                sector_len, 2, 0, 0, 0, 0, 0)) {
@@ -89,12 +83,6 @@  static void verdex_init(MachineState *machine)
     cpu = pxa270_init(address_space_mem, verdex_ram, machine->cpu_type);
 
     dinfo = drive_get(IF_PFLASH, 0, 0);
-    if (!dinfo && !qtest_enabled()) {
-        error_report("A flash image must be given with the "
-                     "'pflash' parameter");
-        exit(1);
-    }
-
     if (!pflash_cfi01_register(0x00000000, "verdex.rom", verdex_rom,
                                dinfo ? blk_by_legacy_dinfo(dinfo) : NULL,
                                sector_len, 2, 0, 0, 0, 0, 0)) {
diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c
index 57829b3744..ea3236cfb7 100644
--- a/hw/arm/omap_sx1.c
+++ b/hw/arm/omap_sx1.c
@@ -190,11 +190,6 @@  static void sx1_init(MachineState *machine, const int version)
                                 OMAP_CS1_BASE, &cs[1]);
     }
 
-    if (!machine->kernel_filename && !fl_idx && !qtest_enabled()) {
-        error_report("Kernel or Flash image must be specified");
-        exit(1);
-    }
-
     /* Load the kernel.  */
     arm_load_kernel(mpu->cpu, machine, &sx1_binfo);
 
diff --git a/hw/arm/palm.c b/hw/arm/palm.c
index e7bc9ea4c6..8225c252c4 100644
--- a/hw/arm/palm.c
+++ b/hw/arm/palm.c
@@ -231,7 +231,7 @@  static void palmte_init(MachineState *machine)
     static uint32_t cs1val = 0x0000e1a0;
     static uint32_t cs2val = 0x0000e1a0;
     static uint32_t cs3val = 0xe1a0e1a0;
-    int rom_size, rom_loaded = 0;
+    int rom_size;
     MachineClass *mc = MACHINE_GET_CLASS(machine);
     MemoryRegion *flash = g_new(MemoryRegion, 1);
     MemoryRegion *cs = g_new(MemoryRegion, 4);
@@ -284,7 +284,6 @@  static void palmte_init(MachineState *machine)
         if (rom_size > 0) {
             rom_size = load_image_targphys(option_rom[0].name, OMAP_CS0_BASE,
                                            flash_size);
-            rom_loaded = 1;
         }
         if (rom_size < 0) {
             fprintf(stderr, "%s: error loading '%s'\n",
@@ -292,11 +291,6 @@  static void palmte_init(MachineState *machine)
         }
     }
 
-    if (!rom_loaded && !machine->kernel_filename && !qtest_enabled()) {
-        fprintf(stderr, "Kernel or ROM image must be specified\n");
-        exit(1);
-    }
-
     /* Load the kernel.  */
     arm_load_kernel(mpu->cpu, machine, &palmte_binfo);
 }