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.
223 lines
7.6 KiB
223 lines
7.6 KiB
7 years ago
|
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
|