1. 22 12月, 2009 4 次提交
    • J
      Only probe for CPU models if required · 8153c72b
      Jiri Denemark 提交于
      * src/qemu/qemu_conf.c: CPU models should be probed only if the
        a guest's XML contains CPU model, not each time a qemu command line
        is generated.
      8153c72b
    • J
      Install cpu_map.xml · bfeeb9a6
      Jiri Denemark 提交于
      * src/Makefile.am: install it in $(pkgdatadir) i.e. /usr/share/libvirt/
        usually
      bfeeb9a6
    • C
      Make Xen VT-d PCI attach/detach work · e9f468d3
      Chris Lalancette 提交于
      The Xen code for making HVM VT-d PCI passthrough attach and detach
      wasn't working properly:
      
      1)  In xenDaemonAttachDevice(), we were always trying to reconfigure
      a PCI passthrough device, even the first time we added it.  This was
      because the code in virDomainXMLDevID() was not checking xenstore for
      the existence of the device, and always returning 0 (meaning that
      the device already existed).
      
      2)  In xenDaemonDetachDevice(), we were trying to use "device_destroy"
      to detach a PCI device.  While you would think that is the right
      method to call, it's actually wrong for PCI devices.  In particular,
      in upstream Xen (and soon in RHEL-5 Xen), device_configure is actually
      used to destroy a PCI device.
      
      To fix the attach
      problem I add a lookup into xenstore to see if the device we are
      trying to attach already exists.  To fix the detach problem I change
      it so that for PCI detach (only), we use device_configure with the
      appropriate sxpr to do the detachment.
      
      * src/xen/xend_internal.c: don't use device_destroy for PCI devices
        and fix the other issues.
      * src/xen/xs_internal.c src/xen/xs_internal.h: add
        xenStoreDomainGetPCIID()
      e9f468d3
    • D
      Fix detection of JSON when restarting libvirtd · c90e545f
      Daniel P. Berrange 提交于
      The XML XPath for detecting JSON in the running VM statefile was
      wrong causing all VMs to get JSON mode enabled at libvirtd restart.
      
      In addition if a VM was running a JSON enabled QEMU once, and then
      altered to point to a non-JSON enabled QEMU later the 'monJSON'
      flag would not get reset to 0.
      
      * src/qemu/qemu_driver.c: Fix setting/detection of JSON mode
      c90e545f
  2. 21 12月, 2009 2 次提交
    • D
      Fix reporting of TLS connection errors · 469b6b3a
      Daniel P. Berrange 提交于
      The code for connecting to a server tries each socket in turn
      until it finds one that connects. Unfortunately for TLS sockets
      if it connected, but failed TLS handshake it would treat that
      as a failure to connect, and try the next socket. This is bad,
      it should have reported the TLS failure immediately.
      
      $ virsh -c qemu://somehost.com/system
      error: unable to connect to libvirtd at 'somehost.com': Invalid argument
      error: failed to connect to the hypervisor
      
      $ ./tools/virsh -c qemu://somehost.com/system
      error: server certificate failed validation: The certificate hasn't got a known issuer.
      error: failed to connect to the hypervisor
      
       * src/remote/remote_driver.c: Stop trying to connect if the
         TLS handshake fails
      469b6b3a
    • D
      Fix typo in qemudDomainAttachHostPciDevice() · 9b2c299a
      Daniel Veillard 提交于
      * src/qemu/qemu_driver.c: The 'if' statement is supposed to check return
        value of pci = pciGetDevice(conn, ...); , but check uses if (!dev),
        fix it
      9b2c299a
  3. 20 12月, 2009 4 次提交
    • A
      Add domainMemoryStats support to remote driver · 841d5035
      Adam Litke 提交于
      Use a dynamically sized xdr_array to pass memory stats on the wire.  This
      supports the addition of future memory stats and reduces the message size
      since only supported statistics are returned.
      
      * src/remote/remote_protocol.x: provide defines for the new entry point
      * src/remote/remote_driver.c daemon/remote.c: implement the client and
        server side
      * daemon/remote_dispatch_args.h daemon/remote_dispatch_prototypes.h
        daemon/remote_dispatch_ret.h daemon/remote_dispatch_table.h
        src/remote/remote_protocol.c src/remote/remote_protocol.h: generated
        stubs
      841d5035
    • A
      Implements domainMemStats in the qemu driver · c7523b41
      Adam Litke 提交于
      Support for memory statistics reporting is accepted for qemu inclusion.
      Statistics are reported via the monitor command 'info balloon' as a comma
      seprated list:
      
      (qemu) info balloon
      balloon: actual=1024,mem_swapped_in=0,mem_swapped_out=0,major_page_faults=88,minor_page_faults=105535,free_mem=1017065472,total_mem=1045229568
      
      Libvirt, qemu, and the guest operating system may support a subset of the
      statistics defined by the virtio spec.  Thus, only statistics recognized by
      components will be reported.
      
      * src/qemu/qemu_driver.c src/qemu/qemu_monitor_text.[ch]: implement the
        new entry point by using info balloon monitor command
      c7523b41
    • A
      domMemoryStats: Add public symbol to libvirt API · 4fe975fe
      Adam Litke 提交于
      * src/libvirt.c: implement the main entry point
      * src/libvirt_public.syms: add it to the exported symbols
      4fe975fe
    • A
      Add new API virDomainMemoryStats to header and drivers · 3a701313
      Adam Litke 提交于
      Set up the types for the domainMemoryStats function and insert it into the
      virDriver structure definition.  Because of static initializers, update
      every driver and set the new field to NULL.
      
      * include/libvirt/libvirt.h.in: new API
      * src/driver.h src/*/*_driver.c src/vbox/vbox_tmpl.c: add the new
        entry to the driver structure
      * python/generator.py: fix compiler errors, the actual python binding is
        implemented later
      3a701313
  4. 19 12月, 2009 14 次提交
  5. 18 12月, 2009 12 次提交
    • J
      Implement CPU selection in QEMU driver · ffb13b11
      Jiri Denemark 提交于
      * src/qemu/qemu_conf.c src/qemu/qemu_conf.h src/qemu/qemu_driver.c:
        add the new entry point, extend capabilities and code to interract
        with qemu
      ffb13b11
    • J
      Adds CPU map for models and features · d5ef0a69
      Jiri Denemark 提交于
      * src/cpu/cpu_map.xml: newdescription file
      * src/Makefile.am: include it in dist
      d5ef0a69
    • J
      Adds CPU selection infrastructure · 7286882c
      Jiri Denemark 提交于
      Each driver supporting CPU selection must fill in host CPU capabilities.
      When filling them, drivers for hypervisors running on the same node as
      libvirtd can use cpuNodeData() to obtain raw CPU data. Other drivers,
      such as VMware, need to implement their own way of getting such data.
      Raw data can be decoded into virCPUDefPtr using cpuDecode() function.
      
      When implementing virConnectCompareCPU(), a hypervisor driver can just
      call cpuCompareXML() function with host CPU capabilities.
      
      For each guest for which a driver supports selecting CPU models, it must
      set the appropriate feature in guest's capabilities:
      
          virCapabilitiesAddGuestFeature(guest, "cpuselection", 1, 0)
      
      Actions needed when a domain is being created depend on whether the
      hypervisor understands raw CPU data (currently CPUID for i686, x86_64
      architectures) or symbolic names has to be used.
      
      Typical use by hypervisors which prefer CPUID (such as VMware and Xen):
      
      - convert guest CPU configuration from domain's XML into a set of raw
        data structures each representing one of the feature policies:
      
          cpuEncode(conn, architecture, guest_cpu_config,
                    &forced_data, &required_data, &optional_data,
                    &disabled_data, &forbidden_data)
      
      - create a mask or whatever the hypervisor expects to see and pass it
        to the hypervisor
      
      Typical use by hypervisors with symbolic model names (such as QEMU):
      
      - get raw CPU data for a computed guest CPU:
      
          cpuGuestData(conn, host_cpu, guest_cpu_config, &data)
      
      - decode raw data into virCPUDefPtr with a possible restriction on
        allowed model names:
      
          cpuDecode(conn, guest, data, n_allowed_models, allowed_models)
      
      - pass guest->model and guest->features to the hypervisor
      
      * src/cpu/cpu.c src/cpu/cpu.h src/cpu/cpu_generic.c
        src/cpu/cpu_generic.h src/cpu/cpu_map.c src/cpu/cpu_map.h
        src/cpu/cpu_x86.c src/cpu/cpu_x86.h src/cpu/cpu_x86_data.h
      * configure.in: check for CPUID instruction
      * src/Makefile.am: glue the new files in
      * src/libvirt_private.syms: add new private symbols
      * po/POTFILES.in: add new cpu files containing translatable strings
      7286882c
    • J
      Remote driver CPU flags support · e1042693
      Jiri Denemark 提交于
      * src/remote/remote_driver.c: add the new entry point
      e1042693
    • J
      CPU flags wire protocol format and server side · 3a2881fa
      Jiri Denemark 提交于
      * src/remote/remote_protocol.x: update with new entry point
      * daemon/remote.c: add the new server dispatcher
      * daemon/remote_dispatch_args.h daemon/remote_dispatch_prototypes.h
        daemon/remote_dispatch_ret.h daemon/remote_dispatch_table.h
        src/remote/remote_protocol.c src/remote/remote_protocol.h: regenerated
      3a2881fa
    • J
      Public API implementation · 0b7d2ae6
      Jiri Denemark 提交于
      * src/libvirt.c: adds the public entry point virConnectCompareCPU()
      0b7d2ae6
    • J
      Adds the internal driver API · 16e4084a
      Jiri Denemark 提交于
      * src/driver.h: add an extra entry point in the structure
      * src/esx/esx_driver.c src/lxc/lxc_driver.c src/opennebula/one_driver.c
        src/openvz/openvz_driver.c src/phyp/phyp_driver.c src/qemu/qemu_driver.c
        src/remote/remote_driver.c src/test/test_driver.c src/uml/uml_driver.c
        src/vbox/vbox_tmpl.c src/xen/xen_driver.c: add NULL entry points for
        all drivers
      16e4084a
    • J
      New public API definition virConnectCompareCPU() · a44dc266
      Jiri Denemark 提交于
      * include/libvirt/libvirt.h.in: add it in the public API as
        well as the new flags
      * src/libvirt_public.syms: export it
      a44dc266
    • D
      Fixes syntax-check with previous commit · c7c42a85
      Daniel Veillard 提交于
      * po/POTFILES.in: adds src/conf/cpu_conf.c in teh set of files with
        translatable content
      * src/conf/cpu_conf.c: remove an unused include
      c7c42a85
    • J
      XML parsing/formating code for CPU flags · 6695818c
      Jiri Denemark 提交于
      * include/libvirt/virterror.h src/util/virterror.c: add new domain
        VIR_FROM_CPU for errors
      * src/conf/cpu_conf.c src/conf/cpu_conf.h: new parsing module
      * src/Makefile.am proxy/Makefile.am: include new files
      * src/conf/capabilities.[ch] src/conf/domain_conf.[ch]: reference
        new code
      * src/libvirt_private.syms: private export of new entry points
      6695818c
    • D
      Initialize gcrypt threading · 33a198c1
      Daniel P. Berrange 提交于
      GNUTLS uses gcrypt for its crypto functions. gcrypt requires
      that the app/library initializes threading before using it.
      We don't want to force apps using libvirt to know about
      gcrypt, so we make virInitialize init threading on their
      behalf. This location also ensures libvirtd has initialized
      it correctly. This initialization is required even if libvirt
      itself were only using one thread, since another non-libvirt
      library (eg GTK-VNC) could also be using gcrypt from another
      thread
      
      * src/libvirt.c: Register thread functions for gcrypt
      * configure.in: Add -lgcrypt to linker flags
      33a198c1
    • D
      Fix bug in storage driver accessing wrong private data · 84961bd3
      Daniel P. Berrange 提交于
      * src/storage/storage_driver.c: Fix IsPersistent() and IsActivE()
        methods on storage pools to use 'storagePrivateData' instead
        of 'privateData'. Also fix naming convention of objects
      84961bd3
  6. 16 12月, 2009 4 次提交