All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/2] VFIO-Platform support for Qualcomm Technologies, Inc HiDMA
@ 2016-01-29 23:00 Shanker Donthineni
  2016-01-29 23:00 ` [Qemu-devel] [PATCH 1/2] hw/arm/sysbus-fdt: rename xgmac platform fdt node creation function Shanker Donthineni
  2016-01-29 23:00 ` [Qemu-devel] [PATCH 2/2] hw/vfio/platform: Add Qualcomm Technologies, Inc HiDMA device support Shanker Donthineni
  0 siblings, 2 replies; 6+ messages in thread
From: Shanker Donthineni @ 2016-01-29 23:00 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Christopher Covington, Vikram Sethi, Eric Auger,
	Kaya Sinan, Alex Williamson, Shanker Donthineni

This patch series enables assigning Qualcomm Technolgies, Inc HiDMA 
platform device to guest virtual machines using the VFIO-Platform
framework.

Since the existing Calxeda XGMAC function to create device-tree node
is fairly generic, the first patch renames the function to allow
reuse by other platform drivers like HiDMA driver.

Kernel patches for HiDMA driver, including VFIO-reset support are here:
    http://www.spinics.net/lists/arm-kernel/msg478402.html

Vikram Sethi (2):
  hw/arm/sysbus-fdt: rename xgmac platform fdt node creation function
  hw/vfio/platform: Add Qualcomm Technologies, Inc HiDMA device support

 hw/arm/sysbus-fdt.c               |  6 +++--
 hw/vfio/Makefile.objs             |  1 +
 hw/vfio/qcom-hidma.c              | 57 +++++++++++++++++++++++++++++++++++++++
 include/hw/vfio/vfio-qcom-hidma.h | 49 +++++++++++++++++++++++++++++++++
 4 files changed, 111 insertions(+), 2 deletions(-)
 create mode 100644 hw/vfio/qcom-hidma.c
 create mode 100644 include/hw/vfio/vfio-qcom-hidma.h

-- 
Qualcomm Technologies, Inc. on behalf
of the Qualcomm Innovation Center, Inc.  The Qualcomm Innovation Center, Inc. 
is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 1/2] hw/arm/sysbus-fdt: rename xgmac platform fdt node creation function
  2016-01-29 23:00 [Qemu-devel] [PATCH 0/2] VFIO-Platform support for Qualcomm Technologies, Inc HiDMA Shanker Donthineni
@ 2016-01-29 23:00 ` Shanker Donthineni
  2016-02-01 14:24   ` Eric Auger
  2016-01-29 23:00 ` [Qemu-devel] [PATCH 2/2] hw/vfio/platform: Add Qualcomm Technologies, Inc HiDMA device support Shanker Donthineni
  1 sibling, 1 reply; 6+ messages in thread
From: Shanker Donthineni @ 2016-01-29 23:00 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Christopher Covington, Vikram Sethi, Eric Auger,
	Kaya Sinan, Alex Williamson, Shanker Donthineni

From: Vikram Sethi <vikrams@codeaurora.org>

The function that creates a device tree node for the Calxeda XGMAC
platform device is fairly generic and can be reused for other
platform devices that require just reg, interrupts and dma-coherent
properties. Rename add_calxeda_midway_xgmac_fdt_node to
add_generic_platform_fdt_node to allow reuse.

Signed-off-by: Vikram Sethi <vikrams@codeaurora.org>
Signed-off-by: Shanker Donthineni <shankerd@codeaurora.org>
---
 hw/arm/sysbus-fdt.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/arm/sysbus-fdt.c b/hw/arm/sysbus-fdt.c
index 9d28797..6ee7af2 100644
--- a/hw/arm/sysbus-fdt.c
+++ b/hw/arm/sysbus-fdt.c
@@ -64,7 +64,7 @@ typedef struct NodeCreationPair {
  * Generates a simple node with following properties:
  * compatible string, regs, interrupts, dma-coherent
  */
-static int add_calxeda_midway_xgmac_fdt_node(SysBusDevice *sbdev, void *opaque)
+static int add_generic_platform_fdt_node(SysBusDevice *sbdev, void *opaque)
 {
     PlatformBusFDTData *data = opaque;
     PlatformBusDevice *pbus = data->pbus;
@@ -125,7 +125,7 @@ fail_reg:
 
 /* list of supported dynamic sysbus devices */
 static const NodeCreationPair add_fdt_node_functions[] = {
-    {TYPE_VFIO_CALXEDA_XGMAC, add_calxeda_midway_xgmac_fdt_node},
+    {TYPE_VFIO_CALXEDA_XGMAC, add_generic_platform_fdt_node},
     {"", NULL}, /* last element */
 };
 
-- 
Qualcomm Technologies, Inc. on behalf
of the Qualcomm Innovation Center, Inc.  The Qualcomm Innovation Center, Inc. 
is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 2/2] hw/vfio/platform: Add Qualcomm Technologies, Inc HiDMA device support
  2016-01-29 23:00 [Qemu-devel] [PATCH 0/2] VFIO-Platform support for Qualcomm Technologies, Inc HiDMA Shanker Donthineni
  2016-01-29 23:00 ` [Qemu-devel] [PATCH 1/2] hw/arm/sysbus-fdt: rename xgmac platform fdt node creation function Shanker Donthineni
@ 2016-01-29 23:00 ` Shanker Donthineni
  2016-02-01 14:37   ` Eric Auger
  1 sibling, 1 reply; 6+ messages in thread
From: Shanker Donthineni @ 2016-01-29 23:00 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Christopher Covington, Vikram Sethi, Eric Auger,
	Kaya Sinan, Alex Williamson, Shanker Donthineni

From: Vikram Sethi <vikrams@codeaurora.org>

This patch introduces a Qualcomm Technologies, Inc HiDMA
device and allows the instantiation of the vfio-qcom-hidma
device from the QEMU command line
(-device vfio-qcom-hidma,host="<device>").

A device tree node is created for the guest containing compat,
dma-coherent, reg and interrupts properties.

Signed-off-by: Vikram Sethi <vikrams@codeaurora.org>
Signed-off-by: Shanker Donthineni <shankerd@codeaurora.org>
---
 hw/arm/sysbus-fdt.c               |  2 ++
 hw/vfio/Makefile.objs             |  1 +
 hw/vfio/qcom-hidma.c              | 57 +++++++++++++++++++++++++++++++++++++++
 include/hw/vfio/vfio-qcom-hidma.h | 49 +++++++++++++++++++++++++++++++++
 4 files changed, 109 insertions(+)
 create mode 100644 hw/vfio/qcom-hidma.c
 create mode 100644 include/hw/vfio/vfio-qcom-hidma.h

diff --git a/hw/arm/sysbus-fdt.c b/hw/arm/sysbus-fdt.c
index 6ee7af2..4a7419e 100644
--- a/hw/arm/sysbus-fdt.c
+++ b/hw/arm/sysbus-fdt.c
@@ -28,6 +28,7 @@
 #include "sysemu/sysemu.h"
 #include "hw/vfio/vfio-platform.h"
 #include "hw/vfio/vfio-calxeda-xgmac.h"
+#include "hw/vfio/vfio-qcom-hidma.h"
 #include "hw/arm/fdt.h"
 
 /*
@@ -126,6 +127,7 @@ fail_reg:
 /* list of supported dynamic sysbus devices */
 static const NodeCreationPair add_fdt_node_functions[] = {
     {TYPE_VFIO_CALXEDA_XGMAC, add_generic_platform_fdt_node},
+    {TYPE_VFIO_QCOM_HIDMA, add_generic_platform_fdt_node},
     {"", NULL}, /* last element */
 };
 
diff --git a/hw/vfio/Makefile.objs b/hw/vfio/Makefile.objs
index d324863..9bcb093 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) += qcom-hidma.o
 endif
diff --git a/hw/vfio/qcom-hidma.c b/hw/vfio/qcom-hidma.c
new file mode 100644
index 0000000..04acbd8
--- /dev/null
+++ b/hw/vfio/qcom-hidma.c
@@ -0,0 +1,57 @@
+/*
+ * Qualcomm Technologies, Inc VFIO HiDMA platform device
+ *
+ * Copyright (c) 2016, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include "hw/vfio/vfio-qcom-hidma.h"
+
+static void qcom_hidma_realize(DeviceState *dev, Error **errp)
+{
+    VFIOPlatformDevice *vdev = VFIO_PLATFORM_DEVICE(dev);
+    VFIOQcomHidmaDeviceClass *k = VFIO_QCOM_HIDMA_DEVICE_GET_CLASS(dev);
+
+    vdev->compat = g_strdup("qcom,hidma");
+
+    k->parent_realize(dev, errp);
+}
+
+static const VMStateDescription vfio_platform_vmstate = {
+    .name = TYPE_VFIO_QCOM_HIDMA,
+    .unmigratable = 1,
+};
+
+static void vfio_qcom_hidma_class_init(ObjectClass *klass, void *data)
+{
+    DeviceClass *dc = DEVICE_CLASS(klass);
+    VFIOQcomHidmaDeviceClass *vcxc = VFIO_QCOM_HIDMA_DEVICE_CLASS(klass);
+
+    vcxc->parent_realize = dc->realize;
+    dc->realize = qcom_hidma_realize;
+    dc->desc = "VFIO QCOM HIDMA";
+}
+
+static const TypeInfo vfio_qcom_hidma_dev_info = {
+    .name = TYPE_VFIO_QCOM_HIDMA,
+    .parent = TYPE_VFIO_PLATFORM,
+    .instance_size = sizeof(VFIOQcomHidmaDevice),
+    .class_init = vfio_qcom_hidma_class_init,
+    .class_size = sizeof(VFIOQcomHidmaDeviceClass),
+};
+
+static void register_qcom_hidma_dev_type(void)
+{
+    type_register_static(&vfio_qcom_hidma_dev_info);
+}
+
+type_init(register_qcom_hidma_dev_type)
diff --git a/include/hw/vfio/vfio-qcom-hidma.h b/include/hw/vfio/vfio-qcom-hidma.h
new file mode 100644
index 0000000..a7cc8e6
--- /dev/null
+++ b/include/hw/vfio/vfio-qcom-hidma.h
@@ -0,0 +1,49 @@
+/*
+ * Qualcomm Technologies, Inc VFIO HiDMA platform device
+ *
+ * Copyright (c) 2016, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef HW_VFIO_VFIO_QCOM_HIDMA_H
+#define HW_VFIO_VFIO_QCOM_HIDMA_H
+
+#include "hw/vfio/vfio-platform.h"
+
+#define TYPE_VFIO_QCOM_HIDMA "vfio-qcom-hidma"
+
+/**
+ * This device exposes:
+ * - two MMIO regions corresponding to its register space
+ * - 1 IRQ
+ */
+typedef struct VFIOQcomHidmaDevice {
+    VFIOPlatformDevice vdev;
+} VFIOQcomHidmaDevice;
+
+typedef struct VFIOQcomHidmaDeviceClass {
+    /*< private >*/
+    VFIOPlatformDeviceClass parent_class;
+    /*< public >*/
+    DeviceRealize parent_realize;
+} VFIOQcomHidmaDeviceClass;
+
+#define VFIO_QCOM_HIDMA_DEVICE(obj) \
+     OBJECT_CHECK(VFIOQcomHidmaDevice, (obj), TYPE_VFIO_QCOM_HIDMA)
+#define VFIO_QCOM_HIDMA_DEVICE_CLASS(klass) \
+     OBJECT_CLASS_CHECK(VFIOQcomHidmaDeviceClass, (klass), \
+                        TYPE_VFIO_QCOM_HIDMA)
+#define VFIO_QCOM_HIDMA_DEVICE_GET_CLASS(obj) \
+     OBJECT_GET_CLASS(VFIOQcomHidmaDeviceClass, (obj), \
+                      TYPE_VFIO_QCOM_HIDMA)
+
+#endif
-- 
Qualcomm Technologies, Inc. on behalf
of the Qualcomm Innovation Center, Inc.  The Qualcomm Innovation Center, Inc. 
is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH 1/2] hw/arm/sysbus-fdt: rename xgmac platform fdt node creation function
  2016-01-29 23:00 ` [Qemu-devel] [PATCH 1/2] hw/arm/sysbus-fdt: rename xgmac platform fdt node creation function Shanker Donthineni
@ 2016-02-01 14:24   ` Eric Auger
  0 siblings, 0 replies; 6+ messages in thread
From: Eric Auger @ 2016-02-01 14:24 UTC (permalink / raw)
  To: Shanker Donthineni, qemu-devel
  Cc: Peter Maydell, Christopher Covington, Vikram Sethi,
	Alexander Graf, Kaya Sinan, Alex Williamson

Hi Vikram, Shanker,
On 01/30/2016 12:00 AM, Shanker Donthineni wrote:
> From: Vikram Sethi <vikrams@codeaurora.org>
> 
> The function that creates a device tree node for the Calxeda XGMAC
> platform device is fairly generic and can be reused for other
> platform devices that require just reg, interrupts and dma-coherent
> properties. Rename add_calxeda_midway_xgmac_fdt_node to
> add_generic_platform_fdt_node to allow reuse.
> 
> Signed-off-by: Vikram Sethi <vikrams@codeaurora.org>
> Signed-off-by: Shanker Donthineni <shankerd@codeaurora.org>
> ---
>  hw/arm/sysbus-fdt.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/arm/sysbus-fdt.c b/hw/arm/sysbus-fdt.c
> index 9d28797..6ee7af2 100644
> --- a/hw/arm/sysbus-fdt.c
> +++ b/hw/arm/sysbus-fdt.c
> @@ -64,7 +64,7 @@ typedef struct NodeCreationPair {
>   * Generates a simple node with following properties:
>   * compatible string, regs, interrupts, dma-coherent
>   */
> -static int add_calxeda_midway_xgmac_fdt_node(SysBusDevice *sbdev, void *opaque)
> +static int add_generic_platform_fdt_node(SysBusDevice *sbdev, void *opaque)
>  {
>      PlatformBusFDTData *data = opaque;
>      PlatformBusDevice *pbus = data->pbus;
> @@ -125,7 +125,7 @@ fail_reg:
>  
>  /* list of supported dynamic sysbus devices */
>  static const NodeCreationPair add_fdt_node_functions[] = {
> -    {TYPE_VFIO_CALXEDA_XGMAC, add_calxeda_midway_xgmac_fdt_node},
> +    {TYPE_VFIO_CALXEDA_XGMAC, add_generic_platform_fdt_node},
Introducing such a "generic" node creation function was discussed in the
past and Alex Graf (added in CC) warned against that. What is arguable
is that interrupts are defined here as level sensitive and you have the
dma-coherent property set. So where does genericity starts and where
does it end? But Maybe Alex changed his mind ;-)

The type of IRQ can be retrieved generically by looking at intp->flags &
VFIO_IRQ_INFO_AUTOMASKED as I did in add_amd_xgbe_fdt_node ([PATCH v6
7/8] hw/arm/sysbus-fdt: enable amd-xgbe dynamic instantiation)

The dma-coherent property can now be retrieved from host device-tree
using the helpers introduced in the above series. However if you use
ACPI on host there is no such helper yet.

Maybe another approach to factorize the code is to introduce a helper
routine that adds the reg and interrupts properties to the node, using
the above detection of IRQ type and you keep a differentiated function
for HiDma, adding the dma-coherent capability.

Hope it helps

Best Regards

Eric

>      {"", NULL}, /* last element */
>  };
>  
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH 2/2] hw/vfio/platform: Add Qualcomm Technologies, Inc HiDMA device support
  2016-01-29 23:00 ` [Qemu-devel] [PATCH 2/2] hw/vfio/platform: Add Qualcomm Technologies, Inc HiDMA device support Shanker Donthineni
@ 2016-02-01 14:37   ` Eric Auger
  2016-02-02  2:31     ` Shanker Donthineni
  0 siblings, 1 reply; 6+ messages in thread
From: Eric Auger @ 2016-02-01 14:37 UTC (permalink / raw)
  To: Shanker Donthineni, qemu-devel
  Cc: Kaya Sinan, Peter Maydell, Christopher Covington,
	Alex Williamson, Vikram Sethi

Hi Shanker, Vikram,
On 01/30/2016 12:00 AM, Shanker Donthineni wrote:
> From: Vikram Sethi <vikrams@codeaurora.org>
> 
> This patch introduces a Qualcomm Technologies, Inc HiDMA
> device and allows the instantiation of the vfio-qcom-hidma
> device from the QEMU command line
> (-device vfio-qcom-hidma,host="<device>").
> 
> A device tree node is created for the guest containing compat,
> dma-coherent, reg and interrupts properties.
> 
> Signed-off-by: Vikram Sethi <vikrams@codeaurora.org>
> Signed-off-by: Shanker Donthineni <shankerd@codeaurora.org>
> ---
>  hw/arm/sysbus-fdt.c               |  2 ++
>  hw/vfio/Makefile.objs             |  1 +
>  hw/vfio/qcom-hidma.c              | 57 +++++++++++++++++++++++++++++++++++++++
>  include/hw/vfio/vfio-qcom-hidma.h | 49 +++++++++++++++++++++++++++++++++
>  4 files changed, 109 insertions(+)
>  create mode 100644 hw/vfio/qcom-hidma.c
>  create mode 100644 include/hw/vfio/vfio-qcom-hidma.h
> 
> diff --git a/hw/arm/sysbus-fdt.c b/hw/arm/sysbus-fdt.c
> index 6ee7af2..4a7419e 100644
> --- a/hw/arm/sysbus-fdt.c
> +++ b/hw/arm/sysbus-fdt.c
> @@ -28,6 +28,7 @@
>  #include "sysemu/sysemu.h"
>  #include "hw/vfio/vfio-platform.h"
>  #include "hw/vfio/vfio-calxeda-xgmac.h"
> +#include "hw/vfio/vfio-qcom-hidma.h"
>  #include "hw/arm/fdt.h"
>  
>  /*
> @@ -126,6 +127,7 @@ fail_reg:
>  /* list of supported dynamic sysbus devices */
>  static const NodeCreationPair add_fdt_node_functions[] = {
>      {TYPE_VFIO_CALXEDA_XGMAC, add_generic_platform_fdt_node},
> +    {TYPE_VFIO_QCOM_HIDMA, add_generic_platform_fdt_node},
>      {"", NULL}, /* last element */
>  };
>  
> diff --git a/hw/vfio/Makefile.objs b/hw/vfio/Makefile.objs
> index d324863..9bcb093 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) += qcom-hidma.o
>  endif
> diff --git a/hw/vfio/qcom-hidma.c b/hw/vfio/qcom-hidma.c
> new file mode 100644
> index 0000000..04acbd8
> --- /dev/null
> +++ b/hw/vfio/qcom-hidma.c
> @@ -0,0 +1,57 @@
> +/*
> + * Qualcomm Technologies, Inc VFIO HiDMA platform device
> + *
> + * Copyright (c) 2016, The Linux Foundation. All rights reserved.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 and
> + * only version 2 as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + */
> +
> +#include "hw/vfio/vfio-qcom-hidma.h"
> +
> +static void qcom_hidma_realize(DeviceState *dev, Error **errp)
> +{
> +    VFIOPlatformDevice *vdev = VFIO_PLATFORM_DEVICE(dev);
> +    VFIOQcomHidmaDeviceClass *k = VFIO_QCOM_HIDMA_DEVICE_GET_CLASS(dev);
> +
> +    vdev->compat = g_strdup("qcom,hidma");
> +
> +    k->parent_realize(dev, errp);
> +}
> +
> +static const VMStateDescription vfio_platform_vmstate = {
> +    .name = TYPE_VFIO_QCOM_HIDMA,
> +    .unmigratable = 1,
> +};
> +
> +static void vfio_qcom_hidma_class_init(ObjectClass *klass, void *data)
> +{
> +    DeviceClass *dc = DEVICE_CLASS(klass);
> +    VFIOQcomHidmaDeviceClass *vcxc = VFIO_QCOM_HIDMA_DEVICE_CLASS(klass);
> +
> +    vcxc->parent_realize = dc->realize;
> +    dc->realize = qcom_hidma_realize;
> +    dc->desc = "VFIO QCOM HIDMA";
If I am not wrong you miss the dc->vmsd = &vfio_platform_vmstate
(VMStateDescription attachement)

This will cause an error with CLANG - I got that one already, reported
by Peter ;-) -

error: unused variable
'vfio_platform_vmstate' [-Werror,-Wunused-const-variable]
static const VMStateDescription vfio_platform_vmstate = {

> +}
> +
> +static const TypeInfo vfio_qcom_hidma_dev_info = {
> +    .name = TYPE_VFIO_QCOM_HIDMA,
> +    .parent = TYPE_VFIO_PLATFORM,
> +    .instance_size = sizeof(VFIOQcomHidmaDevice),
> +    .class_init = vfio_qcom_hidma_class_init,
> +    .class_size = sizeof(VFIOQcomHidmaDeviceClass),
> +};
> +
> +static void register_qcom_hidma_dev_type(void)
> +{
> +    type_register_static(&vfio_qcom_hidma_dev_info);
> +}
> +
> +type_init(register_qcom_hidma_dev_type)
> diff --git a/include/hw/vfio/vfio-qcom-hidma.h b/include/hw/vfio/vfio-qcom-hidma.h
> new file mode 100644
> index 0000000..a7cc8e6
> --- /dev/null
> +++ b/include/hw/vfio/vfio-qcom-hidma.h
> @@ -0,0 +1,49 @@
> +/*
> + * Qualcomm Technologies, Inc VFIO HiDMA platform device
> + *
> + * Copyright (c) 2016, The Linux Foundation. All rights reserved.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 and
> + * only version 2 as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + */
> +
> +#ifndef HW_VFIO_VFIO_QCOM_HIDMA_H
> +#define HW_VFIO_VFIO_QCOM_HIDMA_H
> +
> +#include "hw/vfio/vfio-platform.h"
> +
> +#define TYPE_VFIO_QCOM_HIDMA "vfio-qcom-hidma"
> +
> +/**
> + * This device exposes:
> + * - two MMIO regions corresponding to its register space
> + * - 1 IRQ
level sensitive?

Best Regards

Eric
> + */
> +typedef struct VFIOQcomHidmaDevice {
> +    VFIOPlatformDevice vdev;
> +} VFIOQcomHidmaDevice;
> +
> +typedef struct VFIOQcomHidmaDeviceClass {
> +    /*< private >*/
> +    VFIOPlatformDeviceClass parent_class;
> +    /*< public >*/
> +    DeviceRealize parent_realize;
> +} VFIOQcomHidmaDeviceClass;
> +
> +#define VFIO_QCOM_HIDMA_DEVICE(obj) \
> +     OBJECT_CHECK(VFIOQcomHidmaDevice, (obj), TYPE_VFIO_QCOM_HIDMA)
> +#define VFIO_QCOM_HIDMA_DEVICE_CLASS(klass) \
> +     OBJECT_CLASS_CHECK(VFIOQcomHidmaDeviceClass, (klass), \
> +                        TYPE_VFIO_QCOM_HIDMA)
> +#define VFIO_QCOM_HIDMA_DEVICE_GET_CLASS(obj) \
> +     OBJECT_GET_CLASS(VFIOQcomHidmaDeviceClass, (obj), \
> +                      TYPE_VFIO_QCOM_HIDMA)
> +
> +#endif
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH 2/2] hw/vfio/platform: Add Qualcomm Technologies, Inc HiDMA device support
  2016-02-01 14:37   ` Eric Auger
@ 2016-02-02  2:31     ` Shanker Donthineni
  0 siblings, 0 replies; 6+ messages in thread
From: Shanker Donthineni @ 2016-02-02  2:31 UTC (permalink / raw)
  To: Eric Auger, qemu-devel
  Cc: Kaya Sinan, Peter Maydell, Christopher Covington,
	Alex Williamson, Vikram Sethi

Hi Eric,

On 02/01/2016 08:37 AM, Eric Auger wrote:
> Hi Shanker, Vikram,
> On 01/30/2016 12:00 AM, Shanker Donthineni wrote:
>> From: Vikram Sethi <vikrams@codeaurora.org>
>>
>> This patch introduces a Qualcomm Technologies, Inc HiDMA
>> device and allows the instantiation of the vfio-qcom-hidma
>> device from the QEMU command line
>> (-device vfio-qcom-hidma,host="<device>").
>>
>> A device tree node is created for the guest containing compat,
>> dma-coherent, reg and interrupts properties.
>>
>> Signed-off-by: Vikram Sethi <vikrams@codeaurora.org>
>> Signed-off-by: Shanker Donthineni <shankerd@codeaurora.org>
>> ---
>>   hw/arm/sysbus-fdt.c               |  2 ++
>>   hw/vfio/Makefile.objs             |  1 +
>>   hw/vfio/qcom-hidma.c              | 57 +++++++++++++++++++++++++++++++++++++++
>>   include/hw/vfio/vfio-qcom-hidma.h | 49 +++++++++++++++++++++++++++++++++
>>   4 files changed, 109 insertions(+)
>>   create mode 100644 hw/vfio/qcom-hidma.c
>>   create mode 100644 include/hw/vfio/vfio-qcom-hidma.h
>>
>> diff --git a/hw/arm/sysbus-fdt.c b/hw/arm/sysbus-fdt.c
>> index 6ee7af2..4a7419e 100644
>> --- a/hw/arm/sysbus-fdt.c
>> +++ b/hw/arm/sysbus-fdt.c
>> @@ -28,6 +28,7 @@
>>   #include "sysemu/sysemu.h"
>>   #include "hw/vfio/vfio-platform.h"
>>   #include "hw/vfio/vfio-calxeda-xgmac.h"
>> +#include "hw/vfio/vfio-qcom-hidma.h"
>>   #include "hw/arm/fdt.h"
>>   
>>   /*
>> @@ -126,6 +127,7 @@ fail_reg:
>>   /* list of supported dynamic sysbus devices */
>>   static const NodeCreationPair add_fdt_node_functions[] = {
>>       {TYPE_VFIO_CALXEDA_XGMAC, add_generic_platform_fdt_node},
>> +    {TYPE_VFIO_QCOM_HIDMA, add_generic_platform_fdt_node},
>>       {"", NULL}, /* last element */
>>   };
>>   
>> diff --git a/hw/vfio/Makefile.objs b/hw/vfio/Makefile.objs
>> index d324863..9bcb093 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) += qcom-hidma.o
>>   endif
>> diff --git a/hw/vfio/qcom-hidma.c b/hw/vfio/qcom-hidma.c
>> new file mode 100644
>> index 0000000..04acbd8
>> --- /dev/null
>> +++ b/hw/vfio/qcom-hidma.c
>> @@ -0,0 +1,57 @@
>> +/*
>> + * Qualcomm Technologies, Inc VFIO HiDMA platform device
>> + *
>> + * Copyright (c) 2016, The Linux Foundation. All rights reserved.
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 and
>> + * only version 2 as published by the Free Software Foundation.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + * GNU General Public License for more details.
>> + *
>> + */
>> +
>> +#include "hw/vfio/vfio-qcom-hidma.h"
>> +
>> +static void qcom_hidma_realize(DeviceState *dev, Error **errp)
>> +{
>> +    VFIOPlatformDevice *vdev = VFIO_PLATFORM_DEVICE(dev);
>> +    VFIOQcomHidmaDeviceClass *k = VFIO_QCOM_HIDMA_DEVICE_GET_CLASS(dev);
>> +
>> +    vdev->compat = g_strdup("qcom,hidma");
>> +
>> +    k->parent_realize(dev, errp);
>> +}
>> +
>> +static const VMStateDescription vfio_platform_vmstate = {
>> +    .name = TYPE_VFIO_QCOM_HIDMA,
>> +    .unmigratable = 1,
>> +};
>> +
>> +static void vfio_qcom_hidma_class_init(ObjectClass *klass, void *data)
>> +{
>> +    DeviceClass *dc = DEVICE_CLASS(klass);
>> +    VFIOQcomHidmaDeviceClass *vcxc = VFIO_QCOM_HIDMA_DEVICE_CLASS(klass);
>> +
>> +    vcxc->parent_realize = dc->realize;
>> +    dc->realize = qcom_hidma_realize;
>> +    dc->desc = "VFIO QCOM HIDMA";
> If I am not wrong you miss the dc->vmsd = &vfio_platform_vmstate
> (VMStateDescription attachement)
>
> This will cause an error with CLANG - I got that one already, reported
> by Peter ;-) -
>
> error: unused variable
> 'vfio_platform_vmstate' [-Werror,-Wunused-const-variable]
> static const VMStateDescription vfio_platform_vmstate = {

Thanks for your finding, I will fix.

>> +}
>> +
>> +static const TypeInfo vfio_qcom_hidma_dev_info = {
>> +    .name = TYPE_VFIO_QCOM_HIDMA,
>> +    .parent = TYPE_VFIO_PLATFORM,
>> +    .instance_size = sizeof(VFIOQcomHidmaDevice),
>> +    .class_init = vfio_qcom_hidma_class_init,
>> +    .class_size = sizeof(VFIOQcomHidmaDeviceClass),
>> +};
>> +
>> +static void register_qcom_hidma_dev_type(void)
>> +{
>> +    type_register_static(&vfio_qcom_hidma_dev_info);
>> +}
>> +
>> +type_init(register_qcom_hidma_dev_type)
>> diff --git a/include/hw/vfio/vfio-qcom-hidma.h b/include/hw/vfio/vfio-qcom-hidma.h
>> new file mode 100644
>> index 0000000..a7cc8e6
>> --- /dev/null
>> +++ b/include/hw/vfio/vfio-qcom-hidma.h
>> @@ -0,0 +1,49 @@
>> +/*
>> + * Qualcomm Technologies, Inc VFIO HiDMA platform device
>> + *
>> + * Copyright (c) 2016, The Linux Foundation. All rights reserved.
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 and
>> + * only version 2 as published by the Free Software Foundation.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + * GNU General Public License for more details.
>> + *
>> + */
>> +
>> +#ifndef HW_VFIO_VFIO_QCOM_HIDMA_H
>> +#define HW_VFIO_VFIO_QCOM_HIDMA_H
>> +
>> +#include "hw/vfio/vfio-platform.h"
>> +
>> +#define TYPE_VFIO_QCOM_HIDMA "vfio-qcom-hidma"
>> +
>> +/**
>> + * This device exposes:
>> + * - two MMIO regions corresponding to its register space
>> + * - 1 IRQ
> level sensitive?

Yes, the current HiDMA driver that we are attempting to upstream uses 
level sensitive interrupts.

> Best Regards
>
> Eric
>> + */
>> +typedef struct VFIOQcomHidmaDevice {
>> +    VFIOPlatformDevice vdev;
>> +} VFIOQcomHidmaDevice;
>> +
>> +typedef struct VFIOQcomHidmaDeviceClass {
>> +    /*< private >*/
>> +    VFIOPlatformDeviceClass parent_class;
>> +    /*< public >*/
>> +    DeviceRealize parent_realize;
>> +} VFIOQcomHidmaDeviceClass;
>> +
>> +#define VFIO_QCOM_HIDMA_DEVICE(obj) \
>> +     OBJECT_CHECK(VFIOQcomHidmaDevice, (obj), TYPE_VFIO_QCOM_HIDMA)
>> +#define VFIO_QCOM_HIDMA_DEVICE_CLASS(klass) \
>> +     OBJECT_CLASS_CHECK(VFIOQcomHidmaDeviceClass, (klass), \
>> +                        TYPE_VFIO_QCOM_HIDMA)
>> +#define VFIO_QCOM_HIDMA_DEVICE_GET_CLASS(obj) \
>> +     OBJECT_GET_CLASS(VFIOQcomHidmaDeviceClass, (obj), \
>> +                      TYPE_VFIO_QCOM_HIDMA)
>> +
>> +#endif
>>
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-02-02  2:31 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-29 23:00 [Qemu-devel] [PATCH 0/2] VFIO-Platform support for Qualcomm Technologies, Inc HiDMA Shanker Donthineni
2016-01-29 23:00 ` [Qemu-devel] [PATCH 1/2] hw/arm/sysbus-fdt: rename xgmac platform fdt node creation function Shanker Donthineni
2016-02-01 14:24   ` Eric Auger
2016-01-29 23:00 ` [Qemu-devel] [PATCH 2/2] hw/vfio/platform: Add Qualcomm Technologies, Inc HiDMA device support Shanker Donthineni
2016-02-01 14:37   ` Eric Auger
2016-02-02  2:31     ` Shanker Donthineni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.