1. 10 7月, 2013 2 次提交
    • 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
  2. 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
  3. 22 6月, 2013 1 次提交
  4. 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
  5. 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
  6. 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
  7. 11 6月, 2013 1 次提交
  8. 03 6月, 2013 1 次提交
  9. 23 5月, 2013 1 次提交
  10. 20 5月, 2013 1 次提交
  11. 12 5月, 2013 1 次提交
  12. 02 5月, 2013 1 次提交
  13. 01 5月, 2013 1 次提交
  14. 30 4月, 2013 3 次提交
  15. 27 4月, 2013 1 次提交
  16. 23 4月, 2013 1 次提交
  17. 22 4月, 2013 1 次提交
  18. 16 4月, 2013 5 次提交
  19. 12 4月, 2013 2 次提交
  20. 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
  21. 05 4月, 2013 3 次提交
  22. 02 4月, 2013 1 次提交
  23. 28 3月, 2013 2 次提交
  24. 26 3月, 2013 1 次提交
  25. 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