mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-28 21:03:54 -06:00
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 <thuth@redhat.com>
This commit is contained in:
parent
8e5739ce4b
commit
188e255bf8
5 changed files with 6 additions and 72 deletions
|
@ -288,7 +288,6 @@ static Property s390_ipl_properties[] = {
|
||||||
DEFINE_PROP_STRING("initrd", S390IPLState, initrd),
|
DEFINE_PROP_STRING("initrd", S390IPLState, initrd),
|
||||||
DEFINE_PROP_STRING("cmdline", S390IPLState, cmdline),
|
DEFINE_PROP_STRING("cmdline", S390IPLState, cmdline),
|
||||||
DEFINE_PROP_STRING("firmware", S390IPLState, firmware),
|
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("enforce_bios", S390IPLState, enforce_bios, false),
|
||||||
DEFINE_PROP_BOOL("iplbext_migration", S390IPLState, iplbext_migration,
|
DEFINE_PROP_BOOL("iplbext_migration", S390IPLState, iplbext_migration,
|
||||||
true),
|
true),
|
||||||
|
@ -480,56 +479,6 @@ int s390_ipl_set_loadparm(uint8_t *loadparm)
|
||||||
return -1;
|
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,
|
static bool is_virtio_ccw_device_of_type(IplParameterBlock *iplb,
|
||||||
int virtio_id)
|
int virtio_id)
|
||||||
{
|
{
|
||||||
|
@ -754,10 +703,6 @@ void s390_ipl_prepare_cpu(S390CPU *cpu)
|
||||||
ipl->iplb_valid = s390_gen_initial_iplb(ipl);
|
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_set_boot_menu(ipl);
|
||||||
s390_ipl_prepare_qipl(cpu);
|
s390_ipl_prepare_qipl(cpu);
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,11 +134,8 @@ void s390_ipl_clear_reset_request(void);
|
||||||
/*
|
/*
|
||||||
* The QEMU IPL Parameters will be stored at absolute address
|
* The QEMU IPL Parameters will be stored at absolute address
|
||||||
* 204 (0xcc) which means it is 32-bit word aligned but not
|
* 204 (0xcc) which means it is 32-bit word aligned but not
|
||||||
* double-word aligned.
|
* double-word aligned. Placement of 64-bit data fields in this
|
||||||
* Placement of data fields in this area must account for
|
* area must account for their alignment needs.
|
||||||
* 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.
|
|
||||||
* The total size of the struct must never exceed 28 bytes.
|
* The total size of the struct must never exceed 28 bytes.
|
||||||
* This definition must be kept in sync with the definition
|
* This definition must be kept in sync with the definition
|
||||||
* in pc-bios/s390-ccw/iplb.h.
|
* in pc-bios/s390-ccw/iplb.h.
|
||||||
|
@ -146,9 +143,9 @@ void s390_ipl_clear_reset_request(void);
|
||||||
struct QemuIplParameters {
|
struct QemuIplParameters {
|
||||||
uint8_t qipl_flags;
|
uint8_t qipl_flags;
|
||||||
uint8_t reserved1[3];
|
uint8_t reserved1[3];
|
||||||
uint64_t netboot_start_addr;
|
uint64_t reserved2;
|
||||||
uint32_t boot_menu_timeout;
|
uint32_t boot_menu_timeout;
|
||||||
uint8_t reserved2[12];
|
uint8_t reserved3[12];
|
||||||
} QEMU_PACKED;
|
} QEMU_PACKED;
|
||||||
typedef struct QemuIplParameters QemuIplParameters;
|
typedef struct QemuIplParameters QemuIplParameters;
|
||||||
|
|
||||||
|
@ -178,7 +175,6 @@ struct S390IPLState {
|
||||||
char *initrd;
|
char *initrd;
|
||||||
char *cmdline;
|
char *cmdline;
|
||||||
char *firmware;
|
char *firmware;
|
||||||
char *netboot_fw;
|
|
||||||
uint8_t cssid;
|
uint8_t cssid;
|
||||||
uint8_t ssid;
|
uint8_t ssid;
|
||||||
uint16_t devno;
|
uint16_t devno;
|
||||||
|
|
|
@ -197,11 +197,10 @@ static void s390_memory_init(MemoryRegion *ram)
|
||||||
static void s390_init_ipl_dev(const char *kernel_filename,
|
static void s390_init_ipl_dev(const char *kernel_filename,
|
||||||
const char *kernel_cmdline,
|
const char *kernel_cmdline,
|
||||||
const char *initrd_filename, const char *firmware,
|
const char *initrd_filename, const char *firmware,
|
||||||
const char *netboot_fw, bool enforce_bios)
|
bool enforce_bios)
|
||||||
{
|
{
|
||||||
Object *new = object_new(TYPE_S390_IPL);
|
Object *new = object_new(TYPE_S390_IPL);
|
||||||
DeviceState *dev = DEVICE(new);
|
DeviceState *dev = DEVICE(new);
|
||||||
char *netboot_fw_prop;
|
|
||||||
|
|
||||||
if (kernel_filename) {
|
if (kernel_filename) {
|
||||||
qdev_prop_set_string(dev, "kernel", 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, "cmdline", kernel_cmdline);
|
||||||
qdev_prop_set_string(dev, "firmware", firmware);
|
qdev_prop_set_string(dev, "firmware", firmware);
|
||||||
qdev_prop_set_bit(dev, "enforce_bios", enforce_bios);
|
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,
|
object_property_add_child(qdev_get_machine(), TYPE_S390_IPL,
|
||||||
new);
|
new);
|
||||||
object_unref(new);
|
object_unref(new);
|
||||||
|
@ -284,7 +278,7 @@ static void ccw_init(MachineState *machine)
|
||||||
s390_init_ipl_dev(machine->kernel_filename, machine->kernel_cmdline,
|
s390_init_ipl_dev(machine->kernel_filename, machine->kernel_cmdline,
|
||||||
machine->initrd_filename,
|
machine->initrd_filename,
|
||||||
machine->firmware ?: "s390-ccw.img",
|
machine->firmware ?: "s390-ccw.img",
|
||||||
"s390-netboot.img", true);
|
true);
|
||||||
|
|
||||||
dev = qdev_new(TYPE_S390_PCI_HOST_BRIDGE);
|
dev = qdev_new(TYPE_S390_PCI_HOST_BRIDGE);
|
||||||
object_property_add_child(qdev_get_machine(), TYPE_S390_PCI_HOST_BRIDGE,
|
object_property_add_child(qdev_get_machine(), TYPE_S390_PCI_HOST_BRIDGE,
|
||||||
|
|
|
@ -68,7 +68,6 @@ blobs = [
|
||||||
'kvmvapic.bin',
|
'kvmvapic.bin',
|
||||||
'pvh.bin',
|
'pvh.bin',
|
||||||
's390-ccw.img',
|
's390-ccw.img',
|
||||||
's390-netboot.img',
|
|
||||||
'slof.bin',
|
'slof.bin',
|
||||||
'skiboot.lid',
|
'skiboot.lid',
|
||||||
'palcode-clipper',
|
'palcode-clipper',
|
||||||
|
|
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue