1. 28 8月, 2013 1 次提交
    • M
      hw: Clean up bogus default boot order · c1654732
      Markus Armbruster 提交于
      We set default boot order "cad" in every single machine definition
      except "pseries" and "moxiesim", even though very few boards actually
      care for boot order, and "cad" makes sense for even fewer.
      
      Machines that care:
      
      * pc and its variants
      
        Accept up to three letters 'a', 'b' (undocumented alias for 'a'),
        'c', 'd' and 'n'.  Reject all others (fatal with -boot).
      
      * nseries (n800, n810)
      
        Check whether order starts with 'n'.  Silently ignored otherwise.
      
      * prep, g3beige, mac99
      
        Extract the first character the machine understands (subset of
        'a'..'f').  Silently ignored otherwise.
      
      * spapr
      
        Accept an arbitrary string (vl.c restricts it to contain only
        'a'..'p', no duplicates).
      
      * sun4[mdc]
      
        Use the first character.  Silently ignored otherwise.
      
      Strip characters these machines ignore from their default boot order.
      
      For all other machines, remove the unused default boot order
      alltogether.
      
      Note that my rename of QEMUMachine member boot_order to
      default_boot_order and QEMUMachineInitArgs member boot_device to
      boot_order has a welcome side effect: it makes every use of boot
      orders visible in this patch, for easy review.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      c1654732
  2. 30 7月, 2013 1 次提交
  3. 11 7月, 2013 1 次提交
    • S
      add timestamp to error_report() · 5e2ac519
      Seiji Aguchi 提交于
      [Issue]
      When we offer a customer support service and a problem happens
      in a customer's system, we try to understand the problem by
      comparing what the customer reports with message logs of the
      customer's system.
      
      In this case, we often need to know when the problem happens.
      
      But, currently, there is no timestamp in qemu's error messages.
      Therefore, we may not be able to understand the problem based on
      error messages.
      
      [Solution]
      Add a timestamp to qemu's error message logged by
      error_report() with g_time_val_to_iso8601().
      Signed-off-by: NSeiji Aguchi <seiji.aguchi@hds.com>
      Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
      5e2ac519
  4. 10 7月, 2013 4 次提交
    • M
      vl: Tighten parsing of -machine option phandle_start · c1b71b0c
      Markus Armbruster 提交于
      Make it QEMU_OPT_NUMBER, so it gets parsed by generic code, which
      actually bothers to check for errors, rather than its user, which
      doesn't.
      
      Cc: Alexander Graf <agraf@suse.de>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Acked-by: NAlexander Graf <agraf@suse.de>
      Message-id: 1372943363-24081-8-git-send-email-armbru@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      c1b71b0c
    • M
      Simplify -machine option queries with qemu_get_machine_opts() · 2ff3de68
      Markus Armbruster 提交于
      The previous two commits fixed bugs in -machine option queries.  I
      can't find fault with the remaining queries, but let's use
      qemu_get_machine_opts() everywhere, for consistency, simplicity and
      robustness.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Message-id: 1372943363-24081-7-git-send-email-armbru@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      2ff3de68
    • M
      Fix -machine options accel, kernel_irqchip, kvm_shadow_mem · 36ad0e94
      Markus Armbruster 提交于
      Multiple -machine options with the same ID are merged.  All but the
      one without an ID are to be silently ignored.
      
      In most places, we query these options with a null ID.  This is
      correct.
      
      In some places, we instead query whatever options come first in the
      list.  This is wrong.  When the -machine processed first happens to
      have an ID, options are taken from that ID, and the ones specified
      without ID are silently ignored.
      
      Example:
      
          $ upstream-qemu -nodefaults -S -display none -monitor stdio -machine id=foo -machine accel=kvm,usb=on
          $ upstream-qemu -nodefaults -S -display none -monitor stdio -machine id=foo,accel=kvm,usb=on -machine accel=xen
          $ upstream-qemu -nodefaults -S -display none -monitor stdio -machine accel=xen -machine id=foo,accel=kvm,usb=on
      
          $ qemu-system-x86_64 -nodefaults -S -display none -monitor stdio -machine accel=kvm,usb=on
          QEMU 1.5.50 monitor - type 'help' for more information
          (qemu) info kvm
          kvm support: enabled
          (qemu) info usb
          (qemu) q
          $ qemu-system-x86_64 -nodefaults -S -display none -monitor stdio -machine id=foo -machine accel=kvm,usb=on
          QEMU 1.5.50 monitor - type 'help' for more information
          (qemu) info kvm
          kvm support: disabled
          (qemu) info usb
          (qemu) q
          $ qemu-system-x86_64 -nodefaults -S -display none -monitor stdio -machine id=foo,accel=kvm,usb=on -machine accel=xen
          QEMU 1.5.50 monitor - type 'help' for more information
          (qemu) info kvm
          kvm support: enabled
          (qemu) info usb
          USB support not enabled
          (qemu) q
          $ qemu-system-x86_64 -nodefaults -S -display none -monitor stdio -machine accel=xen -machine id=foo,accel=kvm,usb=on
          xc: error: Could not obtain handle on privileged command interface (2 = No such file or directory): Internal error
          xen be core: can't open xen interface
          failed to initialize Xen: Operation not permitted
      
      Option usb is queried correctly, and the one without an ID wins,
      regardless of option order.
      
      Option accel is queried incorrectly, and which one wins depends on
      option order and ID.
      
      Affected options are accel (and its sugared forms -enable-kvm and
      -no-kvm), kernel_irqchip, kvm_shadow_mem.
      
      Additionally, option kernel_irqchip is normally on by default, except
      it's off when no -machine options are given.  Bug can't bite, because
      kernel_irqchip is used only when KVM is enabled, KVM is off by
      default, and enabling always creates -machine options.  Downstreams
      that enable KVM by default do get bitten, though.
      
      Use qemu_get_machine_opts() to fix these bugs.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Message-id: 1372943363-24081-5-git-send-email-armbru@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      36ad0e94
    • M
      vl: New qemu_get_machine_opts() · 7f9d6e54
      Markus Armbruster 提交于
      To be used in the next few commits to fix or clean up queries of
      "machine" options (-machine and its sugared forms).
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Message-id: 1372943363-24081-4-git-send-email-armbru@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      7f9d6e54
  5. 29 6月, 2013 1 次提交
    • M
      vl: convert -smp to qemu_opts_parse() · 12b7f57e
      Michael Tokarev 提交于
      This also introduces a new suboption, "cpus=",
      which is the default.  So after this patch,
      
       -smp n,sockets=y
      
      is the same as
      
        -smp cpus=n,sockets=y
      
      (with "cpu" being some generic thing, referring to
      either cores, or threads, or sockets, as before).
      
      We still don't validate relations between different
      numbers, for example it is still possible to say
      
        -smp 1,sockets=10
      
      and it will be accepted to mean sockets=1.
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      Message-id: 1372072012-30305-1-git-send-email-mjt@msgid.tls.msk.ru
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      12b7f57e
  6. 22 6月, 2013 1 次提交
  7. 20 6月, 2013 3 次提交
    • M
      vl: Rename *boot_devices to *boot_order, for consistency · 083b79c9
      Markus Armbruster 提交于
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1371208516-7857-5-git-send-email-armbru@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      083b79c9
    • 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
  8. 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
  9. 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
  10. 11 6月, 2013 1 次提交
  11. 03 6月, 2013 1 次提交
  12. 23 5月, 2013 1 次提交
  13. 20 5月, 2013 1 次提交
  14. 12 5月, 2013 1 次提交
  15. 02 5月, 2013 1 次提交
  16. 01 5月, 2013 1 次提交
  17. 30 4月, 2013 3 次提交
  18. 27 4月, 2013 1 次提交
  19. 23 4月, 2013 1 次提交
  20. 22 4月, 2013 1 次提交
  21. 16 4月, 2013 5 次提交
  22. 12 4月, 2013 2 次提交
  23. 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
  24. 05 4月, 2013 3 次提交