All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lucas Stach <l.stach@pengutronix.de>
To: Christian Gmeiner <christian.gmeiner@gmail.com>
Cc: Russell King <linux@arm.linux.org.uk>,
	Sascha Hauer <kernel@pengutronix.de>,
	DRI mailing list <dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH RFC 003/111] staging: etnaviv: add drm driver
Date: Tue, 07 Apr 2015 11:20:10 +0200	[thread overview]
Message-ID: <1428398410.2811.46.camel@pengutronix.de> (raw)
In-Reply-To: <CAH9NwWf35QjaRSdkcjOeq5SLu+_1Dc4_F3SuBSfLbwM0xeJtTg@mail.gmail.com>

Am Dienstag, den 07.04.2015, 11:04 +0200 schrieb Christian Gmeiner:
> Hi Lucas
> 
> 2015-04-07 9:35 GMT+02:00 Lucas Stach <l.stach@pengutronix.de>:
> > Am Sonntag, den 05.04.2015, 21:26 +0200 schrieb Christian Gmeiner:
> >> 2015-04-02 17:29 GMT+02:00 Lucas Stach <l.stach@pengutronix.de>:
> >> > From: Christian Gmeiner <christian.gmeiner@gmail.com>
> >> >
> >> > This is a consolidation by Russell King of Christian's drm work.
> >> >
> >> > Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
> >> > Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
> >
> >> > ---
> > [...]
> >
> >> > +#endif /* STATE_HI_XML */
> >> > diff --git a/include/uapi/drm/etnaviv_drm.h b/include/uapi/drm/etnaviv_drm.h
> >> > new file mode 100644
> >> > index 000000000000..f7b5ac6f3842
> >> > --- /dev/null
> >> > +++ b/include/uapi/drm/etnaviv_drm.h
> >> > @@ -0,0 +1,225 @@
> >> > +/*
> >> > + * Copyright (C) 2013 Red Hat
> >> > + * Author: Rob Clark <robdclark@gmail.com>
> >> > + *
> >> > + * This program is free software; you can redistribute it and/or modify it
> >> > + * under the terms of the GNU General Public License version 2 as published by
> >> > + * the Free Software Foundation.
> >> > + *
> >> > + * This program is distributed in the hope that it will be useful, but WITHOUT
> >> > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> >> > + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
> >> > + * more details.
> >> > + *
> >> > + * You should have received a copy of the GNU General Public License along with
> >> > + * this program.  If not, see <http://www.gnu.org/licenses/>.
> >> > + */
> >> > +
> >> > +#ifndef __ETNAVIV_DRM_H__
> >> > +#define __ETNAVIV_DRM_H__
> >> > +
> >> > +#include <stddef.h>
> >> > +#include <drm/drm.h>
> >> > +
> >> > +/* Please note that modifications to all structs defined here are
> >> > + * subject to backwards-compatibility constraints:
> >> > + *  1) Do not use pointers, use uint64_t instead for 32 bit / 64 bit
> >> > + *     user/kernel compatibility
> >> > + *  2) Keep fields aligned to their size
> >> > + *  3) Because of how drm_ioctl() works, we can add new fields at
> >> > + *     the end of an ioctl if some care is taken: drm_ioctl() will
> >> > + *     zero out the new fields at the tail of the ioctl, so a zero
> >> > + *     value should have a backwards compatible meaning.  And for
> >> > + *     output params, userspace won't see the newly added output
> >> > + *     fields.. so that has to be somehow ok.
> >> > + */
> >> > +
> >> > +#define ETNA_PIPE_3D      0x00
> >> > +#define ETNA_PIPE_2D      0x01
> >> > +#define ETNA_PIPE_VG      0x02
> >> > +
> >> > +#define ETNA_MAX_PIPES    3
> >> > +
> >> > +/* timeouts are specified in clock-monotonic absolute times (to simplify
> >> > + * restarting interrupted ioctls).  The following struct is logically the
> >> > + * same as 'struct timespec' but 32/64b ABI safe.
> >> > + */
> >> > +struct drm_etnaviv_timespec {
> >> > +       int64_t tv_sec;          /* seconds */
> >> > +       int64_t tv_nsec;         /* nanoseconds */
> >> > +};
> >> > +
> >> > +#define ETNAVIV_PARAM_GPU_MODEL                     0x01
> >> > +#define ETNAVIV_PARAM_GPU_REVISION                  0x02
> >> > +#define ETNAVIV_PARAM_GPU_FEATURES_0                0x03
> >> > +#define ETNAVIV_PARAM_GPU_FEATURES_1                0x04
> >> > +#define ETNAVIV_PARAM_GPU_FEATURES_2                0x05
> >> > +#define ETNAVIV_PARAM_GPU_FEATURES_3                0x06
> >> > +#define ETNAVIV_PARAM_GPU_FEATURES_4                0x07
> >> > +
> >> > +#define ETNAVIV_PARAM_GPU_STREAM_COUNT              0x10
> >> > +#define ETNAVIV_PARAM_GPU_REGISTER_MAX              0x11
> >> > +#define ETNAVIV_PARAM_GPU_THREAD_COUNT              0x12
> >> > +#define ETNAVIV_PARAM_GPU_VERTEX_CACHE_SIZE         0x13
> >> > +#define ETNAVIV_PARAM_GPU_SHADER_CORE_COUNT         0x14
> >> > +#define ETNAVIV_PARAM_GPU_PIXEL_PIPES               0x15
> >> > +#define ETNAVIV_PARAM_GPU_VERTEX_OUTPUT_BUFFER_SIZE 0x16
> >> > +#define ETNAVIV_PARAM_GPU_BUFFER_SIZE               0x17
> >> > +#define ETNAVIV_PARAM_GPU_INSTRUCTION_COUNT         0x18
> >> > +#define ETNAVIV_PARAM_GPU_NUM_CONSTANTS             0x19
> >> > +
> >> > +//#define MSM_PARAM_GMEM_SIZE  0x02
> >> > +
> >> > +struct drm_etnaviv_param {
> >> > +       uint32_t pipe;           /* in, ETNA_PIPE_x */
> >> > +       uint32_t param;          /* in, ETNAVIV_PARAM_x */
> >> > +       uint64_t value;          /* out (get_param) or in (set_param) */
> >> > +};
> >> > +
> >> > +/*
> >> > + * GEM buffers:
> >> > + */
> >> > +
> >> > +#define ETNA_BO_CMDSTREAM    0x00000001
> >> > +#define ETNA_BO_CACHE_MASK   0x000f0000
> >> > +/* cache modes */
> >> > +#define ETNA_BO_CACHED       0x00010000
> >> > +#define ETNA_BO_WC           0x00020000
> >> > +#define ETNA_BO_UNCACHED     0x00040000
> >> > +
> >> > +struct drm_etnaviv_gem_new {
> >> > +       uint64_t size;           /* in */
> >> > +       uint32_t flags;          /* in, mask of ETNA_BO_x */
> >> > +       uint32_t handle;         /* out */
> >> > +};
> >> > +
> >> > +struct drm_etnaviv_gem_info {
> >> > +       uint32_t handle;         /* in */
> >> > +       uint32_t pad;
> >> > +       uint64_t offset;         /* out, offset to pass to mmap() */
> >> > +};
> >> > +
> >> > +#define ETNA_PREP_READ        0x01
> >> > +#define ETNA_PREP_WRITE       0x02
> >> > +#define ETNA_PREP_NOSYNC      0x04
> >> > +
> >> > +struct drm_etnaviv_gem_cpu_prep {
> >> > +       uint32_t handle;         /* in */
> >> > +       uint32_t op;             /* in, mask of ETNA_PREP_x */
> >> > +       struct drm_etnaviv_timespec timeout;   /* in */
> >> > +};
> >> > +
> >> > +struct drm_etnaviv_gem_cpu_fini {
> >> > +       uint32_t handle;         /* in */
> >> > +};
> >> > +
> >> > +/*
> >> > + * Cmdstream Submission:
> >> > + */
> >> > +
> >> > +/* The value written into the cmdstream is logically:
> >> > + *
> >> > + *   ((relocbuf->gpuaddr + reloc_offset) << shift) | or
> >> > + *
> >> > + * When we have GPU's w/ >32bit ptrs, it should be possible to deal
> >> > + * with this by emit'ing two reloc entries with appropriate shift
> >> > + * values.  Or a new ETNA_SUBMIT_CMD_x type would also be an option.
> >> > + *
> >> > + * NOTE that reloc's must be sorted by order of increasing submit_offset,
> >> > + * otherwise EINVAL.
> >> > + */
> >> > +struct drm_etnaviv_gem_submit_reloc {
> >> > +       uint32_t submit_offset;  /* in, offset from submit_bo */
> >> > +       uint32_t or;             /* in, value OR'd with result */
> >> > +       int32_t  shift;          /* in, amount of left shift (can be negative) */
> >> > +       uint32_t reloc_idx;      /* in, index of reloc_bo buffer */
> >> > +       uint64_t reloc_offset;   /* in, offset from start of reloc_bo */
> >> > +};
> >> > +
> >> > +/* submit-types:
> >> > + *   BUF - this cmd buffer is executed normally.
> >> > + *   IB_TARGET_BUF - this cmd buffer is an IB target.  Reloc's are
> >> > + *      processed normally, but the kernel does not setup an IB to
> >> > + *      this buffer in the first-level ringbuffer
> >> > + *   CTX_RESTORE_BUF - only executed if there has been a GPU context
> >> > + *      switch since the last SUBMIT ioctl
> >> > + */
> >> > +#define ETNA_SUBMIT_CMD_BUF             0x0001
> >> > +#define ETNA_SUBMIT_CMD_IB_TARGET_BUF   0x0002
> >> > +#define ETNA_SUBMIT_CMD_CTX_RESTORE_BUF 0x0003 is a
> >> > +struct drm_etnaviv_gem_submit_cmd {
> >> > +       uint32_t type;           /* in, one of ETNA_SUBMIT_CMD_x */
> >>
> >> Do we need different types? I did not use this in my kernel tree.
> >>
> >
> > Please also not the commit cleaning this API, which changes this a bit.
> >
> 
> Ah yes.. I see it.
> 
> > But yes we need different types. At least the context restore buffer
> > type is needed to properly implement GPU power management and context
> > switching.
> >
> 
> 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.

> >> > +       uint32_t submit_idx;     /* in, index of submit_bo cmdstream buffer */
> >> > +       uint32_t submit_offset;  /* in, offset into submit_bo */
> >>
> >> Do we really want/need the offset? I have removed it form cause it
> >> makes things in userspace
> >> more complex then needed.
> >>
> > It makes things a bit more complex, but it allows for far more efficient
> > buffer use if you have are dealing with a lot of flushes. I don't see
> > why we should prevent userspace from using this optimization.
> >
> 
> 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.
> 
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.

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?

> >> > +       uint32_t size;           /* in, cmdstream size */
> >> > +       uint32_t pad;
> >> > +       uint32_t nr_relocs;      /* in, number of submit_reloc's */
> >> > +       uint64_t __user relocs;  /* in, ptr to array of submit_reloc's */
> >> > +};
> >> > +
> >> > +/* Each buffer referenced elsewhere in the cmdstream submit (ie. the
> >> > + * cmdstream buffer(s) themselves or reloc entries) has one (and only
> >> > + * one) entry in the submit->bos[] table.
> >> > + *
> >> > + * As a optimization, the current buffer (gpu virtual address) can be
> >> > + * passed back through the 'presumed' field.  If on a subsequent reloc,
> >> > + * userspace passes back a 'presumed' address that is still valid,
> >> > + * then patching the cmdstream for this entry is skipped.  This can
> >> > + * avoid kernel needing to map/access the cmdstream bo in the common
> >> > + * case.
> >> > + */
> >> > +#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.
> >
> 
> Your statement is funny as you have the following patch in your series:
> [PATCH RFC 070/111] staging: etnaviv: remove presumption of BO addresses
> 
You may notice the difference between interface and implementation.

> I have taken the idea of presumption from *drumroll* freedreno as the
> etnaviv driver
> started as 1:1 copy of freedreno. But what should I say, it never
> should be there and
> even freedreno does not make use of it (checked it about 2-3 months ago).
> Should the user space really know anything about physical addresses at
> all? Would be
> nice to hear the opinion of a drm guru here and maybe Russell.
> 

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.

> >> > +};
> >> > +
> >> > +/* Each cmdstream submit consists of a table of buffers involved, and
> >> > + * one or more cmdstream buffers.  This allows for conditional execution
> >> > + * (context-restore), and IB buffers needed for per tile/bin draw cmds.
> >> > + */
> >> > +struct drm_etnaviv_gem_submit {
> >> > +       uint32_t pipe;           /* in, ETNA_PIPE_x */
> >> > +       uint32_t fence;          /* out */
> >> > +       uint32_t nr_bos;         /* in, number of submit_bo's */
> >> > +       uint32_t nr_cmds;        /* in, number of submit_cmd's */
> >>
> >> Do we really need to support mutliple cmds per submit? I have removed this
> >> from my kernel.
> >>
> > We need to support at least one additional context buffer, so I don't
> > see why we shouldn't support n buffers.
> >
> 
> 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.

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  9:20 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 [this message]
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
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=1428398410.2811.46.camel@pengutronix.de \
    --to=l.stach@pengutronix.de \
    --cc=christian.gmeiner@gmail.com \
    --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.