On Thu, Feb 13, 2025 at 12:28:49PM -0800, Jacob Pan wrote:
Hi Nicolin,
On Sat, 8 Feb 2025 01:02:34 -0800 Nicolin Chen nicolinc@nvidia.com wrote:
-static inline void msi_desc_set_iommu_cookie(struct msi_desc *desc,
const void
*iommu_cookie) +/**
- iommu_dma_compose_msi_msg() - Apply translation to an MSI message
- @desc: MSI descriptor prepared by iommu_dma_prepare_msi()
- @msg: MSI message containing target physical address
- */
Is it IOVA not PA?
This is moved from dma-iommu.c so we didn't change that.
And I think it's correct to say "target physical address" as the irqchip driver does pass in a PA via @msg.
Then iommu_dma_compose_msi_msg() kind of reverse-translates that, overwriting the msg with the "IOVA" from @desc.
Thanks Nicolin
+static inline void iommu_dma_compose_msi_msg(struct msi_desc *desc,
struct msi_msg *msg)
{ -} +#ifdef CONFIG_IRQ_MSI_IOMMU
- if (desc->iommu_msi_page_shift) {
u64 msi_iova = desc->iommu_msi_iova
<< desc->iommu_msi_page_shift;
msg->address_hi = upper_32_bits(msi_iova);
msg->address_lo = lower_32_bits(msi_iova) |
(msg->address_lo &
((1 <<
desc->iommu_msi_page_shift) - 1));
- }
#endif +}