[PATCH -v2 10/14] drm/exynos: atomic phase 1: add atomic_begin()/atomic_flush()
Daniel Stone
daniel at fooishbar.org
Mon Feb 9 08:10:48 PST 2015
Hi Inki,
On 9 February 2015 at 14:53, Inki Dae <inki.dae at samsung.com> wrote:
> I'm merging this patch series but I found two issues. One is already
> pointed out.
Fantastic - thanks a lot for doing this!
> On 2015년 02월 07일 04:37, Gustavo Padovan wrote:
>> @@ -628,20 +638,6 @@ static void fimd_win_commit(struct exynos_drm_crtc *crtc, unsigned int win)
>> return;
>> }
>>
>> - /*
>> - * SHADOWCON/PRTCON register is used for enabling timing.
>> - *
>> - * for example, once only width value of a register is set,
>> - * if the dma is started then fimd hardware could malfunction so
>> - * with protect window setting, the register fields with prefix '_F'
>> - * wouldn't be updated at vsync also but updated once unprotect window
>> - * is set.
>> - */
>> -
>> - /* protect windows */
>> - fimd_shadow_protect_win(ctx, win, true);
>
> You removed to protect shadow register updating at vsync so fimd
> hardware could malfunction if setcrtc/page flip/setplane are requested
> by userspace. Actually, when I run modetest repeatedly, I could see
> overlay isn't rarely turned on.
>
> So how about calling win_protect/unprotect callbacks like below? If you
> are ok, I can modify it and merge it.
I think you are missing some details about atomic and the helpers.
The helpers wrap _all_ legacy codepaths, e.g. SetCrtc, SetPlane, etc.
All of these operations are intercepted by the code in
drm_atomic_helper.c / drm_plane_helper.c code, and the legacy
operations are turned into atomic operations. For the driver - there
are no legacy operations.
The atomic helpers guarantee that atomic_begin() will be called before
the state is committed, and atomic_flush() will be called after the
state is committed. Thus this change is completely safe.
> This warning would mean a fb object leak and while I have a review, I
> couldn't find why it causes the leak.
I'm not really surprised; the fb refcounting in Exynos has long had
quite a few issues. The refcounting is incredibly difficult to get
right, and whilst atomic changes the order of operations a little, it
also makes the semantics of fb/vblank refcounting much more
consistent, so it should be much easier to fix than usual.
> However, I'd like to merge this patch series this time and fix this
> issue at RC for phase 3.
Great, thankyou! Really very happy about this. :)
Cheers,
Daniel
More information about the dri-devel
mailing list