1. 20 6月, 2013 2 次提交
    • M
      vl: Fix -boot order and once regressions, and related bugs · 8281abd5
      Markus Armbruster 提交于
      Option "once" sets up a different boot order just for the initial
      boot.  Boot order reverts back to normal on reset.  Option "order"
      changes the normal boot order.
      
      The reversal is implemented by reset handler restore_boot_devices(),
      which takes the boot order to revert to as argument.
      restore_boot_devices() does nothing on its first call, because that
      must be the initial machine reset.  On its second call, it changes the
      boot order back, and unregisters itself.
      
      Because we register the handler right when -boot gets parsed, we can
      revert to an incorrect normal boot order, and multiple -boot can
      interact in funny ways.
      
      Here's how things work without -boot once or order:
      
      * boot_devices is "".
      
      * main() passes machine->boot_order to to machine->init(), because
        boot_devices is "".  machine->init() configures firmware
        accordingly.  For PC machines, machine->boot_order is "cad", and
        pc_cmos_init() writes it to RTC CMOS, where SeaBIOS picks it up.
      
      Now consider -boot order=:
      
      * boot_devices is "".
      
      * -boot order= sets boot_devices to "" (no change).
      
      * main() passes machine->boot_order to to machine->init(), because
        boot_devices is "", as above.
      
        Bug: -boot order= has no effect.  Broken in commit e4ada29e.
      
      Next, consider -boot once=a:
      
      * boot_devices is "".
      
      * -boot once=a registers restore_boot_devices() with argument "", and
        sets boot_devices to "a".
      
      * main() passes boot_devices "a" to machine->init(), which configures
        firmware accordingly.  For PC machines, pc_cmos_init() writes the
        boot order to RTC CMOS.
      
      * main() calls qemu_system_reset().  This runs reset handlers.
      
        - restore_boot_devices() gets called with argument "".  Does
          nothing, because it's the first call.
      
      * Machine boots, boot order is "a".
      
      * Machine resets (e.g. monitor command).  Reset handlers run.
      
        - restore_boot_devices() gets called with argument "".  Calls
          qemu_boot_set("") to reconfigure firmware.  For PC machines,
          pc_boot_set() writes it into RTC CMOS.  Reset handler
          unregistered.
      
          Bug: boot order reverts to "" instead of machine->boot_order.  The
          actual boot order depends on how firmware interprets "".  Broken
          in commit e4ada29e.
      
      Next, consider -boot once=a -boot order=c:
      
      * boot_devices is "".
      
      * -boot once=a registers restore_boot_devices() with argument "", and
        sets boot_devices to "a".
      
      * -boot order=c sets boot_devices to "c".
      
      * main() passes boot_devices "c" to machine->init(), which configures
        firmware accordingly.  For PC machines, pc_cmos_init() writes the
        boot order to RTC CMOS.
      
      * main() calls qemu_system_reset().  This runs reset handlers.
      
        - restore_boot_devices() gets called with argument "".  Does
          nothing, because it's the first call.
      
      * Machine boots, boot order is "c".
      
        Bug: it should be "a".  I figure this has always been broken.
      
      * Machine resets (e.g. monitor command).  Reset handlers run.
      
        - restore_boot_devices() gets called with argument "".  Calls
          qemu_boot_set("") to reconfigure firmware.  For PC machines,
          pc_boot_set() writes it into RTC CMOS.  Reset handler
          unregistered.
      
          Bug: boot order reverts to "" instead of "c".  I figure this has
          always been broken, just differently broken before commit
          e4ada29e.
      
      Next, consider -boot once=a -boot once=b -boot once=c:
      
      * boot_devices is "".
      
      * -boot once=a registers restore_boot_devices() with argument "", and
        sets boot_devices to "a".
      
      * -boot once=b registers restore_boot_devices() with argument "a", and
        sets boot_devices to "b".
      
      * -boot once=c registers restore_boot_devices() with argument "b", and
        sets boot_devices to "c".
      
      * main() passes boot_devices "c" to machine->init(), which configures
        firmware accordingly.  For PC machines, pc_cmos_init() writes the
        boot order to RTC CMOS.
      
      * main() calls qemu_system_reset().  This runs reset handlers.
      
        - restore_boot_devices() gets called with argument "".  Does
          nothing, because it's the first call.
      
        - restore_boot_devices() gets called with argument "a".  Calls
          qemu_boot_set("a") to reconfigure firmware.  For PC machines,
          pc_boot_set() writes it into RTC CMOS.  Reset handler
          unregistered.
      
        - restore_boot_devices() gets called with argument "b".  Calls
          qemu_boot_set("b") to reconfigure firmware.  For PC machines,
          pc_boot_set() writes it into RTC CMOS.  Reset handler
          unregistered.
      
      * Machine boots, boot order is "b".
      
        Bug: should really be "c", because that came last, and for all other
        -boot options, the last one wins.  I figure this was broken some
        time before commit 37905d6a, and fixed there only for a single
        occurence of "once".
      
      * Machine resets (e.g. monitor command).  Reset handlers run.
      
        - restore_boot_devices() gets called with argument "".  Calls
          qemu_boot_set("") to reconfigure firmware.  For PC machines,
          pc_boot_set() writes it into RTC CMOS.  Reset handler
          unregistered.
      
          Same bug as above: boot order reverts to "" instead of
          machine->boot_order.
      
      Fix by acting upon -boot options order, once and menu only after
      option parsing is complete, and the machine is known.  This is how the
      other -boot options work already.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1371208516-7857-4-git-send-email-armbru@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      8281abd5
    • M
      vl: Clean up parsing of -boot option argument · 6ef4716c
      Markus Armbruster 提交于
      Commit 3d3b8303 threw in some QemuOpts parsing without replacing the
      existing ad hoc parser, resulting in a confusing mess.  Clean it up.
      
      Two user-visible changes:
      
      1. Invalid options are reported more nicely.  Before:
      
              qemu: unknown boot parameter 'x' in 'x=y'
      
         After:
      
              qemu-system-x86_64: -boot x=y: Invalid parameter 'x'
      
      2. If -boot is given multiple times, options accumulate, just like for
         -machine.  Before, only options order, once and menu accumulated.
         For the other ones, all but the first -boot in non-legacy syntax
         got simply ignored.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1371208516-7857-2-git-send-email-armbru@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      6ef4716c
  2. 17 6月, 2013 2 次提交
    • M
      vl: always define no_frame · 616404cd
      Michael Tokarev 提交于
      Commit 047d4e15 "Unbreak -no-quit for GTK, validate SDL options" broke
      build of qemu without sdl, by referencing `no_frame' variable which is defined
      inside #if SDL block.  Fix that by defining that variable unconditionally.
      
      This is a better fix for the build issue introduced by that patch than
      a revert.  This change keeps the new functinality introduced by that patch
      and just fixes the compilation.  It still is not a complete fix around the
      original issue (not working -no-frame et al with -display gtk), because it
      makes only the legacy interface working, not the new suboption interface,
      so a few more changes are needed.
      
      Cc: Peter Wu <lekensteyn@gmail.com>
      Cc: qemu-trivial@nongnu.org
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      Reviewed-by: NPeter Wu <lekensteyn@gmail.com>
      616404cd
    • M
      vl: always define no_frame · a1077090
      Michael Tokarev 提交于
      Commit 047d4e15 "Unbreak -no-quit for GTK, validate SDL options" broke
      build of qemu without sdl, by referencing `no_frame' variable which is defined
      inside #if SDL block.  Fix that by defining that variable unconditionally.
      
      This is a better fix for the build issue introduced by that patch than
      a revert.  This change keeps the new functinality introduced by that patch
      and just fixes the compilation.  It still is not a complete fix around the
      original issue (not working -no-frame et al with -display gtk), because it
      makes only the legacy interface working, not the new suboption interface,
      so a few more changes are needed.
      
      Cc: Peter Wu <lekensteyn@gmail.com>
      Cc: qemu-trivial@nongnu.org
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      Reviewed-by: NPeter Wu <lekensteyn@gmail.com>
      Tested-by: NAndreas Färber <afaerber@suse.de>
      Message-id: 1371292923-28105-1-git-send-email-mjt@msgid.tls.msk.ru
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      a1077090
  3. 12 6月, 2013 2 次提交
    • P
      Unbreak -no-quit for GTK, validate SDL options · 047d4e15
      Peter Wu 提交于
      Certain options (-no-frame, -alt-grab, -ctrl-grab) only make sense with SDL.
      When compiling without SDL, these options (and -no-quit) print an error message
      and exit qemu.
      
      In case QEMU is compiled with SDL support, the three aforementioned options
      still do not make sense with other display types. This patch addresses that
      issue by printing a warning. I have chosen not to exit QEMU afterwards because
      having the option is not harmful and before this patch it would be ignored
      anyway.
      
      By delaying the sanity check from compile-time with some ifdefs to run-time,
      -no-quit is now also properly supported when compiling without SDL.
      Signed-off-by: NPeter Wu <lekensteyn@gmail.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      047d4e15
    • P
      gtk: implement -full-screen · 787ba4f0
      Peter Wu 提交于
      Aiming for GTK as replacement for SDL, a feature like -full-screen should also
      be implemented.
      
      Bringing the window into full-screen mode is done by activating the "Fullscreen"
      menu item. This is done after showing the windows to make the cursor and menu
      hidden.
      
      v2: drop -no-frame implementation, use booleans instead of ints and ensure
          consistency between ui state and menu.
      Signed-off-by: NPeter Wu <lekensteyn@gmail.com>
      Reviewed-by: NAnthony Liguori <aliguori@us.ibm.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      787ba4f0
  4. 11 6月, 2013 1 次提交
  5. 03 6月, 2013 1 次提交
  6. 23 5月, 2013 1 次提交
  7. 20 5月, 2013 1 次提交
  8. 12 5月, 2013 1 次提交
  9. 02 5月, 2013 1 次提交
  10. 01 5月, 2013 1 次提交
  11. 30 4月, 2013 3 次提交
  12. 27 4月, 2013 1 次提交
  13. 23 4月, 2013 1 次提交
  14. 22 4月, 2013 1 次提交
  15. 16 4月, 2013 5 次提交
  16. 12 4月, 2013 2 次提交
  17. 09 4月, 2013 1 次提交
    • P
      hw: move headers to include/ · 0d09e41a
      Paolo Bonzini 提交于
      Many of these should be cleaned up with proper qdev-/QOM-ification.
      Right now there are many catch-all headers in include/hw/ARCH depending
      on cpu.h, and this makes it necessary to compile these files per-target.
      However, fixing this does not belong in these patches.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      0d09e41a
  18. 05 4月, 2013 3 次提交
  19. 02 4月, 2013 1 次提交
  20. 28 3月, 2013 2 次提交
  21. 26 3月, 2013 1 次提交
  22. 19 3月, 2013 1 次提交
    • A
      add a boot option to do strict boot · c8a6ae8b
      Amos Kong 提交于
      Seabios already added a new device type to halt booting.
      Qemu can add "HALT" at the end of bootindex string, then
      seabios will halt booting after trying to boot from all
      selected devices.
      
      This patch added a new boot option to configure if boot
      from un-selected devices.
      
      This option only effects when boot priority is changed by
      bootindex options, the old style(-boot order=..) will still
      try to boot from un-selected devices.
      
      v2: add HALT entry in get_boot_devices_list()
      v3: rebase to latest qemu upstream
      Signed-off-by: NAmos Kong <akong@redhat.com>
      Message-id: 1363674207-31496-1-git-send-email-akong@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      c8a6ae8b
  23. 18 3月, 2013 1 次提交
  24. 13 3月, 2013 3 次提交
    • G
      Add search path support for qemu data files. · 4524051c
      Gerd Hoffmann 提交于
      This patch allows to specify multiple directories where qemu should look
      for data files.  To implement that the behavior of the -L switch is
      slightly different now:  Instead of replacing the data directory the
      path specified will be appended to the data directory list.  So when
      specifiying -L multiple times all directories specified will be checked,
      in the order they are specified on the command line, instead of just the
      last one.
      
      Additionally the default paths are always appended to the directory
      data list.  This allows to specify a incomplete directory (such as the
      seabios out/ directory) via -L.  Anything not found there will be loaded
      from the default paths, so you don't have to create a symlink farm for
      all the rom blobs.
      
      For trouble-shooting a tracepoint has been added, logging which blob
      has been loaded from which location.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Message-id: 1362739344-8068-1-git-send-email-kraxel@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      4524051c
    • S
      Add support for cancelling of a TPM command · 92dcc234
      Stefan Berger 提交于
      This patch adds support for cancelling an executing TPM command.
      In Linux for example a user can cancel a command through the TPM's
      sysfs 'cancel' entry using
      
      echo "1" > /sysfs/class/misc/tpm0/device/cancel
      
      This patch propagates the cancellation of a command inside a VM
      to the host TPM's sysfs entry.
      It also uses the possibility to cancel the command before QEMU VM
      shutdown or reboot, which helps in preventing QEMU from hanging while
      waiting for the completion of the command.
      To relieve higher layers or users from having to determine the TPM's
      cancel sysfs entry, the driver searches for the entry in well known
      locations.
      Signed-off-by: NStefan Berger <stefanb@linux.vnet.ibm.com>
      Reviewed-by: NCorey Bryant <coreyb@linux.vnet.ibm.com>
      Reviewed-by: NJoel Schopp <jschopp@linux.vnet.ibm.com>
      Message-id: 1361987275-26289-7-git-send-email-stefanb@linux.vnet.ibm.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      92dcc234
    • S
      Support for TPM command line options · d1a0cf73
      Stefan Berger 提交于
      This patch adds support for TPM command line options.
      The command line options supported here are
      
      ./qemu-... -tpmdev passthrough,path=<path to TPM device>,id=<id>
                 -device tpm-tis,tpmdev=<id>,id=<other id>
      
      and
      
      ./qemu-... -tpmdev help
      
      where the latter works similar to -soundhw help and shows a list of
      available TPM backends (for example 'passthrough').
      
      Using the type parameter, the backend is chosen, i.e., 'passthrough' for the
      passthrough driver. The interpretation of the other parameters along
      with determining whether enough parameters were provided is pushed into
      the backend driver, which needs to implement the interface function
      'create' and return a TPMDriverOpts structure if the VM can be started or
      'NULL' if not enough or bad parameters were provided.
      
      Monitor support for 'info tpm' has been added. It for example prints the
      following:
      
      (qemu) info tpm
      TPM devices:
       tpm0: model=tpm-tis
        \ tpm0: type=passthrough,path=/dev/tpm0,cancel-path=/sys/devices/pnp0/00:09/cancel
      Signed-off-by: NStefan Berger <stefanb@linux.vnet.ibm.com>
      Reviewed-by: NCorey Bryant <coreyb@linux.vnet.ibm.com>
      Reviewed-by: NJoel Schopp <jschopp@linux.vnet.ibm.com>
      Message-id: 1361987275-26289-2-git-send-email-stefanb@linux.vnet.ibm.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      d1a0cf73
  25. 09 3月, 2013 1 次提交