All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
To: Emil Velikov <emil.l.velikov@gmail.com>
Cc: "moderated list:ARM/S5P EXYNOS AR..."
	<linux-samsung-soc@vger.kernel.org>,
	ML dri-devel <dri-devel@lists.freedesktop.org>,
	Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Subject: Re: [PATCH 06/13] tests/exynos: add fimg2d event test
Date: Fri, 30 Oct 2015 15:28:14 +0100	[thread overview]
Message-ID: <56337E7E.7040405@math.uni-bielefeld.de> (raw)
In-Reply-To: <CACvgo52xNr9yCxV+dAGhxHBtHuPv=fgzhAzKHvsCFY7Eh4AXJg@mail.gmail.com>

Hey Emil,


Emil Velikov wrote:
> On 30 October 2015 at 11:28, Tobias Jakobi
> <tjakobi@math.uni-bielefeld.de> wrote:
>> Hello Emil,
>>
>>
>> Emil Velikov wrote:
>>> On 30 October 2015 at 11:16, Tobias Jakobi
>>> <tjakobi@math.uni-bielefeld.de> wrote:
>>>> Hello Hyungwon,
>>>>
>>>> first of all thanks for reviewing the series!
>>>>
>>>>
>>>>
>>>> Hyungwon Hwang wrote:
>>>>> On Tue, 22 Sep 2015 17:54:55 +0200
>>>>> Tobias Jakobi <tjakobi@math.uni-bielefeld.de> wrote:
>>>>>
>>>
>>>>>> +    evhandler->evctx.base.version = DRM_EVENT_CONTEXT_VERSION;
>>>>>> +    evhandler->evctx.version = EXYNOS_EVENT_CONTEXT_VERSION;
>>>>>
>>>>> The versions must be set not using XXX_EVENT_CONTEXT_VERSION. After the
>>>>> versions are bumped, the event will contains wrong version info.
>>>> Hmm, I don't see how this is true. Both DRM_EVENT_CONTEXT_VERSION and
>>>> EXYNOS_EVENT_CONTEXT_VERSION come from the public libdrm header. If the
>>>> version in the public header is bumped, then it's also bumped here. So I
>>>> don't see the issue.
>>>>
>>> The issue is that the public header defines the interface available,
>>> while you set the version that you implement. Currently those match,
>>> but if/when we expand the API (bumping the version in the header) and
>>> rebuild your program we will crash.
>> Hmm, I'm still not sure I understand this. Do you mean rebuilding the
>> tests out-of-tree and then running them against a newer/older libdrm
>> version?
>>
>> Because from my understanding the tests are always build together with
>> libdrm anyway. Or am I misunderstanding here something?
>>
> We're not talking about building out of tree or anything like that
> here. The following example should illustrate what I have in mind.
> Greatly appreciated if you can explain it in your own words.
> 
> 
> Currently
> 
> * xf86drm.h
> #define DRM_EVENT_CONTEXT_VERSION 2
> struct drmEventContext {
>    int version;
>    ...
>    void (*page_flip_handler)(...);
> }
> 
> * user
> struct foo {
>    .version = ...VERSION // 2
>    ...
> }
> 
> 
> API bump
> 
> * xf86drm.h
> #define DRM_EVENT_CONTEXT_VERSION 3
> struct drmEventContext {
>    int version;
>    ...
>    void (*page_flip_handler)(...);
>    void (*page_flip_handler2)(...);
> }
> 
> * user (hasn't been updated, only rebuilt)
> struct foo {
>    .version = ...VERSION // 3
>    ...
>    .page_flip_handler2 = 0 // ... or garbage.
> }
> 
> 
> * xf86drmMode.c
> int drmHandleEvent(...)
> {
> ...
> if (foo.version >= 3)
>    foo.page_flip_handler2(); // boom !
> else
>    foo.page_flip_handler();
> ...
> }
> 
> 
> Also worth mentioning is that the issue is rather wide spread rather
> than limited to libdrm :'(
OK, I see what you mean. However this shouldn't happen as long as the
user properly zero initializes the event context structures, right?



>>> Before you ask - yes current libdrm users are not doing the right
>>> thing and should be updated one of these days.
>> Maybe a dumb question, but what would be the right thing to do in may case.
>>
>> Define my own MY_XZY_EVENT_CONTEXT_VERSION and use these?
>>
> No need for extra defines imho. Just set the versions to 2 and 1 for
> evctx.base.version and evctx.version respectively.
OK, going to do this then. In any case, can the user assume that the
event structures only "grow", in the sense that new fields are added to it?


With best wishes,
Tobias


> Glad to see some of the Samsung/Exynos people looking this way :-)
> 
> Regards,
> Emil
> 

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

  reply	other threads:[~2015-10-30 14:28 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-22 15:54 [PATCH 00/13] drm/exynos: async G2D and g2d_move() Tobias Jakobi
2015-09-22 15:54 ` [PATCH 01/13] drm: Implement drmHandleEvent2() Tobias Jakobi
2015-09-22 15:54 ` [PATCH 02/13] exynos: Introduce exynos_handle_event() Tobias Jakobi
2015-09-22 15:54 ` [PATCH 03/13] tests/exynos: add fimg2d performance analysis Tobias Jakobi
2015-10-30  6:51   ` Hyungwon Hwang
2015-10-30 11:17     ` Tobias Jakobi
2015-09-22 15:54 ` [PATCH 04/13] exynos/fimg2d: add g2d_config_event Tobias Jakobi
2015-09-22 15:54 ` [PATCH 05/13] exynos: fimg2d: add g2d_exec2 Tobias Jakobi
2015-09-22 15:54 ` [PATCH 06/13] tests/exynos: add fimg2d event test Tobias Jakobi
2015-10-30  6:50   ` Hyungwon Hwang
2015-10-30 11:16     ` Tobias Jakobi
2015-10-30 11:24       ` Emil Velikov
2015-10-30 11:28         ` Tobias Jakobi
2015-10-30 12:31           ` Emil Velikov
2015-10-30 14:28             ` Tobias Jakobi [this message]
2015-10-30 18:49               ` Emil Velikov
2015-11-02  2:10       ` Hyungwon Hwang
2015-09-22 15:54 ` [PATCH 07/13] tests/exynos: use XRGB8888 for framebuffer Tobias Jakobi
2015-10-30  6:41   ` Hyungwon Hwang
2015-10-30 11:17     ` Tobias Jakobi
2015-11-02  2:32       ` Hyungwon Hwang
2015-09-22 15:54 ` [PATCH 08/13] exynos: fimg2d: add g2d_set_direction Tobias Jakobi
2015-10-30  7:14   ` Hyungwon Hwang
2015-10-30 11:17     ` Tobias Jakobi
2015-10-30 17:14       ` Tobias Jakobi
2015-11-02  4:28         ` Hyungwon Hwang
2015-09-22 15:54 ` [PATCH 09/13] exynos/fimg2d: add g2d_move Tobias Jakobi
2015-10-30  7:17   ` Hyungwon Hwang
2015-10-30 11:18     ` Tobias Jakobi
2015-11-09  7:30   ` Hyungwon Hwang
2015-11-09  9:47     ` Tobias Jakobi
2015-11-10  4:20       ` Hyungwon Hwang
2015-11-10 13:24         ` Tobias Jakobi
2015-11-11  1:55           ` Hyungwon Hwang
2015-09-22 15:54 ` [PATCH 10/13] tests/exynos: add test for g2d_move Tobias Jakobi
2015-11-09  7:36   ` Hyungwon Hwang
2015-11-09  9:47     ` Tobias Jakobi
2015-11-09 11:33       ` Emil Velikov
2015-09-22 15:55 ` [PATCH 11/13] exynos/fimg2d: add exynos_bo_unmap() Tobias Jakobi
2015-09-22 15:55 ` [PATCH 12/13] exynos/fimg2d: add g2d_reset() to public API Tobias Jakobi
2015-09-22 15:55 ` [PATCH 13/13] exynos: bump version number Tobias Jakobi
2015-10-07 18:32 ` [PATCH 00/13] drm/exynos: async G2D and g2d_move() Tobias Jakobi
2015-10-17 22:39   ` Tobias Jakobi
2015-10-28 19:27 ` Tobias Jakobi

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=56337E7E.7040405@math.uni-bielefeld.de \
    --to=tjakobi@math.uni-bielefeld.de \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=emil.l.velikov@gmail.com \
    --cc=gustavo.padovan@collabora.co.uk \
    --cc=linux-samsung-soc@vger.kernel.org \
    /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.