On Thu, Nov 20, 2025 at 08:04:37AM +0000, Tian, Kevin wrote:
From: Jason Gunthorpe jgg@nvidia.com Sent: Saturday, November 8, 2025 12:50 AM
+static int pfn_reader_fill_dmabuf(struct pfn_reader_dmabuf *dmabuf,
struct pfn_batch *batch,unsigned long start_index,unsigned long last_index)+{
- unsigned long start = dmabuf->start_offset + start_index * PAGE_SIZE;
- /*
* This works in PAGE_SIZE indexes, if the dmabuf is sliced and* starts/ends at a sub page offset then the batch to domain code will* adjust it.*/dmabuf->start_offset comes from pages->dmabuf.start, which is initialized as:
pages->dmabuf.start = start - start_byte;
so it's always page-aligned. Where is the sub-page offset coming from?
I need to go over this again to check it, this sub-page stuff is a bit convoluted. start_offset should include the sub page offset here..
@@ -1687,6 +1737,12 @@ static void __iopt_area_unfill_domain(struct iopt_area *area,
lockdep_assert_held(&pages->mutex);
- if (iopt_is_dmabuf(pages)) {
iopt_area_unmap_domain_range(area, domain, start_index,last_index);return;- }
this belongs to patch3?
This is part of programming the domain with the dmabuf, the patch3 was about the revoke which is a slightly different topic though they are both similar.
Thanks, Jason
linaro-mm-sig@lists.linaro.org