1. 10 8月, 2015 3 次提交
    • L
      conf: new pci controller model "pcie-root-port" · dce3b8be
      Laine Stump 提交于
      This controller can be connected (at domain startup time only - not
      hotpluggable) only to a port on the pcie root complex ("pcie-root" in
      libvirt config), hence the new connect type
      VIR_PCI_CONNECT_TYPE_PCIE_ROOT. It provides a hotpluggable port that
      will accept any PCI or PCIe device.
      
      New attributes must be added to the controller <target> subelement for
      this - chassis and port are guest-visible option values that will be
      set by libvirt with values derived from the controller's index and pci
      address information.
      dce3b8be
    • L
      conf: add new <target> subelement with chassisNr attribute to <controller> · 8dc88aee
      Laine Stump 提交于
      There are some configuration options to some types of pci controllers
      that are currently automatically derived from other parts of the
      controller's configuration. For example, in qemu a pci-bridge
      controller has an option that is called "chassis_nr"; up until now
      libvirt has always set chassis_nr to the index of the pci-bridge. So
      this:
      
        <controller type='pci' model='pci-bridge' index='2'/>
      
      will always result in:
      
        -device pci-bridge,chassis_nr=2,...
      
      on the qemu commandline. In the future we may decide there is a better
      way to derive that option, but even in that case we will need for
      existing domains to retain the same chassis_nr they were using in the
      past - that is something that is visible to the guest so it is part of
      the guest ABI and changing it would lead to problems for migrating
      guests (or just guests with very picky OSes).
      
      The <target> subelement has been added as a place to put the new
      "chassisNr" attribute that will be filled in by libvirt when it
      auto-generates the chassisNr; it will be saved in the config, then
      reused any time the domain is started:
      
        <controller type='pci' model='pci-bridge' index='2'>
          <model type='pci-bridge'/>
          <target chassisNr='2'/>
        </controller>
      
      The one oddity of all this is that if the controller configuration
      is changed (for example to change the index or the pci address
      where the controller is plugged in), the items in <target> will
      *not* be re-generated, which might lead to conflict. I can't
      really see any way around this, but fortunately if there is a
      material conflict qemu will let us know and we will pass that on
      to the user.
      8dc88aee
    • L
      conf: add new <model> subelement with name attribute to <controller> · bf202510
      Laine Stump 提交于
      This new subelement is used in PCI controllers: the toplevel
      *attribute* "model" of a controller denotes what kind of PCI
      controller is being described, e.g. a "dmi-to-pci-bridge",
      "pci-bridge", or "pci-root". But in the future there will be different
      implementations of some of those types of PCI controllers, which
      behave similarly from libvirt's point of view (and so should have the
      same model), but use a different device in qemu (and present
      themselves as a different piece of hardware in the guest). In an ideal
      world we (i.e. "I") would have thought of that back when the pci
      controllers were added, and used some sort of type/class/model
      notation (where class was used in the way we are now using model, and
      model was used for the actual manufacturer's model number of a
      particular family of PCI controller), but that opportunity is long
      past, so as an alternative, this patch allows selecting a particular
      implementation of a pci controller with the "name" attribute of the
      <model> subelement, e.g.:
      
        <controller type='pci' model='dmi-to-pci-bridge' index='1'>
          <model name='i82801b11-bridge'/>
        </controller>
      
      In this case, "dmi-to-pci-bridge" is the kind of controller (one that
      has a single PCIe port upstream, and 32 standard PCI ports downstream,
      which are not hotpluggable), and the qemu device to be used to
      implement this kind of controller is named "i82801b11-bridge".
      
      Implementing the above now will allow us in the future to add a new
      kind of dmi-to-pci-bridge that doesn't use qemu's i82801b11-bridge
      device, but instead uses something else (which doesn't yet exist, but
      qemu people have been discussing it), all without breaking existing
      configs.
      
      (note that for the existing "pci-bridge" type of PCI controller, both
      the model attribute and <model> name are 'pci-bridge'. This is just a
      coincidence, since it turns out that in this case the device name in
      qemu really is a generic 'pci-bridge' rather than being the name of
      some real-world chip)
      bf202510
  2. 24 6月, 2015 2 次提交
  3. 23 6月, 2015 1 次提交
    • E
      docs: Fix XML schema handling of LUN address in hostdev tag · c733e973
      Eric Farman 提交于
      Defining a domain with a SCSI disk attached via a hostdev
      tag and a source address unit value longer than two digits
      causes an error when editing the domain with virsh edit,
      even if no changes are made to the domain definition.
      The error suggests invalid XML, somewhere:
      
        # virsh edit lmb_guest
        error: XML document failed to validate against schema:
        Unable to validate doc against /usr/local/share/libvirt/schemas/domain.rng
        Extra element devices in interleave
        Element domain failed to validate content
      
      The virt-xml-validate tool fails with a similar error:
      
        # virt-xml-validate lmb_guest.xml
        Relax-NG validity error : Extra element devices in interleave
        lmb_guest.xml:17: element devices: Relax-NG validity error :
        Element domain failed to validate content
        lmb_guest.xml fails to validate
      
      The hostdev tag requires a source address to be specified,
      which includes bus, target, and unit address attributes.
      According to the SCSI Architecture Model spec (section
      4.9 of SAM-2), a LUN address is 64 bits and thus could be
      up to 20 decimal digits long.  Unfortunately, the XML
      schema limits this string to just two digits.  Similarly,
      the target field can be up to 32 bits in length, which
      would be 10 decimal digits.
      
        # lsscsi -xx
        [0:0:19:0x4022401100000000]  disk    IBM      2107900          3.44 /dev/sda
        # lsscsi
        [0:0:19:1074872354]disk    IBM      2107900          3.44  /dev/sda
        # cat lmb_guest.xml
        <domain type='kvm'>
          <name>lmb_guest</name>
          <memory unit='MiB'>1024</memory>
        ...trimmed...
          <devices>
            <controller type='scsi' model='virtio-scsi' index='0'/>
            <hostdev mode='subsystem' type='scsi'>
              <source>
                <adapter name='scsi_host0'/>
                <address bus='0' target='19' unit='1074872354'/>
              </source>
            </hostdev>
        ...trimmed...
      
      Since the reference unit and target fields are used in
      several places in the XML schema, create a separate one
      specific for SCSI Logical Units that will permit the
      greater length.  This permits both the validation utility
      and the virsh edit command to succeed when a hostdev
      tag is included.
      Signed-off-by: NEric Farman <farman@linux.vnet.ibm.com>
      Reviewed-by: NMatthew Rosato <mjrosato@linux.vnet.ibm.com>
      Reviewed-by: NStefan Zimmermann <stzi@linux.vnet.ibm.com>
      Reviewed-by: NBoris Fiuczynski <fiuczy@linux.vnet.ibm.com>
      c733e973
  4. 18 6月, 2015 1 次提交
  5. 13 6月, 2015 1 次提交
  6. 11 6月, 2015 1 次提交
  7. 10 6月, 2015 1 次提交
  8. 21 5月, 2015 1 次提交
  9. 18 5月, 2015 1 次提交
  10. 05 5月, 2015 1 次提交
    • M
      Introduce GIC feature · 921c52b0
      Michal Privoznik 提交于
      Some platforms, like aarch64, don't have APIC but GIC. So there's
      no reason to have <apic/> feature turned on. However, we are
      still missing <gic/> feature. This commit introduces the feature
      to XML parser and formatter, adds documentation and updates RNG
      schema.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      921c52b0
  11. 04 5月, 2015 1 次提交
    • M
      docs: add domain vmport feature · 208abbcb
      Marc-André Lureau 提交于
      A new feature that can be turned on or off.
      
      The QEMU machine vmport option allows to set the VMWare IO port
      emulation. This emulation is useful for absolute pointer input when the
      guest has vmware input drivers, and is enabled by default for kvm.
      
      However it is unnecessary for Spice-enabled VM, since the agent already
      handles absolute pointer and multi-monitors. Furthermore, it prevents
      Spice from switching to relative input since the regular ps/2 pointer
      driver is replaced by the vmware driver. It is thus advised to disable
      vmport when using a Spice VM. This will permit the Spice client to
      switch from absolute to relative pointer, as it may be required for
      certain games or applications.
      208abbcb
  12. 28 4月, 2015 1 次提交
    • J
      conf: Add new domain XML element 'iothreadids' · 93383c1f
      John Ferlan 提交于
      Adding a new XML element 'iothreadids' in order to allow defining
      specific IOThread ID's rather than relying on the algorithm to assign
      IOThread ID's starting at 1 and incrementing to iothreads count.
      
      This will allow future patches to be able to add new IOThreads by
      a specific iothread_id and of course delete any exisiting IOThread.
      
      Each iothreadids element will have 'n' <iothread> children elements
      which will have attribute "id".  The "id" will allow for definition
      of any "valid" (eg > 0) iothread_id value.
      
      On input, if any <iothreadids> <iothread>'s are provided, they will
      be marked so that we only print out what we read in.
      
      On input, if no <iothreadids> are provided, the PostParse code will
      self generate a list of ID's starting at 1 and going to the number
      of iothreads defined for the domain (just like the current algorithm
      numbering scheme).  A future patch will rework the existing algorithm
      to make use of the iothreadids list.
      
      On output, only print out the <iothreadids> if they were read in.
      93383c1f
  13. 20 4月, 2015 2 次提交
  14. 17 4月, 2015 1 次提交
  15. 25 3月, 2015 1 次提交
    • G
      Don't validata filesystem target type · db1edae8
      Guido Günther 提交于
      When using QEMU's 9pfs the target "dir" element is not necessarily an
      absolute path but merely an arbitrary identifier. So validation in that
      case currently fails with the misleading
      
         $ virt-xml-validate /tmp/test.xml
         Relax-NG validity error : Extra element devices in interleave
         /tmp/test.xml:24: element devices: Relax-NG validity error : Element domain failed to validate content
         /tmp/test.xml fails to validate
      db1edae8
  16. 23 3月, 2015 3 次提交
    • P
      conf: Add interface to parse and format memory device information · 3e4230d2
      Peter Krempa 提交于
      This patch adds code that parses and formats configuration for memory
      devices.
      
      A simple configuration would be:
      <memory model='dimm'>
        <target>
          <size unit='KiB'>524287</size>
          <node>0</node>
        </target>
      </memory>
      
      A complete configuration of a memory device:
      <memory model='dimm'>
        <source>
          <pagesize unit='KiB'>4096</pagesize>
          <nodemask>1-3</nodemask>
        </source>
        <target>
          <size unit='KiB'>524287</size>
          <node>1</node>
        </target>
      </memory>
      
      This patch preemptively forbids use of the <memory> device in individual
      drivers so the users are warned right away that the device is not
      supported.
      3e4230d2
    • P
      conf: Add device address type for dimm devices · 62b825a2
      Peter Krempa 提交于
      Dimm devices are described by the slot and base address. Add a new
      address type to be able to describe such address.
      62b825a2
    • P
      conf: Add support for parsing and formatting max memory and slot count · bffb9163
      Peter Krempa 提交于
      Add a XML element that will allow to specify maximum supportable memory
      and the count of memory slots to use with memory hotplug.
      
      To avoid possible confusion and misuse of the new element this patch
      also explicitly forbids the use of the maxMemory setting in individual
      drivers's post parse callbacks. This limitation will be lifted when the
      support is implemented.
      bffb9163
  17. 17 3月, 2015 1 次提交
  18. 16 3月, 2015 1 次提交
    • P
      conf: Make specifying <memory> optional · 4bca6192
      Peter Krempa 提交于
      Now that the size of guest's memory can be inferred from the NUMA
      configuration (if present) make it optional to specify <memory>
      explicitly.
      
      To make sure that memory is specified add a check that some form of
      memory size was specified. One side effect of this change is that it is
      no longer possible to specify 0KiB as memory size for the VM, but I
      don't think it would be any useful to do so. (I can imagine embedded
      systems without memory, just registers, but that's far from what libvirt
      is usually doing).
      
      Forbidding 0 memory for guests also fixes a few corner cases where 0 was
      not interpreted correctly and caused failures. (Arguments for numad when
      using automatic placement, size of the balloon). This fixes problems
      described in https://bugzilla.redhat.com/show_bug.cgi?id=1161461
      
      Test case changes are added to verify that the schema change and code
      behave correctly.
      4bca6192
  19. 11 3月, 2015 1 次提交
  20. 05 3月, 2015 1 次提交
  21. 03 3月, 2015 2 次提交
  22. 26 2月, 2015 1 次提交
  23. 25 2月, 2015 1 次提交
  24. 21 2月, 2015 1 次提交
  25. 13 2月, 2015 1 次提交
  26. 12 2月, 2015 1 次提交
  27. 11 2月, 2015 1 次提交
    • E
      schema: allow multiple seclabel for devices in domaincommon.rng · 862bbf8a
      Erik Skultety 提交于
      In our RNG schema we do allow multiple (different) seclabels per-domain,
      but don't allow this for devices, yet we neither have a check in our XML parser,
      nor in a post-parse callback. In that case we should allow multiple
      (different) seclabels for devices as well.
      862bbf8a
  28. 29 1月, 2015 1 次提交
    • M
      schemas: Allow all generic elements and attributes for all interfaces · 52222568
      Michal Privoznik 提交于
      There are some interface types (notably 'server' and 'client')
      which instead of allowing the default set of elements and
      attributes (like the rest do), try to enumerate only the elements
      they know of. This way it's, however, easy to miss something. For
      instance, the <address/> element was not mentioned at all. This
      resulted in a strange behavior: when such interface was added
      into XML, the address was automatically generated by parsing
      code. Later, the formatted XML hasn't passed the RNG schema. This
      became more visible once we've turned on the XML validation on
      domain XML changes: appending an empty line at the end of
      formatted XML (to trick virsh think the XML had changed) made
      libvirt to refuse the very same XML it formatted.
      
      Instead of trying to find each element and attribute we are
      missing in the schema, lets just allow all the elements and
      attributes like we're doing that for the rest of types. It's no
      harm if the schema is wider than our parser allows.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      52222568
  29. 21 1月, 2015 1 次提交
  30. 16 1月, 2015 3 次提交
  31. 13 1月, 2015 1 次提交