On Thu, Sep 10, 2020 at 8:49 PM Durrant, Paul <pdurr...@amazon.co.uk> wrote:
Hi Paul [sorry for the possible format issue] > -----Original Message----- > > From: Bertrand Marquis <bertrand.marq...@arm.com> > > Sent: 10 September 2020 17:46 > > To: Paul Durrant <p...@xen.org> > > Cc: open list:X86 <xen-devel@lists.xenproject.org>; Durrant, Paul < > pdurr...@amazon.co.uk>; Jan Beulich > > <jbeul...@suse.com>; Andrew Cooper <andrew.coop...@citrix.com>; Wei Liu > <w...@xen.org>; Roger Pau Monné > > <roger....@citrix.com>; George Dunlap <george.dun...@citrix.com>; Ian > Jackson > > <ian.jack...@eu.citrix.com>; Julien Grall <jul...@xen.org>; Stefano > Stabellini > > <sstabell...@kernel.org>; Jun Nakajima <jun.nakaj...@intel.com>; Kevin > Tian <kevin.t...@intel.com> > > Subject: RE: [EXTERNAL] [PATCH v6 4/8] iommu: make map and unmap take a > page count, similar to flush > > > > CAUTION: This email originated from outside of the organization. Do not > click links or open > > attachments unless you can confirm the sender and know the content is > safe. > > > > > > > > >> diff --git a/xen/include/xen/iommu.h b/xen/include/xen/iommu.h > > >> index 1831dc66b0..13f68dc93d 100644 > > >> --- a/xen/include/xen/iommu.h > > >> +++ b/xen/include/xen/iommu.h > > >> @@ -146,23 +146,23 @@ enum > > >> #define IOMMU_FLUSHF_modified (1u << _IOMMU_FLUSHF_modified) > > >> > > >> int __must_check iommu_map(struct domain *d, dfn_t dfn, mfn_t mfn, > > >> - unsigned int page_order, unsigned int > flags, > > >> + unsigned long page_count, unsigned int > flags, > > >> unsigned int *flush_flags); > > >> int __must_check iommu_unmap(struct domain *d, dfn_t dfn, > > >> - unsigned int page_order, > > >> + unsigned long page_count, > > >> unsigned int *flush_flags); > > >> > > >> int __must_check iommu_legacy_map(struct domain *d, dfn_t dfn, mfn_t > mfn, > > >> - unsigned int page_order, > > >> + unsigned long page_count, > > >> unsigned int flags); > > >> int __must_check iommu_legacy_unmap(struct domain *d, dfn_t dfn, > > >> - unsigned int page_order); > > >> + unsigned long page_count); > > >> > > >> int __must_check iommu_lookup_page(struct domain *d, dfn_t dfn, mfn_t > *mfn, > > >> unsigned int *flags); > > >> > > >> int __must_check iommu_iotlb_flush(struct domain *d, dfn_t dfn, > > >> - unsigned int page_count, > > >> + unsigned long page_count, > > >> unsigned int flush_flags); > > >> int __must_check iommu_iotlb_flush_all(struct domain *d, > > >> unsigned int flush_flags); > > >> @@ -281,7 +281,7 @@ struct iommu_ops { > > >> void (*share_p2m)(struct domain *d); > > >> void (*crash_shutdown)(void); > > >> int __must_check (*iotlb_flush)(struct domain *d, dfn_t dfn, > > >> - unsigned int page_count, > > >> + unsigned long page_count, > > > > > > This change will require to change the arm smmu code to have the right > type for page count: > > > xen/drivers/passthrough/smmu.c:2536 > > > static int __must_check arm_smmu_iotlb_flush(struct domain *d, dfn_t > dfn, > > > unsigned int page_count, > > > unsigned int flush_flags) > > > > > > Otherwise compilation is failing for arm. > > > > > > With that fixed i could compile and start an arm system with the > complete serie (but not one with an > > arm SMMU). > > > > I should have specified because my test system right now does not have > an SMMUv1. > > > > Thanks for spotting that; I did run a cross compilation on arm a while ago > so not sure how I managed to miss this. Will fix and send v7. > Probably ipmmu_iotlb_flush() in ipmmu-vmsa.c needs the same update as well (I don't have the possibility to apply your series and re-check)? Please note, it is still under CONFIG_EXPERT. -- Regards, Oleksandr Tyshchenko