On Thu, Aug 14, 2025 at 09:13:16AM -0300, Jason Gunthorpe wrote: > On Wed, Aug 13, 2025 at 06:07:18PM +0300, Leon Romanovsky wrote: > > > > /* Helper function to handle DMA data transfers. */ > > > > -void kmsan_handle_dma(struct page *page, size_t offset, size_t size, > > > > +void kmsan_handle_dma(phys_addr_t phys, size_t size, > > > > enum dma_data_direction dir) > > > > { > > > > u64 page_offset, to_go, addr; > > > > + struct page *page; > > > > + void *kaddr; > > > > > > > > - if (PageHighMem(page)) > > > > + if (!pfn_valid(PHYS_PFN(phys))) > > > > return; > > > > > > Not needed, the caller must pass in a phys that is kmap > > > compatible. Maybe just leave a comment. FWIW today this is also not > > > checking for P2P or DEVICE non-kmap struct pages either, so it should > > > be fine without checks. > > > > It is not true as we will call to kmsan_handle_dma() unconditionally in > > dma_map_phys(). The reason to it is that kmsan_handle_dma() is guarded > > with debug kconfig options and cost of pfn_valid() can be accommodated > > in that case. It gives more clean DMA code. > > Then check attrs here, not pfn_valid.
attrs are not available in kmsan_handle_dma(). I can add it if you prefer. > > > So let's keep this patch as is. > > Still need to fix the remarks you clipped, do not check PageHighMem > just call kmap_local_pfn(). All thie PageHighMem stuff is new to this > patch and should not be here, it is the wrong way to use highmem. Sure, thanks > > Jason >