From: Ian Campbell Date: Thu, 1 Mar 2012 12:26:14 +0000 (+0000) Subject: libxl: pci: use _init/_setdefault X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=966deb4db61ea44e2487c84daa0939f52416fa83;p=xen.git libxl: pci: use _init/_setdefault Signed-off-by: Ian Campbell --- diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index f7cbc819fc..564ad67e4d 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -552,7 +552,7 @@ int libxl_device_vfb_remove(libxl_ctx *ctx, uint32_t domid, int libxl_device_vfb_destroy(libxl_ctx *ctx, uint32_t domid, libxl_device_vfb *vfb); /* PCI Passthrough */ -int libxl_device_pci_init(libxl_ctx *ctx, libxl_device_pci *pci); +void libxl_device_pci_init(libxl_device_pci *pci); int libxl_device_pci_add(libxl_ctx *ctx, uint32_t domid, libxl_device_pci *pcidev); int libxl_device_pci_remove(libxl_ctx *ctx, uint32_t domid, libxl_device_pci *pcidev); int libxl_device_pci_destroy(libxl_ctx *ctx, uint32_t domid, libxl_device_pci *pcidev); diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index b408bb347b..e0a1070dd9 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -196,6 +196,7 @@ _hidden int libxl__device_disk_setdefault(libxl__gc *gc, _hidden int libxl__device_nic_setdefault(libxl__gc *gc, libxl_device_nic *nic); _hidden int libxl__device_vfb_setdefault(libxl__gc *gc, libxl_device_vfb *vfb); _hidden int libxl__device_vkb_setdefault(libxl__gc *gc, libxl_device_vkb *vkb); +_hidden int libxl__device_pci_setdefault(libxl__gc *gc, libxl_device_pci *pci); struct libxl__evgen_domain_death { uint32_t domid; diff --git a/tools/libxl/libxl_pci.c b/tools/libxl/libxl_pci.c index 33425f5fe9..e42f11281d 100644 --- a/tools/libxl/libxl_pci.c +++ b/tools/libxl/libxl_pci.c @@ -765,6 +765,16 @@ static int libxl__device_pci_reset(libxl__gc *gc, unsigned int domain, unsigned return -1; } +void libxl_device_pci_init(libxl_device_pci *pci) +{ + memset(pci, '\0', sizeof(*pci)); +} + +int libxl__device_pci_setdefault(libxl__gc *gc, libxl_device_pci *pci) +{ + return 0; +} + int libxl_device_pci_add(libxl_ctx *ctx, uint32_t domid, libxl_device_pci *pcidev) { GC_INIT(ctx); @@ -782,6 +792,9 @@ int libxl__device_pci_add(libxl__gc *gc, uint32_t domid, libxl_device_pci *pcide int num_assigned, i, rc; int stubdomid = 0; + rc = libxl__device_pci_setdefault(gc, pcidev); + if (rc) goto out; + rc = get_all_assigned_devices(gc, &assigned, &num_assigned); if ( rc ) { LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "cannot determine if device is assigned, refusing to continue"); diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 9851705ca3..1c261235db 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -1021,7 +1021,7 @@ skip_vfb: d_config->pcidevs = (libxl_device_pci *) realloc(d_config->pcidevs, sizeof (libxl_device_pci) * (d_config->num_pcidevs + 1)); pcidev = d_config->pcidevs + d_config->num_pcidevs; - memset(pcidev, 0x00, sizeof(libxl_device_pci)); + libxl_device_pci_init(pcidev); pcidev->msitranslate = pci_msitranslate; pcidev->power_mgmt = pci_power_mgmt;