All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Auger <eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Alex Williamson
	<alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	Antonios Motakis
	<a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
Cc: VFIO DRIVER <kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	marc.zyngier-5wv7dgnIgG8@public.gmane.org,
	ABI/API <linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	will.deacon-5wv7dgnIgG8@public.gmane.org,
	open list <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	tech-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org,
	kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org,
	christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org
Subject: Re: [PATCH v8 02/18] vfio: platform: probe to devices on the platform bus
Date: Tue, 21 Oct 2014 18:37:46 +0200	[thread overview]
Message-ID: <54468BDA.6050606@linaro.org> (raw)
In-Reply-To: <1413908269.4202.135.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>

On 10/21/2014 06:17 PM, Alex Williamson wrote:
> On Mon, 2014-10-13 at 15:10 +0200, Antonios Motakis wrote:
>> Driver to bind to Linux platform devices, and callbacks to discover their
>> resources to be used by the main VFIO PLATFORM code.
>>
>> Signed-off-by: Antonios Motakis <a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
>> ---
>>  drivers/vfio/platform/vfio_platform.c | 107 ++++++++++++++++++++++++++++++++++
>>  include/uapi/linux/vfio.h             |   1 +
>>  2 files changed, 108 insertions(+)
>>  create mode 100644 drivers/vfio/platform/vfio_platform.c
>>
>> diff --git a/drivers/vfio/platform/vfio_platform.c b/drivers/vfio/platform/vfio_platform.c
>> new file mode 100644
>> index 0000000..baeb7da
>> --- /dev/null
>> +++ b/drivers/vfio/platform/vfio_platform.c
>> @@ -0,0 +1,107 @@
>> +/*
>> + * Copyright (C) 2013 - Virtual Open Systems
>> + * Author: Antonios Motakis <a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License, 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 <linux/device.h>
>> +#include <linux/eventfd.h>
>> +#include <linux/interrupt.h>
>> +#include <linux/iommu.h>
>> +#include <linux/module.h>
>> +#include <linux/mutex.h>
>> +#include <linux/notifier.h>
>> +#include <linux/pm_runtime.h>
>> +#include <linux/slab.h>
>> +#include <linux/types.h>
>> +#include <linux/uaccess.h>
>> +#include <linux/vfio.h>
>> +#include <linux/io.h>
>> +#include <linux/platform_device.h>
>> +#include <linux/irq.h>
>> +
>> +#include "vfio_platform_private.h"
>> +
>> +#define DRIVER_VERSION  "0.8"
>> +#define DRIVER_AUTHOR   "Antonios Motakis <a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>"
>> +#define DRIVER_DESC     "VFIO for platform devices - User Level meta-driver"
>> +
>> +/* probing devices from the linux platform bus */
>> +
>> +static struct resource *get_platform_resource(struct vfio_platform_device *vdev,
>> +						int num)
>> +{
>> +	struct platform_device *dev = (struct platform_device *) vdev->opaque;
>> +	int i;
>> +
>> +	for (i = 0; i < dev->num_resources; i++) {
>> +		struct resource *r = &dev->resource[i];
>> +
>> +		if (resource_type(r) & (IORESOURCE_MEM|IORESOURCE_IO)) {
>> +			num--;
>> +
>> +			if (!num)
>> +				return r;
> 
> Has this been tested?  What happens when we call this with num = 0?
Yep. I confirm I enter that case with my xgmac where the IORESOURCE_MEM
is the 1st resource. I Just ended to the same cause ;-)

Best Regards

Eric
> 
>> +		}
>> +	}
>> +	return NULL;
>> +}
>> +
>> +static int get_platform_irq(struct vfio_platform_device *vdev, int i)
>> +{
>> +	struct platform_device *pdev = (struct platform_device *) vdev->opaque;
>> +
>> +	return platform_get_irq(pdev, i);
>> +}
>> +
>> +
>> +static int vfio_platform_probe(struct platform_device *pdev)
>> +{
>> +	struct vfio_platform_device *vdev;
>> +	int ret;
>> +
>> +	vdev = kzalloc(sizeof(*vdev), GFP_KERNEL);
>> +	if (!vdev)
>> +		return -ENOMEM;
>> +
>> +	vdev->opaque = (void *) pdev;
>> +	vdev->name = pdev->name;
>> +	vdev->flags = VFIO_DEVICE_FLAGS_PLATFORM;
>> +	vdev->get_resource = get_platform_resource;
>> +	vdev->get_irq = get_platform_irq;
>> +
>> +	ret = vfio_platform_probe_common(vdev, &pdev->dev);
>> +	if (ret)
>> +		kfree(vdev);
>> +
>> +	return ret;
>> +}
>> +
>> +static int vfio_platform_remove(struct platform_device *pdev)
>> +{
>> +	return vfio_platform_remove_common(&pdev->dev);
>> +}
>> +
>> +static struct platform_driver vfio_platform_driver = {
>> +	.probe		= vfio_platform_probe,
>> +	.remove		= vfio_platform_remove,
>> +	.driver	= {
>> +		.name	= "vfio-platform",
>> +		.owner	= THIS_MODULE,
>> +	},
>> +};
>> +
>> +module_platform_driver(vfio_platform_driver);
>> +
>> +MODULE_VERSION(DRIVER_VERSION);
>> +MODULE_LICENSE("GPL v2");
>> +MODULE_AUTHOR(DRIVER_AUTHOR);
>> +MODULE_DESCRIPTION(DRIVER_DESC);
>> diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h
>> index 111b5e8..aca6d3e 100644
>> --- a/include/uapi/linux/vfio.h
>> +++ b/include/uapi/linux/vfio.h
>> @@ -158,6 +158,7 @@ struct vfio_device_info {
>>  	__u32	flags;
>>  #define VFIO_DEVICE_FLAGS_RESET	(1 << 0)	/* Device supports reset */
>>  #define VFIO_DEVICE_FLAGS_PCI	(1 << 1)	/* vfio-pci device */
>> +#define VFIO_DEVICE_FLAGS_PLATFORM (1 << 2)	/* vfio-platform device */
>>  	__u32	num_regions;	/* Max region index + 1 */
>>  	__u32	num_irqs;	/* Max IRQ index + 1 */
>>  };
> 
> 
> 

  parent reply	other threads:[~2014-10-21 16:37 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-13 13:10 [PATCH v8 00/18] VFIO support for platform and AMBA devices on ARM Antonios Motakis
     [not found] ` <1413205825-6370-1-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-13 13:10   ` [PATCH v8 01/18] vfio/platform: initial skeleton of VFIO support for platform devices Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 02/18] vfio: platform: probe to devices on the platform bus Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
     [not found]     ` <1413205825-6370-3-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-21 16:17       ` Alex Williamson
2014-10-21 16:17         ` Alex Williamson
     [not found]         ` <1413908269.4202.135.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-10-21 16:37           ` Eric Auger [this message]
     [not found]             ` <54468BDA.6050606-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-10-22 13:53               ` Antonios Motakis
2014-10-22 13:53                 ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 03/18] vfio: platform: add the VFIO PLATFORM module to Kconfig Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 04/18] vfio: amba: VFIO support for AMBA devices Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 05/18] vfio: amba: add the VFIO for AMBA devices module to Kconfig Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 06/18] vfio/platform: return info for bound device Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 07/18] vfio/platform: return info for device memory mapped IO regions Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
     [not found]     ` <1413205825-6370-8-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-21 16:34       ` Alex Williamson
2014-10-21 16:34         ` Alex Williamson
     [not found]         ` <1413909282.4202.141.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-10-21 18:18           ` Bharat.Bhushan-KZfg59tc24xl57MIdRCFDg
2014-10-21 18:18             ` Bharat.Bhushan
     [not found]             ` <e1fd19d05dd04b9ab5d65a495b5fabad-GeMU99Gfrru4FpqPz9FowuO6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2014-10-21 18:57               ` Alex Williamson
2014-10-21 18:57                 ` Alex Williamson
2014-10-22 13:54           ` Antonios Motakis
2014-10-22 13:54             ` Antonios Motakis
2014-10-22 16:46             ` Alex Williamson
2014-10-22 16:46               ` Alex Williamson
     [not found]               ` <1413996389.4202.218.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-10-22 17:53                 ` Antonios Motakis
2014-10-22 17:53                   ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 08/18] vfio/platform: read and write support for the device fd Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 09/18] vfio/platform: support MMAP of MMIO regions Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
     [not found]     ` <1413205825-6370-10-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-21 16:51       ` Alex Williamson
2014-10-21 16:51         ` Alex Williamson
     [not found]         ` <1413910307.4202.148.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-10-22 13:55           ` Antonios Motakis
2014-10-22 13:55             ` Antonios Motakis
     [not found]             ` <CAG8rG2yUmpzzfEYVqA0H+5LcBcLjFY=j43t420Sa7FLnfmG8Ug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-10-22 16:56               ` Alex Williamson
2014-10-22 16:56                 ` Alex Williamson
2014-10-13 13:10   ` [PATCH v8 10/18] vfio/platform: return IRQ info Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 11/18] vfio/platform: initial interrupts support code Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 12/18] vfio/platform: trigger an interrupt via eventfd Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 13/18] vfio/platform: support for maskable and automasked interrupts Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
     [not found]     ` <1413205825-6370-14-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-21 17:47       ` Alex Williamson
2014-10-21 17:47         ` Alex Williamson
     [not found]         ` <1413913638.4202.153.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-10-22 13:55           ` Antonios Motakis
2014-10-22 13:55             ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 14/18] vfio: move eventfd support code for VFIO_PCI to a separate file Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
     [not found]     ` <1413205825-6370-15-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-21 17:55       ` Alex Williamson
2014-10-21 17:55         ` Alex Williamson
     [not found]         ` <1413914126.4202.157.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-10-22 13:56           ` Antonios Motakis
2014-10-22 13:56             ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 15/18] vfio: add local lock in virqfd instead of depending on VFIO PCI Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 16/18] vfio: pass an opaque pointer on virqfd initialization Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 17/18] vfio: initialize the virqfd workqueue in VFIO generic code Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis
2014-10-13 13:10   ` [PATCH v8 18/18] vfio/platform: implement IRQ masking/unmasking via an eventfd Antonios Motakis
2014-10-13 13:10     ` Antonios Motakis

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=54468BDA.6050606@linaro.org \
    --to=eric.auger-qsej5fyqhm4dnm+yrofe0a@public.gmane.org \
    --cc=a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org \
    --cc=alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org \
    --cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=marc.zyngier-5wv7dgnIgG8@public.gmane.org \
    --cc=tech-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org \
    --cc=will.deacon-5wv7dgnIgG8@public.gmane.org \
    /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.