Subject: Re: [PATCH v2 00/21] Refine memblock API

From: Mike Rapoport <[email-masked]>
Date: Thu, 3 Oct 2019 14:30:10 +0300

On Thu, Oct 03, 2019 at 09:49:14AM +0100, Russell King - ARM Linux admin wrote:
> On Thu, Oct 03, 2019 at 08:34:52AM +0300, Mike Rapoport wrote:
> > (trimmed the CC)
> > 
> > On Wed, Oct 02, 2019 at 06:14:11AM -0500, Adam Ford wrote:
> > > On Wed, Oct 2, 2019 at 2:36 AM Mike Rapoport <[email-masked]> wrote:
> > > >
> > > 
> > > Before the patch:
> > > 
> > > # cat /sys/kernel/debug/memblock/memory
> > >    0: 0x10000000..0x8fffffff
> > > # cat /sys/kernel/debug/memblock/reserved
> > >    0: 0x10004000..0x10007fff
> > >   34: 0x2fffff88..0x3fffffff
> > > 
> > > 
> > > After the patch:
> > > # cat /sys/kernel/debug/memblock/memory
> > >    0: 0x10000000..0x8fffffff
> > > # cat /sys/kernel/debug/memblock/reserved
> > >    0: 0x10004000..0x10007fff
> > >   36: 0x80000000..0x8fffffff
> > 
> > I'm still not convinced that the memblock refactoring didn't uncovered an
> > issue in etnaviv driver.
> > 
> > Why moving the CMA area from 0x80000000 to 0x30000000 makes it fail?
> 
> I think you have that the wrong way round.

I'm relying on Adam's reports of working and non-working versions.
According to that etnaviv works when CMA area is at 0x80000000 and does not
work when it is at 0x30000000.

He also sent logs a few days ago [1], they also confirm that.

[1] https://lore.kernel.org/linux-mm/CAHCN7xJEvS2Si=M+BYtz+kY0M4NxmqDjiX9Nwq6_3GGBh3yg=[email-masked]/
 
> > BTW, the code that complained about "command buffer outside valid memory
> > window" has been removed by the commit 17e4660ae3d7 ("drm/etnaviv:
> > implement per-process address spaces on MMUv2"). 
> > 
> > Could be that recent changes to MMU management of etnaviv resolve the
> > issue?
> 
> The iMX6 does not have MMUv2 hardware, it has MMUv1.  With MMUv1
> hardware requires command buffers within the first 2GiB of physical
> RAM.

I've mentioned that patch because it removed the check for cmdbuf address
for MMUv1:

@@ -785,15 +768,7 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu)
                                  PAGE_SIZE);
        if (ret) {
                dev_err(gpu->dev, "could not create command buffer\n");
-               goto unmap_suballoc;
-       }
-
-       if (!(gpu->identity.minor_features1 & chipMinorFeatures1_MMU_VERSION) &&
-           etnaviv_cmdbuf_get_va(&gpu->buffer, &gpu->cmdbuf_mapping) > 0x80000000) {
-               ret = -EINVAL;
-               dev_err(gpu->dev,
-                       "command buffer outside valid memory window\n");
-               goto free_buffer;
+               goto fail;
        }
 
        /* Setup event management */

I really don't know how etnaviv works, so I hoped that people who
understand it would help.
 
> I've reported the problem previously but there was no resolution,
> other than pointing the blame at CMA.
> 
> https://lists.freedesktop.org/archives/dri-devel/2019-June/thread.html#223516
> 
> -- 
> RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
> FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up
> According to speedtest.net: 11.9Mbps down 500kbps up

-- 
Sincerely yours,
Mike.

_______________________________________________
linux-arm-kernel mailing list
[email-masked]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel