From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
To: Gustavo Padovan <gustavo.padovan@collabora.com>
Cc: devel@driverdev.osuosl.org,
"Daniel Stone" <daniels@collabora.com>,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
"Daniel Vetter" <daniel.vetter@ffwll.ch>,
"Arve Hjønnevåg" <arve@android.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Riley Andrews" <riandrews@android.com>,
"Gustavo Padovan" <gustavo.padovan@collabora.co.uk>,
"John Harrison" <John.C.Harrison@Intel.com>
Subject: Re: [PATCH 2/7] staging/android: display sync_pt name on debugfs
Date: Tue, 9 Aug 2016 12:04:49 +0200 [thread overview]
Message-ID: <93e2abc0-e3a6-a722-bb2a-d3e0f88abb2b@linux.intel.com> (raw)
In-Reply-To: <20160808195918.GO2484@joana>
Op 08-08-16 om 21:59 schreef Gustavo Padovan:
> 2016-08-08 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>:
>
>> Op 20-06-16 om 17:53 schreef Gustavo Padovan:
>>> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
>>>
>>> When creating a sync_pt the name received wasn't used anywhere.
>>> Now we add it to the sync info debug output to make it easier to indetify
>>> the userspace name of that sync pt.
>>>
>>> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
>>> ---
>>> drivers/staging/android/sw_sync.c | 16 ++++------------
>>> drivers/staging/android/sync_debug.c | 5 +++--
>>> drivers/staging/android/sync_debug.h | 9 +++++++++
>>> 3 files changed, 16 insertions(+), 14 deletions(-)
>>>
>>> diff --git a/drivers/staging/android/sw_sync.c b/drivers/staging/android/sw_sync.c
>>> index b4ae092..ea27512 100644
>>> --- a/drivers/staging/android/sw_sync.c
>>> +++ b/drivers/staging/android/sw_sync.c
>>> @@ -37,15 +37,6 @@ struct sw_sync_create_fence_data {
>>> struct sw_sync_create_fence_data)
>>> #define SW_SYNC_IOC_INC _IOW(SW_SYNC_IOC_MAGIC, 1, __u32)
>>>
>>> -static const struct fence_ops timeline_fence_ops;
>>> -
>>> -static inline struct sync_pt *fence_to_sync_pt(struct fence *fence)
>>> -{
>>> - if (fence->ops != &timeline_fence_ops)
>>> - return NULL;
>>> - return container_of(fence, struct sync_pt, base);
>>> -}
>>> -
>>> struct sync_timeline *sync_timeline_create(const char *name)
>>> {
>>> struct sync_timeline *obj;
>>> @@ -108,7 +99,7 @@ static void sync_timeline_signal(struct sync_timeline *obj, unsigned int inc)
>>> }
>>>
>>> static struct sync_pt *sync_pt_create(struct sync_timeline *obj, int size,
>>> - unsigned int value)
>>> + unsigned int value, char *name)
>>> {
>>> unsigned long flags;
>>> struct sync_pt *pt;
>>> @@ -120,6 +111,7 @@ static struct sync_pt *sync_pt_create(struct sync_timeline *obj, int size,
>>> if (!pt)
>>> return NULL;
>>>
>>> + strlcpy(pt->name, name, sizeof(pt->name));
>>> spin_lock_irqsave(&obj->child_list_lock, flags);
>>> sync_timeline_get(obj);
>>> fence_init(&pt->base, &timeline_fence_ops, &obj->child_list_lock,
>>> @@ -191,7 +183,7 @@ static void timeline_fence_timeline_value_str(struct fence *fence,
>>> snprintf(str, size, "%d", parent->value);
>>> }
>>>
>>> -static const struct fence_ops timeline_fence_ops = {
>>> +const struct fence_ops timeline_fence_ops = {
>>> .get_driver_name = timeline_fence_get_driver_name,
>>> .get_timeline_name = timeline_fence_get_timeline_name,
>>> .enable_signaling = timeline_fence_enable_signaling,
>>> @@ -252,7 +244,7 @@ static long sw_sync_ioctl_create_fence(struct sync_timeline *obj,
>>> goto err;
>>> }
>>>
>>> - pt = sync_pt_create(obj, sizeof(*pt), data.value);
>>> + pt = sync_pt_create(obj, sizeof(*pt), data.value, data.name);
>>> if (!pt) {
>>> err = -ENOMEM;
>>> goto err;
>>> diff --git a/drivers/staging/android/sync_debug.c b/drivers/staging/android/sync_debug.c
>>> index 4c5a855..b732ea3 100644
>>> --- a/drivers/staging/android/sync_debug.c
>>> +++ b/drivers/staging/android/sync_debug.c
>>> @@ -75,13 +75,14 @@ static void sync_print_fence(struct seq_file *s, struct fence *fence, bool show)
>>> {
>>> int status = 1;
>>> struct sync_timeline *parent = fence_parent(fence);
>>> + struct sync_pt *pt = fence_to_sync_pt(fence);
>>>
>>> if (fence_is_signaled_locked(fence))
>>> status = fence->status;
>>>
>>> - seq_printf(s, " %s%sfence %s",
>>> + seq_printf(s, " %s%sfence %s %s",
>>> show ? parent->name : "",
>>> - show ? "_" : "",
>>> + show ? "_" : "", pt->name,
>>> sync_status_str(status));
>>>
>> NAK,
>> A fence in sync_print_fence can be of any type. If you want to print the name, use the fence_value_str callback.
> Indeed. But fence_value_str doesn't return the sync_pt name, but the
> seqno of that fence. I'll keep this change out for the de-staging and
> then try to come with something that works better.
>
> Gustavo
This will probably cause a kernel panic if you keep it like it is and you look at
debugfs for non sync_pt fences, it should definitely be fixed before destaging.
Ignoring sync_pt name would be better than crashing.
~Maarten
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
WARNING: multiple messages have this Message-ID (diff)
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
To: Gustavo Padovan <gustavo.padovan@collabora.com>
Cc: "Gustavo Padovan" <gustavo@padovan.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org,
dri-devel@lists.freedesktop.org,
"Daniel Stone" <daniels@collabora.com>,
"Arve Hjønnevåg" <arve@android.com>,
"Riley Andrews" <riandrews@android.com>,
"Daniel Vetter" <daniel.vetter@ffwll.ch>,
"Rob Clark" <robdclark@gmail.com>,
"Greg Hackmann" <ghackmann@google.com>,
"John Harrison" <John.C.Harrison@Intel.com>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Gustavo Padovan" <gustavo.padovan@collabora.co.uk>
Subject: Re: [PATCH 2/7] staging/android: display sync_pt name on debugfs
Date: Tue, 9 Aug 2016 12:04:49 +0200 [thread overview]
Message-ID: <93e2abc0-e3a6-a722-bb2a-d3e0f88abb2b@linux.intel.com> (raw)
In-Reply-To: <20160808195918.GO2484@joana>
Op 08-08-16 om 21:59 schreef Gustavo Padovan:
> 2016-08-08 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>:
>
>> Op 20-06-16 om 17:53 schreef Gustavo Padovan:
>>> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
>>>
>>> When creating a sync_pt the name received wasn't used anywhere.
>>> Now we add it to the sync info debug output to make it easier to indetify
>>> the userspace name of that sync pt.
>>>
>>> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
>>> ---
>>> drivers/staging/android/sw_sync.c | 16 ++++------------
>>> drivers/staging/android/sync_debug.c | 5 +++--
>>> drivers/staging/android/sync_debug.h | 9 +++++++++
>>> 3 files changed, 16 insertions(+), 14 deletions(-)
>>>
>>> diff --git a/drivers/staging/android/sw_sync.c b/drivers/staging/android/sw_sync.c
>>> index b4ae092..ea27512 100644
>>> --- a/drivers/staging/android/sw_sync.c
>>> +++ b/drivers/staging/android/sw_sync.c
>>> @@ -37,15 +37,6 @@ struct sw_sync_create_fence_data {
>>> struct sw_sync_create_fence_data)
>>> #define SW_SYNC_IOC_INC _IOW(SW_SYNC_IOC_MAGIC, 1, __u32)
>>>
>>> -static const struct fence_ops timeline_fence_ops;
>>> -
>>> -static inline struct sync_pt *fence_to_sync_pt(struct fence *fence)
>>> -{
>>> - if (fence->ops != &timeline_fence_ops)
>>> - return NULL;
>>> - return container_of(fence, struct sync_pt, base);
>>> -}
>>> -
>>> struct sync_timeline *sync_timeline_create(const char *name)
>>> {
>>> struct sync_timeline *obj;
>>> @@ -108,7 +99,7 @@ static void sync_timeline_signal(struct sync_timeline *obj, unsigned int inc)
>>> }
>>>
>>> static struct sync_pt *sync_pt_create(struct sync_timeline *obj, int size,
>>> - unsigned int value)
>>> + unsigned int value, char *name)
>>> {
>>> unsigned long flags;
>>> struct sync_pt *pt;
>>> @@ -120,6 +111,7 @@ static struct sync_pt *sync_pt_create(struct sync_timeline *obj, int size,
>>> if (!pt)
>>> return NULL;
>>>
>>> + strlcpy(pt->name, name, sizeof(pt->name));
>>> spin_lock_irqsave(&obj->child_list_lock, flags);
>>> sync_timeline_get(obj);
>>> fence_init(&pt->base, &timeline_fence_ops, &obj->child_list_lock,
>>> @@ -191,7 +183,7 @@ static void timeline_fence_timeline_value_str(struct fence *fence,
>>> snprintf(str, size, "%d", parent->value);
>>> }
>>>
>>> -static const struct fence_ops timeline_fence_ops = {
>>> +const struct fence_ops timeline_fence_ops = {
>>> .get_driver_name = timeline_fence_get_driver_name,
>>> .get_timeline_name = timeline_fence_get_timeline_name,
>>> .enable_signaling = timeline_fence_enable_signaling,
>>> @@ -252,7 +244,7 @@ static long sw_sync_ioctl_create_fence(struct sync_timeline *obj,
>>> goto err;
>>> }
>>>
>>> - pt = sync_pt_create(obj, sizeof(*pt), data.value);
>>> + pt = sync_pt_create(obj, sizeof(*pt), data.value, data.name);
>>> if (!pt) {
>>> err = -ENOMEM;
>>> goto err;
>>> diff --git a/drivers/staging/android/sync_debug.c b/drivers/staging/android/sync_debug.c
>>> index 4c5a855..b732ea3 100644
>>> --- a/drivers/staging/android/sync_debug.c
>>> +++ b/drivers/staging/android/sync_debug.c
>>> @@ -75,13 +75,14 @@ static void sync_print_fence(struct seq_file *s, struct fence *fence, bool show)
>>> {
>>> int status = 1;
>>> struct sync_timeline *parent = fence_parent(fence);
>>> + struct sync_pt *pt = fence_to_sync_pt(fence);
>>>
>>> if (fence_is_signaled_locked(fence))
>>> status = fence->status;
>>>
>>> - seq_printf(s, " %s%sfence %s",
>>> + seq_printf(s, " %s%sfence %s %s",
>>> show ? parent->name : "",
>>> - show ? "_" : "",
>>> + show ? "_" : "", pt->name,
>>> sync_status_str(status));
>>>
>> NAK,
>> A fence in sync_print_fence can be of any type. If you want to print the name, use the fence_value_str callback.
> Indeed. But fence_value_str doesn't return the sync_pt name, but the
> seqno of that fence. I'll keep this change out for the de-staging and
> then try to come with something that works better.
>
> Gustavo
This will probably cause a kernel panic if you keep it like it is and you look at
debugfs for non sync_pt fences, it should definitely be fixed before destaging.
Ignoring sync_pt name would be better than crashing.
~Maarten
next prev parent reply other threads:[~2016-08-09 10:04 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-20 15:53 [PATCH 0/7] de-stage SW_SYNC validation frawework Gustavo Padovan
2016-06-20 15:53 ` Gustavo Padovan
2016-06-20 15:53 ` [PATCH 1/7] staging/android: remove doc from sw_sync Gustavo Padovan
2016-06-20 15:53 ` Gustavo Padovan
2016-06-20 15:53 ` [PATCH 2/7] staging/android: display sync_pt name on debugfs Gustavo Padovan
2016-06-20 15:53 ` Gustavo Padovan
2016-08-08 9:34 ` Maarten Lankhorst
2016-08-08 9:34 ` Maarten Lankhorst
2016-08-08 19:59 ` Gustavo Padovan
2016-08-09 10:04 ` Maarten Lankhorst [this message]
2016-08-09 10:04 ` Maarten Lankhorst
2016-08-09 14:45 ` Gustavo Padovan
2016-08-09 14:45 ` Gustavo Padovan
2016-06-20 15:53 ` [PATCH 3/7] staging/android: do not let userspace trigger WARN_ON Gustavo Padovan
2016-06-20 15:53 ` Gustavo Padovan
2016-06-20 15:53 ` [PATCH 4/7] staging/android: move trace/sync.h to sync_trace.h Gustavo Padovan
2016-06-20 15:53 ` Gustavo Padovan
2016-06-20 15:53 ` [PATCH 5/7] staging/android: prepare sw_sync files for de-staging Gustavo Padovan
2016-06-20 15:53 ` Gustavo Padovan
2016-06-20 16:09 ` Joe Perches
2016-06-20 16:16 ` Gustavo Padovan
2016-06-20 16:16 ` Gustavo Padovan
2016-06-22 20:33 ` [PATCH v2] " Gustavo Padovan
2016-06-22 20:33 ` Gustavo Padovan
2016-06-20 15:53 ` [PATCH 6/7] dma-buf/sw_sync: de-stage SW_SYNC Gustavo Padovan
2016-06-20 15:53 ` Gustavo Padovan
2016-06-20 15:53 ` [PATCH 7/7] staging/android: remove sync framework TODO Gustavo Padovan
2016-06-20 15:53 ` Gustavo Padovan
2016-06-22 23:46 ` Emil Velikov
2016-06-23 13:33 ` Gustavo Padovan
2016-06-26 21:45 ` [PATCH 0/7] de-stage SW_SYNC validation frawework Pavel Machek
2016-06-26 21:45 ` Pavel Machek
2016-07-07 19:39 ` Gustavo Padovan
2016-07-07 19:39 ` Gustavo Padovan
2016-07-18 19:12 ` Gustavo Padovan
2016-07-18 19:12 ` Gustavo Padovan
2016-07-24 22:21 ` Greg Kroah-Hartman
2016-08-07 21:51 ` Pavel Machek
2016-08-07 21:51 ` Pavel Machek
2016-08-08 19:08 ` Gustavo Padovan
2016-07-24 15:00 ` Pavel Machek
2016-07-24 15:00 ` Pavel Machek
2016-08-08 19:53 ` Gustavo Padovan
2016-08-08 19:53 ` Gustavo Padovan
2016-08-09 6:04 ` Daniel Vetter
2016-08-09 6:04 ` Daniel Vetter
2016-08-10 20:53 ` Pavel Machek
2016-08-10 20:53 ` Pavel Machek
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=93e2abc0-e3a6-a722-bb2a-d3e0f88abb2b@linux.intel.com \
--to=maarten.lankhorst@linux.intel.com \
--cc=John.C.Harrison@Intel.com \
--cc=arve@android.com \
--cc=daniel.vetter@ffwll.ch \
--cc=daniels@collabora.com \
--cc=devel@driverdev.osuosl.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=gregkh@linuxfoundation.org \
--cc=gustavo.padovan@collabora.co.uk \
--cc=gustavo.padovan@collabora.com \
--cc=linux-kernel@vger.kernel.org \
--cc=riandrews@android.com \
/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.