1. 10 7月, 2013 16 次提交
    • A
      Merge remote-tracking branch 'riku/linux-user-for-upstream' into staging · 9f9a03b9
      Anthony Liguori 提交于
      # By Andreas Schwab (2) and others
      # Via Riku Voipio
      * riku/linux-user-for-upstream:
        linux-user: Do not ignore mmap failure from host
        linux-user: improve target_to_host_sock_type conversion
        user-exec.c: Set is_write correctly in the ARM cpu_signal_handler()
        linux-user: Fix sys_utimensat (would not compile on old glibc)
        linux-user: fix signal number range check
        linux-user: add SIOCADDRT/SIOCDELRT support
        linux-user: handle /proc/$$ like /proc/self
      
      Message-id: cover.1373051589.git.riku.voipio@linaro.org
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      9f9a03b9
    • A
      Merge remote-tracking branch 'rth/tcg-next' into staging · 6272d17c
      Anthony Liguori 提交于
      # By Richard Henderson
      # Via Richard Henderson
      * rth/tcg-next:
        tcg-arm: Implement tcg_register_jit
        tcg-i386: Use QEMU_BUILD_BUG_ON instead of assert for frame size
        tcg: Move the CIE and FDE header definitions to common code
        tcg: Fix high_pc fields in .debug_info
        tcg-arm: Use AT_PLATFORM to detect the host ISA
        tcg-arm: Simplify logic in detecting the ARM ISA in use
        tcg-arm: Rename use_armv5_instructions to use_armvt5_instructions
        tcg-arm: Make use of conditional availability of opcodes for divide
        tcg: Simplify logic using TCG_OPF_NOT_PRESENT
        tcg: Allow non-constant control macros
        tcg-ppc64: Don't implement rem
        tcg-ppc: Don't implement rem
        tcg-arm: Don't implement rem
        tcg: Split rem requirement from div requirement
        tcg: Add myself to general TCG maintainership
      
      Message-id: 1373379515-28596-1-git-send-email-rth@twiddle.net
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      6272d17c
    • P
      qom: Fix class cast of NULL classes · 9d6a3d58
      Peter Crosthwaite 提交于
      Its clear from the implementation that class casting is supposed to work
      with a NULL class argument. Guard all dereferences of the class argument
      against NULL accordingly.
      Signed-off-by: NPeter Crosthwaite <peter.crosthwaite@xilinx.com>
      Message-id: 94cd5ba46b74eea289a7e582635820c1c54e66fa.1371546907.git.peter.crosthwaite@xilinx.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      9d6a3d58
    • 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
      microblaze: Fix latent bug with default DTB lookup · 7bccd940
      Markus Armbruster 提交于
      microblaze_load_kernel() fails to call
      qemu_find_file(QEMU_FILE_TYPE_BIOS, dtb_filename) when no -machine
      options are given.  This can't normally happen, because -machine
      option kernel is mandatory for this target.  Fix it anyway, by using
      qemu_get_machine_opts().
      
      Cc: Peter Crosthwaite <peter.crosthwaite@petalogix.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Message-id: 1372943363-24081-6-git-send-email-armbru@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      7bccd940
    • 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
    • M
      qemu-option: Fix qemu_opts_set_defaults() for corner cases · 6d4cd408
      Markus Armbruster 提交于
      Commit 4f6dd9af changed the initialization of opts in opts_parse() to
      this:
      
          if (defaults) {
              if (!id && !QTAILQ_EMPTY(&list->head)) {
                  opts = qemu_opts_find(list, NULL);
              } else {
                  opts = qemu_opts_create(list, id, 0);
              }
          } else {
              opts = qemu_opts_create(list, id, 1);
          }
      
      Same as before for !defaults.
      
      If defaults is true, and params has no ID, and options exist, we use
      the first assignment.  It sets opts to null if all options have an ID.
      opts_parse() then returns null.  qemu_opts_set_defaults() asserts the
      value is non-null.  It's the only caller that passes true for
      defaults.
      
      To reproduce, try "-M xenpv -machine id=foo" (yes, "id=foo" is silly,
      but it shouldn't crash).
      
      I believe the function attempts to do the following:
      
          If options don't yet exist, create new options
          Else, if defaults, modify the existing options
          Else, if list->merge_lists, modify the existing options
          Else, fail
      
      A straightforward call of qemu_opts_create() does exactly that.
      
      Cc: Jan Kiszka <jan.kiszka@siemens.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Message-id: 1372943363-24081-3-git-send-email-armbru@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      6d4cd408
    • M
      qemu-option: Fix qemu_opts_find() for null id arguments · 96bc97eb
      Markus Armbruster 提交于
      Crashes when the first list member has an ID.  Admittedly nonsensical
      reproducer:
      
      $ qemu-system-x86_64 -nodefaults -machine id=foo -machine ""
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1372943363-24081-2-git-send-email-armbru@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      96bc97eb
    • S
      exec: Remove unused global variable phys_ram_fd · 154bb106
      Stefan Weil 提交于
      It seems to be unused since several years (commit
      be995c27 in 2006).
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Reviewed-by: NAndreas Färber <afaerber@suse.de>
      Message-id: 1373044036-14443-1-git-send-email-sw@weilnetz.de
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      154bb106
    • M
      hw/9pfs: Fix memory leak in error path · 92304bf3
      M. Mohan Kumar 提交于
      Fix few more memory leaks in virtio-9p-device.c detected using valgrind.
      Signed-off-by: NM. Mohan Kumar <mohan@in.ibm.com>
      Message-id: 1372929678-14341-1-git-send-email-mohan@in.ibm.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      92304bf3
    • S
      fsdev: Fix potential memory leak · b58c86e1
      Stefan Weil 提交于
      This leak was reported by cppcheck.
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Reviewed-by: NM. Mohan Kumar <mohan@in.ibm.com>
      Message-id: 1371376960-18192-1-git-send-email-sw@weilnetz.de
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      b58c86e1
    • M
      Extend support of SMBUS(module pm_smbus.c) HST_STS register. · edb5092c
      MRatnikov 提交于
      Previous realization doesn't consider flags in the status register.
      Add DS and INTR bits of HST_STS register set after transaction execution.
      Update bits resetting in HST_STS register. Update error processing:
      if DEV_ERR bit set transaction isn't execution.
      Signed-off-by: NMRatnikov <m.o.ratnikov@gmail.com>
      Message-id: 1373230982-9190-1-git-send-email-m.o.ratnikov@gmail.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      edb5092c
    • P
      trap signals for "-serial mon:stdio" · 02c4bdf1
      Paolo Bonzini 提交于
      With mon:stdio you can exit the VM by switching to the monitor and
      sending the "quit" command.  It is then useful to pass Ctrl-C to the
      VM instead of exiting.
      
      This in turn lets us stop tying the default signal handling behavior
      to -nographic, removing gratuitous differences between "-display none"
      and "-nographic".
      
      This patch changes behavior for "-display none -serial mon:stdio", as
      expected, but not for "-display none -serial stdio".
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1372868986-25988-1-git-send-email-mjt@msgid.tls.msk.ru
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      02c4bdf1
    • R
      configure: Simplify alternate .text segment · 964c6fa1
      Richard Henderson 提交于
      For bsd-user and linux-user emulation modes QEMU needs to be linked at an
      alternate .text segment address, so that it's out of the way of the guest
      executable.  Instead of including modified linker scripts for each arch,
      just set the address with -Ttext-segment if supported, or by using sed to
      edit the default linker script.
      
      Cc: Ed Maste <emaste@freebsd.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      Acked-by: NEd Maste <emaste@freebsd.org>
      Signed-off-by: NEd Maste <emaste@freebsd.org>
      Message-id: 1371867016-7660-1-git-send-email-rth@twiddle.net
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      964c6fa1
  2. 09 7月, 2013 15 次提交
  3. 08 7月, 2013 9 次提交
    • A
      Merge remote-tracking branch 'mst/tags/for_anthony' into staging · dc11549e
      Anthony Liguori 提交于
      pci,misc enhancements
      
      This includes some pci enhancements:
      
      Better support for systems with multiple PCI root buses
      FW cfg interface for more robust pci programming in BIOS
      Minor fixes/cleanups for fw cfg and cross-version migration -
          because of dependencies with other patches
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      
      # gpg: Signature made Sun 07 Jul 2013 03:11:18 PM CDT using RSA key ID D28D5469
      # gpg: Can't check signature: public key not found
      
      # By David Gibson (10) and others
      # Via Michael S. Tsirkin
      * mst/tags/for_anthony:
        pci: Fold host_buses list into PCIHostState functionality
        pci: Remove domain from PCIHostBus
        pci: Simpler implementation of primary PCI bus
        pci: Add root bus parameter to pci_nic_init()
        pci: Add root bus argument to pci_get_bus_devfn()
        pci: Replace pci_find_domain() with more general pci_root_bus_path()
        pci: Use helper to find device's root bus in pci_find_domain()
        pci: Abolish pci_find_root_bus()
        pci: Move pci_read_devaddr to pci-hotplug-old.c
        pci: Cleanup configuration for pci-hotplug.c
        pvpanic: fix fwcfg for big endian hosts
        pvpanic: initialization cleanup
        MAINTAINERS: s/Marcelo/Paolo/
        e1000: cleanup process_tx_desc
        pc_piix: cleanup init compat handling
        pc: pass PCI hole ranges to Guests
        pci: store PCI hole ranges in guestinfo structure
        range: add Range structure
      
      Message-id: 1373228271-31223-1-git-send-email-mst@redhat.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      dc11549e
    • D
      pci: Fold host_buses list into PCIHostState functionality · 7588e2b0
      David Gibson 提交于
      The host_buses list is an odd structure - a list of pointers to PCI root
      buses existing in parallel to the normal qdev tree structure.  This patch
      removes it, instead putting the link pointers into the PCIHostState
      structure, which have a 1:1 relationship to PCIHostBus structures anyway.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      7588e2b0
    • D
      pci: Remove domain from PCIHostBus · 2b8cc89a
      David Gibson 提交于
      There are now no users of the domain field of PCIHostBus, so remove it
      from the structure, and as a parameter from the pci_host_bus_register()
      function which sets it.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      2b8cc89a
    • D
      pci: Simpler implementation of primary PCI bus · 9bc47305
      David Gibson 提交于
      Currently pci_find_primary_bus() searches the list of root buses for one
      with domain 0.  But since host buses are always registered with domain 0,
      this just amounts to finding the only PCI host bus.  The only remaining
      users of pci_find_primary_bus() are in pci-hotplug-old.c, which implements
      the old style pci_add/pci_del commands.
      
      Therefore, this patch redefines pci_find_primary_bus() to find the only
      PCI root bus, returning an error if there are multiple roots.  The callers
      in pci-hotplug-old.c are updated correspondingly, to produce sensible
      error messages.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      9bc47305
    • D
      pci: Add root bus parameter to pci_nic_init() · 29b358f9
      David Gibson 提交于
      At present, pci_nic_init() and pci_nic_init_nofail() assume that they will
      only create a NIC under the primary PCI root.  As we add support for
      multiple PCI roots, that may no longer be the case.  This patch adds a root
      bus parameter to pci_nic_init() (and updates callers accordingly) to allow
      the machine init code using it to specify the right PCI root for NICs
      created by old-style -net nic parameters.  NICs created new-style, with
      -device can of course be put anywhere.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      29b358f9
    • D
      pci: Add root bus argument to pci_get_bus_devfn() · 85c6e4fa
      David Gibson 提交于
      pci_get_bus_devfn() interprets a full PCI address string to give a PCIBus *
      and device/function number within that bus.  Currently it assumes it is
      working on an address under the primary PCI root bus.  This patch extends
      it to allow the caller to specify a root bus.  This might seem a little odd
      since the supplied address can (theoretically) include a PCI domain number.
      However, attempting to use a non-zero domain number there is currently an
      error, so that shouldn't really cause problems.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      85c6e4fa
    • D
      pci: Replace pci_find_domain() with more general pci_root_bus_path() · 568f0690
      David Gibson 提交于
      pci_find_domain() is used in a number of places where we want an id for a
      whole PCI domain (i.e. the subtree under a PCI root bus).  The trouble is
      that many platforms may support multiple independent host bridges with no
      hardware supplied notion of domain number.
      
      This patch, therefore, replaces calls to pci_find_domain() with calls to
      a new pci_root_bus_path() returning a string.  The new call is implemented
      in terms of a new callback in the host bridge class, so it can be defined
      in some way that's well defined for the platform.  When no callback is
      available we fall back on the qbus name.
      
      Most current uses of pci_find_domain() are for error or informational
      messages, so the change in identifiers should be harmless.  The exception
      is pci_get_dev_path(), whose results form part of migration streams.  To
      maintain compatibility with old migration streams, the PIIX PCI host is
      altered to always supply "0000" for this path, which matches the old domain
      number (since the code didn't actually support domains other than 0).
      
      For the pseries (spapr) PCI bridge we use a different platform-unique
      identifier (pseries machines can routinely have dozens of PCI host
      bridges).  Theoretically that breaks migration streams, but given that we
      don't yet have migration support for pseries, it doesn't matter.
      
      Any other machines that have working migration support including PCI
      devices will need to be updated to maintain migration stream compatibility.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      568f0690
    • D
      pci: Use helper to find device's root bus in pci_find_domain() · c473d18d
      David Gibson 提交于
      Currently pci_find_domain() performs two functions - it locates the PCI
      root bus above the given bus, then looks up that root bus's domain number.
      This patch adds a helper function to perform the first task, finding the
      root bus for a given PCI device.  This is then used in pci_find_domain().
      This changes pci_find_domain()'s signature slightly, taking a PCIDevice
      instead of a PCIBus - since all callers passed something of the form
      dev->bus, this simplifies things slightly.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      c473d18d
    • D
      pci: Abolish pci_find_root_bus() · 1ef7a2a2
      David Gibson 提交于
      pci_find_root_bus() takes a domain parameter.  Currently PCI root buses
      with domain other than 0 can't be created, so this is more or less a long
      winded way of retrieving the main PCI root bus.  Numbered domains don't
      actually properly cover the (non x86) possibilities for multiple PCI root
      buses, so this patch for now enforces the domain == 0 restriction in other
      places to replace pci_find_root_bus() with an explicit
      pci_find_primary_bus().
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      1ef7a2a2