On Tue, Sep 29, 2020 at 04:44:24PM +0800, Sherry Sun wrote: > The device page and vring should use consistent memory which are > allocated by dma_alloc_coherent api, when user space wants to get its > physical address, virt_to_phys cannot be used, should simply return the > saved device page dma address by get_dp_dma callback and the vring dma > address saved in mic_vqconfig. More importantly you can't just all virt_to_phys on a return value from dma_alloc_coherent, so this needs to be folded into patch 1. > if (!offset) { > - *pa = virt_to_phys(vpdev->hw_ops->get_dp(vpdev)); > + if (vpdev->hw_ops->get_dp_dma) > + *pa = vpdev->hw_ops->get_dp_dma(vpdev); > + else { > + dev_err(vop_dev(vdev), "can't get device page physical address\n"); > + return -EINVAL; > + } I don't think we need the NULL check here. Wouldn't it also make sense to return the virtual and DMA address from ->get_dp instead of adding another method?