All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] Enabling GuC Loading on Broxton
@ 2016-01-08 15:03 Peter Antoine
  2016-01-08 15:03 ` [PATCH 1/3] drm/i915: Adding Broxton GuC Loader Support Peter Antoine
                   ` (3 more replies)
  0 siblings, 4 replies; 13+ messages in thread
From: Peter Antoine @ 2016-01-08 15:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: daniel.vetter, dave.gordon

This set of patches will enable the GuC loading for BXT.
There is also a fix that is required for GuC submission with the BXT GuC
to make it reliable.

Peter Antoine (3):
  drm/i915: Adding Broxton GuC Loader Support
  drm/i915: resize the GuC WOPCM for rc6
  drm/i915: Wait after context init with GuC Submission

 drivers/gpu/drm/i915/i915_gem.c         | 10 ++++++++++
 drivers/gpu/drm/i915/i915_guc_reg.h     |  3 ++-
 drivers/gpu/drm/i915/intel_guc_loader.c | 12 ++++++++++++
 drivers/gpu/drm/i915/intel_lrc.c        | 11 +++++++++++
 4 files changed, 35 insertions(+), 1 deletion(-)

-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/3] drm/i915: Adding Broxton GuC Loader Support
  2016-01-08 15:03 [PATCH 0/3] Enabling GuC Loading on Broxton Peter Antoine
@ 2016-01-08 15:03 ` Peter Antoine
  2016-01-11 16:40   ` Yu Dai
  2016-01-08 15:03 ` [PATCH 2/3] drm/i915: resize the GuC WOPCM for rc6 Peter Antoine
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 13+ messages in thread
From: Peter Antoine @ 2016-01-08 15:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: daniel.vetter, dave.gordon

This commits adds the Broxton target to the GuC loader

Issue: https://jira01.devtools.intel.com/browse/VIZ-6638
Signed-off-by: Peter Antoine <peter.antoine@intel.com>
---
 drivers/gpu/drm/i915/intel_guc_loader.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c
index 550921f..8182d11 100644
--- a/drivers/gpu/drm/i915/intel_guc_loader.c
+++ b/drivers/gpu/drm/i915/intel_guc_loader.c
@@ -62,6 +62,9 @@
 #define I915_SKL_GUC_UCODE "i915/skl_guc_ver4.bin"
 MODULE_FIRMWARE(I915_SKL_GUC_UCODE);
 
+#define I915_BXT_GUC_UCODE "i915/bxt_guc_ver3.bin"
+MODULE_FIRMWARE(I915_BXT_GUC_UCODE);
+
 /* User-friendly representation of an enum */
 const char *intel_guc_fw_status_repr(enum intel_guc_fw_status status)
 {
@@ -587,6 +590,10 @@ void intel_guc_ucode_init(struct drm_device *dev)
 		fw_path = I915_SKL_GUC_UCODE;
 		guc_fw->guc_fw_major_wanted = 4;
 		guc_fw->guc_fw_minor_wanted = 3;
+	} else if (IS_BROXTON(dev)) {
+		fw_path = I915_BXT_GUC_UCODE;
+		guc_fw->guc_fw_major_wanted = 3;
+		guc_fw->guc_fw_minor_wanted = 0;
 	} else {
 		i915.enable_guc_submission = false;
 		fw_path = "";	/* unknown device */
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 2/3] drm/i915: resize the GuC WOPCM for rc6
  2016-01-08 15:03 [PATCH 0/3] Enabling GuC Loading on Broxton Peter Antoine
  2016-01-08 15:03 ` [PATCH 1/3] drm/i915: Adding Broxton GuC Loader Support Peter Antoine
@ 2016-01-08 15:03 ` Peter Antoine
  2016-01-11 16:40   ` Yu Dai
                     ` (2 more replies)
  2016-01-08 15:03 ` [PATCH 3/3] drm/i915: Wait after context init with GuC Submission Peter Antoine
  2016-01-11 10:13 ` ✗ warning: Fi.CI.BAT Patchwork
  3 siblings, 3 replies; 13+ messages in thread
From: Peter Antoine @ 2016-01-08 15:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: daniel.vetter, dave.gordon

This patch resizes the GuC WOPCM to so that the GuC and the RC6 memory
spaces do not overlap.

Issue: https://jira01.devtools.intel.com/browse/VIZ-6638
Signed-off-by: Peter Antoine <peter.antoine@intel.com>
---
 drivers/gpu/drm/i915/i915_guc_reg.h     | 3 ++-
 drivers/gpu/drm/i915/intel_guc_loader.c | 5 +++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_guc_reg.h b/drivers/gpu/drm/i915/i915_guc_reg.h
index 685c799..cb938b0 100644
--- a/drivers/gpu/drm/i915/i915_guc_reg.h
+++ b/drivers/gpu/drm/i915/i915_guc_reg.h
@@ -58,7 +58,8 @@
 #define GUC_MAX_IDLE_COUNT		_MMIO(0xC3E4)
 
 #define GUC_WOPCM_SIZE			_MMIO(0xc050)
-#define   GUC_WOPCM_SIZE_VALUE  	  (0x80 << 12)	/* 512KB */
+#define   GUC_WOPCM_SIZE_VALUE		(0x80 << 12)	/* 512KB */
+#define   BXT_GUC_WOPCM_SIZE_VALUE	(0x70 << 12)	/* 448KB */
 
 /* GuC addresses below GUC_WOPCM_TOP don't map through the GTT */
 #define	GUC_WOPCM_TOP			(GUC_WOPCM_SIZE_VALUE)
diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c
index 8182d11..6b17d44 100644
--- a/drivers/gpu/drm/i915/intel_guc_loader.c
+++ b/drivers/gpu/drm/i915/intel_guc_loader.c
@@ -305,6 +305,11 @@ static int guc_ucode_xfer(struct drm_i915_private *dev_priv)
 
 	/* init WOPCM */
 	I915_WRITE(GUC_WOPCM_SIZE, GUC_WOPCM_SIZE_VALUE);
+	if (IS_BROXTON(dev))
+		I915_WRITE(GUC_WOPCM_SIZE, BXT_GUC_WOPCM_SIZE_VALUE);
+	else
+		I915_WRITE(GUC_WOPCM_SIZE, GUC_WOPCM_SIZE_VALUE);
+
 	I915_WRITE(DMA_GUC_WOPCM_OFFSET, GUC_WOPCM_OFFSET_VALUE);
 
 	/* Enable MIA caching. GuC clock gating is disabled. */
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 3/3] drm/i915: Wait after context init with GuC Submission
  2016-01-08 15:03 [PATCH 0/3] Enabling GuC Loading on Broxton Peter Antoine
  2016-01-08 15:03 ` [PATCH 1/3] drm/i915: Adding Broxton GuC Loader Support Peter Antoine
  2016-01-08 15:03 ` [PATCH 2/3] drm/i915: resize the GuC WOPCM for rc6 Peter Antoine
@ 2016-01-08 15:03 ` Peter Antoine
  2016-01-08 15:19   ` Chris Wilson
  2016-01-11 16:40   ` Yu Dai
  2016-01-11 10:13 ` ✗ warning: Fi.CI.BAT Patchwork
  3 siblings, 2 replies; 13+ messages in thread
From: Peter Antoine @ 2016-01-08 15:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: daniel.vetter, dave.gordon

Per-context initialisation GPU instructions (which are injected directly
into the ringbuffer rather than being submitted as a batch) should not
be allowed to mix with user-generated batches in the same submission; it
will cause confusion for the GuC (which might merge a subsequent
preemptive request with the non-preemptive initialisation code), and for
the scheduler, which wouldn't know how to re-inject a non-batch request
if it were the victim of preemption.

Therefore, we should wait for the initialisation request to complete
before making the newly-initialised context available for user-mode
submissions.

Here, we add a call to i915_wait_request() after each existing call to
i915_add_request_no_flush() (in i915_gem_init_hw(), for the default
per-engine contexts, and intel_lr_context_deferred_create(), for all
others).

Adapted from Dave Gordon's patch, which is adapted from Alex's earlier
patch, which added the wait only to intel_lr_context_render_state_init().

Issue: https://jira01.devtools.intel.com/browse/VIZ-6638
Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
Signed-off-by: Peter Antoine <peter.antoine@intel.com>
---
 drivers/gpu/drm/i915/i915_gem.c  | 10 ++++++++++
 drivers/gpu/drm/i915/intel_lrc.c | 11 +++++++++++
 2 files changed, 21 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 5be4433..e71bf90 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -4847,6 +4847,16 @@ i915_gem_init_hw(struct drm_device *dev)
 		}
 
 		i915_add_request_no_flush(req);
+
+		/*
+		 * GuC firmware will try to collapse its DPC work queue if the
+		 * new one is for same context. So the following breadcrumb
+		 * could be amended to this batch and submitted as one batch.
+		 * Wait here to make sure the context state init is finished
+		 * before any other submission to GuC.
+		 */
+		if (i915.enable_guc_submission)
+			ret = i915_wait_request(req);
 	}
 
 out:
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 3aa6147..f18fb11 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -2499,6 +2499,17 @@ int intel_lr_context_deferred_alloc(struct intel_context *ctx,
 			goto error_ringbuf;
 		}
 		i915_add_request_no_flush(req);
+
+		/*
+		 * GuC firmware will try to collapse its DPC work queue
+		 * if the new one is for same context. So the
+		 * following breadcrumb could be amended to this batch
+		 * and submitted as one batch. Wait here to make sure
+		 * the context state init is finished before any other
+		 * submission to GuC.
+		 */
+		if (i915.enable_guc_submission)
+			ret = i915_wait_request(req);
 	}
 	return 0;
 
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 3/3] drm/i915: Wait after context init with GuC Submission
  2016-01-08 15:03 ` [PATCH 3/3] drm/i915: Wait after context init with GuC Submission Peter Antoine
@ 2016-01-08 15:19   ` Chris Wilson
  2016-01-11 15:48     ` Antoine, Peter
  2016-01-11 16:40   ` Yu Dai
  1 sibling, 1 reply; 13+ messages in thread
From: Chris Wilson @ 2016-01-08 15:19 UTC (permalink / raw)
  To: Peter Antoine; +Cc: daniel.vetter, intel-gfx, dave.gordon

On Fri, Jan 08, 2016 at 03:03:54PM +0000, Peter Antoine wrote:
> Per-context initialisation GPU instructions (which are injected directly
> into the ringbuffer rather than being submitted as a batch) should not
> be allowed to mix with user-generated batches in the same submission; it
> will cause confusion for the GuC (which might merge a subsequent
> preemptive request with the non-preemptive initialisation code), and for
> the scheduler, which wouldn't know how to re-inject a non-batch request
> if it were the victim of preemption.

Move the context init into the first request. Problem solved.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* ✗ warning: Fi.CI.BAT
  2016-01-08 15:03 [PATCH 0/3] Enabling GuC Loading on Broxton Peter Antoine
                   ` (2 preceding siblings ...)
  2016-01-08 15:03 ` [PATCH 3/3] drm/i915: Wait after context init with GuC Submission Peter Antoine
@ 2016-01-11 10:13 ` Patchwork
  2016-01-12 16:23   ` Daniel Vetter
  3 siblings, 1 reply; 13+ messages in thread
From: Patchwork @ 2016-01-11 10:13 UTC (permalink / raw)
  To: Peter Antoine; +Cc: intel-gfx

== Summary ==

Built on ff88655b3a5467bbc3be8c67d3e05ebf182557d3 drm-intel-nightly: 2016y-01m-11d-07h-30m-16s UTC integration manifest

Test gem_storedw_loop:
        Subgroup basic-render:
                pass       -> DMESG-WARN (skl-i5k-2) UNSTABLE
                dmesg-warn -> PASS       (bdw-ultra)
                dmesg-warn -> PASS       (skl-i7k-2) UNSTABLE
Test kms_flip:
        Subgroup basic-flip-vs-modeset:
                pass       -> DMESG-WARN (skl-i7k-2)
Test kms_pipe_crc_basic:
        Subgroup read-crc-pipe-b:
                dmesg-warn -> PASS       (byt-nuc)

bdw-nuci7        total:138  pass:129  dwarn:0   dfail:0   fail:0   skip:9  
bdw-ultra        total:138  pass:132  dwarn:0   dfail:0   fail:0   skip:6  
bsw-nuc-2        total:141  pass:114  dwarn:3   dfail:0   fail:0   skip:24 
byt-nuc          total:141  pass:119  dwarn:7   dfail:0   fail:0   skip:15 
hsw-brixbox      total:141  pass:134  dwarn:0   dfail:0   fail:0   skip:7  
hsw-gt2          total:141  pass:137  dwarn:0   dfail:0   fail:0   skip:4  
ilk-hp8440p      total:141  pass:100  dwarn:4   dfail:0   fail:0   skip:37 
skl-i5k-2        total:141  pass:131  dwarn:2   dfail:0   fail:0   skip:8  
skl-i7k-2        total:141  pass:131  dwarn:2   dfail:0   fail:0   skip:8  
snb-dellxps      total:141  pass:122  dwarn:5   dfail:0   fail:0   skip:14 
snb-x220t        total:141  pass:122  dwarn:5   dfail:0   fail:1   skip:13 

Results at /archive/results/CI_IGT_test/Patchwork_1117/

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 3/3] drm/i915: Wait after context init with GuC Submission
  2016-01-08 15:19   ` Chris Wilson
@ 2016-01-11 15:48     ` Antoine, Peter
  0 siblings, 0 replies; 13+ messages in thread
From: Antoine, Peter @ 2016-01-11 15:48 UTC (permalink / raw)
  To: Chris Wilson; +Cc: daniel.vetter, intel-gfx, Gordon, Dave

Ok,

Please ignore this patch.
It is really part of the pre-emption series. Was included as is being used in Android.

Peter.

-----Original Message-----
From: Chris Wilson [mailto:chris@chris-wilson.co.uk] 
Sent: Friday, January 8, 2016 3:20 PM
To: Antoine, Peter
Cc: intel-gfx@lists.freedesktop.org; daniel.vetter@ffwll.ch; Gordon, Dave
Subject: Re: [Intel-gfx] [PATCH 3/3] drm/i915: Wait after context init with GuC Submission

On Fri, Jan 08, 2016 at 03:03:54PM +0000, Peter Antoine wrote:
> Per-context initialisation GPU instructions (which are injected 
> directly into the ringbuffer rather than being submitted as a batch) 
> should not be allowed to mix with user-generated batches in the same 
> submission; it will cause confusion for the GuC (which might merge a 
> subsequent preemptive request with the non-preemptive initialisation 
> code), and for the scheduler, which wouldn't know how to re-inject a 
> non-batch request if it were the victim of preemption.

Move the context init into the first request. Problem solved.
-Chris

--
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/3] drm/i915: Adding Broxton GuC Loader Support
  2016-01-08 15:03 ` [PATCH 1/3] drm/i915: Adding Broxton GuC Loader Support Peter Antoine
@ 2016-01-11 16:40   ` Yu Dai
  0 siblings, 0 replies; 13+ messages in thread
From: Yu Dai @ 2016-01-11 16:40 UTC (permalink / raw)
  To: Peter Antoine, intel-gfx; +Cc: daniel.vetter, dave.gordon

Reviewed-by: Alex Dai <yu.dai@intel.com>

On 01/08/2016 07:03 AM, Peter Antoine wrote:
> This commits adds the Broxton target to the GuC loader
>
> Issue: https://jira01.devtools.intel.com/browse/VIZ-6638
> Signed-off-by: Peter Antoine <peter.antoine@intel.com>
> ---
>   drivers/gpu/drm/i915/intel_guc_loader.c | 7 +++++++
>   1 file changed, 7 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c
> index 550921f..8182d11 100644
> --- a/drivers/gpu/drm/i915/intel_guc_loader.c
> +++ b/drivers/gpu/drm/i915/intel_guc_loader.c
> @@ -62,6 +62,9 @@
>   #define I915_SKL_GUC_UCODE "i915/skl_guc_ver4.bin"
>   MODULE_FIRMWARE(I915_SKL_GUC_UCODE);
>   
> +#define I915_BXT_GUC_UCODE "i915/bxt_guc_ver3.bin"
> +MODULE_FIRMWARE(I915_BXT_GUC_UCODE);
> +
>   /* User-friendly representation of an enum */
>   const char *intel_guc_fw_status_repr(enum intel_guc_fw_status status)
>   {
> @@ -587,6 +590,10 @@ void intel_guc_ucode_init(struct drm_device *dev)
>   		fw_path = I915_SKL_GUC_UCODE;
>   		guc_fw->guc_fw_major_wanted = 4;
>   		guc_fw->guc_fw_minor_wanted = 3;
> +	} else if (IS_BROXTON(dev)) {
> +		fw_path = I915_BXT_GUC_UCODE;
> +		guc_fw->guc_fw_major_wanted = 3;
> +		guc_fw->guc_fw_minor_wanted = 0;
>   	} else {
>   		i915.enable_guc_submission = false;
>   		fw_path = "";	/* unknown device */

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/3] drm/i915: resize the GuC WOPCM for rc6
  2016-01-08 15:03 ` [PATCH 2/3] drm/i915: resize the GuC WOPCM for rc6 Peter Antoine
@ 2016-01-11 16:40   ` Yu Dai
  2016-01-19 23:52   ` Yu Dai
  2016-01-20 17:48   ` Jeff McGee
  2 siblings, 0 replies; 13+ messages in thread
From: Yu Dai @ 2016-01-11 16:40 UTC (permalink / raw)
  To: Peter Antoine, intel-gfx; +Cc: daniel.vetter, dave.gordon

Reviewed-by: Alex Dai <yu.dai@intel.com>

On 01/08/2016 07:03 AM, Peter Antoine wrote:
> This patch resizes the GuC WOPCM to so that the GuC and the RC6 memory
> spaces do not overlap.
>
> Issue: https://jira01.devtools.intel.com/browse/VIZ-6638
> Signed-off-by: Peter Antoine <peter.antoine@intel.com>
> ---
>   drivers/gpu/drm/i915/i915_guc_reg.h     | 3 ++-
>   drivers/gpu/drm/i915/intel_guc_loader.c | 5 +++++
>   2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_guc_reg.h b/drivers/gpu/drm/i915/i915_guc_reg.h
> index 685c799..cb938b0 100644
> --- a/drivers/gpu/drm/i915/i915_guc_reg.h
> +++ b/drivers/gpu/drm/i915/i915_guc_reg.h
> @@ -58,7 +58,8 @@
>   #define GUC_MAX_IDLE_COUNT		_MMIO(0xC3E4)
>   
>   #define GUC_WOPCM_SIZE			_MMIO(0xc050)
> -#define   GUC_WOPCM_SIZE_VALUE  	  (0x80 << 12)	/* 512KB */
> +#define   GUC_WOPCM_SIZE_VALUE		(0x80 << 12)	/* 512KB */
> +#define   BXT_GUC_WOPCM_SIZE_VALUE	(0x70 << 12)	/* 448KB */
>   
>   /* GuC addresses below GUC_WOPCM_TOP don't map through the GTT */
>   #define	GUC_WOPCM_TOP			(GUC_WOPCM_SIZE_VALUE)
> diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c
> index 8182d11..6b17d44 100644
> --- a/drivers/gpu/drm/i915/intel_guc_loader.c
> +++ b/drivers/gpu/drm/i915/intel_guc_loader.c
> @@ -305,6 +305,11 @@ static int guc_ucode_xfer(struct drm_i915_private *dev_priv)
>   
>   	/* init WOPCM */
>   	I915_WRITE(GUC_WOPCM_SIZE, GUC_WOPCM_SIZE_VALUE);
> +	if (IS_BROXTON(dev))
> +		I915_WRITE(GUC_WOPCM_SIZE, BXT_GUC_WOPCM_SIZE_VALUE);
> +	else
> +		I915_WRITE(GUC_WOPCM_SIZE, GUC_WOPCM_SIZE_VALUE);
> +
>   	I915_WRITE(DMA_GUC_WOPCM_OFFSET, GUC_WOPCM_OFFSET_VALUE);
>   
>   	/* Enable MIA caching. GuC clock gating is disabled. */

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 3/3] drm/i915: Wait after context init with GuC Submission
  2016-01-08 15:03 ` [PATCH 3/3] drm/i915: Wait after context init with GuC Submission Peter Antoine
  2016-01-08 15:19   ` Chris Wilson
@ 2016-01-11 16:40   ` Yu Dai
  1 sibling, 0 replies; 13+ messages in thread
From: Yu Dai @ 2016-01-11 16:40 UTC (permalink / raw)
  To: Peter Antoine, intel-gfx; +Cc: daniel.vetter, dave.gordon

Reviewed-by: Alex Dai <yu.dai@intel.com>

On 01/08/2016 07:03 AM, Peter Antoine wrote:
> Per-context initialisation GPU instructions (which are injected directly
> into the ringbuffer rather than being submitted as a batch) should not
> be allowed to mix with user-generated batches in the same submission; it
> will cause confusion for the GuC (which might merge a subsequent
> preemptive request with the non-preemptive initialisation code), and for
> the scheduler, which wouldn't know how to re-inject a non-batch request
> if it were the victim of preemption.
>
> Therefore, we should wait for the initialisation request to complete
> before making the newly-initialised context available for user-mode
> submissions.
>
> Here, we add a call to i915_wait_request() after each existing call to
> i915_add_request_no_flush() (in i915_gem_init_hw(), for the default
> per-engine contexts, and intel_lr_context_deferred_create(), for all
> others).
>
> Adapted from Dave Gordon's patch, which is adapted from Alex's earlier
> patch, which added the wait only to intel_lr_context_render_state_init().
>
> Issue: https://jira01.devtools.intel.com/browse/VIZ-6638
> Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
> Signed-off-by: Peter Antoine <peter.antoine@intel.com>
> ---
>   drivers/gpu/drm/i915/i915_gem.c  | 10 ++++++++++
>   drivers/gpu/drm/i915/intel_lrc.c | 11 +++++++++++
>   2 files changed, 21 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 5be4433..e71bf90 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -4847,6 +4847,16 @@ i915_gem_init_hw(struct drm_device *dev)
>   		}
>   
>   		i915_add_request_no_flush(req);
> +
> +		/*
> +		 * GuC firmware will try to collapse its DPC work queue if the
> +		 * new one is for same context. So the following breadcrumb
> +		 * could be amended to this batch and submitted as one batch.
> +		 * Wait here to make sure the context state init is finished
> +		 * before any other submission to GuC.
> +		 */
> +		if (i915.enable_guc_submission)
> +			ret = i915_wait_request(req);
>   	}
>   
>   out:
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index 3aa6147..f18fb11 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -2499,6 +2499,17 @@ int intel_lr_context_deferred_alloc(struct intel_context *ctx,
>   			goto error_ringbuf;
>   		}
>   		i915_add_request_no_flush(req);
> +
> +		/*
> +		 * GuC firmware will try to collapse its DPC work queue
> +		 * if the new one is for same context. So the
> +		 * following breadcrumb could be amended to this batch
> +		 * and submitted as one batch. Wait here to make sure
> +		 * the context state init is finished before any other
> +		 * submission to GuC.
> +		 */
> +		if (i915.enable_guc_submission)
> +			ret = i915_wait_request(req);
>   	}
>   	return 0;
>   

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: ✗ warning:  Fi.CI.BAT
  2016-01-11 10:13 ` ✗ warning: Fi.CI.BAT Patchwork
@ 2016-01-12 16:23   ` Daniel Vetter
  0 siblings, 0 replies; 13+ messages in thread
From: Daniel Vetter @ 2016-01-12 16:23 UTC (permalink / raw)
  To: Patchwork; +Cc: intel-gfx

On Mon, Jan 11, 2016 at 10:13:53AM -0000, Patchwork wrote:
> == Summary ==
> 
> Built on ff88655b3a5467bbc3be8c67d3e05ebf182557d3 drm-intel-nightly: 2016y-01m-11d-07h-30m-16s UTC integration manifest
> 
> Test gem_storedw_loop:
>         Subgroup basic-render:
>                 pass       -> DMESG-WARN (skl-i5k-2) UNSTABLE
>                 dmesg-warn -> PASS       (bdw-ultra)
>                 dmesg-warn -> PASS       (skl-i7k-2) UNSTABLE
> Test kms_flip:
>         Subgroup basic-flip-vs-modeset:
>                 pass       -> DMESG-WARN (skl-i7k-2)

Seem to have a regression here, and passing BAT is now required.
-Daniel

> Test kms_pipe_crc_basic:
>         Subgroup read-crc-pipe-b:
>                 dmesg-warn -> PASS       (byt-nuc)
> 
> bdw-nuci7        total:138  pass:129  dwarn:0   dfail:0   fail:0   skip:9  
> bdw-ultra        total:138  pass:132  dwarn:0   dfail:0   fail:0   skip:6  
> bsw-nuc-2        total:141  pass:114  dwarn:3   dfail:0   fail:0   skip:24 
> byt-nuc          total:141  pass:119  dwarn:7   dfail:0   fail:0   skip:15 
> hsw-brixbox      total:141  pass:134  dwarn:0   dfail:0   fail:0   skip:7  
> hsw-gt2          total:141  pass:137  dwarn:0   dfail:0   fail:0   skip:4  
> ilk-hp8440p      total:141  pass:100  dwarn:4   dfail:0   fail:0   skip:37 
> skl-i5k-2        total:141  pass:131  dwarn:2   dfail:0   fail:0   skip:8  
> skl-i7k-2        total:141  pass:131  dwarn:2   dfail:0   fail:0   skip:8  
> snb-dellxps      total:141  pass:122  dwarn:5   dfail:0   fail:0   skip:14 
> snb-x220t        total:141  pass:122  dwarn:5   dfail:0   fail:1   skip:13 
> 
> Results at /archive/results/CI_IGT_test/Patchwork_1117/
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/3] drm/i915: resize the GuC WOPCM for rc6
  2016-01-08 15:03 ` [PATCH 2/3] drm/i915: resize the GuC WOPCM for rc6 Peter Antoine
  2016-01-11 16:40   ` Yu Dai
@ 2016-01-19 23:52   ` Yu Dai
  2016-01-20 17:48   ` Jeff McGee
  2 siblings, 0 replies; 13+ messages in thread
From: Yu Dai @ 2016-01-19 23:52 UTC (permalink / raw)
  To: Peter Antoine, intel-gfx; +Cc: daniel.vetter, dave.gordon



On 01/08/2016 07:03 AM, Peter Antoine wrote:
> This patch resizes the GuC WOPCM to so that the GuC and the RC6 memory
> spaces do not overlap.
>
> Issue: https://jira01.devtools.intel.com/browse/VIZ-6638
> Signed-off-by: Peter Antoine <peter.antoine@intel.com>
> ---
>   drivers/gpu/drm/i915/i915_guc_reg.h     | 3 ++-
>   drivers/gpu/drm/i915/intel_guc_loader.c | 5 +++++
>   2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_guc_reg.h b/drivers/gpu/drm/i915/i915_guc_reg.h
> index 685c799..cb938b0 100644
> --- a/drivers/gpu/drm/i915/i915_guc_reg.h
> +++ b/drivers/gpu/drm/i915/i915_guc_reg.h
> @@ -58,7 +58,8 @@
>   #define GUC_MAX_IDLE_COUNT		_MMIO(0xC3E4)
>   
>   #define GUC_WOPCM_SIZE			_MMIO(0xc050)
> -#define   GUC_WOPCM_SIZE_VALUE  	  (0x80 << 12)	/* 512KB */
> +#define   GUC_WOPCM_SIZE_VALUE		(0x80 << 12)	/* 512KB */
> +#define   BXT_GUC_WOPCM_SIZE_VALUE	(0x70 << 12)	/* 448KB */
>   
>   /* GuC addresses below GUC_WOPCM_TOP don't map through the GTT */
>   #define	GUC_WOPCM_TOP			(GUC_WOPCM_SIZE_VALUE)
> diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c
> index 8182d11..6b17d44 100644
> --- a/drivers/gpu/drm/i915/intel_guc_loader.c
> +++ b/drivers/gpu/drm/i915/intel_guc_loader.c
> @@ -305,6 +305,11 @@ static int guc_ucode_xfer(struct drm_i915_private *dev_priv)
>   
>   	/* init WOPCM */
>   	I915_WRITE(GUC_WOPCM_SIZE, GUC_WOPCM_SIZE_VALUE);

Just found a problem here. This line above needs to be deleted. This 
GUC_WOPCM_SIZE is written-once register. It will be locked after first 
write.

Thanks,
Alex
> +	if (IS_BROXTON(dev))
> +		I915_WRITE(GUC_WOPCM_SIZE, BXT_GUC_WOPCM_SIZE_VALUE);
> +	else
> +		I915_WRITE(GUC_WOPCM_SIZE, GUC_WOPCM_SIZE_VALUE);
> +
>   	I915_WRITE(DMA_GUC_WOPCM_OFFSET, GUC_WOPCM_OFFSET_VALUE);
>   
>   	/* Enable MIA caching. GuC clock gating is disabled. */

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/3] drm/i915: resize the GuC WOPCM for rc6
  2016-01-08 15:03 ` [PATCH 2/3] drm/i915: resize the GuC WOPCM for rc6 Peter Antoine
  2016-01-11 16:40   ` Yu Dai
  2016-01-19 23:52   ` Yu Dai
@ 2016-01-20 17:48   ` Jeff McGee
  2 siblings, 0 replies; 13+ messages in thread
From: Jeff McGee @ 2016-01-20 17:48 UTC (permalink / raw)
  To: Peter Antoine; +Cc: daniel.vetter, intel-gfx, dave.gordon

On Fri, Jan 08, 2016 at 03:03:53PM +0000, Peter Antoine wrote:
> This patch resizes the GuC WOPCM to so that the GuC and the RC6 memory
> spaces do not overlap.
> 
> Issue: https://jira01.devtools.intel.com/browse/VIZ-6638
> Signed-off-by: Peter Antoine <peter.antoine@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_guc_reg.h     | 3 ++-
>  drivers/gpu/drm/i915/intel_guc_loader.c | 5 +++++
>  2 files changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_guc_reg.h b/drivers/gpu/drm/i915/i915_guc_reg.h
> index 685c799..cb938b0 100644
> --- a/drivers/gpu/drm/i915/i915_guc_reg.h
> +++ b/drivers/gpu/drm/i915/i915_guc_reg.h
> @@ -58,7 +58,8 @@
>  #define GUC_MAX_IDLE_COUNT		_MMIO(0xC3E4)
>  
>  #define GUC_WOPCM_SIZE			_MMIO(0xc050)
> -#define   GUC_WOPCM_SIZE_VALUE  	  (0x80 << 12)	/* 512KB */
> +#define   GUC_WOPCM_SIZE_VALUE		(0x80 << 12)	/* 512KB */
> +#define   BXT_GUC_WOPCM_SIZE_VALUE	(0x70 << 12)	/* 448KB */
>  
>  /* GuC addresses below GUC_WOPCM_TOP don't map through the GTT */
>  #define	GUC_WOPCM_TOP			(GUC_WOPCM_SIZE_VALUE)
There seems to be other references to GUC_WOPCM_SIZE_VALUE including this
one that need to be updated for BXT.
-Jeff

> diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c
> index 8182d11..6b17d44 100644
> --- a/drivers/gpu/drm/i915/intel_guc_loader.c
> +++ b/drivers/gpu/drm/i915/intel_guc_loader.c
> @@ -305,6 +305,11 @@ static int guc_ucode_xfer(struct drm_i915_private *dev_priv)
>  
>  	/* init WOPCM */
>  	I915_WRITE(GUC_WOPCM_SIZE, GUC_WOPCM_SIZE_VALUE);
> +	if (IS_BROXTON(dev))
> +		I915_WRITE(GUC_WOPCM_SIZE, BXT_GUC_WOPCM_SIZE_VALUE);
> +	else
> +		I915_WRITE(GUC_WOPCM_SIZE, GUC_WOPCM_SIZE_VALUE);
> +
>  	I915_WRITE(DMA_GUC_WOPCM_OFFSET, GUC_WOPCM_OFFSET_VALUE);
>  
>  	/* Enable MIA caching. GuC clock gating is disabled. */
> -- 
> 1.9.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2016-01-20 17:37 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-08 15:03 [PATCH 0/3] Enabling GuC Loading on Broxton Peter Antoine
2016-01-08 15:03 ` [PATCH 1/3] drm/i915: Adding Broxton GuC Loader Support Peter Antoine
2016-01-11 16:40   ` Yu Dai
2016-01-08 15:03 ` [PATCH 2/3] drm/i915: resize the GuC WOPCM for rc6 Peter Antoine
2016-01-11 16:40   ` Yu Dai
2016-01-19 23:52   ` Yu Dai
2016-01-20 17:48   ` Jeff McGee
2016-01-08 15:03 ` [PATCH 3/3] drm/i915: Wait after context init with GuC Submission Peter Antoine
2016-01-08 15:19   ` Chris Wilson
2016-01-11 15:48     ` Antoine, Peter
2016-01-11 16:40   ` Yu Dai
2016-01-11 10:13 ` ✗ warning: Fi.CI.BAT Patchwork
2016-01-12 16:23   ` Daniel Vetter

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.