1. 26 Nov, 2014 1 commit
  2. 04 Nov, 2014 1 commit
    • Alexander Graf's avatar
      sysbus: Make devices spawnable via -device · 33cd52b5
      Alexander Graf authored
      Now that we can properly map sysbus devices that haven't been connected to
      something forcefully by C code, we can allow the -device command line option
      to spawn them.
      
      For machines that don't implement dynamic sysbus assignment in their board
      files we add a new bool "has_dynamic_sysbus" to the machine class.
      When that property is false (default), we bail out when we see dynamically
      spawned sysbus devices, like we did before.
      Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
      33cd52b5
  3. 03 Nov, 2014 1 commit
  4. 02 Nov, 2014 4 commits
    • Eduardo Habkost's avatar
      smbios: Encode UUID according to SMBIOS specification · caad057b
      Eduardo Habkost authored
      Differently from older versions, SMBIOS version 2.6 is explicit about
      the encoding of UUID fields:
      
      > Although RFC 4122 recommends network byte order for all fields, the PC
      > industry (including the ACPI, UEFI, and Microsoft specifications) has
      > consistently used little-endian byte encoding for the first three fields:
      > time_low, time_mid, time_hi_and_version. The same encoding, also known as
      > wire format, should also be used for the SMBIOS representation of the UUID.
      >
      > The UUID {00112233-4455-6677-8899-AABBCCDDEEFF} would thus be represented
      > as 33 22 11 00 55 44 77 66 88 99 AA BB CC DD EE FF.
      
      The dmidecode tool implements this and decodes the above "wire format"
      when SMBIOS version >= 2.6. We moved from SMBIOS version 2.4 to 2.8 when
      we started building the SMBIOS entry point inside QEMU, on commit
      c97294ec.
      
      Change smbios_build_type_1_table() to encode the UUID as specified.
      
      To make sure we won't change the guest-visible UUID when upgrading to a
      newer QEMU version, keep the old behavior on pc-*-2.1 and older.
      Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
      Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      caad057b
    • Dr. David Alan Gilbert's avatar
      -machine vmport=off: Allow disabling of VMWare ioport emulation · 9b23cfb7
      Dr. David Alan Gilbert authored
      This is a pc & q35 only machine opt.
      
      VMWare apparently doesn't like running under QEMU due to our
      incomplete emulation of it's special IO Port.  This adds a
      pc & q35 property to allow it to be turned off.
      Signed-off-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
      Signed-off-by: default avatarDon Slutz <dslutz@verizon.com>
      Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Reviewed-by: default avatarEduardo Habkost <ehabkost@redhat.com>
      Reviewed-by: default avatarRichard W.M. Jones <rjones@redhat.com>
      9b23cfb7
    • Laszlo Ersek's avatar
      well-defined listing order for machine types · 2709f263
      Laszlo Ersek authored
      Commit 261747f1 ("vl: Use MachineClass instead of global QEMUMachine
      list") broke the ordering of the machine types in the user-visible output
      of
      
        qemu-system-XXXX -M \?
      
      This occurred because registration was rebased from a manually maintained
      linked list to GLib hash tables:
      
        qemu_register_machine()
          type_register()
            type_register_internal()
              type_table_add()
                g_hash_table_insert()
      
      and because the listing was rebased accordingly, from the traversal of the
      list to the traversal of the hash table (rendered as an ad-hoc list):
      
        machine_parse()
          object_class_get_list(TYPE_MACHINE)
            object_class_foreach()
              g_hash_table_foreach()
      
      The current order is a "random" one, for practical purposes, which is
      annoying for users.
      
      Introduce new members QEMUMachine.family and MachineClass.family, allowing
      machine types to be "clustered". Introduce a comparator function that
      establishes a total ordering between machine types, ordering machine types
      in the same family next to each other. In machine_parse(), list the
      supported machine types sorted with the comparator function.
      
      The comparator function:
      - sorts whole families before standalone machine types,
      - sorts whole families between each other in alphabetically increasing
        order,
      - sorts machine types inside the same family in alphabetically decreasing
        order,
      - sorts standalone machine types between each other in alphabetically
        increasing order.
      
      After this patch, all machine types are considered standalone, and
      accordingly, the output is alphabetically ascending. This will be refined
      in the following patches.
      
      Effects on the x86_64 output:
      
      Before:
      
      > Supported machines are:
      > pc-0.13              Standard PC (i440FX + PIIX, 1996)
      > pc-i440fx-2.0        Standard PC (i440FX + PIIX, 1996)
      > pc-1.0               Standard PC (i440FX + PIIX, 1996)
      > pc-i440fx-2.1        Standard PC (i440FX + PIIX, 1996)
      > pc-q35-1.7           Standard PC (Q35 + ICH9, 2009)
      > pc-1.1               Standard PC (i440FX + PIIX, 1996)
      > pc-0.14              Standard PC (i440FX + PIIX, 1996)
      > pc-q35-2.0           Standard PC (Q35 + ICH9, 2009)
      > pc-i440fx-1.4        Standard PC (i440FX + PIIX, 1996)
      > pc-i440fx-1.5        Standard PC (i440FX + PIIX, 1996)
      > pc-0.15              Standard PC (i440FX + PIIX, 1996)
      > pc-q35-1.4           Standard PC (Q35 + ICH9, 2009)
      > isapc                ISA-only PC
      > pc                   Standard PC (i440FX + PIIX, 1996) (alias of pc-i440fx-2.2)
      > pc-i440fx-2.2        Standard PC (i440FX + PIIX, 1996) (default)
      > pc-1.2               Standard PC (i440FX + PIIX, 1996)
      > pc-0.10              Standard PC (i440FX + PIIX, 1996)
      > pc-0.11              Standard PC (i440FX + PIIX, 1996)
      > pc-q35-2.1           Standard PC (Q35 + ICH9, 2009)
      > q35                  Standard PC (Q35 + ICH9, 2009) (alias of pc-q35-2.2)
      > pc-q35-2.2           Standard PC (Q35 + ICH9, 2009)
      > pc-i440fx-1.6        Standard PC (i440FX + PIIX, 1996)
      > pc-i440fx-1.7        Standard PC (i440FX + PIIX, 1996)
      > none                 empty machine
      > pc-q35-1.5           Standard PC (Q35 + ICH9, 2009)
      > pc-q35-1.6           Standard PC (Q35 + ICH9, 2009)
      > pc-0.12              Standard PC (i440FX + PIIX, 1996)
      > pc-1.3               Standard PC (i440FX + PIIX, 1996)
      
      After:
      
      > Supported machines are:
      > isapc                ISA-only PC
      > none                 empty machine
      > pc-0.10              Standard PC (i440FX + PIIX, 1996)
      > pc-0.11              Standard PC (i440FX + PIIX, 1996)
      > pc-0.12              Standard PC (i440FX + PIIX, 1996)
      > pc-0.13              Standard PC (i440FX + PIIX, 1996)
      > pc-0.14              Standard PC (i440FX + PIIX, 1996)
      > pc-0.15              Standard PC (i440FX + PIIX, 1996)
      > pc-1.0               Standard PC (i440FX + PIIX, 1996)
      > pc-1.1               Standard PC (i440FX + PIIX, 1996)
      > pc-1.2               Standard PC (i440FX + PIIX, 1996)
      > pc-1.3               Standard PC (i440FX + PIIX, 1996)
      > pc-i440fx-1.4        Standard PC (i440FX + PIIX, 1996)
      > pc-i440fx-1.5        Standard PC (i440FX + PIIX, 1996)
      > pc-i440fx-1.6        Standard PC (i440FX + PIIX, 1996)
      > pc-i440fx-1.7        Standard PC (i440FX + PIIX, 1996)
      > pc-i440fx-2.0        Standard PC (i440FX + PIIX, 1996)
      > pc-i440fx-2.1        Standard PC (i440FX + PIIX, 1996)
      > pc                   Standard PC (i440FX + PIIX, 1996) (alias of pc-i440fx-2.2)
      > pc-i440fx-2.2        Standard PC (i440FX + PIIX, 1996) (default)
      > pc-q35-1.4           Standard PC (Q35 + ICH9, 2009)
      > pc-q35-1.5           Standard PC (Q35 + ICH9, 2009)
      > pc-q35-1.6           Standard PC (Q35 + ICH9, 2009)
      > pc-q35-1.7           Standard PC (Q35 + ICH9, 2009)
      > pc-q35-2.0           Standard PC (Q35 + ICH9, 2009)
      > pc-q35-2.1           Standard PC (Q35 + ICH9, 2009)
      > q35                  Standard PC (Q35 + ICH9, 2009) (alias of pc-q35-2.2)
      > pc-q35-2.2           Standard PC (Q35 + ICH9, 2009)
      
      Effects on the aarch64 output:
      
      Before:
      
      > Supported machines are:
      > lm3s811evb           Stellaris LM3S811EVB
      > canon-a1100          Canon PowerShot A1100 IS
      > vexpress-a15         ARM Versatile Express for Cortex-A15
      > vexpress-a9          ARM Versatile Express for Cortex-A9
      > xilinx-zynq-a9       Xilinx Zynq Platform Baseboard for Cortex-A9
      > connex               Gumstix Connex (PXA255)
      > n800                 Nokia N800 tablet aka. RX-34 (OMAP2420)
      > lm3s6965evb          Stellaris LM3S6965EVB
      > versatileab          ARM Versatile/AB (ARM926EJ-S)
      > borzoi               Borzoi PDA (PXA270)
      > tosa                 Tosa PDA (PXA255)
      > cheetah              Palm Tungsten|E aka. Cheetah PDA (OMAP310)
      > midway               Calxeda Midway (ECX-2000)
      > mainstone            Mainstone II (PXA27x)
      > n810                 Nokia N810 tablet aka. RX-44 (OMAP2420)
      > terrier              Terrier PDA (PXA270)
      > highbank             Calxeda Highbank (ECX-1000)
      > cubieboard           cubietech cubieboard
      > sx1-v1               Siemens SX1 (OMAP310) V1
      > sx1                  Siemens SX1 (OMAP310) V2
      > realview-eb-mpcore   ARM RealView Emulation Baseboard (ARM11MPCore)
      > kzm                  ARM KZM Emulation Baseboard (ARM1136)
      > akita                Akita PDA (PXA270)
      > z2                   Zipit Z2 (PXA27x)
      > musicpal             Marvell 88w8618 / MusicPal (ARM926EJ-S)
      > realview-pb-a8       ARM RealView Platform Baseboard for Cortex-A8
      > versatilepb          ARM Versatile/PB (ARM926EJ-S)
      > realview-eb          ARM RealView Emulation Baseboard (ARM926EJ-S)
      > realview-pbx-a9      ARM RealView Platform Baseboard Explore for Cortex-A9
      > spitz                Spitz PDA (PXA270)
      > none                 empty machine
      > virt                 ARM Virtual Machine
      > collie               Collie PDA (SA-1110)
      > smdkc210             Samsung SMDKC210 board (Exynos4210)
      > verdex               Gumstix Verdex (PXA270)
      > nuri                 Samsung NURI board (Exynos4210)
      > integratorcp         ARM Integrator/CP (ARM926EJ-S)
      
      After:
      
      > Supported machines are:
      > akita                Akita PDA (PXA270)
      > borzoi               Borzoi PDA (PXA270)
      > canon-a1100          Canon PowerShot A1100 IS
      > cheetah              Palm Tungsten|E aka. Cheetah PDA (OMAP310)
      > collie               Collie PDA (SA-1110)
      > connex               Gumstix Connex (PXA255)
      > cubieboard           cubietech cubieboard
      > highbank             Calxeda Highbank (ECX-1000)
      > integratorcp         ARM Integrator/CP (ARM926EJ-S)
      > kzm                  ARM KZM Emulation Baseboard (ARM1136)
      > lm3s6965evb          Stellaris LM3S6965EVB
      > lm3s811evb           Stellaris LM3S811EVB
      > mainstone            Mainstone II (PXA27x)
      > midway               Calxeda Midway (ECX-2000)
      > musicpal             Marvell 88w8618 / MusicPal (ARM926EJ-S)
      > n800                 Nokia N800 tablet aka. RX-34 (OMAP2420)
      > n810                 Nokia N810 tablet aka. RX-44 (OMAP2420)
      > none                 empty machine
      > nuri                 Samsung NURI board (Exynos4210)
      > realview-eb          ARM RealView Emulation Baseboard (ARM926EJ-S)
      > realview-eb-mpcore   ARM RealView Emulation Baseboard (ARM11MPCore)
      > realview-pb-a8       ARM RealView Platform Baseboard for Cortex-A8
      > realview-pbx-a9      ARM RealView Platform Baseboard Explore for Cortex-A9
      > smdkc210             Samsung SMDKC210 board (Exynos4210)
      > spitz                Spitz PDA (PXA270)
      > sx1                  Siemens SX1 (OMAP310) V2
      > sx1-v1               Siemens SX1 (OMAP310) V1
      > terrier              Terrier PDA (PXA270)
      > tosa                 Tosa PDA (PXA255)
      > verdex               Gumstix Verdex (PXA270)
      > versatileab          ARM Versatile/AB (ARM926EJ-S)
      > versatilepb          ARM Versatile/PB (ARM926EJ-S)
      > vexpress-a15         ARM Versatile Express for Cortex-A15
      > vexpress-a9          ARM Versatile Express for Cortex-A9
      > virt                 ARM Virtual Machine
      > xilinx-zynq-a9       Xilinx Zynq Platform Baseboard for Cortex-A9
      > z2                   Zipit Z2 (PXA27x)
      
      RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1145042Signed-off-by: default avatarLaszlo Ersek <lersek@redhat.com>
      Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Reviewed-by: default avatarMarcel Apfelbaum <marcel.a@redhat.com>
      Acked-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      
      2709f263
    • Michael Tokarev's avatar
      pidfile: stop making pidfile error a special case · fee78fd6
      Michael Tokarev authored
      In case of -daemonize, we write non-zero to the daemon
      pipe only if pidfile creation failed, so the parent will
      report error about pidfile problem.  There's no need to
      make special case for this, since all other errors are
      reported by the child just fine.  Let the parent report
      error and simplify logic in os_daemonize().
      
      This way, we don't need os_pidfile_error() function, since
      it only prints error now, so put the error reporting printf
      into the only place where qemu_create_pidfile() is called,
      in vl.c.
      
      While at it, fix wrong indentation in os_daemonize().
      Signed-off-by: default avatarMichael Tokarev <mjt@tls.msk.ru>
      fee78fd6
  5. 31 Oct, 2014 2 commits
  6. 27 Oct, 2014 1 commit
  7. 24 Oct, 2014 1 commit
    • Markus Armbruster's avatar
      hmp: Remove "info pcmcia" · 7797a739
      Markus Armbruster authored
      This command lists PCMCIA sockets and cards.  Only a few ARM boards
      have sockets (akita, borzoi, connex, mainstone, spitz, terrier, tosa,
      verdex, z2), the only card is the DSCM-1xxxx Hitachi Microdrive (qdev
      "microdrive"), and it is only inserted during machine init, if ever.
      So this command doesn't really tell anybody anything new so far.
      
      Moreover, pcmcia_socket_unregister() has a use-after-free bug, flagged
      by Coverity.  Has never been used, because there has never been code
      to eject a PCMCIA card.
      
      Not worth fixing & converting to QMP.  Remove it.
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Acked-by: default avatarLuiz Capitulino <lcapitulino@redhat.com>
      Acked-by: default avatarAndreas Färber <afaerber@suse.de>
      Message-id: 1411144812-22958-1-git-send-email-armbru@redhat.com
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      7797a739
  8. 15 Oct, 2014 1 commit
  9. 09 Oct, 2014 1 commit
  10. 04 Oct, 2014 2 commits
  11. 03 Oct, 2014 2 commits
    • John Snow's avatar
      pc/vl: Add units-per-default-bus property · 16026518
      John Snow authored
      This patch adds the 'units_per_default_bus' property which
      allows individual boards to declare their desired
      index => (bus,unit) mapping for their default HBA, so that
      boards such as Q35 can specify that its default if_ide HBA,
      AHCI, only accepts one unit per bus.
      
      This property only overrides the mapping for drives matching
      the block_default_type interface.
      
      This patch also adds this property to *all* past and present
      Q35 machine types. This retroactive addition is justified
      because the previous erroneous index=>(bus,unit) mappings
      caused by lack of such a property were not utilized due to
      lack of initialization code in the Q35 init routine.
      
      Further, semantically, the Q35 board type has always had the
      property that its default HBA, AHCI, only accepts one unit per
      bus. The new code added to add devices to drives relies upon
      the accuracy of this mapping. Thus, the property is applied
      retroactively to reduce complexity of allowing IDE HBAs with
      different units per bus.
      
      Examples:
      
      Prior to this patch, all IDE HBAs were assumed to use 2 units
      per bus (Master, Slave). When using Q35 and AHCI, however, we
      only allow one unit per bus.
      
      -hdb foo.qcow2 would become index=1, or bus=0,unit=1.
      -hdd foo.qcow2 would become index=3, or bus=1,unit=1.
      -drive file=foo.qcow2,index=5 becomes bus=2,unit=1.
      
      These are invalid for AHCI. They now become, under Q35 only:
      
      -hdb foo.qcow2 --> index=1, bus=1, unit=0.
      -hdd foo.qcow2 --> index=3, bus=3, unit=0.
      -drive file=foo.qcow2,index=5 --> bus=5,unit=0.
      
      The mapping is adjusted based on the fact that the default IF
      for the Q35 machine type is IF_IDE, and units-per-default-bus
      overrides the IDE mapping from its default of 2 units per bus
      to just 1 unit per bus.
      Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
      Reviewed-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Message-id: 1412187569-23452-4-git-send-email-jsnow@redhat.com
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      16026518
    • John Snow's avatar
      blockdev: Orphaned drive search · a66c9dc7
      John Snow authored
      When users use command line options like -hda, -cdrom,
      or even -drive if=ide, it is up to the board initialization
      routines to pick up these drives and create backing
      devices for them.
      
      Some boards, like Q35, have not been doing this.
      However, there is no warning explaining why certain
      drive specifications are just silently ignored,
      so this function adds a check to print some warnings
      to assist users in debugging these sorts of issues
      in the future.
      
      This patch will not warn about drives added with if_none,
      for which it is not possible to tell in advance if
      the omission of a backing device is an issue.
      
      A warning in these cases is considered appropriate.
      Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
      Reviewed-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Message-id: 1412187569-23452-2-git-send-email-jsnow@redhat.com
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      a66c9dc7
  12. 29 Sep, 2014 1 commit
  13. 22 Sep, 2014 1 commit
    • Chrysostomos Nanakos's avatar
      async: aio_context_new(): Handle event_notifier_init failure · 2f78e491
      Chrysostomos Nanakos authored
      On a system with a low limit of open files the initialization
      of the event notifier could fail and QEMU exits without printing any
      error information to the user.
      
      The problem can be easily reproduced by enforcing a low limit of open
      files and start QEMU with enough I/O threads to hit this limit.
      
      The same problem raises, without the creation of I/O threads, while
      QEMU initializes the main event loop by enforcing an even lower limit of
      open files.
      
      This commit adds an error message on failure:
      
       # qemu [...] -object iothread,id=iothread0 -object iothread,id=iothread1
       qemu: Failed to initialize event notifier: Too many open files in system
      Signed-off-by: default avatarChrysostomos Nanakos <cnanakos@grnet.gr>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      2f78e491
  14. 20 Sep, 2014 1 commit
  15. 18 Sep, 2014 1 commit
  16. 11 Sep, 2014 1 commit
  17. 10 Sep, 2014 1 commit
  18. 04 Sep, 2014 1 commit
  19. 28 Aug, 2014 1 commit
  20. 26 Aug, 2014 1 commit
  21. 15 Aug, 2014 2 commits
  22. 06 Aug, 2014 2 commits
  23. 21 Jul, 2014 1 commit
  24. 17 Jul, 2014 1 commit
  25. 11 Jul, 2014 1 commit
  26. 01 Jul, 2014 2 commits
    • Yang Zhiyong's avatar
      trace: add qemu_system_powerdown_request and qemu_system_shutdown_request trace events · bc78cff9
      Yang Zhiyong authored
      We have the experience that the guest doesn't stop successfully
      though it was instructed to shut down.
      
      The root cause may be not in QEMU mostly.  However, QEMU is often
      suspected at the beginning just because the issue occurred in
      virtualization environment.
      
      Therefore, we need to affirm that QEMU received the shutdown
      request and raised ACPI irq from "virsh shutdown" command,
      virt-manger or stopping QEMU process to the VM .
      So that we can affirm the problems was belonged to the Guset OS
      rather than the QEMU itself.
      
      When we stop guests by "virsh shutdown" command or virt-manger,
      or stopping QEMU process, qemu_system_powerdown_request() or
      qemu_system_shutdown_request() is called. Then the below functions
      in main_loop_should_exit() of Vl.c are called roughly in the
      following order.
      
      	if (qemu_powerdown_requested())
      		qemu_system_powerdown()
      			monitor_protocol_event(QEVENT_POWERDOWN, NULL)
      
      	OR
      
      	if(qemu_shutdown_requested()}
      		monitor_protocol_event(QEVENT_SHUTDOWN, NULL);
      
      The tracepoint of monitor_protocol_event() already exists, but no
      tracepoints are defined for qemu_system_powerdown_request() and
      qemu_system_shutdown_request(). So this patch adds two tracepoints for
      the two functions. We believe that it will become much easier to
      isolate the problem mentioned above by these tracepoints.
      Signed-off-by: default avatarYang Zhiyong <yangzy.fnst@cn.fujitsu.com>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      bc78cff9
    • Paolo Bonzini's avatar
      memory: MemoryRegion: use /machine as default owner · b5c2c3d0
      Paolo Bonzini authored
      This will be added (after QOMification) as the QOM parent.
      Reviewed-by: default avatarPeter Crosthwaite <peter.crosthwaite@xilinx.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      b5c2c3d0
  27. 29 Jun, 2014 1 commit
  28. 23 Jun, 2014 4 commits