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.au...@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, >