From 188e255bf8ed68fa64bcb63577cb100eeb326254 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 20 Jun 2024 16:59:28 +0200 Subject: [PATCH] hw/s390x: Remove the possibility to load the s390-netboot.img binary Since the netboot code has now been merged into the main s390-ccw.img binary, we don't need the separate s390-netboot.img anymore. Remove it and the code that was responsible for loading it. Message-Id: <20240621082422.136217-6-thuth@redhat.com> Signed-off-by: Thomas Huth --- hw/s390x/ipl.c | 55 ------------------------------------- hw/s390x/ipl.h | 12 +++----- hw/s390x/s390-virtio-ccw.c | 10 ++----- pc-bios/meson.build | 1 - pc-bios/s390-netboot.img | Bin 67232 -> 0 bytes 5 files changed, 6 insertions(+), 72 deletions(-) delete mode 100644 pc-bios/s390-netboot.img diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c index 5f60977ceb..8c490eeb52 100644 --- a/hw/s390x/ipl.c +++ b/hw/s390x/ipl.c @@ -288,7 +288,6 @@ static Property s390_ipl_properties[] = { DEFINE_PROP_STRING("initrd", S390IPLState, initrd), DEFINE_PROP_STRING("cmdline", S390IPLState, cmdline), DEFINE_PROP_STRING("firmware", S390IPLState, firmware), - DEFINE_PROP_STRING("netboot_fw", S390IPLState, netboot_fw), DEFINE_PROP_BOOL("enforce_bios", S390IPLState, enforce_bios, false), DEFINE_PROP_BOOL("iplbext_migration", S390IPLState, iplbext_migration, true), @@ -480,56 +479,6 @@ int s390_ipl_set_loadparm(uint8_t *loadparm) return -1; } -static int load_netboot_image(Error **errp) -{ - MachineState *ms = MACHINE(qdev_get_machine()); - S390IPLState *ipl = get_ipl_device(); - char *netboot_filename; - MemoryRegion *sysmem = get_system_memory(); - MemoryRegion *mr = NULL; - void *ram_ptr = NULL; - int img_size = -1; - - mr = memory_region_find(sysmem, 0, 1).mr; - if (!mr) { - error_setg(errp, "Failed to find memory region at address 0"); - return -1; - } - - ram_ptr = memory_region_get_ram_ptr(mr); - if (!ram_ptr) { - error_setg(errp, "No RAM found"); - goto unref_mr; - } - - netboot_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, ipl->netboot_fw); - if (netboot_filename == NULL) { - error_setg(errp, "Could not find network bootloader '%s'", - ipl->netboot_fw); - goto unref_mr; - } - - img_size = load_elf_ram(netboot_filename, NULL, NULL, NULL, - &ipl->start_addr, - NULL, NULL, NULL, 1, EM_S390, 0, 0, NULL, - false); - - if (img_size < 0) { - img_size = load_image_size(netboot_filename, ram_ptr, ms->ram_size); - ipl->start_addr = KERN_IMAGE_START; - } - - if (img_size < 0) { - error_setg(errp, "Failed to load network bootloader"); - } - - g_free(netboot_filename); - -unref_mr: - memory_region_unref(mr); - return img_size; -} - static bool is_virtio_ccw_device_of_type(IplParameterBlock *iplb, int virtio_id) { @@ -754,10 +703,6 @@ void s390_ipl_prepare_cpu(S390CPU *cpu) ipl->iplb_valid = s390_gen_initial_iplb(ipl); } } - if (ipl->netboot) { - load_netboot_image(&error_fatal); - ipl->qipl.netboot_start_addr = cpu_to_be64(ipl->start_addr); - } s390_ipl_set_boot_menu(ipl); s390_ipl_prepare_qipl(cpu); } diff --git a/hw/s390x/ipl.h b/hw/s390x/ipl.h index 57cd125769..b2105b616a 100644 --- a/hw/s390x/ipl.h +++ b/hw/s390x/ipl.h @@ -134,11 +134,8 @@ void s390_ipl_clear_reset_request(void); /* * The QEMU IPL Parameters will be stored at absolute address * 204 (0xcc) which means it is 32-bit word aligned but not - * double-word aligned. - * Placement of data fields in this area must account for - * their alignment needs. E.g., netboot_start_address must - * have an offset of 4 + n * 8 bytes within the struct in order - * to keep it double-word aligned. + * double-word aligned. Placement of 64-bit data fields in this + * area must account for their alignment needs. * The total size of the struct must never exceed 28 bytes. * This definition must be kept in sync with the definition * in pc-bios/s390-ccw/iplb.h. @@ -146,9 +143,9 @@ void s390_ipl_clear_reset_request(void); struct QemuIplParameters { uint8_t qipl_flags; uint8_t reserved1[3]; - uint64_t netboot_start_addr; + uint64_t reserved2; uint32_t boot_menu_timeout; - uint8_t reserved2[12]; + uint8_t reserved3[12]; } QEMU_PACKED; typedef struct QemuIplParameters QemuIplParameters; @@ -178,7 +175,6 @@ struct S390IPLState { char *initrd; char *cmdline; char *firmware; - char *netboot_fw; uint8_t cssid; uint8_t ssid; uint16_t devno; diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 5aa8d207a3..529e53f308 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -197,11 +197,10 @@ static void s390_memory_init(MemoryRegion *ram) static void s390_init_ipl_dev(const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *firmware, - const char *netboot_fw, bool enforce_bios) + bool enforce_bios) { Object *new = object_new(TYPE_S390_IPL); DeviceState *dev = DEVICE(new); - char *netboot_fw_prop; if (kernel_filename) { qdev_prop_set_string(dev, "kernel", kernel_filename); @@ -212,11 +211,6 @@ static void s390_init_ipl_dev(const char *kernel_filename, qdev_prop_set_string(dev, "cmdline", kernel_cmdline); qdev_prop_set_string(dev, "firmware", firmware); qdev_prop_set_bit(dev, "enforce_bios", enforce_bios); - netboot_fw_prop = object_property_get_str(new, "netboot_fw", &error_abort); - if (!strlen(netboot_fw_prop)) { - qdev_prop_set_string(dev, "netboot_fw", netboot_fw); - } - g_free(netboot_fw_prop); object_property_add_child(qdev_get_machine(), TYPE_S390_IPL, new); object_unref(new); @@ -284,7 +278,7 @@ static void ccw_init(MachineState *machine) s390_init_ipl_dev(machine->kernel_filename, machine->kernel_cmdline, machine->initrd_filename, machine->firmware ?: "s390-ccw.img", - "s390-netboot.img", true); + true); dev = qdev_new(TYPE_S390_PCI_HOST_BRIDGE); object_property_add_child(qdev_get_machine(), TYPE_S390_PCI_HOST_BRIDGE, diff --git a/pc-bios/meson.build b/pc-bios/meson.build index 090379763e..4823dff189 100644 --- a/pc-bios/meson.build +++ b/pc-bios/meson.build @@ -68,7 +68,6 @@ blobs = [ 'kvmvapic.bin', 'pvh.bin', 's390-ccw.img', - 's390-netboot.img', 'slof.bin', 'skiboot.lid', 'palcode-clipper', diff --git a/pc-bios/s390-netboot.img b/pc-bios/s390-netboot.img deleted file mode 100644 index 6908e49f06801808b826d3a01f88132cf1b2f57c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67232 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 JGs4YJ{14a)pauW{