qemu-s390x
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v4 11/19] pc-bios/s390-ccw: Remove panics from Netboot IPL pa


From: Thomas Huth
Subject: Re: [PATCH v4 11/19] pc-bios/s390-ccw: Remove panics from Netboot IPL path
Date: Thu, 17 Oct 2024 12:33:08 +0200
User-agent: Mozilla Thunderbird

On 17/10/2024 03.47, jrossi@linux.ibm.com wrote:
From: Jared Rossi <jrossi@linux.ibm.com>

Remove panic-on-error from Netboot specific functions so that error recovery
may be possible in the future.

Functions that would previously panic now provide a return code.

Signed-off-by: Jared Rossi <jrossi@linux.ibm.com>
---
  pc-bios/s390-ccw/s390-ccw.h   |  2 +-
  pc-bios/s390-ccw/bootmap.c    |  1 +
  pc-bios/s390-ccw/netmain.c    | 17 +++++++++++------
  pc-bios/s390-ccw/virtio-net.c |  7 +++++--
  4 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h
index 3e844abd71..344ad15655 100644
--- a/pc-bios/s390-ccw/s390-ccw.h
+++ b/pc-bios/s390-ccw/s390-ccw.h
@@ -57,7 +57,7 @@ unsigned int get_loadparm_index(void);
  void main(void);
/* netmain.c */
-void netmain(void);
+int netmain(void);
/* sclp.c */
  void sclp_print(const char *string);
diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c
index a277fc3431..f1cfb7aaa8 100644
--- a/pc-bios/s390-ccw/bootmap.c
+++ b/pc-bios/s390-ccw/bootmap.c
@@ -1073,6 +1073,7 @@ void zipl_load(void)
if (virtio_get_device_type() == VIRTIO_ID_NET) {
          netmain();
+        panic("\n! Cannot IPL from this network !\n");
      }
if (ipl_scsi()) {
diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c
index bc6ad8695f..0bb359e09f 100644
--- a/pc-bios/s390-ccw/netmain.c
+++ b/pc-bios/s390-ccw/netmain.c
@@ -464,7 +464,7 @@ static bool find_net_dev(Schib *schib, int dev_no)
      return false;
  }
-static void virtio_setup(void)
+static bool virtio_setup(void)
  {
      Schib schib;
      int ssid;
@@ -495,10 +495,10 @@ static void virtio_setup(void)
          }
      }
- IPL_assert(found, "No virtio net device found");
+    return found;
  }
-void netmain(void)
+int netmain(void)
  {
      filename_ip_t fn_ip;
      int rc, fnlen;
@@ -506,11 +506,15 @@ void netmain(void)
      sclp_setup();
      puts("Network boot starting...");
- virtio_setup();
+    if (!virtio_setup()) {
+        puts("No virtio net device found.");
+        return 1;
+    }
rc = net_init(&fn_ip);
      if (rc) {
-        panic("Network initialization failed. Halting.");
+        puts("Network initialization failed.");
+        return 1;
      }
fnlen = strlen(fn_ip.filename);
@@ -528,5 +532,6 @@ void netmain(void)
          jump_to_low_kernel();
      }
- panic("Failed to load OS from network.");
+    puts("Failed to load OS from network.");
+    return 1;
  }

I'd maybe also change the netmain() function to return -1 in case of errors.

Anyway:
Reviewed-by: Thomas Huth <thuth@redhat.com>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]