From: "Eugenio Pérez" <eperezma@redhat.com>
To: Peter Xu <peterx@redhat.com>, qemu-devel@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Aleksandar Rikalo" <aleksandar.rikalo@syrmia.com>,
"Yan Zhao" <yan.y.zhao@intel.com>,
"Eduardo Habkost" <ehabkost@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"Juan Quintela" <quintela@redhat.com>,
"Hervé Poussineau" <hpoussin@reactos.org>,
"Eric Auger" <eric.auger@redhat.com>,
qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
"Avi Kivity" <avi@redhat.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"David Gibson" <david@gibson.dropbear.id.au>,
"Richard Henderson" <rth@twiddle.net>
Subject: [PATCH 3/5] memory: Add IOMMU_NOTIFIER_DEVIOTLB_UNMAP IOMMUTLBNotificationType
Date: Thu, 3 Sep 2020 18:14:44 +0200 [thread overview]
Message-ID: <20200903161446.29615-4-eperezma@redhat.com> (raw)
In-Reply-To: <20200903161446.29615-1-eperezma@redhat.com>
This allows us to differentiate between regular IOMMU map/unmap events
and DEVIOTLB unmap. Doing so, notifiers that only need device IOTLB
invalidations will not receive regular IOMMU unmappings.
Adapt intel and vhost to use it.
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
---
include/exec/memory.h | 7 ++++++-
hw/i386/intel_iommu.c | 2 +-
hw/virtio/vhost.c | 2 +-
3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/include/exec/memory.h b/include/exec/memory.h
index ab8d1ac9c9..77afeda60c 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -87,9 +87,14 @@ typedef enum {
IOMMU_NOTIFIER_UNMAP = 0x1,
/* Notify entry changes (newly created entries) */
IOMMU_NOTIFIER_MAP = 0x2,
+ /* Notify changes on device IOTLB entries */
+ IOMMU_NOTIFIER_DEVIOTLB_UNMAP = 0x04,
} IOMMUNotifierFlag;
-#define IOMMU_NOTIFIER_ALL (IOMMU_NOTIFIER_MAP | IOMMU_NOTIFIER_UNMAP)
+#define IOMMU_NOTIFIER_IOTLB_EVENTS (IOMMU_NOTIFIER_MAP | IOMMU_NOTIFIER_UNMAP)
+#define IOMMU_NOTIFIER_DEVIOTLB_EVENTS IOMMU_NOTIFIER_DEVIOTLB_UNMAP
+#define IOMMU_NOTIFIER_ALL (IOMMU_NOTIFIER_IOTLB_EVENTS | \
+ IOMMU_NOTIFIER_DEVIOTLB_EVENTS)
struct IOMMUNotifier;
typedef void (*IOMMUNotify)(struct IOMMUNotifier *notifier,
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index 19661bba3e..ab6833d5a0 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -2468,7 +2468,7 @@ static bool vtd_process_device_iotlb_desc(IntelIOMMUState *s,
sz = VTD_PAGE_SIZE;
}
- event.type = IOMMU_NOTIFIER_UNMAP;
+ event.type = IOMMU_NOTIFIER_DEVIOTLB_UNMAP;
event.entry.target_as = &vtd_dev_as->as;
event.entry.addr_mask = sz - 1;
event.entry.iova = addr;
diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index 1a1384e7a6..1bf5bbc82e 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -729,7 +729,7 @@ static void vhost_iommu_region_add(MemoryListener *listener,
iommu_idx = memory_region_iommu_attrs_to_index(iommu_mr,
MEMTXATTRS_UNSPECIFIED);
iommu_notifier_init(&iommu->n, vhost_iommu_unmap_notify,
- IOMMU_NOTIFIER_UNMAP,
+ IOMMU_NOTIFIER_DEVIOTLB_UNMAP,
section->offset_within_region,
int128_get64(end),
iommu_idx);
--
2.18.1
WARNING: multiple messages have this Message-ID (diff)
From: "Eugenio Pérez" <eperezma@redhat.com>
To: Peter Xu <peterx@redhat.com>, qemu-devel@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Aleksandar Rikalo" <aleksandar.rikalo@syrmia.com>,
"Yan Zhao" <yan.y.zhao@intel.com>,
"Eduardo Habkost" <ehabkost@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"Juan Quintela" <quintela@redhat.com>,
"Hervé Poussineau" <hpoussin@reactos.org>,
"Eric Auger" <eric.auger@redhat.com>,
qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
"Avi Kivity" <avi@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"David Gibson" <david@gibson.dropbear.id.au>,
"Richard Henderson" <rth@twiddle.net>
Subject: [PATCH 3/5] memory: Add IOMMU_NOTIFIER_DEVIOTLB_UNMAP IOMMUTLBNotificationType
Date: Thu, 3 Sep 2020 18:14:44 +0200 [thread overview]
Message-ID: <20200903161446.29615-4-eperezma@redhat.com> (raw)
In-Reply-To: <20200903161446.29615-1-eperezma@redhat.com>
This allows us to differentiate between regular IOMMU map/unmap events
and DEVIOTLB unmap. Doing so, notifiers that only need device IOTLB
invalidations will not receive regular IOMMU unmappings.
Adapt intel and vhost to use it.
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
---
include/exec/memory.h | 7 ++++++-
hw/i386/intel_iommu.c | 2 +-
hw/virtio/vhost.c | 2 +-
3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/include/exec/memory.h b/include/exec/memory.h
index ab8d1ac9c9..77afeda60c 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -87,9 +87,14 @@ typedef enum {
IOMMU_NOTIFIER_UNMAP = 0x1,
/* Notify entry changes (newly created entries) */
IOMMU_NOTIFIER_MAP = 0x2,
+ /* Notify changes on device IOTLB entries */
+ IOMMU_NOTIFIER_DEVIOTLB_UNMAP = 0x04,
} IOMMUNotifierFlag;
-#define IOMMU_NOTIFIER_ALL (IOMMU_NOTIFIER_MAP | IOMMU_NOTIFIER_UNMAP)
+#define IOMMU_NOTIFIER_IOTLB_EVENTS (IOMMU_NOTIFIER_MAP | IOMMU_NOTIFIER_UNMAP)
+#define IOMMU_NOTIFIER_DEVIOTLB_EVENTS IOMMU_NOTIFIER_DEVIOTLB_UNMAP
+#define IOMMU_NOTIFIER_ALL (IOMMU_NOTIFIER_IOTLB_EVENTS | \
+ IOMMU_NOTIFIER_DEVIOTLB_EVENTS)
struct IOMMUNotifier;
typedef void (*IOMMUNotify)(struct IOMMUNotifier *notifier,
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index 19661bba3e..ab6833d5a0 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -2468,7 +2468,7 @@ static bool vtd_process_device_iotlb_desc(IntelIOMMUState *s,
sz = VTD_PAGE_SIZE;
}
- event.type = IOMMU_NOTIFIER_UNMAP;
+ event.type = IOMMU_NOTIFIER_DEVIOTLB_UNMAP;
event.entry.target_as = &vtd_dev_as->as;
event.entry.addr_mask = sz - 1;
event.entry.iova = addr;
diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index 1a1384e7a6..1bf5bbc82e 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -729,7 +729,7 @@ static void vhost_iommu_region_add(MemoryListener *listener,
iommu_idx = memory_region_iommu_attrs_to_index(iommu_mr,
MEMTXATTRS_UNSPECIFIED);
iommu_notifier_init(&iommu->n, vhost_iommu_unmap_notify,
- IOMMU_NOTIFIER_UNMAP,
+ IOMMU_NOTIFIER_DEVIOTLB_UNMAP,
section->offset_within_region,
int128_get64(end),
iommu_idx);
--
2.18.1
next prev parent reply other threads:[~2020-09-03 16:22 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-25 19:16 [RFC 0/1] memory: Delete assertion in memory_region_unregister_iommu_notifier Eugenio Pérez
2020-06-25 19:16 ` [RFC 1/1] " Eugenio Pérez
2020-06-25 19:29 ` [RFC 0/1] " no-reply
2020-08-26 14:36 ` [RFC v6 00/13] " Eugenio Pérez
2020-08-26 14:36 ` [RFC v6 01/13] memory: Rename memory_region_notify_one to memory_region_notify_iommu_one Eugenio Pérez
2020-08-26 14:36 ` Eugenio Pérez
2020-08-26 14:36 ` [RFC v6 02/13] memory: Add IOMMUTLBNotificationType to IOMMUTLBEntry Eugenio Pérez
2020-08-26 14:36 ` Eugenio Pérez
2020-08-26 15:42 ` Peter Xu
2020-08-26 15:42 ` Peter Xu
2020-08-27 6:11 ` Eugenio Perez Martin
2020-08-27 6:11 ` Eugenio Perez Martin
2020-08-26 14:36 ` [RFC v6 03/13] hw/alpha/typhoon: Mark all IOMMUTLBEntry as IOMMU_IOTLB_NONE type Eugenio Pérez
2020-08-26 15:50 ` Peter Xu
2020-08-26 15:50 ` Peter Xu
2020-08-26 14:36 ` [RFC v6 04/13] amd_iommu: " Eugenio Pérez
2020-08-26 14:36 ` [RFC v6 05/13] hw/arm/smmu: Fill IOMMUTLBEntry notifier type Eugenio Pérez
2020-08-26 14:36 ` [RFC v6 06/13] dma/rc4030: Mark all IOMMUTLBEntry as IOMMU_IOTLB_NONE type Eugenio Pérez
2020-08-26 14:36 ` [RFC v6 07/13] intel_iommu: Mark IOMMUTLBEntry of page notification as IOMMU_IOTLB_UNMAP type Eugenio Pérez
2020-08-26 14:36 ` [RFC v6 08/13] virtio-iommu: Mark virtio_iommu_translate IOTLB as IOMMU_IOTLB_NONE type Eugenio Pérez
2020-08-26 14:36 ` Eugenio Pérez
2020-08-26 14:36 ` [RFC v6 09/13] intel_iommu: Set IOMMUTLBEntry type in vtd_page_walk_level Eugenio Pérez
2020-08-26 14:36 ` [RFC v6 10/13] memory: Notify IOMMU IOTLB based on entry type, not permissions Eugenio Pérez
2020-08-26 14:36 ` Eugenio Pérez
2020-08-26 14:36 ` [RFC v6 11/13] memory: Add IOMMU_DEVIOTLB_UNMAP IOMMUTLBNotificationType Eugenio Pérez
2020-08-26 14:36 ` Eugenio Pérez
2020-08-26 14:36 ` [RFC v6 12/13] intel_iommu: Do not notify regular iotlb to device-iotlb notifiers Eugenio Pérez
2020-08-26 16:51 ` 罗勇刚(Yonggang Luo)
2020-08-27 6:56 ` Eugenio Perez Martin
2020-08-26 14:36 ` [RFC v6 13/13] memory: Skip bad range assertion if notifier is DEVIOTLB type Eugenio Pérez
2020-08-26 14:36 ` Eugenio Pérez
2020-08-26 15:00 ` [RFC v6 00/13] memory: Delete assertion in memory_region_unregister_iommu_notifier Eugenio Perez Martin
2020-08-26 15:54 ` Peter Xu
2020-08-27 6:53 ` Eugenio Perez Martin
2020-09-03 16:14 ` [PATCH 0/5] memory: Skip " Eugenio Pérez
2020-09-03 16:14 ` Eugenio Pérez
2020-09-03 16:14 ` [PATCH 1/5] memory: Rename memory_region_notify_one to memory_region_notify_iommu_one Eugenio Pérez
2020-09-03 16:14 ` [PATCH 2/5] memory: Add IOMMUTLBEvent Eugenio Pérez
2020-09-03 16:14 ` Eugenio Pérez
2020-09-03 16:14 ` Eugenio Pérez [this message]
2020-09-03 16:14 ` [PATCH 3/5] memory: Add IOMMU_NOTIFIER_DEVIOTLB_UNMAP IOMMUTLBNotificationType Eugenio Pérez
2020-09-03 16:14 ` [PATCH 4/5] intel_iommu: Skip page walking on device iotlb invalidations Eugenio Pérez
2020-09-03 16:14 ` Eugenio Pérez
2020-09-04 18:32 ` Peter Xu
2020-09-04 18:32 ` Peter Xu
2020-09-03 16:14 ` [PATCH 5/5] memory: Skip bad range assertion if notifier is DEVIOTLB_UNMAP type Eugenio Pérez
2020-09-03 16:14 ` Eugenio Pérez
2020-09-04 4:34 ` Jason Wang
2020-09-04 4:34 ` Jason Wang
2020-09-28 9:05 ` Eugenio Perez Martin
2020-09-28 17:48 ` Peter Xu
2020-09-28 17:48 ` Peter Xu
2020-10-03 17:38 ` Michael S. Tsirkin
2020-10-05 6:32 ` Eugenio Perez Martin
2020-10-05 6:32 ` Eugenio Perez Martin
2020-10-15 7:50 ` Jason Wang
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=20200903161446.29615-4-eperezma@redhat.com \
--to=eperezma@redhat.com \
--cc=aleksandar.rikalo@syrmia.com \
--cc=avi@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=ehabkost@redhat.com \
--cc=eric.auger@redhat.com \
--cc=hpoussin@reactos.org \
--cc=jasowang@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=peterx@redhat.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=quintela@redhat.com \
--cc=rth@twiddle.net \
--cc=yan.y.zhao@intel.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.