Re: pci segments/domains

Ivan Kokshaysky (ink@jurassic.park.msu.ru)
Fri, 17 May 2002 16:26:21 +0400


On Fri, May 17, 2002 at 04:41:57AM -0700, David S. Miller wrote:
> So, as a (real life) example, suppose you wanted to portably point
> your BTTV card at the framebuffer of a video card, you'd do
> something like:
>
> res = fb_pdev->resource[1];
> res_off = OFFSET_INTO_FRAMEBUFFER;
> bttv_dma_addr = pci_to_pci_map_single(struct pci_dev *bttv_pdev,
> struct pci_dev *fb_pdev,
> res, res_off, size,
> PCI_DMA_FROMDEVICE);

Exactly. And this function will look like this

if (domain(bttv_pdev) == domain(fb_pdev))
return arch_res_to_bus(res->start) + res_off;
else if (!interdomain_dma_supported)
return 0;
else
return some_iommu_magic(...);

BTW, I don't see anymore why pci domain info should be exposed to
users at all. :-)

Ivan.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/