[libvirt] [PATCH 02/16] conf: Introduce new hostdev device type mdev

Michal Privoznik mprivozn at redhat.com
Mon Feb 6 16:30:01 UTC 2017


On 06.02.2017 13:19, Erik Skultety wrote:
> A mediated device will be identified by the host PCI address of the
> parent physical device which is backing the given mediated device, and a
> UUID of the user pre-created mediated device. The data necessary to
> identify a mediated device can be easily extended in the future, once we
> need to enable managed='yes' in which case a hint from the upper
> management layer about which mediated device type (e.g. vGPU type)
> should an instance be created on.
> 
> Signed-off-by: Erik Skultety <eskultet at redhat.com>
> ---
>  src/conf/domain_conf.c              |  7 ++++++-
>  src/conf/domain_conf.h              | 10 ++++++++++
>  src/qemu/qemu_cgroup.c              |  5 +++++
>  src/qemu/qemu_domain.c              |  1 +
>  src/qemu/qemu_hotplug.c             |  2 ++
>  src/security/security_apparmor.c    |  3 +++
>  src/security/security_dac.c         |  2 ++
>  src/security/security_selinux.c     |  2 ++
>  tests/domaincapsschemadata/full.xml |  1 +
>  9 files changed, 32 insertions(+), 1 deletion(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index c06b128..38ffc95 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -649,7 +649,8 @@ VIR_ENUM_IMPL(virDomainHostdevSubsys, VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST,
>                "usb",
>                "pci",
>                "scsi",
> -              "scsi_host")
> +              "scsi_host",
> +              "mdev")
>  
>  VIR_ENUM_IMPL(virDomainHostdevSubsysPCIBackend,
>                VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_LAST,
> @@ -6453,6 +6454,8 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
>          if (virDomainHostdevSubsysSCSIVHostDefParseXML(sourcenode, def) < 0)
>              goto error;
>          break;
> +    case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
> +        break;
>  
>      default:
>          virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> @@ -13281,6 +13284,7 @@ virDomainHostdevDefParseXML(virDomainXMLOptionPtr xmlopt,
>              }
>              break;
>          case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB:
> +        case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
>          case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
>              break;
>          }
> @@ -14172,6 +14176,7 @@ virDomainHostdevMatchSubsys(virDomainHostdevDefPtr a,
>              return 1;
>          else
>              return 0;
> +    case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
>      case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
>          return 0;
>      }
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index 507ace8..3a1009a 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -54,6 +54,7 @@
>  # include "virgic.h"
>  # include "virperf.h"
>  # include "virtypedparam.h"
> +# include "virpci.h"
>  
>  /* forward declarations of all device types, required by
>   * virDomainDeviceDef
> @@ -295,6 +296,7 @@ typedef enum {
>      VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI,
>      VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI,
>      VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST,
> +    VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV,
>  
>      VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST
>  } virDomainHostdevSubsysType;
> @@ -369,6 +371,13 @@ struct _virDomainHostdevSubsysSCSI {
>      } u;
>  };
>  
> +typedef struct _virDomainHostdevSubsysMediatedDev virDomainHostdevSubsysMediatedDev;
> +typedef virDomainHostdevSubsysMediatedDev *virDomainHostdevSubsysMediatedDevPtr;
> +struct _virDomainHostdevSubsysMediatedDev {
> +    virPCIDeviceAddress addr;               /* parent device's host address */
> +    char uuidstr[VIR_UUID_STRING_BUFLEN];   /* mediated device's uuid string */

Either this or VIR_UUID_BUFLEN for storing UUID in raw format, which is
what we typically do. But I don't care that much.

> +};
> +

Michal




More information about the libvir-list mailing list