amdgpu driver fails to initialize on ppc64le in 7.0-rc1 and newer
Dan Horák
dan at danny.cz
Thu Mar 26 21:29:20 AEDT 2026
Hi Ritesh,
On Wed, 25 Mar 2026 23:12:16 +0530
Ritesh Harjani (IBM) <ritesh.list at gmail.com> wrote:
> Gaurav Batra <gbatra at linux.ibm.com> writes:
>
> > Hello Ritesh
> >
> > I think, what you are proposing to add dev->bus_dma_limit in the check
> > might work. In the case of PowerNV, this is not set, but
> > dev->dma_ops_bypass is set. So, for PowerNV, it will fall back to how it
> > was before.
> >
> > Also, since these both are set in LPAR mode, the current patch as-is
> > will work.
> >
> > Dan, can you please try Ritesh proposed fix on your PowerNV box? I am
> > not able to lay my hands on a PowerNV box yet.
> >
>
> It would be this diff then. Note, I have only compile tested it.
>
> diff --git a/arch/powerpc/kernel/dma-iommu.c b/arch/powerpc/kernel/dma-iommu.c
> index 73e10bd4d56d..8b4de508d2eb 100644
> --- a/arch/powerpc/kernel/dma-iommu.c
> +++ b/arch/powerpc/kernel/dma-iommu.c
> @@ -67,7 +67,7 @@ bool arch_dma_unmap_sg_direct(struct device *dev, struct scatterlist *sg,
> }
> bool arch_dma_alloc_direct(struct device *dev)
> {
> - if (dev->dma_ops_bypass)
> + if (dev->dma_ops_bypass && dev->bus_dma_limit)
> return true;
>
> return false;
> @@ -75,7 +75,7 @@ bool arch_dma_alloc_direct(struct device *dev)
>
> bool arch_dma_free_direct(struct device *dev, dma_addr_t dma_handle)
> {
> - if (!dev->dma_ops_bypass)
> + if (!dev->dma_ops_bypass || !dev->bus_dma_limit)
> return false;
>
> return is_direct_handle(dev, dma_handle);
this seems to fix the amdgpu initialization, full kernel log available
as https://fedora.danny.cz/tmp/kernel-7.0-rc5.log
Tested-by: Dan Horák <dan at danny.cz>
Dan
More information about the Linuxppc-dev
mailing list