1. 21 1月, 2010 3 次提交
    • J
      domain_conf.c: avoid a leak and the need for "cleanup:" block · 1825c655
      Jim Meyering 提交于
      * src/conf/domain_conf.c (virDomainChrDefFormat): Plug a leak on
      an error path, and at the same time, eliminate the need for a
      "cleanup:" block.  Before, the "return -1" after the switch
      would leak an "addr" string.  Now, by reversing the port,addr-
      getting blocks we can free "addr" immediately and skip the goto.
      1825c655
    • D
      Make all bitfields unsigned ints to avoid unexpected values in casts · 50b6c95d
      Daniel P. Berrange 提交于
      The 'int virInterfaceIsActive()' method was directly returning the
      value of the 'int active:1' bitfield in virIntefaceDefPtr. A bitfield
      with a signed integer, will hold the values 0 and -1, not 0 and +1
      as might be expected. This meant that virInterfaceIsActive() was
      always returning -1 when the interface was active, not +1 & thus all
      callers thought an error had occurred. To protect against this kind
      of mistake again, change all bitfields to be unsigned ints
      
      * daemon/libvirtd.h, src/conf/domain_conf.h, src/conf/interface_conf.h,
        src/conf/network_conf.h: Change bitfields to unsigned int.
      50b6c95d
    • D
      Fix QEMU driver custom domain status XML extensions · ed00e45d
      Daniel P. Berrange 提交于
      Invoking the virConnectGetCapabilities() method causes the QEMU
      driver to rebuild its internal capabilities object. Unfortunately
      it was forgetting to register the custom domain status XML hooks
      again.
      
      To avoid this kind of error in the future, the code which builds
      capabilities is refactored into one single method, which can be
      called from all locations, ensuring reliable rebuilds.
      
      * src/qemu/qemu_driver.c: Fix rebuilding of capabilities XML and
        guarentee it is always consistent
      ed00e45d
  2. 20 1月, 2010 13 次提交
  3. 19 1月, 2010 6 次提交
    • D
      2c2672bc
    • J
      Allow for CPU topology specification without model · ce4896fb
      Jiri Denemark 提交于
      Currently CPU topology may only be specified together with CPU model:
          <cpu match='exact'>
              <model>name</model>
              <topology sockets='1' cores='2' threads='3'/>
          </cpu>
      
      This patch allows for CPU topology specification without the need for
      also specifying CPU model:
          <cpu>
              <topology sockets='1' cores='2' threads='3'/>
          </cpu>
      
      'match' attribute and 'model' element are made optional with the
      restriction that 'match' attribute has to be set when 'model' is
      present.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      ce4896fb
    • J
      Add debug messages for CPU incompatibility · 16a4d22b
      Jiri Denemark 提交于
      When comparing incompatible CPUs, the reason for this incompatibility is
      logged as a debug message.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      16a4d22b
    • J
      Take disabled/forced CPU features into account · 5e13b7ab
      Jiri Denemark 提交于
      When comparing x86 CPUs, features with 'disabled' policy were mistakenly
      required to be supported by the host CPU.
      
      Likewise, features with 'force' policy which were supported by host CPU
      would make CPUs incompatible if 'strict' match was used by guest CPU.
      
      This patch fixes both issues.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      5e13b7ab
    • J
      Implement CPU topology support for QEMU driver · 5d462bd0
      Jiri Denemark 提交于
      QEMU's command line equivalent for the following domain XML fragment
          <vcpus>2</vcpus>
          <cpu ...>
              ...
              <topology sockets='1' cores='2', threads='1'/>
          </cpu>
      
      is
      
          -smp 2,sockets=1,cores=2,threads=1
      
      This syntax was introduced in QEMU-0.12.
      
      Version 2 changes:
      - -smp argument build split into a separate function
      - always add ",sockets=S,cores=C,threads=T" to -smp if qemu supports it
      - use qemuParseCommandLineKeywords for command line parsing
      
      Version 3 changes:
      - ADD_ARG_LIT => ADD_ARG and line reordering in qemudBuildCommandLine
      - rebased
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      5d462bd0
    • J
      Enhance qemuParseCommandLineKeywords · 014c9f31
      Jiri Denemark 提交于
      Current version expects name=value,... list and when an incorrect string
      such as "a,b,c=d" would be parsed as "a,b,c" keyword with "d" value
      without reporting any error, which is probably not the expected
      behavior.
      
      This patch adds an extra argument called allowEmptyValue, which if
      non-zero will permit keywords with no value; "a,b=c,,d=" will be parsed
      as follows:
          keyword value
          "a"     NULL
          "b"     "c"
          ""      NULL
          "d"     ""
      
      In case allowEmptyValue is zero, the string is required to contain
      name=value pairs only; retvalues is guaranteed to contain non-NULL
      pointers. Now, "a,b,c=d" will result in an error.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      014c9f31
  4. 18 1月, 2010 18 次提交
    • D
      Convert VirtIO balloon over to -device syntax · b6692414
      Daniel P. Berrange 提交于
      Replace
      
         -balloon virtio
      
      With
      
         -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
      
      This allows it to get correct assigned PCI address as declared in
      previous patch
      
       * src/qemu/qemu_conf.c: Convert Virtio ballon to -device and
         give it an explicit PCI address
       * tests/qemuxml2argvdata/qemuxml2argv-*args: Add in virtio balloon
         where appropriate
      b6692414
    • D
      Auto-assign PCI addresses · a44d0dc2
      Daniel P. Berrange 提交于
      Instead of relying on QEMU to assign PCI addresses and then querying
      them with 'info pci', manually assign all PCI addresses before starting
      the guest.  These addresses are not stable across reboots. That will
      come in a later patch
      
      NB, the PIIX3 (IDE, FDC, ISA-Bridge) will always have slot 1 and
      VGA will always have slot 2. We declare the Virtio Balloon gets
      slot 3, and then all remaining slots are for configured devices.
      
      * src/qemu/qemu_conf.c: If -device is supported, then assign all PCI
        addresses when building the command line
      * src/qemu/qemu_driver.c: Don't query monitor for PCI addresses if
        they have already been assigned
      * tests/qemuxml2argvdata/qemuxml2argv-hostdev-pci-address-device.args,
        tests/qemuxml2argvdata/qemuxml2argv-net-virtio-device.args,
        tests/qemuxml2argvdata/qemuxml2argv-sound-device.args,
        tests/qemuxml2argvdata/qemuxml2argv-watchdog-device.args: Update
        to include PCI slot/bus information
      a44d0dc2
    • D
      Pass -vga none if no video card specified · febc5916
      Daniel P. Berrange 提交于
      QEMU always configures a VGA card. If no video card is included in
      the libvirt XML, it is neccessary to explicitly turn off the default
      using -vga none
      
      * src/qemu/qemu_conf.c: Pass -vga none if no video card is configured
      * tests/qemuargv2xmltest.c, tests/qemuxml2argvtest.c: Test for
        handling -vga none.
      * tests/qemuxml2argvdata/qemuxml2argv-nographics-vga.args,
        tests/qemuxml2argvdata/qemuxml2argv-nographics-vga.xml: Test
        data files
      febc5916
    • D
      Add support for explicit -sdl flag to QEMU · 4f6c9990
      Daniel P. Berrange 提交于
      Not all QEMU builds default to SDL graphics for their display.
      Newer QEMU now has an explicit -sdl flag, which we can use to
      explicitly request SDL intead of relying on the default. This
      protects libvirt against unexpected changes in graphics default
      
      * src/qemu/qemu_conf.c, src/qemu/qemu_conf.h: Probe for -sdl
        flag and use it if it is found
      * tests/qemuhelptest.c: Add SDL flag to tests
      4f6c9990
    • D
      Convert guestfwd to -device, and add -sdl explicit args · d86c876a
      Daniel P. Berrange 提交于
      The old syntax was
      
         -chardev SOMECONFIG
         -nic user,guestfwd=tcp:IP:PORT-chardev:CHARDEV
      
      The new syntax is
      
         -chardev SOMECONFIG
         -netdev user,guestfwd=tcp:IP:PORT,chardev=ID,id=user-ID
      d86c876a
    • D
      Convert PCI device assignment over to -device · 16658da4
      Daniel P. Berrange 提交于
      The old syntax is
      
        -pcidevice host=BUS:SLOT:FUNCTION
      
      The new syntax is
      
        -device pci-assign,host=BUS:SLOT:FUNCTION,addr=<PCI SLOT>,id=host0
      16658da4
    • D
      Convert USB input devices to -device · e8d43d06
      Daniel P. Berrange 提交于
      e8d43d06
    • D
      Convert USB hostdevices over to -device · 42ce352c
      Daniel P. Berrange 提交于
      The old syntax was
      
         -usbdevice host:PRODUCT:VENDOR
      
      Or
      
         -usbdevice host:BUS.DEV
      
      The new syntax is
      
         -device usb-host,product=PRODUCT,vendor=VENDOR
      
      Or
      
         -device usb-host,hostbus=BUS,hostaddr=DEV
      42ce352c
    • D
      Convert USB disks over to -device · 73370e98
      Daniel P. Berrange 提交于
      The previous syntax was severely limited in its options
      
        -usbdevice disk:/home/berrange/output.img
      
      The new syntax is the same as for other disk types
      
        -drive file=/home/berrange/output.img,if=none,id=usb-1,index=1
        -device usb-storage,drive=usb-1
      
      Again, the index= arg is wrong here, and will be removed in a
      later merge
      73370e98
    • D
      Convert NICs over to use -device & -netdev where possible · 1dd6f855
      Daniel P. Berrange 提交于
      The current syntax uses a pair of args
      
         -net nic,macaddr=52:54:00:56:6c:55,vlan=3,model=pcnet,name=pcnet.0
         -net user,vlan=3,name=user.0
      
      The new syntax does not  need the vlan craziness anymore, and
      so has a simplified pair of args
      
         -netdev user,id=user.0
         -device pcnet,netdev=user.0,id=pcnet.0,mac=52:54:00:56:6c:55,addr=<PCI SLOT>
      1dd6f855
    • D
      Convert disk drive over to use -device where available · 6237e9c8
      Daniel P. Berrange 提交于
      The current preferred syntax for disk drives uses
      
        -drive file=/vms/plain.qcow,if=virtio,index=0,boot=on,format=qcow
      
      The new syntax splits this up into a pair of linked args
      
        -drive file=/vms/plain.qcow,if=none,id=drive-virtio-0,format=qcow2
        -device virtio-blk-pci,drive=drive-virtio-0,id=virtio-0,addr=<PCI SLOT>
      
      SCSI/IDE devices also get a bus property linking them to the
      controller
      
        -device scsi-disk,drive=drive-scsi0-0-0,id=scsi0-0-0,bus=scsi0.0,scsi-id=0
        -device ide-drive,drive=drive-ide0-0-0,id=ide0-0-0,bus=ide0,unit=0
      6237e9c8
    • D
      Convert audio devices over to -device syntax · 4886cba7
      Daniel P. Berrange 提交于
      The current syntax for audio devices is a horrible multiplexed
      arg
      
          -soundhw sb16,pcspk,ac97
      
      The new syntax is
      
          -device sb16,id=sound0
      
      or
      
          -device AC97,id=sound1,addr=<PCI SLOT>
      
      NB, pcspk still uses the old -soundhw syntax
      4886cba7
    • D
      Convert watchdog to -device · 38a22fbf
      Daniel P. Berrange 提交于
      The current syntax for watchdogs is
      
          -watchdog i6300esb
      
      The new syntax will now be
      
          -device i6300esb,id=watchdogNN,addr=<PCI-SLOT>
      38a22fbf
    • D
      Convert character devices over to use -device · 7b2f8cdd
      Daniel P. Berrange 提交于
      The current character device syntax uses either
      
        -serial tty,path=/dev/ttyS2
      
      Or
      
        -chardev tty,id=serial0,path=/dev/ttyS2 -serial chardev:serial0
      
      With the new -device support, we now prefer
      
        -chardev file,id=serial0,path=/tmp/serial.log -device isa-serial,chardev=serial0
      
      This patch changes the existing -chardev syntax to use this new
      scheme, and fallbacks to the old plain -serial syntax for old
      QEMU.
      
      The monitor device changes to
      
        -chardev socket,id=monitor,path=/tmp/test-monitor,server,nowait -mon chardev=monitor
      
      In addition, this patch adds --nodefaults, which kills off the
      default serial, parallel, vga and nic devices. THis avoids the
      need for us to explicitly turn each off
      7b2f8cdd
    • D
      Assign device aliases for all devices at startup · 05330717
      Daniel P. Berrange 提交于
      When starting a guest, give every device a unique alias. This will
      be used for the 'id' parameter in -device args in later patches.
      It can also be used to uniquely identify devices in the monitor
      
      For old QEMU without -device, assign disk names based on QEMU's
      historical naming scheme.
      
      * src/qemu/qemu_conf.c: Assign unique device aliases
      * src/qemu/qemu_driver.c: Remove obsolete qemudDiskDeviceName
        and use the device alias in eject & blockstats commands
      05330717
    • J
      storage_backend_fs.c: do not ignore probe failure · a6e7ba94
      Jim Meyering 提交于
      * src/storage/storage_backend_fs.c (virStorageBackendFileSystemRefresh):
      Correct parentheses.  The documented intent is to ignore non-regular
      files, yet due to a parenthesization error all errors were handled
      that way.
      a6e7ba94
    • D
      Probe for -device and use -nodefaults · 1ed1bf3a
      Daniel P. Berrange 提交于
      Probe for the new -device flag and if available set the -nodefaults
      flag, instead of using -net none, -serial none or -parallel none.
      Other device types will be converted to use -device in later patches.
      The -nodefaults flag will help avoid unwelcome surprises from future
      QEMU releases
      
      * src/qemu/qemu_conf.c: Probe for -device. Add -nodefaults flag.
        Remove -net none, -serial none or -parallel none
      * src/qemu/qemu_conf.h: Define QEMU_CMD_FLAG_DEVICE
      * tests/qemuhelpdata/qemu-0.12.1: New data file for 0.12.1 QEMU
      * tests/qemuhelptest.c: Test feature extraction from 0.12.1 QEMU
      1ed1bf3a
    • D
      Add device info to serial, parallel, channel, input & fs devices · 4ac290cc
      Daniel P. Berrange 提交于
      Although the serial, parallel, chanel, input & fs devices do
      not have PCI address info, they can all have device aliases.
      Thus it neccessary to associate the virDomainDeviceInfo data
      with them all.
      
      * src/conf/domain_conf.c, src/conf/domain_conf.h: Add hooks for
        parsing / formatting device info for serial, parallel, channel
        input and fs devices.
      * docs/schemas/domain.rng: Associate device info with character
        devices, input & fs device
      4ac290cc