From nobody Sat Nov 15 10:52:08 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1752050197; cv=none; d=zohomail.com; s=zohoarc; b=bYxof2Ct/5m7Y3c5Q/GXZQB24780gOxO0V/zbLNrzyiODuUgtfwtzRee4l0LAveeDzY3YeO40dA61d9Tf0p81qp8+mS7luMYHFdtqaEZhs5u5iE+F08f4BoDELFGJ7RGl19FQxDPo5z/aiXYpRGG4e5yhm/fXIXr/CCJHC6wUYw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752050197; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+Pa/Q8RWLwnchAPhKlcSo7LEhW6Ix9c7AUvXBgQeiIk=; b=knAMjCNbUN+udjj3imYdl5w6hkODGLA8kYmUJ2tAMubrU+654Lv2zm7aPl2Mfy75DK1KLaXK2d01ivOaVRFQrx7t/QhIdB4nMuXGd9fqvnxyQS2Y2pA+kwqBgouGoT27xT5lom5hih1zqYTSprOzhqXWNdLFYdFOkZfbeeutkFk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752050197405887.241710263886; Wed, 9 Jul 2025 01:36:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZQGd-0005If-AR; Wed, 09 Jul 2025 04:35:03 -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 1uZQGb-0005D6-Hc for qemu-devel@nongnu.org; Wed, 09 Jul 2025 04:35:01 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uZQGZ-0007l4-KM for qemu-devel@nongnu.org; Wed, 09 Jul 2025 04:35:01 -0400 Received: from mx-prod-mc-03.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-251-CQQfrXV8NGKynm9CMMem0g-1; Wed, 09 Jul 2025 04:34:55 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8B49A18DA5C7; Wed, 9 Jul 2025 08:34:53 +0000 (UTC) Received: from thuth-p1g4.redhat.com (unknown [10.44.32.92]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 54AE218002B3; Wed, 9 Jul 2025 08:34:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752050098; 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=+Pa/Q8RWLwnchAPhKlcSo7LEhW6Ix9c7AUvXBgQeiIk=; b=UXLtnOg9HjkLmbOd7hPBpp4wIvwszbU1Pxd49FAEIfOG0R8ThwYofgCGtzHFcy40I7T3Vw RUCxS0YVx8EwJ4IBi/PLNoWsfRYR5CO8ygCGN4ELChJXYgFjLcP/EeNU/z2DFKId6ZZyvg zsNfzn8tp6DElDzFIPqVy4H7ufdJW6I= X-MC-Unique: CQQfrXV8NGKynm9CMMem0g-1 X-Mimecast-MFC-AGG-ID: CQQfrXV8NGKynm9CMMem0g_1752050093 From: Thomas Huth To: qemu-devel@nongnu.org, Jared Rossi , Zhuoying Cai Cc: qemu-s390x@nongnu.org, Christian Borntraeger , Eric Farman , Halil Pasic , Matthew Rosato Subject: [PATCH v2 1/5] pc-bios/s390-ccw: Allow to select a different pxelinux.cfg entry via loadparm Date: Wed, 9 Jul 2025 10:34:39 +0200 Message-ID: <20250709083443.41574-2-thuth@redhat.com> In-Reply-To: <20250709083443.41574-1-thuth@redhat.com> References: <20250709083443.41574-1-thuth@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=thuth@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1752050198049116600 Content-Type: text/plain; charset="utf-8" From: Thomas Huth Since we're linking the network booting code into the main firmware binary nowadays, we can support the "loadparm" parameter now quite easily for pxelinux.cfg config files that contain multiple entries. Signed-off-by: Thomas Huth Reviewed-by: Jared Rossi --- pc-bios/s390-ccw/netmain.c | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c index 719a547ada0..c0aafca22d2 100644 --- a/pc-bios/s390-ccw/netmain.c +++ b/pc-bios/s390-ccw/netmain.c @@ -332,6 +332,27 @@ static int load_kernel_with_initrd(filename_ip_t *fn_i= p, return rc; } =20 +static int net_select_and_load_kernel(filename_ip_t *fn_ip, + int num_ent, int selected, + struct pl_cfg_entry *entries) +{ + unsigned int loadparm =3D get_loadparm_index(); + + if (num_ent <=3D 0) { + return -1; + } + + IPL_assert(loadparm <=3D num_ent, + "loadparm is set to an entry that is not available in the " + "pxelinux.cfg file!"); + + if (loadparm > 0) { + selected =3D loadparm - 1; + } + + return load_kernel_with_initrd(fn_ip, &entries[selected]); +} + #define MAX_PXELINUX_ENTRIES 16 =20 static int net_try_pxelinux_cfg(filename_ip_t *fn_ip) @@ -343,11 +364,8 @@ static int net_try_pxelinux_cfg(filename_ip_t *fn_ip) DEFAULT_TFTP_RETRIES, cfgbuf, sizeof(cfgbuf), entries, MAX_PXELINUX_ENTRIES, &def_= ent); - if (num_ent > 0) { - return load_kernel_with_initrd(fn_ip, &entries[def_ent]); - } =20 - return -1; + return net_select_and_load_kernel(fn_ip, num_ent, def_ent, entries); } =20 /** @@ -433,10 +451,8 @@ static int net_try_direct_tftp_load(filename_ip_t *fn_= ip) =20 num_ent =3D pxelinux_parse_cfg(cfgbuf, sizeof(cfgbuf), entries, MAX_PXELINUX_ENTRIES, &def_ent); - if (num_ent <=3D 0) { - return -1; - } - return load_kernel_with_initrd(fn_ip, &entries[def_ent]); + return net_select_and_load_kernel(fn_ip, num_ent, def_ent, + entries); } } =20 --=20 2.50.0 From nobody Sat Nov 15 10:52:08 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1752050196; cv=none; d=zohomail.com; s=zohoarc; b=ZTvkg3xJ4xY2VonWdF9oY/ZnkIeBEvUCKWaEQf27LGURL4pZkIzKcFXQasp1wn45DmD+zo/i7/LtwOQXESOX1ElfbQpD9PZv/oRbTiZOdoWU6Ywkk+WJgKCvhmPbEzM5SJODN8Ch4EvbtElhwUT7kJ8FQQ3yhNdZO5rnkefjWUw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752050196; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+AEUqfYYdrho+0PfWMQss1Qc/D0GL1e14SUFfrHqWDE=; b=csozidgFT4NwGuYJ4aNApowk6WvvrXkxZAQmtWPouvu+HQks45rVCtvhT27bbt9xgmDXgzZGJxBglKAPDpfu83+rLG2rOpj1kw7u1+XJ10kv85Xhm1N1rU4mMlerpjdnxLQHlt4eYz6wpP29W6m/zn/Th0HOusSh5eDoRo14Thw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752050196403541.6354845728067; Wed, 9 Jul 2025 01:36:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZQHQ-00066w-1m; Wed, 09 Jul 2025 04:35:52 -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 1uZQGp-0005pX-JU for qemu-devel@nongnu.org; Wed, 09 Jul 2025 04:35:16 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uZQGn-0007zv-AI for qemu-devel@nongnu.org; Wed, 09 Jul 2025 04:35:15 -0400 Received: from mx-prod-mc-03.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-45-xppuXsxqOP6MPpthKDSO6w-1; Wed, 09 Jul 2025 04:35:02 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 2D18C19560B4; Wed, 9 Jul 2025 08:34:57 +0000 (UTC) Received: from thuth-p1g4.redhat.com (unknown [10.44.32.92]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 197E418002B5; Wed, 9 Jul 2025 08:34:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752050112; 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=+AEUqfYYdrho+0PfWMQss1Qc/D0GL1e14SUFfrHqWDE=; b=cKwIkl2/PuHvbDh9SmvxDnhirWFvfBceqntiFoihrgyQoqx1Hb5Z5YHZdxpVYQg/iFK5wa aoIWc1+4MscE4eGg2jqMql+4QyhQuLRstYx87GDld92s/IXgHKUZaF6+RCLJaWUWD8AESU Tx5LizOovaJEOKyGBBkBzBv58ZMqGq8= X-MC-Unique: xppuXsxqOP6MPpthKDSO6w-1 X-Mimecast-MFC-AGG-ID: xppuXsxqOP6MPpthKDSO6w_1752050097 From: Thomas Huth To: qemu-devel@nongnu.org, Jared Rossi , Zhuoying Cai Cc: qemu-s390x@nongnu.org, Christian Borntraeger , Eric Farman , Halil Pasic , Matthew Rosato Subject: [PATCH v2 2/5] pc-bios/s390-ccw: Allow up to 31 entries for pxelinux.cfg Date: Wed, 9 Jul 2025 10:34:40 +0200 Message-ID: <20250709083443.41574-3-thuth@redhat.com> In-Reply-To: <20250709083443.41574-1-thuth@redhat.com> References: <20250709083443.41574-1-thuth@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=thuth@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1752050198057116600 Content-Type: text/plain; charset="utf-8" From: Thomas Huth We're going to support a menu for the pxelinux.cfg code, and to be able to reuse some functionality from menu.c, we should align the maximum amount of possible entries with the MAX_BOOT_ENTRIES constant that is used there. Thus replace MAX_PXELINUX_ENTRIES with MAX_BOOT_ENTRIES. Signed-off-by: Thomas Huth Reviewed-by: Jared Rossi --- pc-bios/s390-ccw/netmain.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c index c0aafca22d2..6f64323cd84 100644 --- a/pc-bios/s390-ccw/netmain.c +++ b/pc-bios/s390-ccw/netmain.c @@ -353,17 +353,15 @@ static int net_select_and_load_kernel(filename_ip_t *= fn_ip, return load_kernel_with_initrd(fn_ip, &entries[selected]); } =20 -#define MAX_PXELINUX_ENTRIES 16 - static int net_try_pxelinux_cfg(filename_ip_t *fn_ip) { - struct pl_cfg_entry entries[MAX_PXELINUX_ENTRIES]; + struct pl_cfg_entry entries[MAX_BOOT_ENTRIES]; int num_ent, def_ent =3D 0; =20 num_ent =3D pxelinux_load_parse_cfg(fn_ip, mac, get_uuid(), DEFAULT_TFTP_RETRIES, cfgbuf, sizeof(cfgbuf), - entries, MAX_PXELINUX_ENTRIES, &def_= ent); + entries, MAX_BOOT_ENTRIES, &def_ent); =20 return net_select_and_load_kernel(fn_ip, num_ent, def_ent, entries); } @@ -446,11 +444,11 @@ static int net_try_direct_tftp_load(filename_ip_t *fn= _ip) * a magic comment string. */ if (!strncasecmp("# pxelinux", cfgbuf, 10)) { - struct pl_cfg_entry entries[MAX_PXELINUX_ENTRIES]; + struct pl_cfg_entry entries[MAX_BOOT_ENTRIES]; int num_ent, def_ent =3D 0; =20 num_ent =3D pxelinux_parse_cfg(cfgbuf, sizeof(cfgbuf), entries, - MAX_PXELINUX_ENTRIES, &def_ent); + MAX_BOOT_ENTRIES, &def_ent); return net_select_and_load_kernel(fn_ip, num_ent, def_ent, entries); } --=20 2.50.0 From nobody Sat Nov 15 10:52:08 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1752050162; cv=none; d=zohomail.com; s=zohoarc; b=ha2yDVfia7NsrPTviQFOxP/tzVPsKGYJSaa/YUT1nKH2JzEdWcgVmnQZOjl3SP8q6AoqwRYmVNoblchBDhiLGPylNcOd9tcHp7uQEY5x2f4wGwLlxa5WlKvYGd2oka16uTwGPv7i1hcVDp5kdSv5hcHo4Njvv/EXjw5PPsRMJ7E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752050162; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mlDhxjajiD0HswlEAArayWqXuDON4+6UkEhTcFzRuSs=; b=fY+i/KlN6M5RBRb2ncOMPYUP5IhoODDtB4dQizY/VjBDL633zaS3+bjJdlNLzxQ/4jNGKmtSE+1qWbmtbGWzgfwqTQDrYsSJNje6SaI93RSV9KCpdbenhyBbXQG9cNWIL8OyYG45svxDVrRbsroWCH5wl1ktMsF7z8mrjvPHms0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752050162231375.88606137274394; Wed, 9 Jul 2025 01:36:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZQH2-0005qj-9R; Wed, 09 Jul 2025 04:35:29 -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 1uZQGl-0005nt-Q5 for qemu-devel@nongnu.org; Wed, 09 Jul 2025 04:35:11 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uZQGk-0007ya-2C for qemu-devel@nongnu.org; Wed, 09 Jul 2025 04:35:11 -0400 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-265-x3jhmhiPOZWKaNSk1LqyiQ-1; Wed, 09 Jul 2025 04:35:03 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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 E8EC21955EC3; Wed, 9 Jul 2025 08:35:00 +0000 (UTC) Received: from thuth-p1g4.redhat.com (unknown [10.44.32.92]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B7AC21800285; Wed, 9 Jul 2025 08:34:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752050108; 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=mlDhxjajiD0HswlEAArayWqXuDON4+6UkEhTcFzRuSs=; b=hu86iPhaC3LcwmhyhYu0Ur79/2Hus9EzVlf1P3Mt1AGpGab81xZFG+KMa90wYnbXmiEBQO wee783/M/v3Anid4FOk1+ejewWC6gAXl+d7rOqI9e18NyoROC7w8oq6Ht0T0HV17xjnpSO fpZ60K3zCfpAwo49Yt00ii7bR3tHtKQ= X-MC-Unique: x3jhmhiPOZWKaNSk1LqyiQ-1 X-Mimecast-MFC-AGG-ID: x3jhmhiPOZWKaNSk1LqyiQ_1752050101 From: Thomas Huth To: qemu-devel@nongnu.org, Jared Rossi , Zhuoying Cai Cc: qemu-s390x@nongnu.org, Christian Borntraeger , Eric Farman , Halil Pasic , Matthew Rosato Subject: [PATCH v2 3/5] pc-bios/s390-ccw: Make get_boot_index() from menu.c global Date: Wed, 9 Jul 2025 10:34:41 +0200 Message-ID: <20250709083443.41574-4-thuth@redhat.com> In-Reply-To: <20250709083443.41574-1-thuth@redhat.com> References: <20250709083443.41574-1-thuth@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=thuth@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1752050164008116600 Content-Type: text/plain; charset="utf-8" From: Thomas Huth We are going to reuse this function for selecting an entry from the pxelinux.cfg menu, so rename this function with a "menu_" prefix and make it available globally. Signed-off-by: Thomas Huth Reviewed-by: Jared Rossi --- pc-bios/s390-ccw/s390-ccw.h | 1 + pc-bios/s390-ccw/menu.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h index 6cdce3e5e5b..b1dc35cdedf 100644 --- a/pc-bios/s390-ccw/s390-ccw.h +++ b/pc-bios/s390-ccw/s390-ccw.h @@ -87,6 +87,7 @@ int menu_get_zipl_boot_index(const char *menu_data); bool menu_is_enabled_zipl(void); int menu_get_enum_boot_index(bool *valid_entries); bool menu_is_enabled_enum(void); +int menu_get_boot_index(bool *valid_entries); =20 #define MAX_BOOT_ENTRIES 31 =20 diff --git a/pc-bios/s390-ccw/menu.c b/pc-bios/s390-ccw/menu.c index 84062e94af4..eeaff78f870 100644 --- a/pc-bios/s390-ccw/menu.c +++ b/pc-bios/s390-ccw/menu.c @@ -159,7 +159,7 @@ static void boot_menu_prompt(bool retry) } } =20 -static int get_boot_index(bool *valid_entries) +int menu_get_boot_index(bool *valid_entries) { int boot_index; bool retry =3D false; @@ -224,7 +224,7 @@ int menu_get_zipl_boot_index(const char *menu_data) } =20 printf("\n"); - return get_boot_index(valid_entries); + return menu_get_boot_index(valid_entries); } =20 int menu_get_enum_boot_index(bool *valid_entries) @@ -247,7 +247,7 @@ int menu_get_enum_boot_index(bool *valid_entries) } =20 printf("\n"); - return get_boot_index(valid_entries); + return menu_get_boot_index(valid_entries); } =20 void menu_set_parms(uint8_t boot_menu_flag, uint32_t boot_menu_timeout) --=20 2.50.0 From nobody Sat Nov 15 10:52:08 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1752050198; cv=none; d=zohomail.com; s=zohoarc; b=b7tOJ5Gl35i7lgvS3pcZE4D07lpzG1iNt2dHStnQHpybhZs/NxTiPJdb4QviEsCtb8Ntl47wHUZPslkBvt7Kr97qAJEBiDUB6zVFuuho5fJV1OeYtr64B5TuSWxfQgpRRJEE0+GSJbsB854WSg74GYp+NaSxd+R012DkJwGIO5Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752050198; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+n9JYmYoRgilnipY97YZlMvRWhtybWXmB9u6fjf7OJo=; b=l8EovLhYmcDKUY4j+g6Kqg2JWxxnEqpqQ48iqsLgh/yOGFnxbF/jQTBgsHLf9Rx9XdlrMC95tenWf05BQx6CEkeKUBE4VmtE8q9COLgUAH+mXdOa2Nl6IggaXYqsIYL0o9vI6tHuBGcsgamLYEeETwLoxGRYH7JLXNm6H9WPSsk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752050198732598.9995365991817; Wed, 9 Jul 2025 01:36:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZQH6-0005vy-Gc; Wed, 09 Jul 2025 04:35:32 -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 1uZQGn-0005pQ-C6 for qemu-devel@nongnu.org; Wed, 09 Jul 2025 04:35:15 -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 1uZQGl-0007zG-6r for qemu-devel@nongnu.org; Wed, 09 Jul 2025 04:35:13 -0400 Received: from mx-prod-mc-01.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-596-Pexp8JUANVmghorvwhpcYg-1; Wed, 09 Jul 2025 04:35:07 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B47821956096; Wed, 9 Jul 2025 08:35:05 +0000 (UTC) Received: from thuth-p1g4.redhat.com (unknown [10.44.32.92]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C827A1800285; Wed, 9 Jul 2025 08:35:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752050110; 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=+n9JYmYoRgilnipY97YZlMvRWhtybWXmB9u6fjf7OJo=; b=F0Ash2gC8PeCNYGc2dVfOb+GmOkEsLic6c+PDzClIHOX217bzxH2HwbGXjepfrmyK3pk9D cFq5ewKxi8ZEXhA9LVZpj4kJnqqJ4cLyNIR7ockO+jv9nC6F4jC+R5QGFPfyCzap941D/g yl+vaH8gpO/ILoJqpMHQDhen+2nSspY= X-MC-Unique: Pexp8JUANVmghorvwhpcYg-1 X-Mimecast-MFC-AGG-ID: Pexp8JUANVmghorvwhpcYg_1752050105 From: Thomas Huth To: qemu-devel@nongnu.org, Jared Rossi , Zhuoying Cai Cc: qemu-s390x@nongnu.org, Christian Borntraeger , Eric Farman , Halil Pasic , Matthew Rosato Subject: [PATCH v2 4/5] pc-bios/s390-ccw: Add a boot menu for booting via pxelinux.cfg Date: Wed, 9 Jul 2025 10:34:42 +0200 Message-ID: <20250709083443.41574-5-thuth@redhat.com> In-Reply-To: <20250709083443.41574-1-thuth@redhat.com> References: <20250709083443.41574-1-thuth@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1752050199975116600 Content-Type: text/plain; charset="utf-8" From: Thomas Huth Show a simple boot menu for pxelinux.cfg, too, if the user requested it. Signed-off-by: Thomas Huth Reviewed-by: Jared Rossi --- pc-bios/s390-ccw/netmain.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c index 6f64323cd84..a9521dff416 100644 --- a/pc-bios/s390-ccw/netmain.c +++ b/pc-bios/s390-ccw/netmain.c @@ -332,6 +332,28 @@ static int load_kernel_with_initrd(filename_ip_t *fn_i= p, return rc; } =20 +static int net_boot_menu(int num_ent, int def_ent, + struct pl_cfg_entry *entries) +{ + bool valid_entries[MAX_BOOT_ENTRIES] =3D { false }; + int idx; + + puts("\ns390-ccw pxelinux.cfg boot menu:\n"); + printf(" [0] default (%d)\n", def_ent + 1); + valid_entries[0] =3D true; + + for (idx =3D 1; idx <=3D num_ent; idx++) { + printf(" [%d] %s\n", idx, entries[idx - 1].label); + valid_entries[idx] =3D true; + } + putchar('\n'); + + idx =3D menu_get_boot_index(valid_entries); + putchar('\n'); + + return idx; +} + static int net_select_and_load_kernel(filename_ip_t *fn_ip, int num_ent, int selected, struct pl_cfg_entry *entries) @@ -342,6 +364,10 @@ static int net_select_and_load_kernel(filename_ip_t *f= n_ip, return -1; } =20 + if (menu_is_enabled_enum() && num_ent > 1) { + loadparm =3D net_boot_menu(num_ent, selected, entries); + } + IPL_assert(loadparm <=3D num_ent, "loadparm is set to an entry that is not available in the " "pxelinux.cfg file!"); --=20 2.50.0 From nobody Sat Nov 15 10:52:08 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1752050200; cv=none; d=zohomail.com; s=zohoarc; b=j3rqXqkfdUz+7a11M77InyJ20s0DE57Lua88SgJ/2zeem4JIHM52nQvyEkO+kG5PSre+BRyKU5uYPxgJ4AUr4mb7FMXBvkWdibk5lOwaaczJcr+sF4tafEqCuWShN0Yu2+kouZplxGYeRoEVqV5msLqswTRLiD3k6w/aje3FdQI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752050200; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=97KvM5Nj+hUjDbu5oylep3gI4vLnZ+B5tHsGAXFWMNA=; b=fAPg4Q/9g7lQzDY0n+HRNt2XiLEpHYdU3ibFkYSXn0WeUmyELdMBI9kXHs7u0xd58jK11nVxRQCWaLh1JlLaztdxRu8CWbUbtmqhWXYLtU3fT/mqBSW3RfPrY0EFMqA2cvJ2ba8au0ASKnSawUzJXlI+D//U7jfi5jr88EqPtqA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752050200697144.42422850862135; Wed, 9 Jul 2025 01:36:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZQHQ-000688-EN; Wed, 09 Jul 2025 04:35:52 -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 1uZQGx-0005ti-GA for qemu-devel@nongnu.org; Wed, 09 Jul 2025 04:35:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uZQGq-00081O-V5 for qemu-devel@nongnu.org; Wed, 09 Jul 2025 04:35:22 -0400 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-687-Ppqnur2VNT65ElsQuhnM0g-1; Wed, 09 Jul 2025 04:35:11 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 527C61809C8B; Wed, 9 Jul 2025 08:35:10 +0000 (UTC) Received: from thuth-p1g4.redhat.com (unknown [10.44.32.92]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B45A618003FC; Wed, 9 Jul 2025 08:35:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752050115; 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=97KvM5Nj+hUjDbu5oylep3gI4vLnZ+B5tHsGAXFWMNA=; b=LuVMcteJ3e6KlITNSju8kFaBRbNQ+Wx7+daCru6AKb1IRWRMjBJPOF3gxwMeZdGk3ZZtpC KSIwWVg1TbAH1ntNNGX8++DSRTdoMG2b3WFil3xs1vVsTFYZQpWFJGGi55k60kmiSqe1cT DjtgVDhGz2AOYrGipQw/+v2fzPqB+Fc= X-MC-Unique: Ppqnur2VNT65ElsQuhnM0g-1 X-Mimecast-MFC-AGG-ID: Ppqnur2VNT65ElsQuhnM0g_1752050110 From: Thomas Huth To: qemu-devel@nongnu.org, Jared Rossi , Zhuoying Cai Cc: qemu-s390x@nongnu.org, Christian Borntraeger , Eric Farman , Halil Pasic , Matthew Rosato Subject: [PATCH v2 5/5] tests/functional: Add a test for s390x pxelinux.cfg network booting Date: Wed, 9 Jul 2025 10:34:43 +0200 Message-ID: <20250709083443.41574-6-thuth@redhat.com> In-Reply-To: <20250709083443.41574-1-thuth@redhat.com> References: <20250709083443.41574-1-thuth@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=thuth@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1752050202189116600 Content-Type: text/plain; charset="utf-8" From: Thomas Huth Check the various ways of booting a kernel via pxelinux.cfg file, e.g. by specifying the config file name via the MAC address or the UUID of the guest. Also check whether we can successfully load an alternate kernel via the "loadparm" parameter here and whether the boot menu shows up with "-boot menu=3Don". Signed-off-by: Thomas Huth Reviewed-by: Jared Rossi --- MAINTAINERS | 1 + tests/functional/meson.build | 1 + tests/functional/test_s390x_pxelinux.py | 119 ++++++++++++++++++++++++ 3 files changed, 121 insertions(+) create mode 100755 tests/functional/test_s390x_pxelinux.py diff --git a/MAINTAINERS b/MAINTAINERS index 1842c3dd83f..e88ed2c0a97 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1805,6 +1805,7 @@ F: hw/s390x/ipl.* F: pc-bios/s390-ccw/ F: pc-bios/s390-ccw.img F: docs/devel/s390-dasd-ipl.rst +F: tests/functional/test_s390x_pxelinux.py T: git https://github.com/borntraeger/qemu.git s390-next L: qemu-s390x@nongnu.org =20 diff --git a/tests/functional/meson.build b/tests/functional/meson.build index 050c9000b95..1ae5f02fb37 100644 --- a/tests/functional/meson.build +++ b/tests/functional/meson.build @@ -281,6 +281,7 @@ tests_rx_system_thorough =3D [ =20 tests_s390x_system_thorough =3D [ 's390x_ccw_virtio', + 's390x_pxelinux', 's390x_replay', 's390x_topology', 's390x_tuxrun', diff --git a/tests/functional/test_s390x_pxelinux.py b/tests/functional/tes= t_s390x_pxelinux.py new file mode 100755 index 00000000000..4fc33b8c46d --- /dev/null +++ b/tests/functional/test_s390x_pxelinux.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 +# +# SPDX-License-Identifier: GPL-2.0-or-later +# +# Functional test that checks the pxelinux.cfg network booting of a s390x = VM +# (TFTP booting without config file is already tested by the pxe qtest, so +# we don't repeat that here). + +import os +import shutil + +from qemu_test import QemuSystemTest, Asset, wait_for_console_pattern + + +pxelinux_cfg_contents=3D'''# pxelinux.cfg style config file +default Debian +label Nonexisting +kernel kernel.notavailable +initrd initrd.notavailable +label Debian +kernel kernel.debian +initrd initrd.debian +append testoption=3Dteststring +label Fedora +kernel kernel.fedora +''' + +class S390PxeLinux(QemuSystemTest): + + ASSET_DEBIAN_KERNEL =3D Asset( + ('https://snapshot.debian.org/archive/debian/' + '20201126T092837Z/dists/buster/main/installer-s390x/' + '20190702+deb10u6/images/generic/kernel.debian'), + 'd411d17c39ae7ad38d27534376cbe88b68b403c325739364122c2e6f1537e818') + + ASSET_DEBIAN_INITRD =3D Asset( + ('https://snapshot.debian.org/archive/debian/' + '20201126T092837Z/dists/buster/main/installer-s390x/' + '20190702+deb10u6/images/generic/initrd.debian'), + '836bbd0fe6a5ca81274c28c2b063ea315ce1868660866e9b60180c575fef9fd5') + + ASSET_FEDORA_KERNEL =3D Asset( + ('https://archives.fedoraproject.org/pub/archive' + '/fedora-secondary/releases/31/Server/s390x/os' + '/images/kernel.img'), + '480859574f3f44caa6cd35c62d70e1ac0609134e22ce2a954bbed9b110c06e0b') + + def pxelinux_launch(self, pl_name=3D'default', extra_opts=3DNone): + self.require_netdev('user') + self.set_machine('s390-ccw-virtio') + + debian_kernel =3D self.ASSET_DEBIAN_KERNEL.fetch() + debian_initrd =3D self.ASSET_DEBIAN_INITRD.fetch() + fedora_kernel =3D self.ASSET_FEDORA_KERNEL.fetch() + + # Prepare a folder for the TFTP "server": + tftpdir =3D self.scratch_file('tftp') + shutil.rmtree(tftpdir, ignore_errors=3DTrue) # Remove stale stuff + os.mkdir(tftpdir) + shutil.copy(debian_kernel, os.path.join(tftpdir, 'kernel.debian')) + shutil.copy(debian_initrd, os.path.join(tftpdir, 'initrd.debian')) + shutil.copy(fedora_kernel, os.path.join(tftpdir, 'kernel.fedora')) + + pxelinuxdir =3D self.scratch_file('tftp', 'pxelinux.cfg') + os.mkdir(pxelinuxdir) + + cfg_fname =3D self.scratch_file('tftp', 'pxelinux.cfg', pl_name) + with open(cfg_fname, 'w', encoding=3D'utf-8') as f: + f.write(pxelinux_cfg_contents) + + virtio_net_dev =3D 'virtio-net-ccw,netdev=3Dn1,bootindex=3D1' + if extra_opts: + virtio_net_dev +=3D ',' + extra_opts + + self.vm.add_args('-m', '384', + '-netdev', f'user,id=3Dn1,tftp=3D{tftpdir}', + '-device', virtio_net_dev) + self.vm.set_console() + self.vm.launch() + + + def test_default(self): + self.pxelinux_launch() + # The kernel prints its arguments to the console, so we can use + # this to check whether the kernel parameters are correctly handle= d: + wait_for_console_pattern(self, 'testoption=3Dteststring') + # Now also check that we've successfully loaded the initrd: + wait_for_console_pattern(self, 'Unpacking initramfs...') + wait_for_console_pattern(self, 'Run /init as init process') + + def test_mac(self): + self.pxelinux_launch(pl_name=3D'01-02-ca-fe-ba-be-42', + extra_opts=3D'mac=3D02:ca:fe:ba:be:42,loadpar= m=3D3') + wait_for_console_pattern(self, 'Linux version 5.3.7-301.fc31.s390x= ') + + def test_uuid(self): + # Also add a non-bootable disk to check the fallback to network bo= ot: + self.vm.add_args('-blockdev', 'null-co,size=3D65536,node-name=3Dd1= ', + '-device', 'virtio-blk,drive=3Dd1,bootindex=3D0,l= oadparm=3D1', + '-uuid', '550e8400-e29b-11d4-a716-446655441234') + self.pxelinux_launch(pl_name=3D'550e8400-e29b-11d4-a716-4466554412= 34') + wait_for_console_pattern(self, 'Debian 4.19.146-1 (2020-09-17)') + + def test_ip(self): + self.vm.add_args('-M', 'loadparm=3D3') + self.pxelinux_launch(pl_name=3D'0A00020F') + wait_for_console_pattern(self, 'Linux version 5.3.7-301.fc31.s390x= ') + + def test_menu(self): + self.vm.add_args('-boot', 'menu=3Don,splash-time=3D10') + self.pxelinux_launch(pl_name=3D'0A00') + wait_for_console_pattern(self, '[1] Nonexisting') + wait_for_console_pattern(self, '[2] Debian') + wait_for_console_pattern(self, '[3] Fedora') + wait_for_console_pattern(self, 'Debian 4.19.146-1 (2020-09-17)') + + +if __name__ =3D=3D '__main__': + QemuSystemTest.main() --=20 2.50.0