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@xxxxxxxxxx> 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 > > +}