All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jerome Glisse <glisse@freedesktop.org>
To: Thomas Hellstrom <thellstrom@vmware.com>
Cc: Jerome Glisse <jglisse@redhat.com>,
	"skeggsb@gmail.com" <skeggsb@gmail.com>,
	"dri-devel@lists.sf.net" <dri-devel@lists.sf.net>
Subject: Re: Unmappable VRAM patchset V3
Date: Thu, 25 Feb 2010 10:39:18 +0100	[thread overview]
Message-ID: <20100225093918.GL11509@localhost.localdomain> (raw)
In-Reply-To: <4B855C39.3030600@vmware.com>

On Wed, Feb 24, 2010 at 06:04:57PM +0100, Thomas Hellstrom wrote:
> Jerome Glisse wrote:
> >On Wed, Feb 24, 2010 at 01:37:42PM +0100, Thomas Hellstrom wrote:
> >>Jerome Glisse wrote:
> >>>On Tue, Feb 23, 2010 at 02:05:50PM +0100, Thomas Hellstrom wrote:
> >>>>Jerome Glisse wrote:
> >>>>>On Mon, Feb 22, 2010 at 08:58:28PM +0100, Thomas Hellstrom wrote:
> >>>>>>Jerome Glisse wrote:
> >>>>>>>On Mon, Feb 22, 2010 at 06:30:24PM +0100, Thomas Hellstrom wrote:
> >>>>>>>>Jerome Glisse wrote:
> >>>>>>>>>Thomas i think i addressed your concern here, the ttm_bo_validate
> >>>>>>>>>didn't needed a new argument or i did not understand what was
> >>>>>>>>>necessary beside no_wait. In this patchset we check the value
> >>>>>>>>>of callback in case of EBUSY (call set_need_resched) or ERESTARTSYS
> >>>>>>>>>we return VM_FAULT_NOPAGE.
> >>>>>>>>Well, if we from the fault callback call any function that might
> >>>>>>>>call ttm_bo_reserve or ttm_bo_reserve_locked, we must make sure
> >>>>>>>>that we never wait, but return -EBUSY all the way back to the
> >>>>>>>>fault function. Such a case may be ttm_bo_validate that calls
> >>>>>>>>ttm_bo_evict_first, or something causing a swapout...
> >>>>>>>>ttm_bo_validate currently doesn't have that functionality,
> >>>>>>>>because @no_wait just means don't wait for GPU.
> >>>>>>>What do you mean by never wait ? Is this GPU wait ? or CPU wait ie don't
> >>>>>>>use mutex or kernel code path that might sleep ?
> >>>>>>I mean waiting while reserving a bo. (If another thread has the bo
> >>>>>>reserved).
> >>>>>>
> >>>>>>>After a new review i don't think we ever wait for the GPU with the current
> >>>>>>>patch and as far as i can tell we will return EBUSY or ERESTART all the
> >>>>>>>way up.
> >>>>>>>
> >>>>>>>Cheers,
> >>>>>>>Jerome
> >>>>>>If there is *no* code path trying to reserve a bo or create a
> >>>>>>user-space visible object from within the fault handler, it should
> >>>>>>be ok.
> >>>>>>
> >>>>>>/Thomas
> >>>>>>
> >>>>>>
> >>>>>Did a new review again here is the call chain :
> >>>>>ttm_bo_move_buffer
> >>>>>ttm_bo_mem_space
> >>>>>  ttm_bo_mem_force_space
> >>>>>    ttm_mem_evict_first
> >>>>>      ttm_bo_reserve_locked (no_wait = true)
> >>>>Here ttm_mem_evict_fist may wait for unreserve IIRC (the -EBUSY
> >>>>return from ttm_bo_reserve_locked) is not propagated back.
> >>>The code is not straightforward but if no_wait is true the
> >>>-EBUSY of ttm_bo_reserve_locked will be propagated back.
> >>The point is that we don't want to set no_wait to true, because it's
> >>OK to wait for GPU. We want to add an extra argument
> >>no_wait_reserve.
> >>
> >>/Thomas
> >>
> >
> >My patchset doesn't change the code there, no_wait will be true
> >only if it's true as argument of ttm_bo_validate from the ttm
> >fault callback in the driver.
> >
> 
> But you did call ttm_bo_move_buffer from the fault callback?
> Given the above, it's illegal to call it with no_wait set to false,
> and undesirable to call it with no_wait set to true.
> 
> /Thomas
> 

I only call ttm_bo_validate from the fault callback, to validate
the bo into visible vram. I don't see why it would be undesirable
to call it with no_wait = true ?

Correct me if i am wrong but what we want is to try to move bo
without waiting at all on referencing other bo to avoid deadlock,
thus calling ttm_bo_validate with no_wait=true will return to
us with -EBUSY or -ERESTARTSYS if a bo we need to reserve to
move it away is already reserved, in this case we return to
the ttm fault handler which will return VM_FAULT_NOPAGE

The no_wait argument of ttm_bo_validate is pretty much only
use as an argument for reserving other bo in case we need
to evict or as an argument to ttm_bo_wait if we have to
wait for the bo. I can understand that we would like to
permit waiting on the bo we are faulting on, this is the
only place where i can understand having a different value
for validating.

Cheers,
Jerome

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
--

      reply	other threads:[~2010-02-25  9:39 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-22 17:11 Unmappable VRAM patchset V3 Jerome Glisse
2010-02-22 17:11 ` [PATCH 1/9] drm/ttm: add ttm_fault callback to allow driver to handle bo placement Jerome Glisse
2010-02-22 17:11   ` [PATCH 1/9] drm/ttm: ttm_fault callback to allow driver to handle bo placement V2 Jerome Glisse
2010-02-22 17:11     ` [PATCH 2/9] drm/radeon/kms: add support for new fault callback Jerome Glisse
2010-02-22 17:11       ` [PATCH 2/9] drm/radeon/kms: add support for new fault callback V2 Jerome Glisse
2010-02-22 17:11         ` [PATCH 3/9] drm/nouveau/kms: add support for new TTM fault callback Jerome Glisse
2010-02-22 17:11           ` [PATCH 4/9] drm/vmwgfx: " Jerome Glisse
2010-02-22 17:11             ` [PATCH 5/9] drm/radeon/kms: don't initialize TTM io memory manager field Jerome Glisse
2010-02-22 17:11               ` [PATCH 6/9] drm/nouveau/kms: " Jerome Glisse
2010-02-22 17:11                 ` [PATCH 7/9] drm/vmwgfx: " Jerome Glisse
2010-02-22 17:11                   ` [PATCH 8/9] drm/ttm: remove io_ field from TTM Jerome Glisse
2010-02-22 17:11                     ` [PATCH 8/9] drm/ttm: remove io_ field from TTM V2 Jerome Glisse
2010-02-22 17:11                       ` [PATCH 9/9] drm/radeon/kms: enable use of unmappable VRAM Jerome Glisse
2010-03-17 12:57     ` [PATCH 1/9] drm/ttm: ttm_fault callback to allow driver to handle bo placement V2 Thomas Hellstrom
2010-02-22 17:30 ` Unmappable VRAM patchset V3 Thomas Hellstrom
2010-02-22 19:09   ` Jerome Glisse
     [not found]     ` <4B82E1E4.40909@vmware.com>
2010-02-23  9:59       ` Jerome Glisse
2010-02-23 13:05         ` Thomas Hellstrom
2010-02-24  9:57           ` Jerome Glisse
2010-02-24 12:37             ` Thomas Hellstrom
2010-02-24 15:58               ` Jerome Glisse
2010-02-24 17:04                 ` Thomas Hellstrom
2010-02-25  9:39                   ` Jerome Glisse [this message]

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=20100225093918.GL11509@localhost.localdomain \
    --to=glisse@freedesktop.org \
    --cc=dri-devel@lists.sf.net \
    --cc=jglisse@redhat.com \
    --cc=skeggsb@gmail.com \
    --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.