From: Daniel Vetter <daniel@ffwll.ch>
To: Jesse Barnes <jbarnes@virtuousgeek.org>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 09/20] drm/i915: add power context allocation and setup on VLV v2
Date: Tue, 12 Mar 2013 00:40:30 +0100 [thread overview]
Message-ID: <20130311234030.GF3872@bremse> (raw)
In-Reply-To: <1362768363-3710-9-git-send-email-jbarnes@virtuousgeek.org>
On Fri, Mar 08, 2013 at 10:45:52AM -0800, Jesse Barnes wrote:
> The Gunit has a separate reg for this, so allocate some stolen space for
> the power context and initialize the reg.
Is it a requirement to use stolen space? The reason we're allocating rings
and all from stolen is just to test things a bit better and ensure we have
a decent chance that stolen handling for fastboot works ... Some comment
somewhere would be good to clarify this.
Also seconded on Ben's comment.
Cheers, Daniel
>
> v2: check for allocation before freeing at cleanup (Jani)
>
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 2 ++
> drivers/gpu/drm/i915/i915_gem_stolen.c | 44 ++++++++++++++++++++++++++++++++
> drivers/gpu/drm/i915/i915_reg.h | 1 +
> 3 files changed, 47 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 2b4d9b6..3061d73 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1023,6 +1023,8 @@ typedef struct drm_i915_private {
>
> struct i915_gpu_error gpu_error;
>
> + struct drm_mm_node *vlv_pctx;
> +
> /* list of fbdev register on this device */
> struct intel_fbdev *fbdev;
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c
> index 69d97cb..8376a1b 100644
> --- a/drivers/gpu/drm/i915/i915_gem_stolen.c
> +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
> @@ -171,11 +171,52 @@ void i915_gem_stolen_cleanup_compression(struct drm_device *dev)
> dev_priv->cfb_size = 0;
> }
>
> +static void i915_setup_pctx(struct drm_device *dev)
> +{
> + struct drm_i915_private *dev_priv = dev->dev_private;
> + struct drm_mm_node *pctx;
> + unsigned long pctx_paddr;
> + int pctx_size = 24*1024;
> +
> + pctx = drm_mm_search_free(&dev_priv->mm.stolen, pctx_size, 4096, 0);
> + if (pctx)
> + pctx = drm_mm_get_block(pctx, pctx_size, 4096);
> + if (!pctx)
> + goto err;
> +
> + pctx_paddr = dev_priv->mm.stolen_base + pctx->start;
> + if (!pctx_paddr)
> + goto err_free_pctx;
> +
> + dev_priv->vlv_pctx = pctx;
> + I915_WRITE(VLV_PCBR, pctx_paddr);
> +
> + return;
> +
> +err_free_pctx:
> + drm_mm_put_block(pctx);
> +err:
> + DRM_DEBUG("not enough stolen space for PCTX, disabling\n");
> +}
> +
> +static void i915_cleanup_pctx(struct drm_device *dev)
> +{
> + struct drm_i915_private *dev_priv = dev->dev_private;
> +
> + if (!dev_priv->vlv_pctx)
> + return;
> +
> + I915_WRITE(VLV_PCBR, 0);
> + drm_mm_put_block(dev_priv->vlv_pctx);
> +}
> +
> void i915_gem_cleanup_stolen(struct drm_device *dev)
> {
> struct drm_i915_private *dev_priv = dev->dev_private;
>
> i915_gem_stolen_cleanup_compression(dev);
> + if (IS_VALLEYVIEW(dev) && i915_powersave)
> + i915_cleanup_pctx(dev);
> drm_mm_takedown(&dev_priv->mm.stolen);
> }
>
> @@ -193,6 +234,9 @@ int i915_gem_init_stolen(struct drm_device *dev)
> /* Basic memrange allocator for stolen space */
> drm_mm_init(&dev_priv->mm.stolen, 0, dev_priv->gtt.stolen_size);
>
> + if (IS_VALLEYVIEW(dev) && i915_powersave)
> + i915_setup_pctx(dev);
> +
> return 0;
> }
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index c660a11..ed35805 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -623,6 +623,7 @@
> #define VLV_IIR (VLV_DISPLAY_BASE + 0x20a4)
> #define VLV_IMR (VLV_DISPLAY_BASE + 0x20a8)
> #define VLV_ISR (VLV_DISPLAY_BASE + 0x20ac)
> +#define VLV_PCBR (VLV_DISPLAY_BASE + 0x2120)
> #define I915_PIPE_CONTROL_NOTIFY_INTERRUPT (1<<18)
> #define I915_DISPLAY_PORT_INTERRUPT (1<<17)
> #define I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT (1<<15)
> --
> 1.7.10.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
next prev parent reply other threads:[~2013-03-11 23:40 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-08 18:45 [PATCH 01/20] drm/i915: sprite support for ValleyView v2 Jesse Barnes
2013-03-08 18:45 ` [PATCH 02/20] drm/i915: add sprite assertion function for VLV Jesse Barnes
2013-03-08 18:45 ` [PATCH 03/20] drm/i915: add constant alpha support to sprite ioctl Jesse Barnes
2013-03-19 8:42 ` Daniel Vetter
2013-03-19 17:57 ` Jesse Barnes
2013-03-20 16:32 ` Ville Syrjälä
2013-03-20 17:16 ` Daniel Vetter
2013-03-08 18:45 ` [PATCH 04/20] drm/i915: update VLV PLL and DPIO code v6 Jesse Barnes
2013-03-08 18:45 ` [PATCH 05/20] drm/i915/dp: fix up VLV DP handling v2 Jesse Barnes
2013-03-08 18:45 ` [PATCH 06/20] drm/i915: panel power sequencing for VLV eDP v2 Jesse Barnes
2013-03-19 20:49 ` Daniel Vetter
2013-03-08 18:45 ` [PATCH 07/20] drm/i915: add more VLV IDs Jesse Barnes
2013-03-08 18:45 ` [PATCH 08/20] drm/i915: fix WaDisablePSDDualDispatchEnable on VLV v2 Jesse Barnes
2013-03-08 18:45 ` [PATCH 09/20] drm/i915: add power context allocation and setup " Jesse Barnes
2013-03-08 20:16 ` Ben Widawsky
2013-03-11 23:40 ` Daniel Vetter [this message]
2013-03-12 0:01 ` Chris Wilson
2013-03-08 18:45 ` [PATCH 10/20] drm/i915: allow force wake at init time " Jesse Barnes
2013-03-19 6:38 ` Ville Syrjälä
2013-03-19 8:38 ` Daniel Vetter
2013-03-08 18:45 ` [PATCH 11/20] drm/i915: set conservative clock gating values " Jesse Barnes
2013-03-08 18:45 ` [PATCH 12/20] drm/i915: fix VLV limits and m/n/p calculations v2 Jesse Barnes
2013-03-08 18:45 ` [PATCH 13/20] drm/i915: add Punit read/write routines for VLV Jesse Barnes
2013-03-20 18:38 ` Ben Widawsky
2013-03-08 18:45 ` [PATCH 14/20] drm/i915: add media well to VLV force wake routines v2 Jesse Barnes
2013-03-19 11:53 ` Ville Syrjälä
2013-03-19 19:15 ` Daniel Vetter
2013-03-08 18:45 ` [PATCH 15/20] drm/i915: turbo & RC6 support for VLV v2 Jesse Barnes
2013-03-19 22:27 ` Ben Widawsky
2013-03-19 22:35 ` Jesse Barnes
2013-03-19 23:38 ` Ben Widawsky
2013-03-20 16:32 ` Ben Widawsky
2013-03-08 18:45 ` [PATCH 16/20] drm/i915: DSPFW and BLC regs are in the display offset range Jesse Barnes
2013-03-08 18:46 ` [PATCH 17/20] drm/i915: don't use plane pipe select on VLV Jesse Barnes
2013-03-19 11:59 ` Ville Syrjälä
2013-03-19 19:05 ` Daniel Vetter
2013-03-08 18:46 ` [PATCH 18/20] drm/i915: use VLV DIP routines on VLV v2 Jesse Barnes
2013-03-19 19:23 ` Daniel Vetter
2013-03-08 18:46 ` [PATCH 19/20] drm/i915/dp: program VSwing and Preemphasis control settings on VLV Jesse Barnes
2013-03-19 19:30 ` Daniel Vetter
2013-03-08 18:46 ` [PATCH 20/20] drm/i915: VLV doesn't have HDMI on port C Jesse Barnes
2013-03-19 21:11 ` Daniel Vetter
2013-03-19 6:30 ` [PATCH 01/20] drm/i915: sprite support for ValleyView v2 Ville Syrjälä
2013-03-19 17:51 ` Jesse Barnes
-- strict thread matches above, loose matches on Subject: below --
2013-03-12 14:44 [PATCH 09/20] drm/i915: add power context allocation and setup on VLV v2 Jesse Barnes
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=20130311234030.GF3872@bremse \
--to=daniel@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jbarnes@virtuousgeek.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.