On Wed, Oct 25, 2023 at 04:56:22PM +0200, David Hildenbrand wrote: > On 25.10.23 07:14, Ethan Chen wrote: > > IOMMU have size information during translation. > > > > Can you add some more information why we would want this and how the backend > can do "better" things with the size at hand? > With size information, IOMMU can reject a memory access which is patially in valid region.
Currently translation function limit memory access size with a mask, so the valid part of access will success. My target is to detect partially hit and reject whole access. Translation function cannot detect partially hit because it lacks size information. > Note that I was not CCed on the cover letter. > > > Signed-off-by: Ethan Chen <[email protected]> > > --- > > include/exec/memory.h | 19 +++++++++++++++++++ > > 1 file changed, 19 insertions(+) > > > > diff --git a/include/exec/memory.h b/include/exec/memory.h > > index 9087d02769..5520b7c8c0 100644 > > --- a/include/exec/memory.h > > +++ b/include/exec/memory.h > > @@ -396,6 +396,25 @@ struct IOMMUMemoryRegionClass { > > */ > > IOMMUTLBEntry (*translate)(IOMMUMemoryRegion *iommu, hwaddr addr, > > IOMMUAccessFlags flag, int iommu_idx); > > + /** > > + * @translate_size: > > + * > > + * Return a TLB entry that contains a given address and size. > > + * > > + * @iommu: the IOMMUMemoryRegion > > + * > > + * @hwaddr: address to be translated within the memory region > > + * > > + * @size: size to indicate the scope of the entire transaction > > + * > > + * @flag: requested access permission > > + * > > + * @iommu_idx: IOMMU index for the translation > > + */ > > + IOMMUTLBEntry (*translate_size)(IOMMUMemoryRegion *iommu, hwaddr addr, > > + hwaddr size, IOMMUAccessFlags flag, > > + int iommu_idx); > > + > > /** > > * @get_min_page_size: > > * > > -- > Cheers, > > David / dhildenb > Thanks, Ethan Chen
