[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 06/14] hw/vfio/platform: amd-xgbe device
From: |
Alex Williamson |
Subject: |
[Qemu-devel] [PULL 06/14] hw/vfio/platform: amd-xgbe device |
Date: |
Fri, 19 Feb 2016 10:40:06 -0700 |
User-agent: |
StGit/0.17.1-dirty |
From: Eric Auger <address@hidden>
This patch introduces the amd-xgbe VFIO platform device. It
allows the guest to do passthrough on a device exposing an
"amd,xgbe-seattle-v1a" compat string.
Signed-off-by: Eric Auger <address@hidden>
Reviewed-by: Alex Bennée <address@hidden>
Signed-off-by: Alex Williamson <address@hidden>
---
hw/vfio/Makefile.objs | 1 +
hw/vfio/amd-xgbe.c | 55 +++++++++++++++++++++++++++++++++++++++
include/hw/vfio/vfio-amd-xgbe.h | 51 ++++++++++++++++++++++++++++++++++++
3 files changed, 107 insertions(+)
create mode 100644 hw/vfio/amd-xgbe.c
create mode 100644 include/hw/vfio/vfio-amd-xgbe.h
diff --git a/hw/vfio/Makefile.objs b/hw/vfio/Makefile.objs
index d324863..ceddbb8 100644
--- a/hw/vfio/Makefile.objs
+++ b/hw/vfio/Makefile.objs
@@ -3,4 +3,5 @@ obj-$(CONFIG_SOFTMMU) += common.o
obj-$(CONFIG_PCI) += pci.o pci-quirks.o
obj-$(CONFIG_SOFTMMU) += platform.o
obj-$(CONFIG_SOFTMMU) += calxeda-xgmac.o
+obj-$(CONFIG_SOFTMMU) += amd-xgbe.o
endif
diff --git a/hw/vfio/amd-xgbe.c b/hw/vfio/amd-xgbe.c
new file mode 100644
index 0000000..53451eb
--- /dev/null
+++ b/hw/vfio/amd-xgbe.c
@@ -0,0 +1,55 @@
+/*
+ * AMD XGBE VFIO device
+ *
+ * Copyright Linaro Limited, 2015
+ *
+ * Authors:
+ * Eric Auger <address@hidden>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2. See
+ * the COPYING file in the top-level directory.
+ *
+ */
+
+#include "hw/vfio/vfio-amd-xgbe.h"
+
+static void amd_xgbe_realize(DeviceState *dev, Error **errp)
+{
+ VFIOPlatformDevice *vdev = VFIO_PLATFORM_DEVICE(dev);
+ VFIOAmdXgbeDeviceClass *k = VFIO_AMD_XGBE_DEVICE_GET_CLASS(dev);
+
+ vdev->compat = g_strdup("amd,xgbe-seattle-v1a");
+
+ k->parent_realize(dev, errp);
+}
+
+static const VMStateDescription vfio_platform_amd_xgbe_vmstate = {
+ .name = TYPE_VFIO_AMD_XGBE,
+ .unmigratable = 1,
+};
+
+static void vfio_amd_xgbe_class_init(ObjectClass *klass, void *data)
+{
+ DeviceClass *dc = DEVICE_CLASS(klass);
+ VFIOAmdXgbeDeviceClass *vcxc =
+ VFIO_AMD_XGBE_DEVICE_CLASS(klass);
+ vcxc->parent_realize = dc->realize;
+ dc->realize = amd_xgbe_realize;
+ dc->desc = "VFIO AMD XGBE";
+ dc->vmsd = &vfio_platform_amd_xgbe_vmstate;
+}
+
+static const TypeInfo vfio_amd_xgbe_dev_info = {
+ .name = TYPE_VFIO_AMD_XGBE,
+ .parent = TYPE_VFIO_PLATFORM,
+ .instance_size = sizeof(VFIOAmdXgbeDevice),
+ .class_init = vfio_amd_xgbe_class_init,
+ .class_size = sizeof(VFIOAmdXgbeDeviceClass),
+};
+
+static void register_amd_xgbe_dev_type(void)
+{
+ type_register_static(&vfio_amd_xgbe_dev_info);
+}
+
+type_init(register_amd_xgbe_dev_type)
diff --git a/include/hw/vfio/vfio-amd-xgbe.h b/include/hw/vfio/vfio-amd-xgbe.h
new file mode 100644
index 0000000..9fff65e
--- /dev/null
+++ b/include/hw/vfio/vfio-amd-xgbe.h
@@ -0,0 +1,51 @@
+/*
+ * VFIO AMD XGBE device
+ *
+ * Copyright Linaro Limited, 2015
+ *
+ * Authors:
+ * Eric Auger <address@hidden>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2. See
+ * the COPYING file in the top-level directory.
+ *
+ */
+
+#ifndef HW_VFIO_VFIO_AMD_XGBE_H
+#define HW_VFIO_VFIO_AMD_XGBE_H
+
+#include "hw/vfio/vfio-platform.h"
+
+#define TYPE_VFIO_AMD_XGBE "vfio-amd-xgbe"
+
+/**
+ * This device exposes:
+ * - 5 MMIO regions: MAC, PCS, SerDes Rx/Tx regs,
+ SerDes Integration Registers 1/2 & 2/2
+ * - 2 level sensitive IRQs and optional DMA channel IRQs
+ */
+struct VFIOAmdXgbeDevice {
+ VFIOPlatformDevice vdev;
+};
+
+typedef struct VFIOAmdXgbeDevice VFIOAmdXgbeDevice;
+
+struct VFIOAmdXgbeDeviceClass {
+ /*< private >*/
+ VFIOPlatformDeviceClass parent_class;
+ /*< public >*/
+ DeviceRealize parent_realize;
+};
+
+typedef struct VFIOAmdXgbeDeviceClass VFIOAmdXgbeDeviceClass;
+
+#define VFIO_AMD_XGBE_DEVICE(obj) \
+ OBJECT_CHECK(VFIOAmdXgbeDevice, (obj), TYPE_VFIO_AMD_XGBE)
+#define VFIO_AMD_XGBE_DEVICE_CLASS(klass) \
+ OBJECT_CLASS_CHECK(VFIOAmdXgbeDeviceClass, (klass), \
+ TYPE_VFIO_AMD_XGBE)
+#define VFIO_AMD_XGBE_DEVICE_GET_CLASS(obj) \
+ OBJECT_GET_CLASS(VFIOAmdXgbeDeviceClass, (obj), \
+ TYPE_VFIO_AMD_XGBE)
+
+#endif
- [Qemu-devel] [PULL 00/14] VFIO updates 2016-02-19, Alex Williamson, 2016/02/19
- [Qemu-devel] [PULL 01/14] pcie: modify the capability size assert, Alex Williamson, 2016/02/19
- [Qemu-devel] [PULL 02/14] vfio: make the 4 bytes aligned for capability size, Alex Williamson, 2016/02/19
- [Qemu-devel] [PULL 03/14] aer: impove pcie_aer_init to support vfio device, Alex Williamson, 2016/02/19
- [Qemu-devel] [PULL 04/14] pcie_aer: expose pcie_aer_msg() interface, Alex Williamson, 2016/02/19
- [Qemu-devel] [PULL 05/14] vfio/pci: replace 1 with PCI_CAP_LIST_NEXT to make code self-explain, Alex Williamson, 2016/02/19
- [Qemu-devel] [PULL 06/14] hw/vfio/platform: amd-xgbe device,
Alex Williamson <=
- [Qemu-devel] [PULL 07/14] device_tree: introduce load_device_tree_from_sysfs, Alex Williamson, 2016/02/19
- [Qemu-devel] [PULL 08/14] device_tree: introduce qemu_fdt_node_path, Alex Williamson, 2016/02/19
- [Qemu-devel] [PULL 09/14] device_tree: qemu_fdt_getprop converted to use the error API, Alex Williamson, 2016/02/19
- [Qemu-devel] [PULL 10/14] device_tree: qemu_fdt_getprop_cell converted to use the error API, Alex Williamson, 2016/02/19
- [Qemu-devel] [PULL 13/14] hw/arm/sysbus-fdt: remove qemu_fdt_setprop returned value check, Alex Williamson, 2016/02/19
- [Qemu-devel] [PULL 14/14] vfio/pci: use PCI_MSIX_FLAGS on retrieving the MSIX entries, Alex Williamson, 2016/02/19
- Re: [Qemu-devel] [PULL 00/14] VFIO updates 2016-02-19, Alex Williamson, 2016/02/19
- [Qemu-devel] [PULL 12/14] hw/arm/sysbus-fdt: enable amd-xgbe dynamic instantiation, Alex Williamson, 2016/02/19
- [Qemu-devel] [PULL 11/14] hw/arm/sysbus-fdt: helpers for clock node generation, Alex Williamson, 2016/02/19
- Re: [Qemu-devel] [PULL 00/14] VFIO updates 2016-02-19, Peter Maydell, 2016/02/19