qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Luke Crawford <lsc@prgmr.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] trivial patch for -exit-upon-reboot
Date: Mon, 6 Nov 2006 19:27:51 -0800 (PST)	[thread overview]
Message-ID: <Pine.NEB.4.64.0611061629540.16988@luke.xen.prgmr.com> (raw)


As part of a client's plan to use systemimager to image Xen domUs, it has 
become convenient to make qemu exit after the OS inside calls reboot (so 
the Xen master can move on to installing the second xen guest)

I first used a patch by Brad Campbell:
http://www.mail-archive.com/qemu-devel@nongnu.org/msg06327.html

this worked great for by-hand installs, (the problem before was that 
systemimager would infinitely loop, and you had to kill it within a fairly 
short period of time to get a clean system)

but now the SysAdmins are automating things, and having qemu exit when the 
install is done has become important.

I made some quick hacks to Brad's work (essentially I changed the name of 
the options, and added an exit(0) in the obvious place)

I've tested this on qemu-0.8.2 and it works (though it conflicts with Brad 
Cambell's patch upon which it is based.)

Anyhow, if you think this might be useful to other people, I'd be willing 
to spend some time cleaning it up and syncing it w/ cvs.

Of course, if you don't mind modifying the install scripts, simply 
changing the reboot to a halt would do the same thing; but sometimes you 
don't want to do that, and patching qemu is more fun anyhow.


(note how I was too lazy to make a new diff; the timestamps are 
unchanged.)


diff -u -r1.210 vl.c
--- vl.c        19 Aug 2006 12:37:52 -0000      1.210
+++ vl.c        20 Aug 2006 08:15:04 -0000
@@ -161,6 +161,7 @@
  #endif
  int acpi_enabled = 1;
  int fd_bootchk = 1;
+int exit_upon_reboot = 0;

  /***********************************************************/
  /* x86 ISA bus support */
@@ -5611,7 +5612,12 @@

  void qemu_system_reset_request(void)
  {
-    reset_requested = 1;
+    printf("Qemu_system_reset_requested\n");
+    if ( exit_upon_reboot) {
+           exit(0);
+    } else {
+           reset_requested = 1;
+    }
      if (cpu_single_env)
          cpu_interrupt(cpu_single_env, CPU_INTERRUPT_EXIT);
  }
@@ -5989,6 +5995,7 @@
      QEMU_OPTION_smp,
      QEMU_OPTION_vnc,
      QEMU_OPTION_no_acpi,
+    QEMU_OPTION_exit_upon_reboot,
  };

  typedef struct QEMUOption {
@@ -6065,6 +6072,7 @@
      { "usb", 0, QEMU_OPTION_usb },
      { "cirrusvga", 0, QEMU_OPTION_cirrusvga },
      { "no-acpi", 0, QEMU_OPTION_no_acpi },
+    { "exit-upon-reboot", 0, QEMU_OPTION_exit_upon_reboot},
      { NULL },
  };

@@ -6708,6 +6716,10 @@
              case QEMU_OPTION_no_acpi:
                  acpi_enabled = 0;
                  break;
+            case QEMU_OPTION_exit_upon_reboot:
+               printf("Rebooting Disabled\n");
+               exit_upon_reboot = 1;
+               break;
              }
          }
      }

                 reply	other threads:[~2006-11-07  3:29 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.NEB.4.64.0611061629540.16988@luke.xen.prgmr.com \
    --to=lsc@prgmr.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).