Thread (99 messages) 99 messages, 6 authors, 2021-05-11

Re: [PATCH 09/16] dma-direct: Support PCI P2PDMA pages in dma-direct map_sg

From: Logan Gunthorpe <logang@deltatee.com>
Date: 2021-05-03 17:07:57
Also in: linux-iommu, linux-mm, linux-nvme, linux-pci, lkml

Oops missed a comment:

On 2021-05-02 5:28 p.m., John Hubbard wrote:
quoted
  int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, int nents,
  		enum dma_data_direction dir, unsigned long attrs)
  {
-	int i;
+	struct pci_p2pdma_map_state p2pdma_state = {};
Is it worth putting this stuff on the stack--is there a noticeable
performance improvement from caching the state? Because if it's
invisible, then simplicity is better. I suspect you're right, and that
it *is* worth it, but it's good to know for real.
I haven't measured it (it would be hard to measure), but I think it's
fairly clear here. Without the state, xa_load() would need to be called
on *every* page in an SGL that maps only P2PDMA memory from one device.
With the state, it only needs to be called once. xa_load() is cheap, but
it is not that cheap.

There's essentially the same optimization in get_user_pages for
ZONE_DEVICE pages. So, if it is necessary there, it should be necessary
here.

Logan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help