All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: "Christian König" <deathsimple@vodafone.de>
Cc: "Christian König" <christian.koenig@amd.com>,
	"Dave Airlie" <airlied@gmail.com>,
	"Maarten Lankhorst" <maarten.lankhorst@canonical.com>,
	"Thomas Hellstrom" <thellstrom@vmware.com>,
	nouveau <nouveau@lists.freedesktop.org>,
	LKML <linux-kernel@vger.kernel.org>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	"Ben Skeggs" <bskeggs@redhat.com>,
	"Deucher, Alexander" <alexander.deucher@amd.com>
Subject: Re: [Nouveau] [PATCH 09/17] drm/radeon: use common fence implementation for fences
Date: Tue, 22 Jul 2014 15:26:52 +0200	[thread overview]
Message-ID: <20140722132652.GO15237@phenom.ffwll.local> (raw)
In-Reply-To: <53CE56ED.4040109@vodafone.de>

On Tue, Jul 22, 2014 at 02:19:57PM +0200, Christian König wrote:
> Am 22.07.2014 13:57, schrieb Daniel Vetter:
> >On Tue, Jul 22, 2014 at 01:46:07PM +0200, Daniel Vetter wrote:
> >>On Tue, Jul 22, 2014 at 10:43:13AM +0200, Christian König wrote:
> >>>Am 22.07.2014 06:05, schrieb Dave Airlie:
> >>>>On 9 July 2014 22:29, Maarten Lankhorst <maarten.lankhorst@canonical.com> wrote:
> >>>>>Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
> >>>>>---
> >>>>>  drivers/gpu/drm/radeon/radeon.h        |   15 +-
> >>>>>  drivers/gpu/drm/radeon/radeon_device.c |   60 ++++++++-
> >>>>>  drivers/gpu/drm/radeon/radeon_fence.c  |  223 ++++++++++++++++++++++++++------
> >>>>>  3 files changed, 248 insertions(+), 50 deletions(-)
> >>>>>
> >>>> From what I can see this is still suffering from the problem that we
> >>>>need to find a proper solution to,
> >>>>
> >>>>My summary of the issues after talking to Jerome and Ben and
> >>>>re-reading things is:
> >>>>
> >>>>We really need to work out a better interface into the drivers to be
> >>>>able to avoid random atomic entrypoints,
> >>>Which is exactly what I criticized from the very first beginning. Good to
> >>>know that I'm not the only one thinking that this isn't such a good idea.
> >>I guess I've lost context a bit, but which atomic entry point are we
> >>talking about? Afaics the only one that's mandatory is the is
> >>fence->signaled callback to check whether a fence really has been
> >>signalled. It's used internally by the fence code to avoid spurious
> >>wakeups. Afaik that should be doable already on any hardware. If that's
> >>not the case then we can always track the signalled state in software and
> >>double-check in a worker thread before updating the sw state. And wrap
> >>this all up into a special fence class if there's more than one driver
> >>needing this.
> >One thing I've forgotten: The i915 scheduler that's floating around runs
> >its bottom half from irq context. So I really want to be able to check
> >fence state from irq context and I also want to make it possible
> >(possible! not mandatory) to register callbacks which are run from any
> >context asap after the fence is signalled.
> 
> NAK, that's just the bad design I've talked about. Checking fence state
> inside the same driver from interrupt context is OK, because it's the
> drivers interrupt that we are talking about here.
> 
> Checking fence status from another drivers interrupt context is what really
> concerns me here, cause your driver doesn't have the slightest idea if the
> called driver is really capable of checking the fence right now.

I guess my mail hasn't been clear then. If you don't like it we could add
a bit of glue to insulate the madness and bad design i915 might do from
radeon. That imo doesn't invalidate the overall fence interfaces.

So what about the following:
- fence->enabling_signaling is restricted to be called from process
  context. We don't use any different yet, so would boild down to adding a
  WARN_ON(in_interrupt) or so to fence_enable_sw_signalling.

- Make fence->signaled optional (already the case) and don't implement it
  in readon (i.e. reduce this patch here). Only downside is that radeon
  needs to correctly (i.e. without races or so) call fence_signal. And the
  cross-driver synchronization might be a bit less efficient. Note that
  you can call fence_signal from wherever you want to, so hopefully that
  doesn't restrict your implementation. 

End result: No one calls into radeon from interrupt context, and this is
guaranteed.

Would that be something you can agree to?

Like I've said I think restricting the insanity other people are willing
to live with just because you don't like it isn't right. But it is
certainly right for you to insist on not being forced into any such
design. I think the above would achieve this.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch>
To: "Christian König" <deathsimple@vodafone.de>
Cc: "Thomas Hellstrom" <thellstrom@vmware.com>,
	nouveau <nouveau@lists.freedesktop.org>,
	LKML <linux-kernel@vger.kernel.org>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	"Deucher, Alexander" <alexander.deucher@amd.com>,
	"Ben Skeggs" <bskeggs@redhat.com>,
	"Christian König" <christian.koenig@amd.com>
Subject: Re: [Nouveau] [PATCH 09/17] drm/radeon: use common fence implementation for fences
Date: Tue, 22 Jul 2014 15:26:52 +0200	[thread overview]
Message-ID: <20140722132652.GO15237@phenom.ffwll.local> (raw)
In-Reply-To: <53CE56ED.4040109@vodafone.de>

On Tue, Jul 22, 2014 at 02:19:57PM +0200, Christian König wrote:
> Am 22.07.2014 13:57, schrieb Daniel Vetter:
> >On Tue, Jul 22, 2014 at 01:46:07PM +0200, Daniel Vetter wrote:
> >>On Tue, Jul 22, 2014 at 10:43:13AM +0200, Christian König wrote:
> >>>Am 22.07.2014 06:05, schrieb Dave Airlie:
> >>>>On 9 July 2014 22:29, Maarten Lankhorst <maarten.lankhorst@canonical.com> wrote:
> >>>>>Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
> >>>>>---
> >>>>>  drivers/gpu/drm/radeon/radeon.h        |   15 +-
> >>>>>  drivers/gpu/drm/radeon/radeon_device.c |   60 ++++++++-
> >>>>>  drivers/gpu/drm/radeon/radeon_fence.c  |  223 ++++++++++++++++++++++++++------
> >>>>>  3 files changed, 248 insertions(+), 50 deletions(-)
> >>>>>
> >>>> From what I can see this is still suffering from the problem that we
> >>>>need to find a proper solution to,
> >>>>
> >>>>My summary of the issues after talking to Jerome and Ben and
> >>>>re-reading things is:
> >>>>
> >>>>We really need to work out a better interface into the drivers to be
> >>>>able to avoid random atomic entrypoints,
> >>>Which is exactly what I criticized from the very first beginning. Good to
> >>>know that I'm not the only one thinking that this isn't such a good idea.
> >>I guess I've lost context a bit, but which atomic entry point are we
> >>talking about? Afaics the only one that's mandatory is the is
> >>fence->signaled callback to check whether a fence really has been
> >>signalled. It's used internally by the fence code to avoid spurious
> >>wakeups. Afaik that should be doable already on any hardware. If that's
> >>not the case then we can always track the signalled state in software and
> >>double-check in a worker thread before updating the sw state. And wrap
> >>this all up into a special fence class if there's more than one driver
> >>needing this.
> >One thing I've forgotten: The i915 scheduler that's floating around runs
> >its bottom half from irq context. So I really want to be able to check
> >fence state from irq context and I also want to make it possible
> >(possible! not mandatory) to register callbacks which are run from any
> >context asap after the fence is signalled.
> 
> NAK, that's just the bad design I've talked about. Checking fence state
> inside the same driver from interrupt context is OK, because it's the
> drivers interrupt that we are talking about here.
> 
> Checking fence status from another drivers interrupt context is what really
> concerns me here, cause your driver doesn't have the slightest idea if the
> called driver is really capable of checking the fence right now.

I guess my mail hasn't been clear then. If you don't like it we could add
a bit of glue to insulate the madness and bad design i915 might do from
radeon. That imo doesn't invalidate the overall fence interfaces.

So what about the following:
- fence->enabling_signaling is restricted to be called from process
  context. We don't use any different yet, so would boild down to adding a
  WARN_ON(in_interrupt) or so to fence_enable_sw_signalling.

- Make fence->signaled optional (already the case) and don't implement it
  in readon (i.e. reduce this patch here). Only downside is that radeon
  needs to correctly (i.e. without races or so) call fence_signal. And the
  cross-driver synchronization might be a bit less efficient. Note that
  you can call fence_signal from wherever you want to, so hopefully that
  doesn't restrict your implementation. 

End result: No one calls into radeon from interrupt context, and this is
guaranteed.

Would that be something you can agree to?

Like I've said I think restricting the insanity other people are willing
to live with just because you don't like it isn't right. But it is
certainly right for you to insist on not being forced into any such
design. I think the above would achieve this.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

  reply	other threads:[~2014-07-22 13:26 UTC|newest]

Thread overview: 165+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-09 12:29 [PATCH 00/17] Convert TTM to the new fence interface Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 01/17] drm/ttm: add interruptible parameter to ttm_eu_reserve_buffers Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 02/17] drm/ttm: kill off some members to ttm_validate_buffer Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 03/17] drm/nouveau: add reservation to nouveau_gem_ioctl_cpu_prep Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 04/17] drm/nouveau: require reservations for nouveau_fence_sync and nouveau_bo_fence Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 05/17] drm/ttm: call ttm_bo_wait while inside a reservation Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 06/17] drm/ttm: kill fence_lock Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 07/17] drm/nouveau: rework to new fence interface Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 08/17] drm/radeon: add timeout argument to radeon_fence_wait_seq Maarten Lankhorst
2014-07-09 12:29   ` Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 09/17] drm/radeon: use common fence implementation for fences Maarten Lankhorst
2014-07-09 12:57   ` Deucher, Alexander
2014-07-09 12:57     ` Deucher, Alexander
2014-07-09 13:23     ` [PATCH v2 " Maarten Lankhorst
2014-07-09 13:23       ` Maarten Lankhorst
2014-07-10 17:27       ` Alex Deucher
2014-07-10 17:27         ` Alex Deucher
2014-07-22  4:05   ` [PATCH " Dave Airlie
2014-07-22  4:05     ` Dave Airlie
2014-07-22  4:05     ` Dave Airlie
2014-07-22  8:43     ` Christian König
2014-07-22  8:43       ` Christian König
2014-07-22 11:46       ` Daniel Vetter
2014-07-22 11:46         ` Daniel Vetter
2014-07-22 11:52         ` Daniel Vetter
2014-07-22 11:52           ` Daniel Vetter
2014-07-22 11:57         ` Daniel Vetter
2014-07-22 11:57           ` Daniel Vetter
2014-07-22 12:19           ` Christian König
2014-07-22 12:19             ` Christian König
2014-07-22 13:26             ` Daniel Vetter [this message]
2014-07-22 13:26               ` [Nouveau] " Daniel Vetter
2014-07-22 13:45               ` Christian König
2014-07-22 13:45                 ` Christian König
2014-07-22 14:44                 ` [Nouveau] " Maarten Lankhorst
2014-07-22 14:44                   ` Maarten Lankhorst
2014-07-22 15:02                   ` [Nouveau] " Christian König
2014-07-22 15:18                     ` Maarten Lankhorst
2014-07-22 15:17                 ` Daniel Vetter
2014-07-22 15:17                   ` Daniel Vetter
2014-07-22 15:35                   ` [Nouveau] " Christian König
2014-07-22 15:35                     ` Christian König
2014-07-22 15:42                     ` Daniel Vetter
2014-07-22 15:42                       ` Daniel Vetter
2014-07-22 15:59                       ` Christian König
2014-07-22 15:59                         ` Christian König
2014-07-22 16:21                         ` Daniel Vetter
2014-07-22 16:21                           ` Daniel Vetter
2014-07-22 16:39                           ` Christian König
2014-07-22 16:39                             ` Christian König
2014-07-22 16:52                             ` Daniel Vetter
2014-07-22 16:52                               ` Daniel Vetter
2014-07-22 16:43                           ` Daniel Vetter
2014-07-22 16:43                             ` Daniel Vetter
2014-07-23  6:40                         ` Maarten Lankhorst
2014-07-23  6:40                           ` Maarten Lankhorst
2014-07-23  6:52                           ` Christian König
2014-07-23  6:52                             ` Christian König
2014-07-23  7:02                             ` [Nouveau] " Daniel Vetter
2014-07-23  7:02                               ` Daniel Vetter
2014-07-23  7:06                             ` [Nouveau] " Maarten Lankhorst
2014-07-23  7:06                               ` Maarten Lankhorst
2014-07-23  7:09                               ` Daniel Vetter
2014-07-23  7:09                                 ` Daniel Vetter
2014-07-23  7:15                                 ` Christian König
2014-07-23  7:15                                   ` Christian König
2014-07-23  7:32                                   ` [Nouveau] " Maarten Lankhorst
2014-07-23  7:32                                     ` Maarten Lankhorst
2014-07-23  7:41                                     ` Christian König
2014-07-23  7:41                                       ` Christian König
2014-07-23  7:26                               ` [Nouveau] " Christian König
2014-07-23  7:26                                 ` Christian König
2014-07-23  7:31                                 ` Daniel Vetter
2014-07-23  7:31                                   ` Daniel Vetter
2014-07-23  7:37                                   ` Christian König
2014-07-23  7:37                                     ` Christian König
2014-07-23  7:51                                     ` [Nouveau] " Maarten Lankhorst
2014-07-23  7:51                                       ` Maarten Lankhorst
2014-07-23  7:58                                       ` [Nouveau] " Christian König
2014-07-23  7:58                                         ` Christian König
2014-07-23  8:07                                         ` [Nouveau] " Daniel Vetter
2014-07-23  8:07                                           ` Daniel Vetter
2014-07-23  8:20                                           ` [Nouveau] " Christian König
2014-07-23  8:20                                             ` Christian König
2014-07-23  8:25                                             ` Maarten Lankhorst
2014-07-23  8:25                                               ` Maarten Lankhorst
2014-07-23  8:42                                               ` [Nouveau] " Daniel Vetter
2014-07-23  8:42                                                 ` Daniel Vetter
2014-07-23  8:46                                                 ` Christian König
2014-07-23  8:46                                                   ` Christian König
2014-07-23  8:54                                                   ` [Nouveau] " Daniel Vetter
2014-07-23  8:54                                                     ` Daniel Vetter
2014-07-23  9:27                                                     ` [Nouveau] " Christian König
2014-07-23  9:27                                                       ` Christian König
2014-07-23  9:30                                                       ` [Nouveau] " Daniel Vetter
2014-07-23  9:30                                                         ` Daniel Vetter
2014-07-23  9:36                                                         ` [Nouveau] " Christian König
2014-07-23  9:36                                                           ` Christian König
2014-07-23  9:38                                                           ` [Nouveau] " Maarten Lankhorst
2014-07-23  9:38                                                             ` Maarten Lankhorst
2014-07-23  9:39                                                             ` Christian König
2014-07-23  9:39                                                               ` Christian König
2014-07-23  9:39                                                           ` [Nouveau] " Daniel Vetter
2014-07-23  9:39                                                             ` Daniel Vetter
2014-07-23  9:44                                                             ` Daniel Vetter
2014-07-23  9:44                                                               ` Daniel Vetter
2014-07-23  9:47                                                               ` [Nouveau] " Christian König
2014-07-23  9:47                                                                 ` Christian König
2014-07-23  9:52                                                                 ` Daniel Vetter
2014-07-23  9:52                                                                   ` Daniel Vetter
2014-07-23  9:55                                                                 ` [Nouveau] " Maarten Lankhorst
2014-07-23  9:55                                                                   ` Maarten Lankhorst
2014-07-23 10:13                                                                   ` [Nouveau] " Christian König
2014-07-23 10:13                                                                     ` Christian König
2014-07-23 10:52                                                                     ` [Nouveau] " Daniel Vetter
2014-07-23 10:52                                                                       ` Daniel Vetter
2014-07-23 12:36                                                                       ` Christian König
2014-07-23 12:36                                                                         ` Christian König
2014-07-23 12:42                                                                         ` Daniel Vetter
2014-07-23 12:42                                                                           ` Daniel Vetter
2014-07-23 13:16                                                                         ` Maarten Lankhorst
2014-07-23 13:16                                                                           ` Maarten Lankhorst
2014-07-23 14:05                                                                           ` [Nouveau] " Maarten Lankhorst
2014-07-23 14:05                                                                             ` Maarten Lankhorst
2014-07-24 13:47                                                                             ` [Nouveau] " Christian König
2014-07-24 13:47                                                                               ` Christian König
2014-07-23  8:01                                     ` Daniel Vetter
2014-07-23  8:01                                       ` Daniel Vetter
2014-07-23  8:31                                       ` Christian König
2014-07-23  8:31                                         ` Christian König
2014-07-23 12:35                             ` Rob Clark
2014-07-23 12:35                               ` Rob Clark
2014-07-22 14:05             ` Maarten Lankhorst
2014-07-22 14:24               ` Christian König
2014-07-22 14:27                 ` Maarten Lankhorst
2014-07-22 14:39                   ` Christian König
2014-07-22 14:47                     ` Maarten Lankhorst
2014-07-22 15:16                       ` Christian König
2014-07-22 15:19                     ` Daniel Vetter
2014-07-22 15:19                       ` Daniel Vetter
2014-07-22 15:42                       ` Alex Deucher
2014-07-22 15:42                         ` Alex Deucher
2014-07-22 15:48                         ` Daniel Vetter
2014-07-22 15:48                           ` Daniel Vetter
2014-07-22 19:14                           ` Jesse Barnes
2014-07-22 19:14                             ` Jesse Barnes
2014-07-23  9:47                             ` [Nouveau] " Daniel Vetter
2014-07-23  9:47                               ` Daniel Vetter
2014-07-23 15:37                               ` [Nouveau] " Jesse Barnes
2014-07-23 15:37                                 ` Jesse Barnes
2014-07-22 11:51     ` Maarten Lankhorst
2014-07-22 11:51       ` Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 10/17] drm/qxl: rework to new fence interface Maarten Lankhorst
2014-07-09 12:30 ` [PATCH 11/17] drm/vmwgfx: get rid of different types of fence_flags entirely Maarten Lankhorst
2014-07-09 12:30 ` [PATCH 12/17] drm/vmwgfx: rework to new fence interface Maarten Lankhorst
2014-07-09 12:30 ` [PATCH 13/17] drm/ttm: flip the switch, and convert to dma_fence Maarten Lankhorst
2014-07-09 12:30 ` [PATCH 14/17] drm/nouveau: use rcu in nouveau_gem_ioctl_cpu_prep Maarten Lankhorst
2014-07-09 12:30 ` [PATCH 15/17] drm/radeon: use rcu waits in some ioctls Maarten Lankhorst
2014-07-09 12:30 ` [PATCH 16/17] drm/vmwgfx: use rcu in vmw_user_dmabuf_synccpu_grab Maarten Lankhorst
2014-07-09 12:30 ` [PATCH 17/17] drm/ttm: use rcu in core ttm Maarten Lankhorst
2014-07-09 13:09 ` [PATCH 00/17] Convert TTM to the new fence interface Mike Lothian
2014-07-09 13:21   ` Maarten Lankhorst
2014-07-09 13:21     ` Maarten Lankhorst
2014-07-10 21:37 ` Thomas Hellström
2014-07-10 21:37   ` Thomas Hellström

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=20140722132652.GO15237@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=airlied@gmail.com \
    --cc=alexander.deucher@amd.com \
    --cc=bskeggs@redhat.com \
    --cc=christian.koenig@amd.com \
    --cc=deathsimple@vodafone.de \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maarten.lankhorst@canonical.com \
    --cc=nouveau@lists.freedesktop.org \
    --cc=thellstrom@vmware.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.