All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lucas Stach <l.stach@pengutronix.de>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: DRI mailing list <dri-devel@lists.freedesktop.org>,
	Sascha Hauer <kernel@pengutronix.de>
Subject: Re: [PATCH RFC 003/111] staging: etnaviv: add drm driver
Date: Tue, 07 Apr 2015 14:52:31 +0200	[thread overview]
Message-ID: <1428411151.2811.78.camel@pengutronix.de> (raw)
In-Reply-To: <20150407104602.GF12732@n2100.arm.linux.org.uk>

Am Dienstag, den 07.04.2015, 11:46 +0100 schrieb Russell King - ARM
Linux:
> On Tue, Apr 07, 2015 at 11:20:10AM +0200, Lucas Stach wrote:
> > Am Dienstag, den 07.04.2015, 11:04 +0200 schrieb Christian Gmeiner:
> > > What role does GPU power management plays here? For the context switching
> > > it could make sense. But for the 2d core the context is so small that
> > > it does not
> > > hurt to send it with every command stream. For the 3d core it is much
> > > bigger, but
> > > this could be done completely in the kernel. Or I am wrong here?
> >
> > If you power down the GPU you loose the context. You are right that we
> > could save/restore the context from kernel space, but that is really
> > taking a toll on CPU time. It is much better to have userspace provide a
> > context buffer to get the GPU in the expected state, as you then only
> > need to splice this into the execution stream to restore the context
> > instead of pushing it with the CPU. Reading back the context on every
> > switch will kill any performance.
> 
> For both Vivante and Etnaviv, it's already the accepted way that 2D
> cores need the full context loaded for each operation, and the few
> userspace bits we have comply with that today.
> 
> With Etnaviv DRM, we already must ensure that the command buffer
> submitted to the GPU contains all references to buffer objects to be
> operated on by that command block - or to put it another way, we
> need to ensure that each GPU operation is complete inside the command
> submitted buffer.
> 
Right that's one thing that I really hadn't thought through until now.
So this means we must at least emit all states that contain relocs,
which may further reduce the possibility to do minimal state updates.
Urghs.

> The 2D core is rather messy as far as which bits of state need to be
> preserved, especially when you consider that you have the 2D drawing
> and blit ops, as well as a video rasteriser which shares some state
> registers for the destination, but uses different state registers for
> the source.  It quickly becomes rather messy to keep track of the
> GPU state.
> 
> In any case, the amount of state which needs to be loaded for 2D
> operations is small, so I think it really makes sense to require
> userspace to only submit complete, fully described 2D operations
> within a single command buffer.
> 
> > > I tend to get things up and running and do the optimization step if it
> > > is really worth.
> > > Also I like stuff to be stupid simple. There is an other interesting
> > > fact: flushing the
> > > iommuv2 is done via command stream and we need to reserve more space
> > > for the tail of the used bo. So if we reserve some space in the
> > > command buffer, we have other space limits for the tail depending on
> > > used hardware.
> 
> I would much rather we only appended LINK commands to the submitted
> command BO, and added whatever GPU management commands to either the
> ring buffer (which is easy) or a separate GPU management command
> buffer.  Given that I'm already doing this to flush the V1 MMU in
> the kernel ring buffer, this is the option I prefer.
> 
> > You may be aware that once this is upstream there is no easy way to
> > change the userspace interface anymore. So whatever is left out now is
> > likely to be very hard to reintroduce later.
> 
> Indeed - we need to agree what the submited command buffer will contain,
> and how much space to enforce at the end of the command buffer.
> 
> The minimum space is one LINK command, which is 8 bytes.  As long as we
> can add a LINK command, we can redirect the GPU's execution elsewhere to
> do whatever other operations we want to do.
> 
> I think the only danger there is if Vivante produce a GPU with 64-bit
> addressing for the command stream - if they do, commands like LINK will
> most likely change format, and possibly would be a different number of
> bits.
> 
> The simple solution to this would be to introduce into the API a
> property (like is done for the feature bits) which tells userspace the
> minimum number of bytes which must be reserved at the end of the command
> buffer.  If we need to change that in the future, we have the flexibility
> to do so.
> 

Yes, that seems to be the straight forward solution. Export a property
from the kernel to signal the userspace how much free space is needed at
the end of the buffer and reject any buffer violating this.

Though I agree that we should not overuse this and try to do as much as
possible outside of the user command streams.

> > What' the problem with having a command buffer in the kernel to flush
> > the MMUv2? Why do you need to insert those commands into the userspace
> > command stream?
> 
> That's certainly where I would put it.
> 
> > > >> > +#define ETNA_SUBMIT_BO_READ             0x0001
> > > >> > +#define ETNA_SUBMIT_BO_WRITE            0x0002
> > > >> > +struct drm_etnaviv_gem_submit_bo {
> > > >> > +       uint32_t flags;          /* in, mask of ETNA_SUBMIT_BO_x */
> > > >> > +       uint32_t handle;         /* in, GEM handle */
> > > >> > +       uint64_t presumed;       /* in/out, presumed buffer address */
> > > >>
> > > >> presumed support should never hit etnaviv driver.
> > > >>
> > > > As stated in the cover letter I think presumed support will become
> > > > possible with MMUv2 and may provide a good optimization there. So I
> > > > would rather leave this in here and just ignore it for now.
> 
> Could we rename this member 'reserved' if it's something that we think
> we're going to implement in the near future - but also please add a
> flag which indicates whether the presumed address is present or not.
> Zero _can_ be a valid address too!
> 
> > A presumed address can not be a physical address, but is an address in
> > the VM context of that process. Nouveau uses the same thing on NV50+
> > where you have a proper MMU to protect all GPU accesses. I would expect
> > the same thing to be true for Vivante MMUv2.
> 
> I know that there are very strong opinions about exposing _physical_
> addresses to userspace (David, for example, doesn't like it one bit.)
> If it's a GPU address, then that's less useful to userspace.
> 
A GPU address with per-process pagetables and full translation support
on the GPU MMU is as good as a CPU virtual address. I wouldn't expect
any objections against those. MMUv1 is more like a GART window and
doesn't provide full translation, so we shouldn't trust userspace with
MMUv1.

> However, that data has to be treated as suspect coming from userspace.
> 
> You still need to look up the buffer object in the kernel, so that you
> can manage the buffer object's state.  If you have the buffer object's
> state, then you most likely have easy access to its GPU mapping, which
> means you can retrieve the GPU address, which you can then use to
> validate the address passed from userspace... but if you've found the
> GPU address via this method, you haven't saved anything.
> 
> An alternative approach would be to lookup the presumed address in
> (eg) a rbtree to locate the buffer object's state, which would save
> the lookup by object ID, but does this save anything by doing that,
> does it add complexity and additional kernel processing?
> 
> I'm not sure.
> 
I'm not sure about this. With MMUv2 and per-process pagetables there
really is no need to validate the addresses from userspace as each
process is only able to shoot itself in the foot.

> > > Keep it stupid simple. In my libdrm repo, which you hopefully know, I
> > > have implemented the buffer handling from the original libetnaviv. We
> > > allocate 5 command buffers of a defined size and rotate through them.
> > > During command buffer building we reserve space in the stream. if
> > > there is not enough space we flush the current buffer stream and
> > > switch to the next and us it. Then there is a way to explicit flush
> > > a command buffer.
> > > 
> > > For more details see:
> > > https://github.com/laanwj/etna_viv/tree/master/src/etnaviv
> > > https://github.com/austriancoder/libdrm
> > 
> > Same argument as above really. We need at least the context buffer.
> 
> An important question is whether the context buffer, built by userspace,
> should be submitted as one of these command buffers, or kept separate so
> the kernel can keep track of it and decide whether or not to use it
> according to the state it's tracking.
> 
> Another point to bring up here is about how command buffers are submitted.
> 
> Consider this scenario:
> 
> - Userspace creates a command buffer, and arranges for the initial
>   commands to be time consuming (eg, long WAIT commands.)  It fills the
>   rest of the buffer with dummy LOAD STATE commands.
> - Userspace submits this, the kernel validates the command buffer, and
>   submits it to the GPU.  The GPU starts executing the buffer.
> - Userspace, which still has access to the command buffer, overwrites
>   the LOAD STATE commands with malicious GPU commands.
> - GPU executes malicious GPU commands.
> 
> This brings up several questions:
> 
> 1. Do we care about this?
> 2. If we do care, should we insist that a command buffer is not mapped
>    in userspace when it is submitted, and prevent an in-use command
>    buffer being mapped?
> 3. If we don't care, what's the point of validating the supplied command
>    buffer?
> 
> (2) would be quite an API change over what we have today, and introduce
> an amount of overhead, though something which could be handled in the
> userspace library (eg, if we're modelling on etnaviv's five command
> buffer model, we could copy the command buffer immediately before
> submission.)
> 
> Given this, I think (3) has some value irrespective of the outcome of
> (1) as it gives us a way to catch silly errors from userspace before
> they hit the GPU and become a problem.
> 
I think we should care.
I fail to see how this would have to be an API change. Why can't we just
hand out buffers to userspace like we do now and copy their contents
into an internal buffer as we validate and apply relocs?
This model may be beneficial even without the security benefits, as we
could hand out cached buffers to userspace, so we can read them more
efficiently for validation and stuff things into an internal
write-combined buffer.

Regards,
Lucas
-- 
Pengutronix e.K.             | Lucas Stach                 |
Industrial Linux Solutions   | http://www.pengutronix.de/  |

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2015-04-07 12:52 UTC|newest]

Thread overview: 181+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-02 15:29 [PATCH RFC 000/111] Etnaviv DRM driver Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 001/111] of: Add vendor prefix for Vivante Corporation Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 002/111] staging: etnaviv: add devicetree bindings Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 003/111] staging: etnaviv: add drm driver Lucas Stach
2015-04-05 19:26   ` Christian Gmeiner
2015-04-07  7:35     ` Lucas Stach
2015-04-07  9:04       ` Christian Gmeiner
2015-04-07  9:20         ` Lucas Stach
2015-04-07  9:40           ` Christian Gmeiner
2015-04-07  9:47             ` Lucas Stach
2015-04-07  9:58               ` Christian Gmeiner
2015-04-07 10:27                 ` Lucas Stach
2015-04-08  0:13                   ` Dave Airlie
2015-04-08  9:02                     ` Lucas Stach
2015-04-07 10:46           ` Russell King - ARM Linux
2015-04-07 12:52             ` Lucas Stach [this message]
2015-04-07 23:56               ` Jerome Glisse
2015-04-02 15:29 ` [PATCH RFC 004/111] staging: etnaviv: import new headers Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 005/111] staging: etnaviv: remove IOMMUv2 stubs Lucas Stach
2015-04-02 17:14   ` Robert Nelson
2015-04-02 17:41     ` Lucas Stach
2015-04-05 18:32   ` Christian Gmeiner
2015-04-07  7:24     ` Lucas Stach
2015-04-07  8:13       ` Christian Gmeiner
2015-04-02 15:29 ` [PATCH RFC 006/111] staging: etnaviv: fix oops on unbind Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 007/111] staging: etnaviv: fix oops in timer subsystem caused by hangcheck timer Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 008/111] staging: etnaviv: fix etnaviv_add_components() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 009/111] staging: etnaviv: fix etnaviv_hw_reset() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 010/111] staging: etnaviv: fix etnaviv gpu debugfs output Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 011/111] staging: etnaviv: fix fence implementation Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 012/111] staging: etnaviv: fix buffer dumping code Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 013/111] staging: etnaviv: fix ring buffer overflow check Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 014/111] staging: etnaviv: fix cleanup of imported dmabufs Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 015/111] staging: etnaviv: fix printk formats Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 016/111] staging: etnaviv: validation: ensure space for the LINK command Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 017/111] staging: etnaviv: validation: improve command buffer size checks Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 018/111] staging: etnaviv: validation: improve relocation validation Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 019/111] staging: etnaviv: fix sparse warnings Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 020/111] staging: etnaviv: use devm_ioremap_resource() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 021/111] staging: etnaviv: respect the submission command offset Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 022/111] staging: etnaviv: add an offset for buffer dumping Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 023/111] staging: etnaviv: quieten down submission debugging Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 024/111] staging: etnaviv: fix multiple command buffer submission in etnaviv_buffer_queue() Lucas Stach
2015-04-05 18:36   ` Christian Gmeiner
2015-04-02 15:29 ` [PATCH RFC 025/111] staging: etnaviv: package up events into etnaviv_event struct Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 026/111] staging: etnaviv: track the last known GPU position Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 027/111] staging: etnaviv: ensure that ring buffer wraps Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 028/111] staging: etnaviv: fix checkpatch errors Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 029/111] staging: etnaviv: fix checkpatch warnings Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 030/111] staging: etnaviv: fix get_pages() failure path Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 031/111] staging: etnaviv: add gem operations structure to etnaviv objects Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 032/111] staging: etnaviv: convert prime import to use etnaviv_gem_ops Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 033/111] staging: etnaviv: convert shmem release " Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 034/111] staging: etnaviv: convert cmdbuf " Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 035/111] staging: etnaviv: move drm_gem_object_release() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 036/111] staging: etnaviv: ensure cleanup of reservation object Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 037/111] staging: etnaviv: clean up etnaviv_gem_free_object() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 038/111] staging: etnaviv: provide etnaviv_gem_new_private() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 039/111] staging: etnaviv: move msm_gem_import() etc to etnaviv_gem_prime.c Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 040/111] staging: etnaviv: clean up prime import Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 041/111] staging: etnaviv: convert get_pages()/put_pages() to take etnaviv_obj Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 042/111] staging: etnaviv: clean up etnaviv_gem_{get, put}_pages() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 043/111] staging: etnaviv: add gem get_pages() method Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 044/111] staging: etnaviv: fix DMA API usage Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 045/111] staging: etnaviv: add support to insert a MMU flush into GPU stream Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 046/111] staging: etnaviv: move GPU memory management into MMU Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 047/111] staging: etnaviv: publish and use mmu geometry Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 048/111] staging: etnaviv: mmuv1: ensure we unmap all entries Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 049/111] staging: etnaviv: move MMU setup and teardown code to etnaviv_mmu.c Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 050/111] staging: etnaviv: hack: bypass iommu with contiguous buffers Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 051/111] staging: etnaviv: implement round-robin GPU MMU allocation Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 052/111] staging: etnaviv: fix etnaviv_iommu_map_gem() return paths Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 053/111] staging: etnaviv: implement MMU reaping Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 054/111] staging: etnaviv: move scatterlist creation to etnaviv_gem_get_pages() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 055/111] staging: etnaviv: add userptr mapping support Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 056/111] staging: etnaviv: call the DRM device 'drm' Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 057/111] staging: etnaviv: clean up printk()s etc Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 058/111] staging: etnaviv: safely take down hangcheck Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 059/111] staging: etnaviv: move hangcheck disable to separate function Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 060/111] staging: etnaviv: stop the hangcheck timer mis-firing Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 061/111] staging: etnaviv: ensure that we retire all pending events Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 062/111] staging: etnaviv: ensure GPU reset times out Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 063/111] staging: etnaviv: add workarounds for GC320 on iMX6 Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 064/111] staging: etnaviv: increase iommu page table size to 512KiB Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 065/111] staging: etnaviv: allow non-DT use Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 066/111] staging: etnaviv: dump mmu allocations Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 067/111] staging: etnaviv: use definitions for constants Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 068/111] staging: etnaviv: fix fence wrapping for gem objects Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 069/111] staging: etnaviv: move scatterlist map/unmap Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 070/111] staging: etnaviv: remove presumption of BO addresses Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 071/111] staging: etnaviv: clean up etnaviv mmu scatterlist code Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 072/111] staging: etnaviv: "better" DMA API usage Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 073/111] staging: etnaviv: iommu: add a poisoned bad page Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 074/111] staging: etnaviv: validate user supplied command stream Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 075/111] staging: etnaviv: allow get_param without auth Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 076/111] staging: etnaviv: fix busy reporting Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 077/111] staging: etnaviv: fix event allocation failure path Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 078/111] staging: etnaviv: remove powerrail support Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 079/111] staging: etnaviv: NULL out stale pointers at unbind time Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 080/111] staging: etnaviv: move mutex around component_{un, }bind_all() Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 081/111] staging: etnaviv: move PM calls into bind/unbind callbacks Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 082/111] staging: etnaviv: separate out etnaviv gpu hardware initialisation Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 083/111] staging: etnaviv: add support to shutdown and restore the front end Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 084/111] staging: etnaviv: runtime PM: add initial support Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 085/111] staging: etnaviv: add support for offset physical memory Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 086/111] staging: etnaviv: allow to draw up to 256 rectangles in one draw call Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 087/111] staging: etnaviv: align command stream size to 64 bit Lucas Stach
2015-04-02 16:20   ` Russell King - ARM Linux
2015-04-02 16:29     ` Lucas Stach
2015-04-02 16:45       ` Russell King - ARM Linux
2015-04-02 16:49         ` Lucas Stach
2015-04-05 19:38         ` Christian Gmeiner
2015-04-02 15:30 ` [PATCH RFC 088/111] staging: etnaviv: correct instruction count for GC2000 and GC880 Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 089/111] staging: etnaviv: reconfigure bus mapping on GC2000 Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 090/111] staging: etnaviv: fix cache cleaning for uncached SHM buffers Lucas Stach
2015-04-02 16:22   ` Russell King - ARM Linux
2015-04-02 16:36     ` Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 091/111] staging: etnaviv: properly flush all TLBs on MMUv1 Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 092/111] staging: etnaviv: convert to_etnaviv_bo() to real function Lucas Stach
2015-04-02 16:29   ` Russell King - ARM Linux
2015-04-05 19:29     ` Christian Gmeiner
2015-04-02 15:30 ` [PATCH RFC 093/111] staging: etnaviv: take gpu instead of pipe as input to fence wait function Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 094/111] staging: etnaviv: plug in fence waiting in cpu_prepare Lucas Stach
2015-04-05 18:51   ` Christian Gmeiner
2015-04-07  7:26     ` Lucas Stach
2015-04-07  8:14       ` Christian Gmeiner
2015-04-02 15:30 ` [PATCH RFC 095/111] staging: etnaviv: allow to map buffer object into multiple address spaces Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 096/111] staging: etnaviv: don't pretend to have a single MMU Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 097/111] staging: etnaviv: use GPU device to construct MMU Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 098/111] staging: etnaviv: flush MMU when switching context Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 099/111] staging: etnaviv: add flag to force buffer through MMU Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 100/111] staging: etnaviv: use more natural devicetree abstraction Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 101/111] staging: etnaviv: don't override platform provided IRQ flags Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 102/111] staging: etnaviv: separate GPU pipes from execution state Lucas Stach
2015-04-02 16:37   ` Russell King - ARM Linux
2015-04-05 19:41     ` Christian Gmeiner
2015-04-07  7:46       ` Lucas Stach
2015-04-07  8:03         ` Christian Gmeiner
2015-04-07  9:05           ` Lucas Stach
2015-04-07 11:31             ` Russell King - ARM Linux
2015-04-07 13:01               ` Lucas Stach
2015-04-07 14:38         ` Alex Deucher
2015-04-07 14:51           ` Jon Nettleton
2015-04-07 15:01             ` Lucas Stach
2015-04-07 15:07               ` Jon Nettleton
2015-04-07 15:13               ` Christian Gmeiner
2015-04-07 15:29                 ` Lucas Stach
2015-04-07 16:59                   ` Christian Gmeiner
2015-04-07 21:25                     ` Russell King - ARM Linux
2015-04-08  7:28                       ` Christian Gmeiner
2015-04-08  8:52                       ` Lucas Stach
2015-04-07 22:14                     ` Rob Clark
2015-04-08  8:59                       ` Lucas Stach
2015-04-08  8:48                     ` Lucas Stach
2015-04-07 14:52           ` Christian Gmeiner
2015-04-07 15:06             ` Christian König
2015-04-07 15:09             ` Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 103/111] staging: etnaviv: make sure to unlock DRM mutex when component bind fails Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 104/111] staging: etnaviv: clean up public API Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 105/111] staging: etnaviv: prune dumb buffer support Lucas Stach
2015-04-07  7:37   ` Christian Gmeiner
2015-04-02 15:30 ` [PATCH RFC 106/111] staging: etnaviv: properly prefix all prime functions to etnaviv Lucas Stach
2015-04-07  7:35   ` Christian Gmeiner
2015-04-02 15:30 ` [PATCH RFC 107/111] staging: etnaviv: rename last remaining bits from msm " Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 108/111] staging: etnaviv: quiten down kernel log output Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 109/111] staging: etnaviv: add proper license header to all files Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 110/111] staging: etnaviv: some final trivial changes to the module Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 111/111] ARM: imx6: add Vivante GPU nodes Lucas Stach
2015-04-02 15:43 ` [PATCH RFC 000/111] Etnaviv DRM driver Russell King - ARM Linux
2015-04-02 15:59   ` Lucas Stach
2015-04-02 20:01     ` Robert Nelson
2015-04-05 19:55       ` Christian Gmeiner
2015-04-08  9:58       ` Jean-Michel Hautbois
2015-04-07  6:05     ` Daniel Vetter
2015-05-27 12:45 ` Etnaviv DRM driver - oops when unloading Alexander Holler
2015-05-27 12:49   ` Lucas Stach
2015-05-27 23:03     ` Russell King - ARM Linux
2015-06-09 10:13       ` Moving Etnaviv forward (Was: Re: Etnaviv DRM driver - oops when unloading) Lucas Stach
2015-06-09 10:47         ` Russell King - ARM Linux
2015-05-27 17:35   ` Etnaviv DRM driver - oops when unloading Russell King - ARM Linux
2015-05-28  8:24     ` Alexander Holler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1428411151.2811.78.camel@pengutronix.de \
    --to=l.stach@pengutronix.de \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=kernel@pengutronix.de \
    --cc=linux@arm.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.