From nobody Sat Nov 15 12:14:54 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=1752007730; cv=none; d=zohomail.com; s=zohoarc; b=f9JHfSrkf8zjjiuQ317HSQk8WVctcFc5mhQRds7oKK3zfFw9Gm1r4Io5JruCGX0dfHBksPy7P6l1W8gAzJ1m1F94EdLZPFHB2J49t8+I+htdlEo4gD9zcYq3JSSs0KJWCEtsMMO9t0tB3HXgAQmZ5PPvVYgoV6KpLkR4Y+Vc7nc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752007730; 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=+E8EuG07i1RQYRr0EUKQV3w7LL62EeDa6k1vmzGubEM=; b=MjDQ1qZP63HuRHhfU7GIVKOvHbKWGU4zS67zrURG5xqiizNQNLcPZPYwDud9LZDFBMFE4SxtS9zAJESYC72wM48L1pTvxwzbeRrptspwRoc7dkc7DuuEkDAkp/mlzwMvtJVW50yLFev1gQOrvQ5BbYc77fhjTRhdo1danaLi9H8= 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 1752007730493223.31393804706647; Tue, 8 Jul 2025 13:48:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZFAf-0003t6-Oa; Tue, 08 Jul 2025 16:44:09 -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 1uZDmI-0003fz-1W for qemu-devel@nongnu.org; Tue, 08 Jul 2025 15:14:59 -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 1uZDmB-0006sL-E5 for qemu-devel@nongnu.org; Tue, 08 Jul 2025 15:14:51 -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-582-vJBqEgZ4OlmPQnu8XnS1nw-1; Tue, 08 Jul 2025 08:56:39 -0400 Received: from mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.40]) (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 444421809C8F; Tue, 8 Jul 2025 12:56:37 +0000 (UTC) Received: from thuth-p1g4.str.redhat.com (dhcp-192-196.str.redhat.com [10.33.192.196]) by mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 19FB719560AB; Tue, 8 Jul 2025 12:56:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752002082; 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=+E8EuG07i1RQYRr0EUKQV3w7LL62EeDa6k1vmzGubEM=; b=QzQ8mMpf7I0CxA1MEuqHTQLH5HZ1gIIKOc6SlK880MVhon3ojePJOj7A8en5NNOoeuUZ4N MkM1EhyyWCk0FUMQAPxxaAiUsGEJaRekjrGKunBkrdkGQa/wgWCFZeLTNjxwU9J9n0ednv tBAgQgQmjp+OWAs6LoS6yTbEXGyxSrk= X-MC-Unique: vJBqEgZ4OlmPQnu8XnS1nw-1 X-Mimecast-MFC-AGG-ID: vJBqEgZ4OlmPQnu8XnS1nw_1751979397 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 1/5] pc-bios/s390-ccw: Allow to select a different pxelinux.cfg entry via loadparm Date: Tue, 8 Jul 2025 14:56:26 +0200 Message-ID: <20250708125630.58676-2-thuth@redhat.com> In-Reply-To: <20250708125630.58676-1-thuth@redhat.com> References: <20250708125630.58676-1-thuth@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.40 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: 1752007732240116600 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 --- pc-bios/s390-ccw/netmain.c | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c index 719a547ada0..024b4419ef6 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_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; + } + + if (loadparm > num_ent) { + printf("Error: loadparm is set to entry #%d, but there are only " + "%d entries in the pxelinux.cfg file!\n" + "Using default entry now instead.\n", + loadparm, num_ent); + } else 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 +365,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 +452,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 12:14:54 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=1752008013; cv=none; d=zohomail.com; s=zohoarc; b=LR7wAv0gZWuq6x+42BEfYYB1A754yKhVHpDGnUC1qfNf5FvmSTEZyJMhCe7J19/unnHgepcfVq7wtOf4kgOWKIaYSlFaNbMJARJ1k2OQW/SKmRGFuAbcEIT0hrbHikPhVjSC5BKvCpZjgHIa3+s2uXNSQpNzPIzS9JS7M0w8H5s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752008013; 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=jw5d25sXHGdf0M9sXiuyl0RF1wEk9KuB131pPHMmIJI=; b=FiBKAeGxKxs0kiSri5AC4Hxf/ycH97D4PJHYYiZKEl3n4uY3DHVSdnzvuK0huBcVd3O5+rBkCosGY2NvOppGiD1yXQun2o4172JEcdacFBfTVa3B1DE9e8Dr13khe+zGzMkkYClLAg7OPtbG4v5G3PIosUu+a/zXcpsvIJQiJto= 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 175200801299755.219300123670564; Tue, 8 Jul 2025 13:53:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZFCx-00017U-2f; Tue, 08 Jul 2025 16:46: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 1uZDmT-0003jN-Fs for qemu-devel@nongnu.org; Tue, 08 Jul 2025 15:15:15 -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 1uZDmO-0006xW-W0 for qemu-devel@nongnu.org; Tue, 08 Jul 2025 15:15:03 -0400 Received: from mx-prod-mc-06.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-636-uRV5I-iUM3KcH39b6ZDGjA-1; Tue, 08 Jul 2025 08:56:41 -0400 Received: from mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.40]) (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-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id EEFD21800287; Tue, 8 Jul 2025 12:56:39 +0000 (UTC) Received: from thuth-p1g4.str.redhat.com (dhcp-192-196.str.redhat.com [10.33.192.196]) by mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C422219560AB; Tue, 8 Jul 2025 12:56:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752002097; 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=jw5d25sXHGdf0M9sXiuyl0RF1wEk9KuB131pPHMmIJI=; b=RWXX6UG/XNykcOTMp5vtyX73t1pe3bjVONsHDnHOimtjbnegGxhM/ENgSPJVg7JUf6H364 GyLy0NVkWjkKpkCh5ksqXSCpq6duH6EZL0idwujJv9fELIhYV4ZbKuHKfTcMzpLp2qG3T2 dEr7PCHgIQeCaRphuErHzb3H5iw8kSE= X-MC-Unique: uRV5I-iUM3KcH39b6ZDGjA-1 X-Mimecast-MFC-AGG-ID: uRV5I-iUM3KcH39b6ZDGjA_1751979400 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 2/5] pc-bios/s390-ccw: Allow up to 31 entries for pxelinux.cfg Date: Tue, 8 Jul 2025 14:56:27 +0200 Message-ID: <20250708125630.58676-3-thuth@redhat.com> In-Reply-To: <20250708125630.58676-1-thuth@redhat.com> References: <20250708125630.58676-1-thuth@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.40 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: 1752008013353116600 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 --- 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 024b4419ef6..4f77635fb86 100644 --- a/pc-bios/s390-ccw/netmain.c +++ b/pc-bios/s390-ccw/netmain.c @@ -354,17 +354,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); } @@ -447,11 +445,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 12:14:54 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=1752007657; cv=none; d=zohomail.com; s=zohoarc; b=mIokVB/QopRrTtd+3EV1MmPktJK36Gv7ENYl2EZZRC1WvBG17SDc5fWpWnB8uitktPUTdw5eDyW/LM3kTz6WBaY+8bQ0cHxK87Y3kD4CjLAyQ8Pz9lI7z4AAJnb7LpmKIqCnASELpR5xcpS3EB52NukhQmxCtfVQ/kAOf4AeJ+s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752007657; 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=DDy/RofGxxj1tC2cNl7zVtgx4Ow/nAK4AAJeFwWiZqy0Tp2xrYzRnL3FXw4jJUsDvcu/7Wcn/+Tn2BrL+VfJ7CD53wp2xGFidl7UK/HykhjI2MBryzNRIJV00pbrFVKOWFRNAtiJ6jNcFeEHiDB2DZXKYEqhZvI1guP8xcOUaWs= 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 1752007657949565.5088910704532; Tue, 8 Jul 2025 13:47:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZFDT-0002Fh-Ln; Tue, 08 Jul 2025 16:47: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 1uZDn1-00043B-Ec for qemu-devel@nongnu.org; Tue, 08 Jul 2025 15:15:46 -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 1uZDmw-00076L-Cl for qemu-devel@nongnu.org; Tue, 08 Jul 2025 15:15:37 -0400 Received: from mx-prod-mc-05.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-655-EjOL4GHfM3en159cJABNAw-1; Tue, 08 Jul 2025 08:56:43 -0400 Received: from mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.40]) (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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 89630193F058; Tue, 8 Jul 2025 12:56:42 +0000 (UTC) Received: from thuth-p1g4.str.redhat.com (dhcp-192-196.str.redhat.com [10.33.192.196]) by mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5F64C19560AB; Tue, 8 Jul 2025 12:56:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752002130; 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=K1yAxC52PuyK3ThGziigRbdhC2f65krJ/N7Ah7dCNskYA5aCb18kbcMllIkNs++3wNWy7r Y8xof2zaGON8+/+IU0/Dkrif6cvF5iDdoJYfhBfjZaWZebEjOmUyhpUxHDtjo8noT1Ym0/ IWoXigs1dOtFeLK1jjh3BJMXNIuhdrA= X-MC-Unique: EjOL4GHfM3en159cJABNAw-1 X-Mimecast-MFC-AGG-ID: EjOL4GHfM3en159cJABNAw_1751979402 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 3/5] pc-bios/s390-ccw: Make get_boot_index() from menu.c global Date: Tue, 8 Jul 2025 14:56:28 +0200 Message-ID: <20250708125630.58676-4-thuth@redhat.com> In-Reply-To: <20250708125630.58676-1-thuth@redhat.com> References: <20250708125630.58676-1-thuth@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.40 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: 1752007659724116600 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 --- 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 12:14:54 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=1752010161; cv=none; d=zohomail.com; s=zohoarc; b=PTLsaadgtq0LHCVOiReabCQlJaWD5/8Rf69TL/rCIuwYTbD+CbBSNhJ2oeo0XysVA0XEKk/u3gWNQty4GgI825eXi787MN3Z8U2Oe4WNI094iwgYMUdZzx5iZ4nY752ErgrDUajJNx73E95f9ovshyfFhmnUy55bxk1LxLq0ycQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752010161; 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=XphjHwPaAFIZY0wPtsSOIv7+zbi80IEATDR5be2xxNY=; b=kxGtDISAr+W2amuKIabgzkZV3fPllFcX+SGISAgEpdjR007ptIj18tOfh7Hae1BTyI3e7GT3cw3tx6prb0sqe8wOz35sEePGFqb70VtEcMCP1SIPxT9UNcgnR/VBxf7YrfyXkjDLkXCaaEwnE1Pscn31+Q1j40C9oD3Y5+AJxzQ= 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 1752010161318489.9652504909062; Tue, 8 Jul 2025 14:29:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZFAl-000434-NJ; Tue, 08 Jul 2025 16:44:15 -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 1uZDnA-00048a-P0 for qemu-devel@nongnu.org; Tue, 08 Jul 2025 15:16:02 -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 1uZDmy-00076O-CJ for qemu-devel@nongnu.org; Tue, 08 Jul 2025 15:15:44 -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-385-St1CX3E8MRa0UtJ7Qfh_rw-1; Tue, 08 Jul 2025 08:56:46 -0400 Received: from mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.40]) (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 6093F18089B5; Tue, 8 Jul 2025 12:56:45 +0000 (UTC) Received: from thuth-p1g4.str.redhat.com (dhcp-192-196.str.redhat.com [10.33.192.196]) by mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id EE84419560AB; Tue, 8 Jul 2025 12:56:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752002130; 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=XphjHwPaAFIZY0wPtsSOIv7+zbi80IEATDR5be2xxNY=; b=KU5+WNwd67Sv/DU8/Ai5Mo5Sn4x5P2B37Jz6nqyxywZ6YZu7b8qAC22tuK7CvBKIiIp8+/ yfj0djKOCS5HiLPH6mDGvz5jTvTFnx3hU7wanWu2mT4V0jYLcbGLDoCkNjENDRJw/0CFcZ 0jWwU+9UAnsSfJeDLYuUFFWN5/PmPtE= X-MC-Unique: St1CX3E8MRa0UtJ7Qfh_rw-1 X-Mimecast-MFC-AGG-ID: St1CX3E8MRa0UtJ7Qfh_rw_1751979405 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 4/5] pc-bios/s390-ccw: Add a boot menu for booting via pxelinux.cfg Date: Tue, 8 Jul 2025 14:56:29 +0200 Message-ID: <20250708125630.58676-5-thuth@redhat.com> In-Reply-To: <20250708125630.58676-1-thuth@redhat.com> References: <20250708125630.58676-1-thuth@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.40 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: 1752010162248116600 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 --- 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 4f77635fb86..e2e408fd535 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); + } + if (loadparm > num_ent) { printf("Error: loadparm is set to entry #%d, but there are only " "%d entries in the pxelinux.cfg file!\n" --=20 2.50.0 From nobody Sat Nov 15 12:14:54 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=1752008038; cv=none; d=zohomail.com; s=zohoarc; b=hBmAFvRx2f5s7i/Tlr501d5CjL1ZU2K0hQ8odVvDqghxu9loj735qcow9iRKBPvlTAFL6xDxFMHl8RIqllIoQC+1P/+A8laAMvZBfW8l839CADWzfsmx1caXSA/WMNaB/D40qleiqskqgUmfl1Zp+/9Ukr2FQ4abryYP53nq9hk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752008038; 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=e7w874XO5+cxv8XLuTTKyS7I663PEUleYooEMgED50Y=; b=ZIh1Ma9VaV/cRxUTRDdKG/oqRx7uRDxBH4kacHG5t0p1oQoef0YdtHCWpKVWt81Kr8TLyrexOC+XCveq7uznA+FrfWSjepAISDzEWaZL3YEzUYShKs/imNMOLLYEjpH0i0Ap8sjOlWbxr2vj2Aerbs16XpoDDe2+lGkd8tjXnEE= 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 1752008038834440.2802248597593; Tue, 8 Jul 2025 13:53:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZFAi-0003yF-JD; Tue, 08 Jul 2025 16:44:12 -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 1uZDma-0003kU-6i for qemu-devel@nongnu.org; Tue, 08 Jul 2025 15:15:27 -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 1uZDmS-0006z3-N1 for qemu-devel@nongnu.org; Tue, 08 Jul 2025 15:15:07 -0400 Received: from mx-prod-mc-04.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-455-tv3YoOIzN2CgnBSMefVaeQ-1; Tue, 08 Jul 2025 08:56:49 -0400 Received: from mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.40]) (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-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id EFAF7190FBC2; Tue, 8 Jul 2025 12:56:47 +0000 (UTC) Received: from thuth-p1g4.str.redhat.com (dhcp-192-196.str.redhat.com [10.33.192.196]) by mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C5B6419560B2; Tue, 8 Jul 2025 12:56:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752002101; 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=e7w874XO5+cxv8XLuTTKyS7I663PEUleYooEMgED50Y=; b=LWhaahGIHStmGMNV9Wd38c4XPc7haojEhr02lpHOcrTLoRtjlzY0M18hZIz94gRMLaXuey uXuQKcMPcpcIRinVNMT3YG7qYTMTg8W0csUK9EwJR3Ta/j/wFqfkFFROfkuE8nJ4TznmgQ VDPreqOizRwtRKht/6W//0apXztw1ZI= X-MC-Unique: tv3YoOIzN2CgnBSMefVaeQ-1 X-Mimecast-MFC-AGG-ID: tv3YoOIzN2CgnBSMefVaeQ_1751979408 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 5/5] tests/functional: Add a test for s390x pxelinux.cfg network booting Date: Tue, 8 Jul 2025 14:56:30 +0200 Message-ID: <20250708125630.58676-6-thuth@redhat.com> In-Reply-To: <20250708125630.58676-1-thuth@redhat.com> References: <20250708125630.58676-1-thuth@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.40 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: 1752008039775116600 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 --- 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..f83cf9aed03 --- /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 fall back to network b= oot: + 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