Message ID | 20190701093034.18873-3-eric.auger@redhat.com |
---|---|
State | New |
Headers | show |
Series | ARM SMMUv3: Fix spurious notification errors and stall with vfio-pci | expand |
On Mon, Jul 01, 2019 at 11:30:30AM +0200, Eric Auger wrote: > We introduce a new IOMMU Memory Region attribute, > IOMMU_ATTR_VFIO_NESTED that tells whether the virtual IOMMU > requires physical nested stages for VFIO integration. > > Current Intel virtual IOMMU device supports "Caching > Mode" and does not require 2 stages at physical level to be > integrated with VFIO. However SMMUv3 does not implement such > "caching mode" and requires to use physical stage 1 for VFIO > integration. > > Signed-off-by: Eric Auger <eric.auger@redhat.com> > --- > include/exec/memory.h | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/include/exec/memory.h b/include/exec/memory.h > index bdd76653a8..dd7ef23f96 100644 > --- a/include/exec/memory.h > +++ b/include/exec/memory.h > @@ -204,7 +204,8 @@ struct MemoryRegionOps { > }; > > enum IOMMUMemoryRegionAttr { > - IOMMU_ATTR_SPAPR_TCE_FD > + IOMMU_ATTR_SPAPR_TCE_FD, > + IOMMU_ATTR_VFIO_NESTED, IMHO it'll be better if this patch can be squashed into the first user of the new flag to better clarify itself on why it will be needed (if finally we still would like to have this flag). Regards,
Hi Peter, On 7/3/19 7:42 AM, Peter Xu wrote: > On Mon, Jul 01, 2019 at 11:30:30AM +0200, Eric Auger wrote: >> We introduce a new IOMMU Memory Region attribute, >> IOMMU_ATTR_VFIO_NESTED that tells whether the virtual IOMMU >> requires physical nested stages for VFIO integration. >> >> Current Intel virtual IOMMU device supports "Caching >> Mode" and does not require 2 stages at physical level to be >> integrated with VFIO. However SMMUv3 does not implement such >> "caching mode" and requires to use physical stage 1 for VFIO >> integration. >> >> Signed-off-by: Eric Auger <eric.auger@redhat.com> >> --- >> include/exec/memory.h | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/include/exec/memory.h b/include/exec/memory.h >> index bdd76653a8..dd7ef23f96 100644 >> --- a/include/exec/memory.h >> +++ b/include/exec/memory.h >> @@ -204,7 +204,8 @@ struct MemoryRegionOps { >> }; >> >> enum IOMMUMemoryRegionAttr { >> - IOMMU_ATTR_SPAPR_TCE_FD >> + IOMMU_ATTR_SPAPR_TCE_FD, >> + IOMMU_ATTR_VFIO_NESTED, > > IMHO it'll be better if this patch can be squashed into the first user > of the new flag to better clarify itself on why it will be needed (if > finally we still would like to have this flag). sure I will squash it. Nested mode requires important adaptations in the current hw/vfio/common.c code to register specific notifiers: UNMAP, config change, MSI binding notifiers (this one actually uses a MAP notifier by the way). So there we need to recognize an IOMMU works in nested mode one way or another. Thanks Eric > > Regards, >
diff --git a/include/exec/memory.h b/include/exec/memory.h index bdd76653a8..dd7ef23f96 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -204,7 +204,8 @@ struct MemoryRegionOps { }; enum IOMMUMemoryRegionAttr { - IOMMU_ATTR_SPAPR_TCE_FD + IOMMU_ATTR_SPAPR_TCE_FD, + IOMMU_ATTR_VFIO_NESTED, }; /**
We introduce a new IOMMU Memory Region attribute, IOMMU_ATTR_VFIO_NESTED that tells whether the virtual IOMMU requires physical nested stages for VFIO integration. Current Intel virtual IOMMU device supports "Caching Mode" and does not require 2 stages at physical level to be integrated with VFIO. However SMMUv3 does not implement such "caching mode" and requires to use physical stage 1 for VFIO integration. Signed-off-by: Eric Auger <eric.auger@redhat.com> --- include/exec/memory.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)