You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

222 lines
7.6 KiB

From 4954aa8c9e659fe593cf368c82a62124754d4c9c Mon Sep 17 00:00:00 2001
From: Xu Wang <gesaint@linux.vnet.ibm.com>
Date: Tue, 18 Mar 2014 08:52:53 -0400
Subject: [PATCH 50/60] Add virtual controller device types
Add data and strutures for a virtual controller device
Signed-off-by: John Ferlan <jferlan@redhat.com>
---
libxkutil/device_parsing.h | 17 +++++-
src/svpc_types.h | 129 ++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 144 insertions(+), 2 deletions(-)
diff --git a/libxkutil/device_parsing.h b/libxkutil/device_parsing.h
index a92e223..afddc1d 100644
--- a/libxkutil/device_parsing.h
+++ b/libxkutil/device_parsing.h
@@ -1,5 +1,5 @@
/*
- * Copyright IBM Corp. 2007, 2013
+ * Copyright IBM Corp. 2007-2014
*
* Authors:
* Dan Smith <danms@us.ibm.com>
@@ -163,6 +163,17 @@ struct input_device {
char *bus;
};
+#define CONTROLLER_INDEX_NOT_SET -1
+struct controller_device {
+ uint16_t type;
+ uint64_t index;
+ char *model;
+ char *ports;
+ char *vectors;
+ char *queues;
+ struct device_address address;
+};
+
struct virt_device {
uint16_t type;
union {
@@ -174,6 +185,7 @@ struct virt_device {
struct graphics_device graphics;
struct console_device console;
struct input_device input;
+ struct controller_device controller;
} dev;
char *id;
};
@@ -249,6 +261,9 @@ struct domain {
struct virt_device *dev_vcpu;
int dev_vcpu_ct;
+
+ struct virt_device *dev_controller;
+ int dev_controller_ct;
};
struct virt_device *virt_device_dup(struct virt_device *dev);
diff --git a/src/svpc_types.h b/src/svpc_types.h
index 404e428..d9f8032 100644
--- a/src/svpc_types.h
+++ b/src/svpc_types.h
@@ -1,5 +1,5 @@
/*
- * Copyright IBM Corp. 2007, 2013
+ * Copyright IBM Corp. 2007-2014
*
* Authors:
* Dan Smith <danms@us.ibm.com>
@@ -24,6 +24,9 @@
#define CIM_OPERATIONAL_STATUS 2
+/* From the ResourceType list for CIM_ResourceAllocationSettingData.html
+ * Found on http://schemas.dmtf.org/wbem/cim-html/2.31.0
+ */
#define CIM_RES_TYPE_ALL 0
#define CIM_RES_TYPE_OTHER 1
#define CIM_RES_TYPE_PROC 3
@@ -33,9 +36,11 @@
#define CIM_RES_TYPE_GRAPHICS 24
#define CIM_RES_TYPE_INPUT 13
#define CIM_RES_TYPE_UNKNOWN 1000
+/* libvirt-cim specific values can start here */
#define CIM_RES_TYPE_IMAGE 32768
#define CIM_RES_TYPE_CONSOLE 32769
#define CIM_RES_TYPE_EMU 32770
+#define CIM_RES_TYPE_CONTROLLER 32771
#define CIM_RES_TYPE_COUNT 7
const static int cim_res_types[CIM_RES_TYPE_COUNT] =
@@ -266,4 +271,126 @@ static inline const char* chardev_source_type_IDToStr(int type)
return type_str;
}
+/* enum for Controller ProtocolSupported values
+ *
+ * From the ProtocolSupported list for CIM_Controller.html
+ * Found on http://schemas.dmtf.org/wbem/cim-html/2.31.0
+ */
+enum CIM_controller_protocol_type {
+ CIM_CONTROLLER_PROTOCOL_TYPE_OTHER = 1,
+ CIM_CONTROLLER_PROTOCOL_TYPE_UNKNOWN = 2,
+ CIM_CONTROLLER_PROTOCOL_TYPE_EISA = 3,
+ CIM_CONTROLLER_PROTOCOL_TYPE_ISA = 4,
+ CIM_CONTROLLER_PROTOCOL_TYPE_PCI = 5,
+ CIM_CONTROLLER_PROTOCOL_TYPE_ATA = 6,
+ CIM_CONTROLLER_PROTOCOL_TYPE_FD = 7,
+ CIM_CONTROLLER_PROTOCOL_TYPE_1496 = 8,
+ CIM_CONTROLLER_PROTOCOL_TYPE_SCSI_PI = 9,
+ CIM_CONTROLLER_PROTOCOL_TYPE_SCSI_FC = 10,
+ CIM_CONTROLLER_PROTOCOL_TYPE_SCSI_SB = 11,
+ CIM_CONTROLLER_PROTOCOL_TYPE_SCSI_SB2 = 12,
+ CIM_CONTROLLER_PROTOCOL_TYPE_SCSI_SSA = 13,
+ CIM_CONTROLLER_PROTOCOL_TYPE_VESA = 14,
+ CIM_CONTROLLER_PROTOCOL_TYPE_PCMCIA = 15,
+ CIM_CONTROLLER_PROTOCOL_TYPE_USB = 16,
+ CIM_CONTROLLER_PROTOCOL_TYPE_PP = 17,
+ CIM_CONTROLLER_PROTOCOL_TYPE_ESCON = 18,
+ CIM_CONTROLLER_PROTOCOL_TYPE_DIAG = 19,
+ CIM_CONTROLLER_PROTOCOL_TYPE_I2C = 20,
+ CIM_CONTROLLER_PROTOCOL_TYPE_POWER = 21,
+ CIM_CONTROLLER_PROTOCOL_TYPE_HIPPI = 22,
+ CIM_CONTROLLER_PROTOCOL_TYPE_MULTIBUS = 23,
+ CIM_CONTROLLER_PROTOCOL_TYPE_VME = 24,
+ CIM_CONTROLLER_PROTOCOL_TYPE_IPI = 25,
+ CIM_CONTROLLER_PROTOCOL_TYPE_IEEE488 = 26,
+ CIM_CONTROLLER_PROTOCOL_TYPE_RS232 = 27,
+ CIM_CONTROLLER_PROTOCOL_TYPE_IEEE8023_10BASE5 = 28,
+ CIM_CONTROLLER_PROTOCOL_TYPE_IEEE8023_10BASE2 = 29,
+ CIM_CONTROLLER_PROTOCOL_TYPE_IEEE8023_1BASE5 = 30,
+ CIM_CONTROLLER_PROTOCOL_TYPE_IEEE8023_10BROAD36 = 31,
+ CIM_CONTROLLER_PROTOCOL_TYPE_IEEE8023_100BASEVG = 32,
+ CIM_CONTROLLER_PROTOCOL_TYPE_TOKENRING = 33,
+ CIM_CONTROLLER_PROTOCOL_TYPE_ANSIX3T9 = 34,
+ CIM_CONTROLLER_PROTOCOL_TYPE_MCA = 35,
+ CIM_CONTROLLER_PROTOCOL_TYPE_ESDI = 36,
+ CIM_CONTROLLER_PROTOCOL_TYPE_IDE = 37,
+ CIM_CONTROLLER_PROTOCOL_TYPE_CMD = 38,
+ CIM_CONTROLLER_PROTOCOL_TYPE_ST506 = 39,
+ CIM_CONTROLLER_PROTOCOL_TYPE_DSSI = 40,
+ CIM_CONTROLLER_PROTOCOL_TYPE_QIC2 = 41,
+ CIM_CONTROLLER_PROTOCOL_TYPE_ENH_ATA = 42,
+ CIM_CONTROLLER_PROTOCOL_TYPE_AGP = 43,
+ CIM_CONTROLLER_PROTOCOL_TYPE_TWIRP = 44,
+ CIM_CONTROLLER_PROTOCOL_TYPE_FIR = 45,
+ CIM_CONTROLLER_PROTOCOL_TYPE_SIR = 46,
+ CIM_CONTROLLER_PROTOCOL_TYPE_IRBUS = 47,
+ CIM_CONTROLLER_PROTOCOL_TYPE_SATA = 48,
+ /* libvirt specific */
+ CIM_CONTROLLER_PROTOCOL_TYPE_CCID = 32678,
+ CIM_CONTROLLER_PROTOCOL_TYPE_VIRTIO_SERIAL = 32769,
+};
+
+static inline int controller_protocol_type_StrToID(const char *type_str)
+{
+ int rc = CIM_CONTROLLER_PROTOCOL_TYPE_UNKNOWN;
+
+ if (type_str == NULL)
+ return rc;
+
+ if (STREQC(type_str, "ide"))
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_IDE;
+ else if (STREQC(type_str, "fdc"))
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_FD;
+ else if (STREQC(type_str, "scsi"))
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_SCSI_SSA; /* REVISIT */
+ else if (STREQC(type_str, "sata"))
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_SATA;
+ else if (STREQC(type_str, "ccid"))
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_CCID;
+ else if (STREQC(type_str, "virtio-serial"))
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_VIRTIO_SERIAL;
+ else if (STREQC(type_str, "pci"))
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_PCI;
+ else if (STREQC(type_str, "usb"))
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_USB;
+
+ return rc;
+}
+
+static inline const char* controller_protocol_type_IDToStr(int type)
+{
+ char *type_str = NULL;
+
+ switch (type)
+ {
+ case CIM_CONTROLLER_PROTOCOL_TYPE_IDE:
+ type_str = "ide";
+ break;
+ case CIM_CONTROLLER_PROTOCOL_TYPE_FD:
+ type_str = "fdc";
+ break;
+ case CIM_CONTROLLER_PROTOCOL_TYPE_SCSI_SSA:
+ type_str = "scsi";
+ break;
+ case CIM_CONTROLLER_PROTOCOL_TYPE_SATA:
+ type_str = "sata";
+ break;
+ case CIM_CONTROLLER_PROTOCOL_TYPE_CCID:
+ type_str = "ccid";
+ break;
+ case CIM_CONTROLLER_PROTOCOL_TYPE_VIRTIO_SERIAL:
+ type_str = "virtio-serial";
+ break;
+ case CIM_CONTROLLER_PROTOCOL_TYPE_PCI:
+ type_str = "pci";
+ break;
+ case CIM_CONTROLLER_PROTOCOL_TYPE_USB:
+ type_str = "usb";
+ break;
+ default:
+ break;
+ }
+ return type_str;
+}
+
#endif
--
2.1.0