All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rodrigo Vivi <rodrigo.vivi@gmail.com>
To: Paulo Zanoni <przanoni@gmail.com>
Cc: intel-gfx <intel-gfx@lists.freedesktop.org>,
	Paulo Zanoni <paulo.r.zanoni@intel.com>
Subject: Re: [PATCH 2/3] drm/i915: release the GTT mmaps when going into D3
Date: Fri, 13 Dec 2013 16:22:40 -0200	[thread overview]
Message-ID: <CABVU7+tRcGBv2ETQ8cW7=_NRG81sRwCmNLgvCAtez0nUCkhgug@mail.gmail.com> (raw)
In-Reply-To: <1386955352-2262-2-git-send-email-przanoni@gmail.com>

When I saw this I was afraid this force could break userspace somehow,
but Paulo explained me the release with pagefault mechanism. Thanks Paulo.

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>

On Fri, Dec 13, 2013 at 3:22 PM, Paulo Zanoni <przanoni@gmail.com> wrote:
> From: Paulo Zanoni <paulo.r.zanoni@intel.com>
>
> So we'll get a fault when someone tries to access the mmap, then we'll
> wake up from D3.
>
> v2: - Rebase
> v3: - Use gtt active/inactive
>
> Testcase: igt/pm_pc8/gem-mmap-gtt
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.c |  2 ++
>  drivers/gpu/drm/i915/i915_drv.h |  1 +
>  drivers/gpu/drm/i915/i915_gem.c | 10 ++++++++++
>  3 files changed, 13 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 70590b0..23f8217 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -920,6 +920,8 @@ static int i915_runtime_suspend(struct device *device)
>
>         DRM_DEBUG_KMS("Suspending device\n");
>
> +       i915_gem_release_all_mmaps(dev_priv);
> +
>         del_timer_sync(&dev_priv->gpu_error.hangcheck_timer);
>         dev_priv->pm.suspended = true;
>         intel_opregion_notify_adapter(dev, PCI_D3cold);
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index fca2eb6..5e036be 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2013,6 +2013,7 @@ void i915_gem_object_unpin(struct drm_i915_gem_object *obj);
>  int __must_check i915_vma_unbind(struct i915_vma *vma);
>  int __must_check i915_gem_object_ggtt_unbind(struct drm_i915_gem_object *obj);
>  int i915_gem_object_put_pages(struct drm_i915_gem_object *obj);
> +void i915_gem_release_all_mmaps(struct drm_i915_private *dev_priv);
>  void i915_gem_release_mmap(struct drm_i915_gem_object *obj);
>  void i915_gem_lastclose(struct drm_device *dev);
>
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 66f8133..0d7c061 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -1465,6 +1465,16 @@ out:
>         return ret;
>  }
>
> +void i915_gem_release_all_mmaps(struct drm_i915_private *dev_priv)
> +{
> +       struct i915_vma *vma;
> +
> +       list_for_each_entry(vma, &dev_priv->gtt.base.active_list, mm_list)
> +               i915_gem_release_mmap(vma->obj);
> +       list_for_each_entry(vma, &dev_priv->gtt.base.inactive_list, mm_list)
> +               i915_gem_release_mmap(vma->obj);
> +}
> +
>  /**
>   * i915_gem_release_mmap - remove physical page mappings
>   * @obj: obj in question
> --
> 1.8.3.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



-- 
Rodrigo Vivi
Blog: http://blog.vivi.eng.br

  reply	other threads:[~2013-12-13 18:22 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-13 17:22 [PATCH 1/3] drm/i915: cancel the hangcheck before runtime suspend Paulo Zanoni
2013-12-13 17:22 ` [PATCH 2/3] drm/i915: release the GTT mmaps when going into D3 Paulo Zanoni
2013-12-13 18:22   ` Rodrigo Vivi [this message]
2013-12-14 14:36     ` Daniel Vetter
2013-12-13 17:22 ` [PATCH 3/3] drm/i915: add runtime PM support on Haswell Paulo Zanoni
2013-12-13 18:23   ` Rodrigo Vivi
2013-12-13 18:08 ` [PATCH 1/3] drm/i915: cancel the hangcheck before runtime suspend Rodrigo Vivi

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='CABVU7+tRcGBv2ETQ8cW7=_NRG81sRwCmNLgvCAtez0nUCkhgug@mail.gmail.com' \
    --to=rodrigo.vivi@gmail.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=paulo.r.zanoni@intel.com \
    --cc=przanoni@gmail.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.