lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 7 Jul 2020 07:25:18 -0700 From: Rob Clark <robdclark@...il.com> To: Robin Murphy <robin.murphy@....com> Cc: Jordan Crouse <jcrouse@...eaurora.org>, linux-arm-msm <linux-arm-msm@...r.kernel.org>, Sai Prakash Ranjan <saiprakash.ranjan@...eaurora.org>, Joerg Roedel <jroedel@...e.de>, Will Deacon <will@...nel.org>, Linux Kernel Mailing List <linux-kernel@...r.kernel.org>, "list@....net:IOMMU DRIVERS <iommu@...ts.linux-foundation.org>, Joerg Roedel <joro@...tes.org>," <iommu@...ts.linux-foundation.org>, John Stultz <john.stultz@...aro.org>, freedreno <freedreno@...ts.freedesktop.org>, Yong Wu <yong.wu@...iatek.com> Subject: Re: [Freedreno] [PATCH v2 2/6] iommu/io-pgtable: Allow a pgtable implementation to skip TLB operations On Tue, Jul 7, 2020 at 4:34 AM Robin Murphy <robin.murphy@....com> wrote: > > On 2020-06-26 21:04, Jordan Crouse wrote: > > Allow a io-pgtable implementation to skip TLB operations by checking for > > NULL pointers in the helper functions. It will be up to to the owner > > of the io-pgtable instance to make sure that they independently handle > > the TLB correctly. > > I don't really understand what this is for - tricking the IOMMU driver > into not performing its TLB maintenance at points when that maintenance > has been deemed necessary doesn't seem like the appropriate way to > achieve anything good :/ No, for triggering the io-pgtable helpers into not performing TLB maintenance. But seriously, since we are creating pgtables ourselves, and we don't want to be ioremap'ing the GPU's SMMU instance, the alternative is plugging in no-op helpers. Which amounts to the same thing. Currently (in a later patch in the series) we are using iommu_flush_tlb_all() when unmapping, which is a bit of a big hammer. Although I think we could be a bit more clever and do the TLB ops on the GPU (since the GPU knows if pagetables we are unmapping from are in-use and could skip the TLB ops otherwise). On the topic, if we are using unique ASID values per set of pagetables, how expensive is tlb invalidate for an ASID that has no entries in the TLB? BR, -R > > Robin. > > > Signed-off-by: Jordan Crouse <jcrouse@...eaurora.org> > > --- > > > > include/linux/io-pgtable.h | 11 +++++++---- > > 1 file changed, 7 insertions(+), 4 deletions(-) > > > > diff --git a/include/linux/io-pgtable.h b/include/linux/io-pgtable.h > > index 53d53c6c2be9..bbed1d3925ba 100644 > > --- a/include/linux/io-pgtable.h > > +++ b/include/linux/io-pgtable.h > > @@ -210,21 +210,24 @@ struct io_pgtable { > > > > static inline void io_pgtable_tlb_flush_all(struct io_pgtable *iop) > > { > > - iop->cfg.tlb->tlb_flush_all(iop->cookie); > > + if (iop->cfg.tlb) > > + iop->cfg.tlb->tlb_flush_all(iop->cookie); > > } > > > > static inline void > > io_pgtable_tlb_flush_walk(struct io_pgtable *iop, unsigned long iova, > > size_t size, size_t granule) > > { > > - iop->cfg.tlb->tlb_flush_walk(iova, size, granule, iop->cookie); > > + if (iop->cfg.tlb) > > + iop->cfg.tlb->tlb_flush_walk(iova, size, granule, iop->cookie); > > } > > > > static inline void > > io_pgtable_tlb_flush_leaf(struct io_pgtable *iop, unsigned long iova, > > size_t size, size_t granule) > > { > > - iop->cfg.tlb->tlb_flush_leaf(iova, size, granule, iop->cookie); > > + if (iop->cfg.tlb) > > + iop->cfg.tlb->tlb_flush_leaf(iova, size, granule, iop->cookie); > > } > > > > static inline void > > @@ -232,7 +235,7 @@ io_pgtable_tlb_add_page(struct io_pgtable *iop, > > struct iommu_iotlb_gather * gather, unsigned long iova, > > size_t granule) > > { > > - if (iop->cfg.tlb->tlb_add_page) > > + if (iop->cfg.tlb && iop->cfg.tlb->tlb_add_page) > > iop->cfg.tlb->tlb_add_page(gather, iova, granule, iop->cookie); > > } > > > > > _______________________________________________ > Freedreno mailing list > Freedreno@...ts.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/freedreno
Powered by blists - more mailing lists