Message ID | 20190417135023.26977-1-l.stach@pengutronix.de (mailing list archive) |
---|---|
Headers | show |
Series | per-process address spaces for MMUv2 | expand |
Hi Lucas, On Wed, Apr 17, 2019 at 03:50:15PM +0200, Lucas Stach wrote: > > Hi all, > > v1 cover letter: > > the following patches finally implement one of the longstanding TODO > items in the etnaviv driver: per-process address spaces. They are only > enabled for MMUv2, as switching the MMU context on MMUv1 would require > a full stop of the FE, which I deemed too expensive to do on potentially > every submitted commandstream. > > For now this only provides better isolation between GPU clients, but it > is also a big step in the direction of supporting softpin. Softpin will > later be used by GC7000 userspace drivers to deal with texture descriptors > without the need to add even more relocation interfaces to the etnaviv > UAPI. > > The changes are big and pretty disruptive, so I acknowledge that they > aren't prime targets for a quick review, but I would appreciate a > second pairs of eyes on them. > > Changes since v1: > - fixed an issue where a debugsfs read could run into a kernel NULL > ptr dereference due to no current MMU context > - fixed an issue where the current MMU context could be destroyed > due to the DRM client going away, while it is still in use by > an active GPU job > - more extensive testing on GC880, GC2000, GC3000 and GC7000 I gave this series a test on GC7000 and it looks good. I'll do some more testing over the next week. Cheers, -- Guido
Hi Lucas, On Fri, May 03, 2019 at 01:10:26PM +0200, Guido Günther wrote: > Hi Lucas, > On Wed, Apr 17, 2019 at 03:50:15PM +0200, Lucas Stach wrote: > > > > Hi all, > > > > v1 cover letter: > > > > the following patches finally implement one of the longstanding TODO > > items in the etnaviv driver: per-process address spaces. They are only > > enabled for MMUv2, as switching the MMU context on MMUv1 would require > > a full stop of the FE, which I deemed too expensive to do on potentially > > every submitted commandstream. > > > > For now this only provides better isolation between GPU clients, but it > > is also a big step in the direction of supporting softpin. Softpin will > > later be used by GC7000 userspace drivers to deal with texture descriptors > > without the need to add even more relocation interfaces to the etnaviv > > UAPI. > > > > The changes are big and pretty disruptive, so I acknowledge that they > > aren't prime targets for a quick review, but I would appreciate a > > second pairs of eyes on them. > > > > Changes since v1: > > - fixed an issue where a debugsfs read could run into a kernel NULL > > ptr dereference due to no current MMU context > > - fixed an issue where the current MMU context could be destroyed > > due to the DRM client going away, while it is still in use by > > an active GPU job > > - more extensive testing on GC880, GC2000, GC3000 and GC7000 > > I gave this series a test on GC7000 and it looks good. I'll do some more > testing over the next week. I gave this some more testing and it works nicely. One thing i noticed though are occasional GPU hangs on compositor startup like: [ 58.929906] etnaviv-gpu 38000000.gpu: MMU fault status 0x00000001 [ 58.936021] etnaviv-gpu 38000000.gpu: MMU 0 fault addr 0x00484b80 [ 59.972655] etnaviv-gpu 38000000.gpu: recover hung GPU! but these only happen with GALLIUM_DDEBUG=always. I can't reproduce them when either - dropping this patch series - disabling GALLIUM_DDEBUG I see if I can figure out some more details. Cheers, -- Guido