From patchwork Fri Jun 21 08:24:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Huth X-Patchwork-Id: 13707088 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F31D7C2BA1A for ; Fri, 21 Jun 2024 08:25:36 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sKZa0-00004z-Cp; Fri, 21 Jun 2024 04:25:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sKZZy-0008VH-J3 for qemu-devel@nongnu.org; Fri, 21 Jun 2024 04:25:06 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sKZZt-0003Pb-Uz for qemu-devel@nongnu.org; Fri, 21 Jun 2024 04:25:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1718958301; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=74icySS9I6QfNrkGL7E2DdR/LO2nW7oeEPODZ+kI2jc=; b=UG2iRs7XANCq2Jz+TxWObakSawdmnJ0/BWBvpAhSjNkz1JTRU2L7HeIDChT8QsLIuD5oI7 lbNy0qBKzBHgIWekmSkt9ms1ROna+5ttjJft4GdsL2c137hbAkv/6acRKmTdajuZ4qCIK/ bBJmAaMi2X2bUzmNNhtORgP9Dg0Rdes= Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-180-C5MgzH1IOY-DpgeCwagMUA-1; Fri, 21 Jun 2024 04:24:57 -0400 X-MC-Unique: C5MgzH1IOY-DpgeCwagMUA-1 Received: from mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.15]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 762BF1955BC9; Fri, 21 Jun 2024 08:24:55 +0000 (UTC) Received: from thuth-p1g4.redhat.com (unknown [10.39.192.213]) by mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 743CF1956087; Fri, 21 Jun 2024 08:24:51 +0000 (UTC) From: Thomas Huth To: qemu-s390x@nongnu.org, Christian Borntraeger , Jared Rossi Cc: qemu-devel@nongnu.org, Eric Farman , Claudio Imbrenda , "Collin L . Walling" , Janosch Frank , "Jason J . Herne" , Marc Hartmayer Subject: [PATCH 5/7] hw/s390x: Remove the possibility to load the s390-netboot.img binary Date: Fri, 21 Jun 2024 10:24:20 +0200 Message-ID: <20240621082422.136217-6-thuth@redhat.com> In-Reply-To: <20240621082422.136217-1-thuth@redhat.com> References: <20240621082422.136217-1-thuth@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.15 Received-SPF: pass client-ip=170.10.133.124; envelope-from=thuth@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 11 X-Spam_score: 1.1 X-Spam_bar: + X-Spam_report: (1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.152, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org 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. Signed-off-by: Thomas Huth --- hw/s390x/ipl.h | 12 +++----- hw/s390x/ipl.c | 55 ------------------------------------- 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 GIT binary patch literal 0 HcmV?d00001 literal 67232 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 ba_Yxv8Q%DF#((bPsWNoHC+0@D`RV@w*b1Nq 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/ipl.c b/hw/s390x/ipl.c index 9362de0b6f..8a0a3e6961 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/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 3d0bc3e7f2..779366d551 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -186,11 +186,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); @@ -201,11 +200,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); @@ -270,7 +264,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 0760612bea..3d2e367d31 100644 --- a/pc-bios/meson.build +++ b/pc-bios/meson.build @@ -64,7 +64,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