On Thu, Aug 8, 2019 at 5:18 PM Matthew Auld <matthew.william.auld@xxxxxxxxx> wrote: > > On Thu, 8 Aug 2019 at 23:29, Rob Herring <robh@xxxxxxxxxx> wrote: > > > > Up until now, a single shared GPU address space was used. This is not > > ideal as there's no protection between processes and doesn't work for > > supporting the same GPU/CPU VA feature. Most importantly, this will > > hopefully mitigate Alyssa's fear of WebGL, whatever that is. > > > > Most of the changes here are moving struct drm_mm and struct > > panfrost_mmu objects from the per device struct to the per FD struct. > > The critical function is panfrost_mmu_as_get() which handles allocating > > and switching the h/w address spaces. > > > > Cc: Tomeu Vizoso <tomeu.vizoso@xxxxxxxxxxxxx> > > Cc: David Airlie <airlied@xxxxxxxx> > > Cc: Daniel Vetter <daniel@xxxxxxxx> > > Cc: Robin Murphy <robin.murphy@xxxxxxx> > > Cc: Steven Price <steven.price@xxxxxxx> > > Cc: Alyssa Rosenzweig <alyssa.rosenzweig@xxxxxxxxxxxxx> > > Signed-off-by: Rob Herring <robh@xxxxxxxxxx> > > --- > > This depends on madvise support (now in drm-misc) and the heap/no-exec > > series (just the rework). Seeems to be working pretty well for me, but > > more testing would be helpful. I've run multiple 'glmark2-es2-drm > > --off-screen' instances and Gnome Shell. Running more than 8 clients (at > > least for T860) will hit the address space switch code paths. > > > > Rob > > > > drivers/gpu/drm/panfrost/TODO | 4 - > > drivers/gpu/drm/panfrost/panfrost_device.c | 2 + > > drivers/gpu/drm/panfrost/panfrost_device.h | 24 ++- > > drivers/gpu/drm/panfrost/panfrost_drv.c | 31 ++- > > drivers/gpu/drm/panfrost/panfrost_gem.c | 15 +- > > drivers/gpu/drm/panfrost/panfrost_gem.h | 3 + > > drivers/gpu/drm/panfrost/panfrost_job.c | 12 +- > > drivers/gpu/drm/panfrost/panfrost_mmu.c | 220 +++++++++++++++------ > > drivers/gpu/drm/panfrost/panfrost_mmu.h | 8 + > > 9 files changed, 239 insertions(+), 80 deletions(-) > > [snip] > > > @@ -413,7 +414,28 @@ panfrost_open(struct drm_device *dev, struct drm_file *file) > > panfrost_priv->pfdev = pfdev; > > file->driver_priv = panfrost_priv; > > > > - return panfrost_job_open(panfrost_priv); > > + spin_lock_init(&panfrost_priv->mm_lock); > > + > > + /* 4G enough for now. can be 48-bit */ > > + panfrost_priv->mm.color_adjust = panfrost_drm_mm_color_adjust; > > + drm_mm_init(&panfrost_priv->mm, SZ_32M >> PAGE_SHIFT, (SZ_4G - SZ_32M) >> PAGE_SHIFT); > > Drive-by-comment: drm_mm_init will trample your color_adjust. Intentional? No, thanks. I must have switched them at some point. Rob _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel