qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 3/3] s390x/pci: add iommu replay callback


From: Yi Min Zhao
Subject: Re: [Qemu-devel] [PATCH v2 3/3] s390x/pci: add iommu replay callback
Date: Tue, 5 Sep 2017 17:51:18 +0800
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.3.0



在 2017/9/5 下午5:28, Cornelia Huck 写道:
On Fri,  1 Sep 2017 06:22:58 +0200
Yi Min Zhao <address@hidden> wrote:

Let's introduce iommu replay callback for s390 pci iommu memory region.
Currently we don't need any dma mapping replay. So let it return
directly. This implementation will avoid meaningless loops calling
translation callback.

Reviewed-by: Pierre Morel <address@hidden>
Reviewed-by: Halil Pasic <address@hidden>
Signed-off-by: Yi Min Zhao <address@hidden>
---
  hw/s390x/s390-pci-bus.c | 11 +++++++++++
  1 file changed, 11 insertions(+)

diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
index bd8a3e1e1c..69f45e3715 100644
--- a/hw/s390x/s390-pci-bus.c
+++ b/hw/s390x/s390-pci-bus.c
@@ -397,6 +397,16 @@ static IOMMUTLBEntry 
s390_translate_iommu(IOMMUMemoryRegion *mr, hwaddr addr,
      return ret;
  }
+static void s390_pci_iommu_replay(IOMMUMemoryRegion *iommu,
+                                  IOMMUNotifier *notifier)
+{
+    /* It's impossible to plug a pci device on s390x that already has iommu
+     * mappings which need to be replayed, that is due to the "one iommu per
+     * zpci device" construct. So we don't need iommu replay currently.
I must say that 'currently' still throws me off. Does this refer to
vfio? If yes, reword to something like 'Should we support migration of
vfio-pci devices in the future, we need to revisit this.'?
Yeah, it refers to vfio especially. I update this in next version.

+     */
+    return;
+}
+
  static S390PCIIOMMU *s390_pci_get_iommu(S390pciState *s, PCIBus *bus,
                                          int devfn)
  {
@@ -1045,6 +1055,7 @@ static void 
s390_iommu_memory_region_class_init(ObjectClass *klass, void *data)
      IOMMUMemoryRegionClass *imrc = IOMMU_MEMORY_REGION_CLASS(klass);
imrc->translate = s390_translate_iommu;
+    imrc->replay = s390_pci_iommu_replay;
  }
static const TypeInfo s390_iommu_memory_region_info = {





reply via email to

[Prev in Thread] Current Thread [Next in Thread]