linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alex Williamson <alex.williamson@redhat.com>
To: Alexey Kardashevskiy <aik@ozlabs.ru>
Cc: Joerg Roedel <joerg.roedel@amd.com>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	linux-kernel@vger.kernel.org,
	David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [PATCH] iommu: making IOMMU sysfs nodes API public
Date: Mon, 11 Feb 2013 22:07:23 -0700	[thread overview]
Message-ID: <1360645643.3248.91.camel@bling.home> (raw)
In-Reply-To: <1360642004-7419-1-git-send-email-aik@ozlabs.ru>

On Tue, 2013-02-12 at 15:06 +1100, Alexey Kardashevskiy wrote:
> Having this patch in a tree, adding new nodes in sysfs
> for IOMMU groups is going to be easier.
> 
> The first candidate for this change is a "dma-window-size"
> property which tells a size of a DMA window of the specific
> IOMMU group which can be used later for locked pages accounting.

I'm still churning on this one; I'm nervous this would basically creat
a /proc free-for-all under /sys/kernel/iommu_group/$GROUP/ where any
iommu driver can add random attributes.  That can get ugly for
userspace.

On the other hand, for the application of userspace knowing how much
memory to lock for vfio use of a group, it's an appealing location to
get that information.  Something like libvirt would already be poking
around here to figure out which devices to bind.  Page limits need to be
setup prior to use through vfio, so sysfs is more convenient than
through vfio ioctls.

But then is dma-window-size just a vfio requirement leaking over into
iommu groups?  Can we allow iommu driver based attributes without giving
up control of the namespace?  Thanks,

Alex

> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
>  drivers/iommu/iommu.c |   19 ++-----------------
>  include/linux/iommu.h |   20 ++++++++++++++++++++
>  2 files changed, 22 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
> index b0afd3d..58cc298 100644
> --- a/drivers/iommu/iommu.c
> +++ b/drivers/iommu/iommu.c
> @@ -52,22 +52,6 @@ struct iommu_device {
>  	char *name;
>  };
>  
> -struct iommu_group_attribute {
> -	struct attribute attr;
> -	ssize_t (*show)(struct iommu_group *group, char *buf);
> -	ssize_t (*store)(struct iommu_group *group,
> -			 const char *buf, size_t count);
> -};
> -
> -#define IOMMU_GROUP_ATTR(_name, _mode, _show, _store)		\
> -struct iommu_group_attribute iommu_group_attr_##_name =		\
> -	__ATTR(_name, _mode, _show, _store)
> -
> -#define to_iommu_group_attr(_attr)	\
> -	container_of(_attr, struct iommu_group_attribute, attr)
> -#define to_iommu_group(_kobj)		\
> -	container_of(_kobj, struct iommu_group, kobj)
> -
>  static ssize_t iommu_group_attr_show(struct kobject *kobj,
>  				     struct attribute *__attr, char *buf)
>  {
> @@ -98,11 +82,12 @@ static const struct sysfs_ops iommu_group_sysfs_ops = {
>  	.store = iommu_group_attr_store,
>  };
>  
> -static int iommu_group_create_file(struct iommu_group *group,
> +int iommu_group_create_file(struct iommu_group *group,
>  				   struct iommu_group_attribute *attr)
>  {
>  	return sysfs_create_file(&group->kobj, &attr->attr);
>  }
> +EXPORT_SYMBOL_GPL(iommu_group_create_file);
>  
>  static void iommu_group_remove_file(struct iommu_group *group,
>  				    struct iommu_group_attribute *attr)
> diff --git a/include/linux/iommu.h b/include/linux/iommu.h
> index f3b99e1..6d24ba7 100644
> --- a/include/linux/iommu.h
> +++ b/include/linux/iommu.h
> @@ -21,6 +21,7 @@
>  
>  #include <linux/errno.h>
>  #include <linux/types.h>
> +#include <linux/stat.h>
>  
>  #define IOMMU_READ	(1)
>  #define IOMMU_WRITE	(2)
> @@ -197,6 +198,25 @@ static inline int report_iommu_fault(struct iommu_domain *domain,
>  	return ret;
>  }
>  
> +struct iommu_group_attribute {
> +	struct attribute attr;
> +	ssize_t (*show)(struct iommu_group *group, char *buf);
> +	ssize_t (*store)(struct iommu_group *group,
> +			 const char *buf, size_t count);
> +};
> +
> +#define IOMMU_GROUP_ATTR(_name, _mode, _show, _store)		\
> +struct iommu_group_attribute iommu_group_attr_##_name =		\
> +	__ATTR(_name, _mode, _show, _store)
> +
> +#define to_iommu_group_attr(_attr)	\
> +	container_of(_attr, struct iommu_group_attribute, attr)
> +#define to_iommu_group(_kobj)		\
> +	container_of(_kobj, struct iommu_group, kobj)
> +
> +extern int iommu_group_create_file(struct iommu_group *group,
> +				   struct iommu_group_attribute *attr);
> +
>  #else /* CONFIG_IOMMU_API */
>  
>  struct iommu_ops {};




  reply	other threads:[~2013-02-12  5:07 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-11 11:54 [PATCH 0/2] vfio on power Alexey Kardashevskiy
2013-02-11 11:54 ` [PATCH 1/2] vfio powerpc: enabled on powernv platform Alexey Kardashevskiy
2013-02-11 22:16   ` Alex Williamson
2013-02-11 23:19     ` Alexey Kardashevskiy
2013-02-12  0:01       ` Alex Williamson
2013-02-25  2:21     ` Paul Mackerras
2013-02-11 11:54 ` [PATCH 2/2] vfio powerpc: implemented IOMMU driver for VFIO Alexey Kardashevskiy
2013-02-11 22:17   ` Alex Williamson
2013-02-11 23:45     ` Alexey Kardashevskiy
2013-02-12  0:25       ` Alex Williamson
2013-02-12  4:06         ` [PATCH] iommu: making IOMMU sysfs nodes API public Alexey Kardashevskiy
2013-02-12  5:07           ` Alex Williamson [this message]
2013-02-12 14:42             ` Alexey Kardashevskiy
2013-02-12 17:15               ` Alex Williamson
2013-02-18  6:15                 ` Alexey Kardashevskiy
2013-02-19  5:24                   ` Alex Williamson
2013-02-19  5:48                     ` Alexey Kardashevskiy
2013-02-19 19:53                       ` Alex Williamson
2013-02-19  7:38                     ` David Gibson
2013-02-19 20:11                       ` Alex Williamson
2013-02-20  2:31                         ` Alexey Kardashevskiy
2013-02-20  3:47                           ` Alex Williamson
2013-02-20  4:20                             ` Alexey Kardashevskiy
2013-02-20  4:33                               ` Alex Williamson
2013-03-18  3:53                                 ` Alexey Kardashevskiy
2013-03-19  2:40                                   ` Alex Williamson
2013-03-19  7:08                                     ` [PATCH] vfio powerpc: implement IOMMU driver for VFIO Alexey Kardashevskiy
2013-03-20 20:45                                       ` Alex Williamson
2013-03-21  0:57                                         ` Alexey Kardashevskiy
2013-03-21  1:29                                           ` Alex Williamson
2013-03-21  1:55                                         ` David Gibson
2013-03-21  3:16                                           ` Alex Williamson
2013-03-25  2:12                                             ` David Gibson
2013-02-22  0:04                         ` [PATCH] iommu: making IOMMU sysfs nodes API public David Gibson
2013-02-22  4:11                           ` Alex Williamson
2013-02-25  0:03                             ` David Gibson

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=1360645643.3248.91.camel@bling.home \
    --to=alex.williamson@redhat.com \
    --cc=aik@ozlabs.ru \
    --cc=benh@kernel.crashing.org \
    --cc=david@gibson.dropbear.id.au \
    --cc=joerg.roedel@amd.com \
    --cc=linux-kernel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).