From: Eric Auger <eric.auger@linaro.org>
To: Baptiste Reynal <b.reynal@virtualopensystems.com>,
kvmarm@lists.cs.columbia.edu, qemu-devel@nongnu.org
Cc: a.motakis@virtualopensystems.com,
Alex Williamson <alex.williamson@redhat.com>,
tech@virtualopensystems.com,
Peter Maydell <peter.maydell@linaro.org>
Subject: Re: [Qemu-devel] [RFC PATCH 2/3] hw/vfio: amba device support
Date: Wed, 17 Dec 2014 14:57:53 +0100 [thread overview]
Message-ID: <54918BE1.80804@linaro.org> (raw)
In-Reply-To: <1418810981-9193-3-git-send-email-b.reynal@virtualopensystems.com>
On 12/17/2014 11:09 AM, Baptiste Reynal wrote:
> Add VFIO_DEVICE_TYPE_AMBA.
> Differentiate amba and platform devices according to compatible string.
> If the device is amba, clocks description is added in the fd.
>
> Signed-off-by: Baptiste Reynal <b.reynal@virtualopensystems.com>
> ---
> hw/arm/sysbus-fdt.c | 11 +++++++++++
> hw/vfio/platform.c | 15 ++++++++++++---
> include/hw/vfio/vfio-common.h | 1 +
> 3 files changed, 24 insertions(+), 3 deletions(-)
>
> diff --git a/hw/arm/sysbus-fdt.c b/hw/arm/sysbus-fdt.c
> index 125ba37..41b4c87 100644
> --- a/hw/arm/sysbus-fdt.c
> +++ b/hw/arm/sysbus-fdt.c
> @@ -62,6 +62,8 @@ typedef struct NodeCreationPair {
> *
> * Generates a very simple node with following properties:
> * compatible string, regs, interrupts
> + * And the following properties if it is on an AMBA bus :
> + * clocks, clock-names
> */
> static int add_generic_fdt_node(SysBusDevice *sbdev, void *opaque)
> {
> @@ -103,6 +105,15 @@ static int add_generic_fdt_node(SysBusDevice *sbdev, void *opaque)
> qemu_fdt_setprop(fdt, nodename, "compatible",
> compat, compat_str_len);
>
> + if (vbasedev->type == VFIO_DEVICE_TYPE_AMBA) {
> + /* Setup clocks for AMBA device */
> + qemu_fdt_setprop_cells(fdt, nodename, "clocks",
> + qemu_fdt_getprop_cell(fdt, "/apb-pclk", "phandle"));
Shouldn't you test if this clock node exists in the guest device tree?
> + char clock_names[] = "apb_pclk";
> + qemu_fdt_setprop(fdt, nodename, "clock-names", clock_names,
> + sizeof(clock_names));
> + }
> +
> reg_attr = g_new(uint64_t, vbasedev->num_regions*4);
>
> for (i = 0; i < vbasedev->num_regions; i++) {
> diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c
> index 39eef08..0a96178 100644
> --- a/hw/vfio/platform.c
> +++ b/hw/vfio/platform.c
> @@ -563,8 +563,13 @@ static int vfio_base_device_init(VFIODevice *vbasedev)
> }
>
> /* Check that the host device exists */
> - snprintf(path, sizeof(path), "/sys/bus/platform/devices/%s/",
> - vbasedev->name);
> + if (vbasedev->type == VFIO_DEVICE_TYPE_AMBA) {
> + snprintf(path, sizeof(path), "/sys/bus/amba/devices/%s/",
> + vbasedev->name);
> + } else {
> + snprintf(path, sizeof(path), "/sys/bus/platform/devices/%s/",
> + vbasedev->name);
> + }
>
> if (stat(path, &st) < 0) {
> error_report("vfio: error: no such host device: %s", path);
> @@ -661,7 +666,11 @@ static void vfio_platform_realize(DeviceState *dev, Error **errp)
> VFIODevice *vbasedev = &vdev->vbasedev;
> int i, ret;
>
> - vbasedev->type = VFIO_DEVICE_TYPE_PLATFORM;
> + if (strstr(vdev->compat, "arm,primecell")) {
> + vbasedev->type = VFIO_DEVICE_TYPE_AMBA;
> + } else {
> + vbasedev->type = VFIO_DEVICE_TYPE_PLATFORM;
> + }
> vbasedev->ops = &vfio_platform_ops;
The plan is to use VFIO_DEVICE_GET_INFO instead. Alex recently requested
we test the flags. We need a header sync for that.
Best Regards
Eric
>
> #ifdef CONFIG_KVM
> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
> index 58fd786..2f1b09c 100644
> --- a/include/hw/vfio/vfio-common.h
> +++ b/include/hw/vfio/vfio-common.h
> @@ -49,6 +49,7 @@ extern int vfio_kvm_device_fd;
> enum {
> VFIO_DEVICE_TYPE_PCI = 0,
> VFIO_DEVICE_TYPE_PLATFORM = 1,
> + VFIO_DEVICE_TYPE_AMBA = 2,
> };
>
> typedef struct VFIORegion {
>
next prev parent reply other threads:[~2014-12-17 13:59 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-17 10:09 [Qemu-devel] [RFC PATCH 0/3] VFIO support for AMBA devices Baptiste Reynal
2014-12-17 10:09 ` [Qemu-devel] [RFC PATCH 1/3] hw/vfio/sysbus-fdt: generic add_generic_fdt_node Baptiste Reynal
2014-12-17 13:32 ` Eric Auger
2014-12-17 14:55 ` Baptiste Reynal
2014-12-17 17:15 ` Eric Auger
2014-12-17 10:09 ` [Qemu-devel] [RFC PATCH 2/3] hw/vfio: amba device support Baptiste Reynal
2014-12-17 13:57 ` Eric Auger [this message]
2014-12-17 10:09 ` [Qemu-devel] [RFC PATCH 3/3] hw/vfio: add pl330 " Baptiste Reynal
2014-12-17 13:04 ` [Qemu-devel] [RFC PATCH 0/3] VFIO support for AMBA devices Eric Auger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54918BE1.80804@linaro.org \
--to=eric.auger@linaro.org \
--cc=a.motakis@virtualopensystems.com \
--cc=alex.williamson@redhat.com \
--cc=b.reynal@virtualopensystems.com \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=tech@virtualopensystems.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.