On Thu, Jun 26, 2025 at 8:45 PM Leon Romanovsky <l...@kernel.org> wrote: > > On Thu, Jun 26, 2025 at 07:43:06PM +0200, Alexander Potapenko wrote: > > On Wed, Jun 25, 2025 at 3:19 PM Leon Romanovsky <l...@kernel.org> wrote: > > > > > > From: Leon Romanovsky <leo...@nvidia.com> Acked-by: Alexander Potapenko <gli...@google.com>
> > > > Hi Leon, > > > > > > > > Convert the KMSAN DMA handling function from page-based to physical > > > address-based interface. > > > > > > The refactoring renames kmsan_handle_dma() parameters from accepting > > > (struct page *page, size_t offset, size_t size) to (phys_addr_t phys, > > > size_t size). > > > > Could you please elaborate a bit why this is needed? Are you fixing > > some particular issue? > > It is soft of the fix and improvement at the same time. > Improvement: > It allows direct call to kmsan_handle_dma() without need > to convert from phys_addr_t to struct page for newly introduced > dma_map_phys() routine. > > Fix: > It prevents us from executing kmsan for addresses that don't have struct page > (for example PCI_P2PDMA_MAP_THRU_HOST_BRIDGE pages), which we are doing > with original code. > > dma_map_sg_attrs() > -> __dma_map_sg_attrs() > -> dma_direct_map_sg() > -> PCI_P2PDMA_MAP_THRU_HOST_BRIDGE and nents > 0 > -> kmsan_handle_dma_sg(); > -> kmsan_handle_dma(g_page(item) <---- this is "fake" page. > > We are trying to build DMA API that doesn't require struct pages. Thanks for clarifying that! > > KMSAN only works on 64-bit systems, do we actually have highmem on any of > > these? > > I don't know, but the original code had this check: > 344 if (PageHighMem(page)) > 345 return; > > Thanks Ouch, I overlooked that, sorry! I spent a while trying to understand where this code originated from, and found the following discussion: https://lore.kernel.org/all/20200327170647.ga22...@lst.de/ It's still unclear to me whether we actually need this check, because with my config it doesn't produce any code. But I think this shouldn't be blocking your patch, I'd rather make a follow-up fix.