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

Reply via email to