1. 26 7月, 2016 1 次提交
    • T
      qemu: remove vioserialaddrs caching · 19a148b7
      Tomasz Flendrich 提交于
      Dropping the caching of virtio serial address set.
      The cached set is not required anymore, because the set is now being
      recalculated from the domain definition on demand, so the cache
      can be deleted.
      
      Credit goes to Cole Robinson.
      19a148b7
  2. 21 7月, 2016 1 次提交
    • J
      Reserve existing USB addresses · ddd31fd7
      Ján Tomko 提交于
      Check if they fit on the USB controllers the domain has,
      and error out if two devices try to use the same address.
      ddd31fd7
  3. 20 7月, 2016 1 次提交
    • J
      qemu: Disallow usage of luks encryption if aes secret not possible · a53349e6
      John Ferlan 提交于
      Resolves a CI test integration failure with a RHEL6/Centos6 environment.
      
      In order to use a LUKS encrypted device, the design decision was to
      generate an encrypted secret based on the master key. However, commit
      id 'da86c6c2' missed checking for that specifically.
      
      When qemuDomainSecretSetup was implemented, a design decision was made
      to "fall back" to a plain text secret setup if the specific cipher was
      not available (e.g. virCryptoHaveCipher(VIR_CRYPTO_CIPHER_AES256CBC))
      as well as the QEMU_CAPS_OBJECT_SECRET. For the luks encryption setup
      there is no fall back to the plaintext secret, thus if that gets set
      up by qemuDomainSecretSetup, then we need to fail.
      
      Also, while the qemuxml2argvtest has set the QEMU_CAPS_OBJECT_SECRET
      bit, it didn't take into account the second requirement that the
      ability to generate the encrypted secret is possible. So modify the
      test to not attempt to run the luks-disk if we know we don't have
      the encryption algorithm.
      a53349e6
  4. 19 7月, 2016 2 次提交
    • J
      qemu: Add luks support for domain disk · da86c6c2
      John Ferlan 提交于
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1301021
      
      Generate the luks command line using the AES secret key to encrypt the
      luks secret. A luks secret object will be in addition to a an AES secret.
      
      For hotplug, check if the encinfo exists and if so, add the AES secret
      for the passphrase for the secret object used to decrypt the device.
      
      Modify/augment the fakeSecret* in qemuxml2argvtest in order to handle
      find a uuid or a volume usage with a specific path prefix in the XML
      (corresponds to the already generated XML tests). Add error message
      when the 'usageID' is not 'mycluster_myname'. Commit id '1d632c39'
      altered the error message generation to rely on the errors from the
      secret_driver (or it's faked replacement).
      
      Add the .args output for adding the LUKS disk to the domain
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      da86c6c2
    • J
      qemu: Alter the qemuDomainGetSecretAESAlias to add new arg · b7b3a51e
      John Ferlan 提交于
      Soon we will be adding luks encryption support. Since a volume could require
      both a luks secret and a secret to give to the server to use of the device,
      alter the alias generation to create a slightly different alias so that
      we don't have two objects with the same alias.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      b7b3a51e
  5. 18 7月, 2016 2 次提交
  6. 11 7月, 2016 6 次提交
    • M
      qemuDomainObjPrivateFree: Free @masterKey too · 6b6e2cf9
      Michal Privoznik 提交于
      This one's a bit more complicated. In qemuProcessPrepareDomain()
      a master key for encrypting secret for ciphered disks is created.
      This object lives within qemuDomainObjPrivate object. It is freed
      in qemuProcessStop(), but if nobody calls it (for instance like
      our qemuxml2argvtest does), the key object leaks.
      
      ==17078== 32 bytes in 1 blocks are definitely lost in loss record 633 of 707
      ==17078==    at 0x4C2C070: calloc (vg_replace_malloc.c:623)
      ==17078==    by 0xAD924DF: virAllocN (viralloc.c:191)
      ==17078==    by 0x5050BA6: virCryptoGenerateRandom (qemuxml2argvmock.c:166)
      ==17078==    by 0x453DC8: qemuDomainMasterKeyCreate (qemu_domain.c:678)
      ==17078==    by 0x47A36B: qemuProcessPrepareDomain (qemu_process.c:4913)
      ==17078==    by 0x47C728: qemuProcessCreatePretendCmd (qemu_process.c:5542)
      ==17078==    by 0x433698: testCompareXMLToArgvFiles (qemuxml2argvtest.c:332)
      ==17078==    by 0x4339AC: testCompareXMLToArgvHelper (qemuxml2argvtest.c:413)
      ==17078==    by 0x446E7A: virTestRun (testutils.c:179)
      ==17078==    by 0x445BD9: mymain (qemuxml2argvtest.c:2022)
      ==17078==    by 0x44886F: virTestMain (testutils.c:969)
      ==17078==    by 0x445D9B: main (qemuxml2argvtest.c:2036)
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      6b6e2cf9
    • D
      Fix logic in qemuDomainObjPrivateXMLParseVcpu · ed1fbd7c
      Daniel P. Berrange 提交于
      The code in qemuDomainObjPrivateXMLParseVcpu for parsing
      the 'idstr' string was comparing the overall boolean
      result against 0 which was always true
      
      qemu/qemu_domain.c: In function 'qemuDomainObjPrivateXMLParseVcpu':
      qemu/qemu_domain.c:1482:59: error: comparison of constant '0' with boolean expression is always false [-Werror=bool-compare]
           if ((idstr && virStrToLong_uip(idstr, NULL, 10, &idx)) < 0 ||
                                                                 ^
      
      It was further performing two distinct error checks in
      the same conditional and reporting a single error message,
      which was misleading in one of the two cases.
      
      This splits the conditional check into two parts with
      distinct error messages and fixes the logic error.
      
      Fixes the bug in
      
        commit 5184f398
        Author: Peter Krempa <pkrempa@redhat.com>
        Date:   Fri Jul 1 14:56:14 2016 +0200
      
          qemu: Store vCPU thread ids in vcpu private data objects
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      ed1fbd7c
    • P
      qemu: Store vCPU thread ids in vcpu private data objects · 5184f398
      Peter Krempa 提交于
      Rather than storing them in an external array store them directly.
      5184f398
    • P
      qemu: Add cpu ID to the vCPU pid list in the status XML · 3f57ce4a
      Peter Krempa 提交于
      Note the vcpu ID so that once we allow non-contiguous vCPU topologies it
      will be possible to pair thread id's with the vcpus.
      3f57ce4a
    • P
      qemu: domain: Extract formating and parsing of vCPU thread ids · b91335af
      Peter Krempa 提交于
      Further patches will be adding index and modifying the source variables
      so this will make it more clear.
      b91335af
    • P
      qemu: domain: Add vcpu private data structure · 2540c932
      Peter Krempa 提交于
      Members will be added in follow-up patches.
      2540c932
  7. 08 7月, 2016 1 次提交
  8. 04 7月, 2016 1 次提交
  9. 02 7月, 2016 1 次提交
  10. 28 6月, 2016 1 次提交
  11. 27 6月, 2016 1 次提交
    • L
      qemu: forbid setting guest-side IP address/route info of <interface> · d987f63a
      Laine Stump 提交于
      libvirt's qemu driver doesn't have direct access to the config on the
      guest side of a network interface, and currently doesn't have any
      method in place to even inform the guest of the desired config. In the
      future, an unenforceable attempt to set the guest-side IP info could
      be made by adding a static host entry to the appropriate dnsmasq
      configuration (or changing the default dhcp client address on the qemu
      commandline for type='user' interfaces), or enhancing the guest agent
      to allow setting an IP address, but for now it can't have any effect,
      and we don't want to give the illusion that it does.
      
      To prevent the "disappearance" of any existing configs with ip
      address/route info (due to parser failure), this check is added in the
      newly implemented qemuDomainDeviceDefValidate(), which is only called
      when a domain is defined or started, *not* when it is reread from disk
      at libvirtd startup.
      d987f63a
  12. 25 6月, 2016 2 次提交
  13. 24 6月, 2016 4 次提交
  14. 23 6月, 2016 1 次提交
  15. 22 6月, 2016 2 次提交
  16. 20 6月, 2016 1 次提交
  17. 18 6月, 2016 1 次提交
    • A
      qemu: Permit PCI-free aarch64 mach-virt guests · 86a68bdb
      Andrea Bolognani 提交于
      There has been some progress lately in enabling virtio-pci on
      aarch64 guests; however, guest OS support is still spotty at best,
      so most guests are going to be using virtio-mmio instead.
      
      Currently, mach-virt guests are closely modeled after q35 guests,
      and that includes always adding a dmi-to-pci-bridge that's just
      impossible to get rid of. While that's acceptable (if suboptimal)
      for q35, where you will always need some kind of PCI device anyway,
      mach-virt guests should be allowed to avoid it.
      86a68bdb
  18. 17 6月, 2016 5 次提交
    • A
      b31b3eee
    • P
    • P
      conf: Remove pre-calculation of initial memory size · a877a163
      Peter Krempa 提交于
      While we need to know the difference between the total memory stored in
      <memory> and the actual size not included in the possible memory modules
      we can't pre-calculate it reliably. This is due to the fact that
      libvirt's XML is copied via formatting and parsing the XML and the
      initial memory size can be reliably calculated only when certain
      conditions are met due to backwards compatibility.
      
      This patch removes the storage of 'initial_memory' and fixes the helpers
      to recalculate the initial memory size all the time from the total
      memory size. This conversion is possible when we also make sure that
      memory hotplug accounts properly for the update of the total memory size
      and thus the helpers for inserting and removing memory devices need to
      be tweaked too.
      
      This fixes a bug where a cold-plug and cold-remove of a memory device
      would increase the size reported in <memory> in the XML by the size of
      the memory device. This would happen as the persistent definition is
      copied before attaching the device and this would lead to the loss of
      data in 'initial_memory'.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1344892
      a877a163
    • L
      qemu: don't add pci-bridge to Q35/arm domains unless it's needed · d5fb8f45
      Laine Stump 提交于
      Until now, a Q35 domain (or arm/virt, or any other domain that has a
      pcie-root bus) would always have a pci-bridge added, so that there
      would be a hotpluggable standard PCI slot available to plug in any PCI
      devices that might be added. This patch removes the explicit add,
      instead relying on the pci-bridge being auto-added during PCI address
      assignment (it will add a pci-bridge if there are no free slots).
      
      This doesn't eliminate the dmi-to-pci-bridge controller that is
      explicitly added whether or not a standard PCI slot is required (and
      that is almost never used as anything other than a converter between
      pcie.0's PCIe slots and standard PCI). That will be done separately.
      d5fb8f45
    • L
      qemu: don't be as insistent about adding dmi-to-pci-bridge or pci-bridge · 97b215a4
      Laine Stump 提交于
      Previously there was no way to have a Q35 domain that didn't have
      these two controllers. This patch skips their creation as long as
      there are some other kinds of pci controllers at index 1 and 2
      (e.g. some pcie-root-port controllers).
      
      I'm hoping that soon we won't add them at all, plugging all devices
      into auto-added pcie-*-port ports instead, but in the meantime this
      makes it easier to experiment with alternative bus hierarchies.
      97b215a4
  19. 09 6月, 2016 3 次提交
    • P
      vnc: add support for listen type 'socket' · acc83afe
      Pavel Hrdina 提交于
      VNC graphics already supports sockets but only via 'socket' attribute.
      This patch coverts that attribute into listen type 'socket'.
      
      For backward compatibility we need to handle listen type 'socket' and 'socket'
      attribute properly to support old XMLs and new XMLs.  If both are provided they
      have to match, if only one of them is provided we need to be able to parse that
      configuration too.
      
      To not break migration back to old libvirt if the socket is provided by user we
      need to generate migratable XML without the listen element and use only 'socket'
      attribute.
      Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
      acc83afe
    • P
      vnc: rename socketAutogenerated to socketFromConfig · 17271d04
      Pavel Hrdina 提交于
      Even though it's auto-generated it's based on qemu.conf option and listen type
      address already uses "fromConfig" to carry this information.  Following commits
      will convert the socket to listen element so this rename is required because
      there will be also an option to get socket auto-generated independently on the
      qemu.conf option.
      Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
      17271d04
    • M
      qemu: Move channel path generation out of command creation · f670008b
      Martin Kletzander 提交于
      Put it into separate function called qemuDomainPrepareChannel() and call
      it from the new qemuProcessPrepareDomain().
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      f670008b
  20. 08 6月, 2016 2 次提交
  21. 07 6月, 2016 1 次提交