On Thu, Aug 14, 2025 at 04:31:06PM +0300, Leon Romanovsky wrote: > On Thu, Aug 14, 2025 at 09:44:48AM -0300, Jason Gunthorpe wrote: > > On Thu, Aug 14, 2025 at 03:35:06PM +0300, Leon Romanovsky wrote: > > > > Then check attrs here, not pfn_valid. > > > > > > attrs are not available in kmsan_handle_dma(). I can add it if you prefer. > > > > That makes more sense to the overall design. The comments I gave > > before were driving at a promise to never try to touch a struct page > > for ATTR_MMIO and think this should be comphrensive to never touching > > a struct page even if pfnvalid. > > > > > > > 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 > > > > I am wondering if there is some reason it was written like this in the > > first place. Maybe we can't even do kmap here.. So perhaps if there is > > not a strong reason to change it just continue to check pagehighmem > > and fail. > > > > if (!(attrs & ATTR_MMIO) && PageHighMem(phys_to_page(phys))) > > return; > > Does this version good enough? There is no need to call to > kmap_local_pfn() if we prevent PageHighMem pages.
Why make the rest of the changes though, isn't it just: if (PageHighMem(page)) return; Becomes: if (attrs & ATTR_MMIO)) return; page = phys_to_page(phys); if (PageHighMem(page)) return; Leave the rest as is? Jason