All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Auger <eric.auger-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: "eric.auger.pro-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	eric.auger-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org,
	joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org,
	alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org,
	jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org,
	yi.l.liu"@linux.intel.com,
	will.deacon-5wv7dgnIgG8@public.gmane.org,
	robin.murphy-5wv7dgnIgG8@public.gmane.org
Cc: marc.zyngier-5wv7dgnIgG8@public.gmane.org,
	peter.maydell-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
	christoffer.dall-5wv7dgnIgG8@public.gmane.org
Subject: [RFC 06/13] vfio: VFIO_IOMMU_BIND_MSI
Date: Thu, 23 Aug 2018 14:17:29 +0200	[thread overview]
Message-ID: <1535026656-8450-7-git-send-email-eric.auger@redhat.com> (raw)
In-Reply-To: <1535026656-8450-1-git-send-email-eric.auger-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

This patch adds the VFIO_IOMMU_BIND_MSI ioctl which aims at
passing the guest MSI binding to the host.

Signed-off-by: Eric Auger <eric.auger-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
 drivers/vfio/vfio_iommu_type1.c | 31 +++++++++++++++++++++++++++++++
 include/uapi/linux/vfio.h       |  7 +++++++
 2 files changed, 38 insertions(+)

diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
index 973bb4d..2962cb9 100644
--- a/drivers/vfio/vfio_iommu_type1.c
+++ b/drivers/vfio/vfio_iommu_type1.c
@@ -1696,6 +1696,24 @@ static int do_tlb_inv_fn(struct device *dev, void *data)
 	return iommu_tlb_invalidate(task->domain, dev, &ustruct->info);
 }
 
+static int
+vfio_iommu_bind_guest_msi(struct vfio_iommu *iommu,
+			  struct vfio_iommu_type1_guest_msi_binding *ustruct)
+{
+	struct vfio_domain *d;
+	int ret;
+
+	mutex_lock(&iommu->lock);
+	list_for_each_entry(d, &iommu->domain_list, next) {
+		ret = iommu_bind_guest_msi(d->domain, &ustruct->binding);
+		if (ret)
+			break;
+	}
+	mutex_unlock(&iommu->lock);
+	return ret;
+}
+
+
 static int vfio_iommu_dispatch_task(struct vfio_iommu *iommu, void *data,
 				    int (*fn)(struct device *, void *))
 {
@@ -1822,6 +1840,19 @@ static long vfio_iommu_type1_ioctl(void *iommu_data,
 
 		return vfio_iommu_dispatch_task(iommu, (u8 *)&ustruct,
 						do_tlb_inv_fn);
+	} else if (cmd == VFIO_IOMMU_BIND_MSI) {
+		struct vfio_iommu_type1_guest_msi_binding ustruct;
+
+		minsz = offsetofend(struct vfio_iommu_type1_guest_msi_binding,
+				    binding);
+
+		if (copy_from_user(&ustruct, (void __user *)arg, minsz))
+			return -EFAULT;
+
+		if (ustruct.argsz < minsz || ustruct.flags)
+			return -EINVAL;
+
+		return vfio_iommu_bind_guest_msi(iommu, &ustruct);
 	}
 
 	return -ENOTTY;
diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h
index b59f9fc..b7a9943 100644
--- a/include/uapi/linux/vfio.h
+++ b/include/uapi/linux/vfio.h
@@ -680,6 +680,13 @@ struct vfio_iommu_type1_tlb_invalidate {
 };
 #define VFIO_IOMMU_TLB_INVALIDATE      _IO(VFIO_TYPE, VFIO_BASE + 23)
 
+struct vfio_iommu_type1_guest_msi_binding {
+	__u32   argsz;
+	__u32   flags;
+	struct iommu_guest_msi_binding binding;
+};
+#define VFIO_IOMMU_BIND_MSI      _IO(VFIO_TYPE, VFIO_BASE + 24)
+
 /* -------- Additional API for SPAPR TCE (Server POWERPC) IOMMU -------- */
 
 /*
-- 
2.5.5

  parent reply	other threads:[~2018-08-23 12:17 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-23 12:17 [RFC 00/13] SMMUv3 Nested Stage Setup Eric Auger
2018-08-23 12:17 ` [RFC 01/13] iommu: Introduce bind_guest_stage API Eric Auger
2018-08-23 12:17 ` [RFC 02/13] iommu: Introduce tlb_invalidate API Eric Auger
2018-08-23 12:17 ` [RFC 03/13] iommu: Introduce bind_guest_msi Eric Auger
2018-08-23 12:17 ` [RFC 04/13] vfio: VFIO_IOMMU_BIND_GUEST_STAGE Eric Auger
2018-08-23 12:17 ` [RFC 05/13] vfio: VFIO_IOMMU_TLB_INVALIDATE Eric Auger
2018-08-23 12:17 ` [RFC 06/13] vfio: VFIO_IOMMU_BIND_MSI Eric Auger
2018-08-23 12:17 ` [RFC 07/13] vfio: Document nested stage control Eric Auger
2018-08-23 12:17 ` [RFC 08/13] iommu/arm-smmu-v3: Link domains and devices Eric Auger
2018-08-23 12:17 ` [RFC 09/13] iommu/smmuv3: Get prepared for nested stage support Eric Auger
2018-08-23 12:17 ` [RFC 10/13] iommu/smmuv3: Implement bind_guest_stage Eric Auger
2018-08-23 12:17 ` [RFC 11/13] iommu/smmuv3: Implement tlb_invalidate Eric Auger
2018-08-23 12:17 ` [RFC 12/13] dma-iommu: Implement NESTED_MSI cookie Eric Auger
2018-08-23 12:17 ` [RFC 13/13] iommu/smmuv3: Implement bind_guest_msi Eric Auger
     [not found] ` <1535026656-8450-1-git-send-email-eric.auger-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-08-23 12:17   ` [RFC 01/13] iommu: Introduce bind_guest_stage API Eric Auger
2018-08-23 15:25     ` Auger Eric
2018-08-31 13:11       ` Jean-Philippe Brucker
     [not found]         ` <b7909f1b-57ce-f4db-d916-140a63283232-5wv7dgnIgG8@public.gmane.org>
2018-08-31 13:52           ` Auger Eric
2018-08-31 13:52             ` Auger Eric
2018-09-03 12:19             ` Jean-Philippe Brucker
     [not found]             ` <4309832b-27ed-597a-b5a1-f439fbea9843-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-09-04  7:57               ` Tian, Kevin
2018-09-04  7:57                 ` Tian, Kevin
2018-09-04  8:10                 ` Auger Eric
     [not found]                   ` <220e4c2a-d31c-d8fb-2d77-d902d2f13bb2-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-09-04  8:34                     ` Tian, Kevin
2018-09-04  8:34                       ` Tian, Kevin
2018-09-04  8:41                       ` Auger Eric
2018-09-04  8:41                         ` Auger Eric
2018-09-04  8:43                         ` Tian, Kevin
2018-09-04  9:53                         ` Jean-Philippe Brucker
2018-09-05  0:36                           ` Tian, Kevin
2018-09-05  0:36                             ` Tian, Kevin
     [not found]     ` <A2975661238FB949B60364EF0F2C257439CCE9EE@SHSMSX104.ccr.corp.intel.com>
2018-08-24 13:20       ` Auger Eric
2018-08-24 13:20         ` Auger Eric
2018-08-23 12:17   ` [RFC 02/13] iommu: Introduce tlb_invalidate API Eric Auger
2018-08-31 13:17     ` Jean-Philippe Brucker
2018-08-31 13:17       ` Jean-Philippe Brucker
2018-08-31 14:07       ` Auger Eric
2018-09-03 12:28         ` Jean-Philippe Brucker
2018-09-03 12:41           ` Auger Eric
2018-09-03 13:41             ` Jean-Philippe Brucker
2018-08-23 12:17   ` [RFC 03/13] iommu: Introduce bind_guest_msi Eric Auger
2018-08-23 12:17   ` [RFC 04/13] vfio: VFIO_IOMMU_BIND_GUEST_STAGE Eric Auger
2018-08-23 12:17   ` [RFC 05/13] vfio: VFIO_IOMMU_TLB_INVALIDATE Eric Auger
2018-08-23 12:17   ` Eric Auger [this message]
2018-08-23 12:17   ` [RFC 07/13] vfio: Document nested stage control Eric Auger
2018-08-23 12:17   ` [RFC 08/13] iommu/arm-smmu-v3: Link domains and devices Eric Auger
2018-08-23 12:17   ` [RFC 09/13] iommu/smmuv3: Get prepared for nested stage support Eric Auger
2018-08-31 13:20     ` Jean-Philippe Brucker
2018-08-31 13:20       ` Jean-Philippe Brucker
2018-08-31 14:11       ` Auger Eric
     [not found]         ` <012d4950-7a06-2d59-85a0-44d511ad893b-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-09-03 12:29           ` Jean-Philippe Brucker
2018-09-03 12:29             ` Jean-Philippe Brucker
2018-09-03 12:48             ` Auger Eric
2018-09-03 12:48               ` Auger Eric
2018-08-23 12:17   ` [RFC 10/13] iommu/smmuv3: Implement bind_guest_stage Eric Auger
2018-08-23 12:17   ` [RFC 11/13] iommu/smmuv3: Implement tlb_invalidate Eric Auger
2018-08-23 12:17   ` [RFC 12/13] dma-iommu: Implement NESTED_MSI cookie Eric Auger
2018-08-23 12:17   ` [RFC 13/13] iommu/smmuv3: Implement bind_guest_msi 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=1535026656-8450-7-git-send-email-eric.auger@redhat.com \
    --to=eric.auger-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc="eric.auger.pro-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, eric.auger-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org, joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org, alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org, jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org, yi.l.liu"@linux.intel.com \
    --cc=christoffer.dall-5wv7dgnIgG8@public.gmane.org \
    --cc=marc.zyngier-5wv7dgnIgG8@public.gmane.org \
    --cc=peter.maydell-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=robin.murphy-5wv7dgnIgG8@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.