[libvirt] [RFC PATCH 02/12] domain_conf: add support for cpu device configuration in XML

Peter Krempa pkrempa at redhat.com
Wed Jan 21 09:03:34 UTC 2015


On Wed, Jan 21, 2015 at 16:00:54 +0800, Zhu Guihua wrote:
> This patch adds configuration support for the cpu device.
> 
> Signed-off-by: Zhu Guihua <zhugh.fnst at cn.fujitsu.com>
> ---
>  src/conf/domain_conf.c   | 14 ++++++++++++++
>  src/conf/domain_conf.h   | 19 +++++++++++++++++++
>  src/libvirt_private.syms |  1 +
>  src/qemu/qemu_driver.c   |  6 ++++++
>  src/qemu/qemu_hotplug.c  |  1 +
>  5 files changed, 41 insertions(+)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 1631421..e036d75 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c

> @@ -2857,6 +2861,12 @@ virDomainDeviceInfoIterateInternal(virDomainDefPtr def,
>          if (cb(def, &device, &def->consoles[i]->info, opaque) < 0)
>              return -1;
>      }
> +    device.type = VIR_DOMAIN_DEVICE_CPU;
> +    for (i = 0; i < def->ncpus; i++) {
> +        device.data.cpu = def->cpus[i];
> +        if (cb(def, &device, &def->cpus[i]->info, opaque) < 0)
> +            return -1;
> +    }
>      device.type = VIR_DOMAIN_DEVICE_INPUT;
>      for (i = 0; i < def->ninputs; i++) {
>          device.data.input = def->inputs[i];

> @@ -16015,6 +16027,7 @@ virDomainDefCheckABIStability(virDomainDefPtr src,
>      case VIR_DOMAIN_DEVICE_NONE:
>      case VIR_DOMAIN_DEVICE_SMARTCARD:
>      case VIR_DOMAIN_DEVICE_CHR:
> +    case VIR_DOMAIN_DEVICE_CPU:
>      case VIR_DOMAIN_DEVICE_MEMBALLOON:
>      case VIR_DOMAIN_DEVICE_NVRAM:
>      case VIR_DOMAIN_DEVICE_LAST:

The ABI stability check code needs to be implemented. 


> @@ -21463,6 +21476,7 @@ virDomainDeviceDefCopy(virDomainDeviceDefPtr src,
>      case VIR_DOMAIN_DEVICE_PANIC:
>          rc = virDomainPanicDefFormat(&buf, src->data.panic);
>          break;
> +    case VIR_DOMAIN_DEVICE_CPU:

The copy function needs to be impelemnted too (I didn't check next patch
thoug yet)


>      case VIR_DOMAIN_DEVICE_NONE:
>      case VIR_DOMAIN_DEVICE_SMARTCARD:
>      case VIR_DOMAIN_DEVICE_MEMBALLOON:
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index 8869d26..618eef3 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -108,6 +108,9 @@ typedef virDomainSmartcardDef *virDomainSmartcardDefPtr;
>  typedef struct _virDomainChrDef virDomainChrDef;
>  typedef virDomainChrDef *virDomainChrDefPtr;
>  
> +typedef struct _virDomainCPUDef virDomainCPUDef;
> +typedef virDomainCPUDef *virDomainCPUDefPtr;
> +
>  typedef struct _virDomainMemballoonDef virDomainMemballoonDef;
>  typedef virDomainMemballoonDef *virDomainMemballoonDefPtr;
>  

 @@ -1158,6 +1163,13 @@ struct _virDomainChrDef {
>      virSecurityDeviceLabelDefPtr *seclabels;
>  };
>  
> +struct _virDomainCPUDef {
> +    char *driver;
> +    int apic_id;
> +
> +    virDomainDeviceInfo info;

I've looked through the next patch and you don't parse any device info
for the CPU type. Is it necessary to have it present at all in that
case?


> +};
> +
>  typedef enum {
>      VIR_DOMAIN_SMARTCARD_TYPE_HOST,
>      VIR_DOMAIN_SMARTCARD_TYPE_HOST_CERTIFICATES,
  
> @@ -2342,6 +2357,7 @@ void virDomainActualNetDefFree(virDomainActualNetDefPtr def);
>  void virDomainNetDefFree(virDomainNetDefPtr def);
>  void virDomainSmartcardDefFree(virDomainSmartcardDefPtr def);
>  void virDomainChrDefFree(virDomainChrDefPtr def);
> +void virDomainCPUDefFree(virDomainCPUDefPtr def);

Function declarations should be along with function definitions.

>  void virDomainChrSourceDefFree(virDomainChrSourceDefPtr def);
>  int virDomainChrSourceDefCopy(virDomainChrSourceDefPtr src,
>                                virDomainChrSourceDefPtr dest);
> @@ -2387,6 +2403,8 @@ void virDomainDefFree(virDomainDefPtr vm);
>  
>  virDomainChrDefPtr virDomainChrDefNew(void);
>  
> +virDomainCPUDefPtr virDomainCPUDefNew(void);
> +

Same here

>  virDomainDefPtr virDomainDefNew(const char *name,
>                                  const unsigned char *uuid,
>                                  int id);
> @@ -2805,6 +2823,7 @@ VIR_ENUM_DECL(virDomainChrChannelTarget)
>  VIR_ENUM_DECL(virDomainChrConsoleTarget)
>  VIR_ENUM_DECL(virDomainChrSerialTarget)
>  VIR_ENUM_DECL(virDomainSmartcard)
> +VIR_ENUM_DECL(virDomainCPU)
>  VIR_ENUM_DECL(virDomainChr)
>  VIR_ENUM_DECL(virDomainChrTcpProtocol)
>  VIR_ENUM_DECL(virDomainChrSpicevmc)
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index d08e400..9ceff71 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -166,6 +166,7 @@ virDomainChrTcpProtocolTypeFromString;
>  virDomainChrTcpProtocolTypeToString;
>  virDomainChrTypeFromString;
>  virDomainChrTypeToString;
> +virDomainCPUDefFree;

Breaks "make syntax-check" again:

Expected symbol virDomainCPUDefFree is not in ELF library

The symbols entry can be added only when the function is defined.

>  virDomainClockBasisTypeToString;
>  virDomainClockOffsetTypeFromString;
>  virDomainClockOffsetTypeToString;

Peter
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150121/c330ea91/attachment-0001.sig>


More information about the libvir-list mailing list