On Fri, 2019-08-09 at 14:04 +0200, Lucas Stach wrote: > This builds on top of the MMU contexts introduced earlier. Instead of having > one context per GPU core, each GPU client receives its own context. > > On MMUv1 this still means a single shared pagetable set is used by all > clients, but on MMUv2 there is now a distinct set of pagetables for each > client. As the command fetch is also translated via the MMU on MMUv2 the > kernel command ringbuffer is mapped into each of the client pagetables. > > As the MMU context switch is a bit of a heavy operation, due to the needed > cache and TLB flushing, this patch implements a lazy way of switching the > MMU context. The kernel does not have its own MMU context, but reuses the > last client context for all of its operations. This has some visible impact, > as the GPU can now only be started once a client has submitted some work and > we got the client MMU context assigned. Also the MMU context has a different > lifetime than the general client context, as the GPU might still execute the > kernel command buffer in the context of a client even after the client has > completed all GPU work and has been terminated. Only when the GPU is runtime > suspended or switches to another clients MMU context is the old context > freed up. > > Signed-off-by: Lucas Stach <l.stach@xxxxxxxxxxxxxx> Reviewed-by: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> regards Philipp _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel