All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] drm/i915/guc: Use formalized struct definition for ads object
@ 2017-03-14 13:33 Michal Wajdeczko
  2017-03-14 19:18 ` ✓ Fi.CI.BAT: success for drm/i915/guc: Use formalized struct definition for ads object (rev3) Patchwork
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Michal Wajdeczko @ 2017-03-14 13:33 UTC (permalink / raw)
  To: intel-gfx

Manual pointer manipulation is error prone. Let compiler calculate
right offsets for us in case we need to change ads layout.

v2: don't call it object (Chris)
v3: restyle offset assignments (Chris)

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Oscar Mateo <oscar.mateo@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_guc_submission.c | 50 ++++++++++++++----------------
 1 file changed, 24 insertions(+), 26 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c
index b4d24cd..ad4d6f0 100644
--- a/drivers/gpu/drm/i915/i915_guc_submission.c
+++ b/drivers/gpu/drm/i915/i915_guc_submission.c
@@ -810,22 +810,21 @@ static void guc_addon_create(struct intel_guc *guc)
 {
 	struct drm_i915_private *dev_priv = guc_to_i915(guc);
 	struct i915_vma *vma;
-	struct guc_ads *ads;
-	struct guc_policies *policies;
-	struct guc_mmio_reg_state *reg_state;
-	struct intel_engine_cs *engine;
-	enum intel_engine_id id;
 	struct page *page;
-	u32 size;
-
 	/* The ads obj includes the struct itself and buffers passed to GuC */
-	size = sizeof(struct guc_ads) + sizeof(struct guc_policies) +
-			sizeof(struct guc_mmio_reg_state) +
-			GUC_S3_SAVE_SPACE_PAGES * PAGE_SIZE;
+	struct __guc_ads_blob {
+		struct guc_ads ads;
+		struct guc_policies policies;
+		struct guc_mmio_reg_state reg_state;
+		u8 reg_state_buffer[GUC_S3_SAVE_SPACE_PAGES * PAGE_SIZE];
+	} __packed *blob;
+	u32 offset;
+	struct intel_engine_cs *engine;
+	enum intel_engine_id id;
 
 	vma = guc->ads_vma;
 	if (!vma) {
-		vma = intel_guc_allocate_vma(guc, PAGE_ALIGN(size));
+		vma = intel_guc_allocate_vma(guc, PAGE_ALIGN(sizeof(*blob)));
 		if (IS_ERR(vma))
 			return;
 
@@ -833,7 +832,8 @@ static void guc_addon_create(struct intel_guc *guc)
 	}
 
 	page = i915_vma_first_page(vma);
-	ads = kmap(page);
+	blob = kmap(page);
+	offset = i915_ggtt_offset(vma);
 
 	/*
 	 * The GuC requires a "Golden Context" when it reinitialises
@@ -843,34 +843,32 @@ static void guc_addon_create(struct intel_guc *guc)
 	 * to find it.
 	 */
 	engine = dev_priv->engine[RCS];
-	ads->golden_context_lrca = engine->status_page.ggtt_offset;
+	blob->ads.golden_context_lrca = engine->status_page.ggtt_offset;
 
 	for_each_engine(engine, dev_priv, id)
-		ads->eng_state_size[engine->guc_id] = intel_lr_context_size(engine);
+		blob->ads.eng_state_size[engine->guc_id] =
+			intel_lr_context_size(engine);
 
 	/* GuC scheduling policies */
-	policies = (void *)ads + sizeof(struct guc_ads);
-	guc_policies_init(policies);
+	guc_policies_init(&blob->policies);
 
-	ads->scheduler_policies =
-		guc_ggtt_offset(vma) + sizeof(struct guc_ads);
+	blob->ads.scheduler_policies =
+		offset + offsetof(struct __guc_ads_blob, policies);
 
 	/* MMIO reg state */
-	reg_state = (void *)policies + sizeof(struct guc_policies);
-
 	for_each_engine(engine, dev_priv, id) {
-		reg_state->mmio_white_list[engine->guc_id].mmio_start =
+		blob->reg_state.mmio_white_list[engine->guc_id].mmio_start =
 			engine->mmio_base + GUC_MMIO_WHITE_LIST_START;
 
 		/* Nothing to be saved or restored for now. */
-		reg_state->mmio_white_list[engine->guc_id].count = 0;
+		blob->reg_state.mmio_white_list[engine->guc_id].count = 0;
 	}
 
-	ads->reg_state_addr = ads->scheduler_policies +
-			sizeof(struct guc_policies);
+	blob->ads.reg_state_addr =
+		offset + offsetof(struct __guc_ads_blob, reg_state);
 
-	ads->reg_state_buffer = ads->reg_state_addr +
-			sizeof(struct guc_mmio_reg_state);
+	blob->ads.reg_state_buffer =
+		offset + offsetof(struct __guc_ads_blob, reg_state_buffer);
 
 	kunmap(page);
 }
-- 
2.7.4

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

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

* ✓ Fi.CI.BAT: success for drm/i915/guc: Use formalized struct definition for ads object (rev3)
  2017-03-14 13:33 [PATCH v3] drm/i915/guc: Use formalized struct definition for ads object Michal Wajdeczko
@ 2017-03-14 19:18 ` Patchwork
  2017-03-14 20:53 ` [PATCH] drm/i915/guc: Use formalized struct definition for ads object Chris Wilson
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2017-03-14 19:18 UTC (permalink / raw)
  To: Michal Wajdeczko; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/guc: Use formalized struct definition for ads object (rev3)
URL   : https://patchwork.freedesktop.org/series/20826/
State : success

== Summary ==

Series 20826v3 drm/i915/guc: Use formalized struct definition for ads object
https://patchwork.freedesktop.org/api/1.0/series/20826/revisions/3/mbox/

Test kms_cursor_legacy:
        Subgroup basic-busy-flip-before-cursor-atomic:
                fail       -> PASS       (fi-snb-2520m)

fi-bdw-5557u     total:278  pass:267  dwarn:0   dfail:0   fail:0   skip:11  time: 453s
fi-bsw-n3050     total:278  pass:239  dwarn:0   dfail:0   fail:0   skip:39  time: 581s
fi-bxt-j4205     total:278  pass:259  dwarn:0   dfail:0   fail:0   skip:19  time: 528s
fi-bxt-t5700     total:278  pass:258  dwarn:0   dfail:0   fail:0   skip:20  time: 548s
fi-byt-j1900     total:278  pass:251  dwarn:0   dfail:0   fail:0   skip:27  time: 501s
fi-byt-n2820     total:278  pass:247  dwarn:0   dfail:0   fail:0   skip:31  time: 504s
fi-hsw-4770      total:278  pass:262  dwarn:0   dfail:0   fail:0   skip:16  time: 436s
fi-hsw-4770r     total:278  pass:262  dwarn:0   dfail:0   fail:0   skip:16  time: 427s
fi-ilk-650       total:278  pass:228  dwarn:0   dfail:0   fail:0   skip:50  time: 438s
fi-ivb-3520m     total:278  pass:260  dwarn:0   dfail:0   fail:0   skip:18  time: 509s
fi-ivb-3770      total:278  pass:260  dwarn:0   dfail:0   fail:0   skip:18  time: 499s
fi-kbl-7500u     total:278  pass:260  dwarn:0   dfail:0   fail:0   skip:18  time: 480s
fi-skl-6260u     total:278  pass:268  dwarn:0   dfail:0   fail:0   skip:10  time: 480s
fi-skl-6700hq    total:278  pass:261  dwarn:0   dfail:0   fail:0   skip:17  time: 592s
fi-skl-6700k     total:278  pass:256  dwarn:4   dfail:0   fail:0   skip:18  time: 480s
fi-skl-6770hq    total:278  pass:268  dwarn:0   dfail:0   fail:0   skip:10  time: 514s
fi-snb-2520m     total:278  pass:250  dwarn:0   dfail:0   fail:0   skip:28  time: 541s
fi-snb-2600      total:278  pass:249  dwarn:0   dfail:0   fail:0   skip:29  time: 422s

c641417b70c6b78efca29ae732d7cbf5716ac6d5 drm-tip: 2017y-03m-14d-16h-04m-56s UTC integration manifest
80ddf08 drm/i915/guc: Use formalized struct definition for ads object

== Logs ==

For more details see: https://intel-gfx-ci.01.org/CI/Patchwork_4164/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* [PATCH] drm/i915/guc: Use formalized struct definition for ads object
  2017-03-14 13:33 [PATCH v3] drm/i915/guc: Use formalized struct definition for ads object Michal Wajdeczko
  2017-03-14 19:18 ` ✓ Fi.CI.BAT: success for drm/i915/guc: Use formalized struct definition for ads object (rev3) Patchwork
@ 2017-03-14 20:53 ` Chris Wilson
  2017-03-15 11:02   ` Michal Wajdeczko
  2017-03-15  8:33 ` ✗ Fi.CI.BAT: failure for drm/i915/guc: Use formalized struct definition for ads object (rev4) Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 13+ messages in thread
From: Chris Wilson @ 2017-03-14 20:53 UTC (permalink / raw)
  To: intel-gfx

From: Michal Wajdeczko <michal.wajdeczko@intel.com>

Manual pointer manipulation is error prone. Let compiler calculate
right offsets for us in case we need to change ads layout.

v2: don't call it object (Chris)
v3: restyle offset assignments (Chris)
v4: stylistic reductions

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Oscar Mateo <oscar.mateo@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_guc_submission.c | 51 ++++++++++++++----------------
 1 file changed, 23 insertions(+), 28 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c
index b4d24cd7639a..3651a1b0d13c 100644
--- a/drivers/gpu/drm/i915/i915_guc_submission.c
+++ b/drivers/gpu/drm/i915/i915_guc_submission.c
@@ -806,26 +806,27 @@ static void guc_policies_init(struct guc_policies *policies)
 	policies->is_valid = 1;
 }
 
+#define p_offset(ptr, member) offsetof(typeof(*ptr), member)
+
 static void guc_addon_create(struct intel_guc *guc)
 {
 	struct drm_i915_private *dev_priv = guc_to_i915(guc);
 	struct i915_vma *vma;
-	struct guc_ads *ads;
-	struct guc_policies *policies;
-	struct guc_mmio_reg_state *reg_state;
-	struct intel_engine_cs *engine;
-	enum intel_engine_id id;
 	struct page *page;
-	u32 size;
-
 	/* The ads obj includes the struct itself and buffers passed to GuC */
-	size = sizeof(struct guc_ads) + sizeof(struct guc_policies) +
-			sizeof(struct guc_mmio_reg_state) +
-			GUC_S3_SAVE_SPACE_PAGES * PAGE_SIZE;
+	struct {
+		struct guc_ads ads;
+		struct guc_policies policies;
+		struct guc_mmio_reg_state reg_state;
+		u8 reg_state_buffer[GUC_S3_SAVE_SPACE_PAGES * PAGE_SIZE];
+	} __packed *blob;
+	u32 offset;
+	struct intel_engine_cs *engine;
+	enum intel_engine_id id;
 
 	vma = guc->ads_vma;
 	if (!vma) {
-		vma = intel_guc_allocate_vma(guc, PAGE_ALIGN(size));
+		vma = intel_guc_allocate_vma(guc, PAGE_ALIGN(sizeof(*blob)));
 		if (IS_ERR(vma))
 			return;
 
@@ -833,7 +834,8 @@ static void guc_addon_create(struct intel_guc *guc)
 	}
 
 	page = i915_vma_first_page(vma);
-	ads = kmap(page);
+	blob = kmap(page);
+	offset = i915_ggtt_offset(vma);
 
 	/*
 	 * The GuC requires a "Golden Context" when it reinitialises
@@ -843,34 +845,27 @@ static void guc_addon_create(struct intel_guc *guc)
 	 * to find it.
 	 */
 	engine = dev_priv->engine[RCS];
-	ads->golden_context_lrca = engine->status_page.ggtt_offset;
+	blob->ads.golden_context_lrca = engine->status_page.ggtt_offset;
 
 	for_each_engine(engine, dev_priv, id)
-		ads->eng_state_size[engine->guc_id] = intel_lr_context_size(engine);
+		blob->ads.eng_state_size[engine->guc_id] =
+			intel_lr_context_size(engine);
 
 	/* GuC scheduling policies */
-	policies = (void *)ads + sizeof(struct guc_ads);
-	guc_policies_init(policies);
-
-	ads->scheduler_policies =
-		guc_ggtt_offset(vma) + sizeof(struct guc_ads);
+	guc_policies_init(&blob->policies);
 
 	/* MMIO reg state */
-	reg_state = (void *)policies + sizeof(struct guc_policies);
-
 	for_each_engine(engine, dev_priv, id) {
-		reg_state->mmio_white_list[engine->guc_id].mmio_start =
+		blob->reg_state.mmio_white_list[engine->guc_id].mmio_start =
 			engine->mmio_base + GUC_MMIO_WHITE_LIST_START;
 
 		/* Nothing to be saved or restored for now. */
-		reg_state->mmio_white_list[engine->guc_id].count = 0;
+		blob->reg_state.mmio_white_list[engine->guc_id].count = 0;
 	}
 
-	ads->reg_state_addr = ads->scheduler_policies +
-			sizeof(struct guc_policies);
-
-	ads->reg_state_buffer = ads->reg_state_addr +
-			sizeof(struct guc_mmio_reg_state);
+	blob->ads.scheduler_policies = offset + p_offset(blob, policies);
+	blob->ads.reg_state_addr = offset + p_offset(blob, reg_state);
+	blob->ads.reg_state_buffer = offset + p_offset(blob, reg_state_buffer);
 
 	kunmap(page);
 }
-- 
2.11.0

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

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

* ✗ Fi.CI.BAT: failure for drm/i915/guc: Use formalized struct definition for ads object (rev4)
  2017-03-14 13:33 [PATCH v3] drm/i915/guc: Use formalized struct definition for ads object Michal Wajdeczko
  2017-03-14 19:18 ` ✓ Fi.CI.BAT: success for drm/i915/guc: Use formalized struct definition for ads object (rev3) Patchwork
  2017-03-14 20:53 ` [PATCH] drm/i915/guc: Use formalized struct definition for ads object Chris Wilson
@ 2017-03-15  8:33 ` Patchwork
  2017-03-15  8:47 ` ✓ Fi.CI.BAT: success " Patchwork
  2017-03-15 12:46 ` ✓ Fi.CI.BAT: success for drm/i915/guc: Use formalized struct definition for ads object (rev5) Patchwork
  4 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2017-03-15  8:33 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/guc: Use formalized struct definition for ads object (rev4)
URL   : https://patchwork.freedesktop.org/series/20826/
State : failure

== Summary ==

Series 20826v4 drm/i915/guc: Use formalized struct definition for ads object
https://patchwork.freedesktop.org/api/1.0/series/20826/revisions/4/mbox/

Test gem_exec_flush:
        Subgroup basic-batch-kernel-default-uc:
                pass       -> FAIL       (fi-snb-2600) fdo#100007
        Subgroup basic-uc-pro-default:
                pass       -> INCOMPLETE (fi-skl-6700hq) fdo#100130
        Subgroup basic-uc-ro-default:
                pass       -> INCOMPLETE (fi-skl-6260u)
                pass       -> INCOMPLETE (fi-skl-6770hq) fdo#100130
Test kms_cursor_legacy:
        Subgroup basic-busy-flip-before-cursor-atomic:
                fail       -> PASS       (fi-snb-2520m)

fdo#100007 https://bugs.freedesktop.org/show_bug.cgi?id=100007
fdo#100130 https://bugs.freedesktop.org/show_bug.cgi?id=100130

fi-bdw-5557u     total:278  pass:267  dwarn:0   dfail:0   fail:0   skip:11  time: 457s
fi-bsw-n3050     total:278  pass:239  dwarn:0   dfail:0   fail:0   skip:39  time: 577s
fi-bxt-j4205     total:278  pass:259  dwarn:0   dfail:0   fail:0   skip:19  time: 531s
fi-bxt-t5700     total:278  pass:258  dwarn:0   dfail:0   fail:0   skip:20  time: 548s
fi-byt-j1900     total:278  pass:251  dwarn:0   dfail:0   fail:0   skip:27  time: 502s
fi-byt-n2820     total:278  pass:247  dwarn:0   dfail:0   fail:0   skip:31  time: 500s
fi-ilk-650       total:278  pass:228  dwarn:0   dfail:0   fail:0   skip:50  time: 441s
fi-ivb-3770      total:278  pass:260  dwarn:0   dfail:0   fail:0   skip:18  time: 499s
fi-skl-6260u     total:55   pass:53   dwarn:0   dfail:0   fail:0   skip:1   time: 0s
fi-skl-6700hq    total:53   pass:45   dwarn:0   dfail:0   fail:0   skip:7   time: 0s
fi-skl-6770hq    total:55   pass:53   dwarn:0   dfail:0   fail:0   skip:1   time: 0s
fi-snb-2520m     total:278  pass:250  dwarn:0   dfail:0   fail:0   skip:28  time: 546s
fi-snb-2600      total:278  pass:248  dwarn:0   dfail:0   fail:1   skip:29  time: 412s

c641417b70c6b78efca29ae732d7cbf5716ac6d5 drm-tip: 2017y-03m-14d-16h-04m-56s UTC integration manifest
0b960a5 drm/i915/guc: Use formalized struct definition for ads object

== Logs ==

For more details see: https://intel-gfx-ci.01.org/CI/Patchwork_4172/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* ✓ Fi.CI.BAT: success for drm/i915/guc: Use formalized struct definition for ads object (rev4)
  2017-03-14 13:33 [PATCH v3] drm/i915/guc: Use formalized struct definition for ads object Michal Wajdeczko
                   ` (2 preceding siblings ...)
  2017-03-15  8:33 ` ✗ Fi.CI.BAT: failure for drm/i915/guc: Use formalized struct definition for ads object (rev4) Patchwork
@ 2017-03-15  8:47 ` Patchwork
  2017-03-15 12:46 ` ✓ Fi.CI.BAT: success for drm/i915/guc: Use formalized struct definition for ads object (rev5) Patchwork
  4 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2017-03-15  8:47 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/guc: Use formalized struct definition for ads object (rev4)
URL   : https://patchwork.freedesktop.org/series/20826/
State : success

== Summary ==

Series 20826v4 drm/i915/guc: Use formalized struct definition for ads object
https://patchwork.freedesktop.org/api/1.0/series/20826/revisions/4/mbox/

Test gem_exec_flush:
        Subgroup basic-batch-kernel-default-uc:
                pass       -> FAIL       (fi-snb-2600) fdo#100007
        Subgroup basic-uc-pro-default:
                pass       -> INCOMPLETE (fi-skl-6700hq) fdo#100130
        Subgroup basic-uc-ro-default:
                pass       -> INCOMPLETE (fi-skl-6770hq) fdo#100130
                pass       -> INCOMPLETE (fi-skl-6260u) fdo#100130
Test kms_cursor_legacy:
        Subgroup basic-busy-flip-before-cursor-atomic:
                fail       -> PASS       (fi-snb-2520m)

fdo#100007 https://bugs.freedesktop.org/show_bug.cgi?id=100007
fdo#100130 https://bugs.freedesktop.org/show_bug.cgi?id=100130

fi-bdw-5557u     total:278  pass:267  dwarn:0   dfail:0   fail:0   skip:11  time: 457s
fi-bsw-n3050     total:278  pass:239  dwarn:0   dfail:0   fail:0   skip:39  time: 577s
fi-bxt-j4205     total:278  pass:259  dwarn:0   dfail:0   fail:0   skip:19  time: 531s
fi-bxt-t5700     total:278  pass:258  dwarn:0   dfail:0   fail:0   skip:20  time: 548s
fi-byt-j1900     total:278  pass:251  dwarn:0   dfail:0   fail:0   skip:27  time: 502s
fi-byt-n2820     total:278  pass:247  dwarn:0   dfail:0   fail:0   skip:31  time: 500s
fi-ilk-650       total:278  pass:228  dwarn:0   dfail:0   fail:0   skip:50  time: 441s
fi-ivb-3770      total:278  pass:260  dwarn:0   dfail:0   fail:0   skip:18  time: 499s
fi-skl-6260u     total:55   pass:53   dwarn:0   dfail:0   fail:0   skip:1   time: 0s
fi-skl-6700hq    total:53   pass:45   dwarn:0   dfail:0   fail:0   skip:7   time: 0s
fi-skl-6770hq    total:55   pass:53   dwarn:0   dfail:0   fail:0   skip:1   time: 0s
fi-snb-2520m     total:278  pass:250  dwarn:0   dfail:0   fail:0   skip:28  time: 546s
fi-snb-2600      total:278  pass:248  dwarn:0   dfail:0   fail:1   skip:29  time: 412s

c641417b70c6b78efca29ae732d7cbf5716ac6d5 drm-tip: 2017y-03m-14d-16h-04m-56s UTC integration manifest
0b960a5 drm/i915/guc: Use formalized struct definition for ads object

== Logs ==

For more details see: https://intel-gfx-ci.01.org/CI/Patchwork_4172/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH] drm/i915/guc: Use formalized struct definition for ads object
  2017-03-14 20:53 ` [PATCH] drm/i915/guc: Use formalized struct definition for ads object Chris Wilson
@ 2017-03-15 11:02   ` Michal Wajdeczko
  2017-03-15 11:19     ` Chris Wilson
  0 siblings, 1 reply; 13+ messages in thread
From: Michal Wajdeczko @ 2017-03-15 11:02 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

On Tue, Mar 14, 2017 at 08:53:02PM +0000, Chris Wilson wrote:
> From: Michal Wajdeczko <michal.wajdeczko@intel.com>
> 
> Manual pointer manipulation is error prone. Let compiler calculate
> right offsets for us in case we need to change ads layout.
> 
> v2: don't call it object (Chris)
> v3: restyle offset assignments (Chris)
> v4: stylistic reductions
> 
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Oscar Mateo <oscar.mateo@intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/i915_guc_submission.c | 51 ++++++++++++++----------------
>  1 file changed, 23 insertions(+), 28 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c
> index b4d24cd7639a..3651a1b0d13c 100644
> --- a/drivers/gpu/drm/i915/i915_guc_submission.c
> +++ b/drivers/gpu/drm/i915/i915_guc_submission.c
> @@ -806,26 +806,27 @@ static void guc_policies_init(struct guc_policies *policies)
>  	policies->is_valid = 1;
>  }
>  
> +#define p_offset(ptr, member) offsetof(typeof(*ptr), member)
> +

I would place this helper macro in i915_utils.h ;)

-Michal

>  static void guc_addon_create(struct intel_guc *guc)
>  {
>  	struct drm_i915_private *dev_priv = guc_to_i915(guc);
>  	struct i915_vma *vma;
> -	struct guc_ads *ads;
> -	struct guc_policies *policies;
> -	struct guc_mmio_reg_state *reg_state;
> -	struct intel_engine_cs *engine;
> -	enum intel_engine_id id;
>  	struct page *page;
> -	u32 size;
> -
>  	/* The ads obj includes the struct itself and buffers passed to GuC */
> -	size = sizeof(struct guc_ads) + sizeof(struct guc_policies) +
> -			sizeof(struct guc_mmio_reg_state) +
> -			GUC_S3_SAVE_SPACE_PAGES * PAGE_SIZE;
> +	struct {
> +		struct guc_ads ads;
> +		struct guc_policies policies;
> +		struct guc_mmio_reg_state reg_state;
> +		u8 reg_state_buffer[GUC_S3_SAVE_SPACE_PAGES * PAGE_SIZE];
> +	} __packed *blob;
> +	u32 offset;
> +	struct intel_engine_cs *engine;
> +	enum intel_engine_id id;
>  
>  	vma = guc->ads_vma;
>  	if (!vma) {
> -		vma = intel_guc_allocate_vma(guc, PAGE_ALIGN(size));
> +		vma = intel_guc_allocate_vma(guc, PAGE_ALIGN(sizeof(*blob)));
>  		if (IS_ERR(vma))
>  			return;
>  
> @@ -833,7 +834,8 @@ static void guc_addon_create(struct intel_guc *guc)
>  	}
>  
>  	page = i915_vma_first_page(vma);
> -	ads = kmap(page);
> +	blob = kmap(page);
> +	offset = i915_ggtt_offset(vma);
>  
>  	/*
>  	 * The GuC requires a "Golden Context" when it reinitialises
> @@ -843,34 +845,27 @@ static void guc_addon_create(struct intel_guc *guc)
>  	 * to find it.
>  	 */
>  	engine = dev_priv->engine[RCS];
> -	ads->golden_context_lrca = engine->status_page.ggtt_offset;
> +	blob->ads.golden_context_lrca = engine->status_page.ggtt_offset;
>  
>  	for_each_engine(engine, dev_priv, id)
> -		ads->eng_state_size[engine->guc_id] = intel_lr_context_size(engine);
> +		blob->ads.eng_state_size[engine->guc_id] =
> +			intel_lr_context_size(engine);
>  
>  	/* GuC scheduling policies */
> -	policies = (void *)ads + sizeof(struct guc_ads);
> -	guc_policies_init(policies);
> -
> -	ads->scheduler_policies =
> -		guc_ggtt_offset(vma) + sizeof(struct guc_ads);
> +	guc_policies_init(&blob->policies);
>  
>  	/* MMIO reg state */
> -	reg_state = (void *)policies + sizeof(struct guc_policies);
> -
>  	for_each_engine(engine, dev_priv, id) {
> -		reg_state->mmio_white_list[engine->guc_id].mmio_start =
> +		blob->reg_state.mmio_white_list[engine->guc_id].mmio_start =
>  			engine->mmio_base + GUC_MMIO_WHITE_LIST_START;
>  
>  		/* Nothing to be saved or restored for now. */
> -		reg_state->mmio_white_list[engine->guc_id].count = 0;
> +		blob->reg_state.mmio_white_list[engine->guc_id].count = 0;
>  	}
>  
> -	ads->reg_state_addr = ads->scheduler_policies +
> -			sizeof(struct guc_policies);
> -
> -	ads->reg_state_buffer = ads->reg_state_addr +
> -			sizeof(struct guc_mmio_reg_state);
> +	blob->ads.scheduler_policies = offset + p_offset(blob, policies);
> +	blob->ads.reg_state_addr = offset + p_offset(blob, reg_state);
> +	blob->ads.reg_state_buffer = offset + p_offset(blob, reg_state_buffer);
>  
>  	kunmap(page);
>  }
> -- 
> 2.11.0
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH] drm/i915/guc: Use formalized struct definition for ads object
  2017-03-15 11:02   ` Michal Wajdeczko
@ 2017-03-15 11:19     ` Chris Wilson
  2017-03-15 11:44       ` Michal Wajdeczko
  0 siblings, 1 reply; 13+ messages in thread
From: Chris Wilson @ 2017-03-15 11:19 UTC (permalink / raw)
  To: Michal Wajdeczko; +Cc: intel-gfx

On Wed, Mar 15, 2017 at 12:02:21PM +0100, Michal Wajdeczko wrote:
> On Tue, Mar 14, 2017 at 08:53:02PM +0000, Chris Wilson wrote:
> > From: Michal Wajdeczko <michal.wajdeczko@intel.com>
> > 
> > Manual pointer manipulation is error prone. Let compiler calculate
> > right offsets for us in case we need to change ads layout.
> > 
> > v2: don't call it object (Chris)
> > v3: restyle offset assignments (Chris)
> > v4: stylistic reductions
> > 
> > Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> > Cc: Oscar Mateo <oscar.mateo@intel.com>
> > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> > Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> > Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
> > ---
> >  drivers/gpu/drm/i915/i915_guc_submission.c | 51 ++++++++++++++----------------
> >  1 file changed, 23 insertions(+), 28 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c
> > index b4d24cd7639a..3651a1b0d13c 100644
> > --- a/drivers/gpu/drm/i915/i915_guc_submission.c
> > +++ b/drivers/gpu/drm/i915/i915_guc_submission.c
> > @@ -806,26 +806,27 @@ static void guc_policies_init(struct guc_policies *policies)
> >  	policies->is_valid = 1;
> >  }
> >  
> > +#define p_offset(ptr, member) offsetof(typeof(*ptr), member)
> > +
> 
> I would place this helper macro in i915_utils.h ;)

I wanted to call it ptr_offset, more suitale for i915_utils.h, but
didn't fit into 80cols :)
-Chris

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

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

* Re: [PATCH] drm/i915/guc: Use formalized struct definition for ads object
  2017-03-15 11:19     ` Chris Wilson
@ 2017-03-15 11:44       ` Michal Wajdeczko
  2017-03-15 11:47         ` Chris Wilson
  2017-03-15 11:49         ` Chris Wilson
  0 siblings, 2 replies; 13+ messages in thread
From: Michal Wajdeczko @ 2017-03-15 11:44 UTC (permalink / raw)
  To: Chris Wilson, intel-gfx, Oscar Mateo, Joonas Lahtinen,
	Daniele Ceraolo Spurio

On Wed, Mar 15, 2017 at 11:19:01AM +0000, Chris Wilson wrote:
> On Wed, Mar 15, 2017 at 12:02:21PM +0100, Michal Wajdeczko wrote:
> > On Tue, Mar 14, 2017 at 08:53:02PM +0000, Chris Wilson wrote:
> > > From: Michal Wajdeczko <michal.wajdeczko@intel.com>
> > > 
> > > Manual pointer manipulation is error prone. Let compiler calculate
> > > right offsets for us in case we need to change ads layout.
> > > 
> > > v2: don't call it object (Chris)
> > > v3: restyle offset assignments (Chris)
> > > v4: stylistic reductions
> > > 
> > > Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> > > Cc: Oscar Mateo <oscar.mateo@intel.com>
> > > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> > > Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> > > Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > > Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
> > > ---
> > >  drivers/gpu/drm/i915/i915_guc_submission.c | 51 ++++++++++++++----------------
> > >  1 file changed, 23 insertions(+), 28 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c
> > > index b4d24cd7639a..3651a1b0d13c 100644
> > > --- a/drivers/gpu/drm/i915/i915_guc_submission.c
> > > +++ b/drivers/gpu/drm/i915/i915_guc_submission.c
> > > @@ -806,26 +806,27 @@ static void guc_policies_init(struct guc_policies *policies)
> > >  	policies->is_valid = 1;
> > >  }
> > >  
> > > +#define p_offset(ptr, member) offsetof(typeof(*ptr), member)
> > > +
> > 
> > I would place this helper macro in i915_utils.h ;)
> 
> I wanted to call it ptr_offset, more suitale for i915_utils.h, but
> didn't fit into 80cols :)

You can save few chars by renaming 'offset' into 'base'

	u32 offset;
	...
	base = i915_ggtt_offset(vma);
	...
	blob->ads.reg_state_buffer = base + ptr_offset(blob, reg_state_buffer);

then we are exactly at 80 column.

This will also make the code more cleaner as offset + offset didn't look good.

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

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

* Re: [PATCH] drm/i915/guc: Use formalized struct definition for ads object
  2017-03-15 11:44       ` Michal Wajdeczko
@ 2017-03-15 11:47         ` Chris Wilson
  2017-03-15 11:49         ` Chris Wilson
  1 sibling, 0 replies; 13+ messages in thread
From: Chris Wilson @ 2017-03-15 11:47 UTC (permalink / raw)
  To: Michal Wajdeczko; +Cc: intel-gfx

On Wed, Mar 15, 2017 at 12:44:11PM +0100, Michal Wajdeczko wrote:
> On Wed, Mar 15, 2017 at 11:19:01AM +0000, Chris Wilson wrote:
> > On Wed, Mar 15, 2017 at 12:02:21PM +0100, Michal Wajdeczko wrote:
> > > On Tue, Mar 14, 2017 at 08:53:02PM +0000, Chris Wilson wrote:
> > > > From: Michal Wajdeczko <michal.wajdeczko@intel.com>
> > > > 
> > > > Manual pointer manipulation is error prone. Let compiler calculate
> > > > right offsets for us in case we need to change ads layout.
> > > > 
> > > > v2: don't call it object (Chris)
> > > > v3: restyle offset assignments (Chris)
> > > > v4: stylistic reductions
> > > > 
> > > > Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> > > > Cc: Oscar Mateo <oscar.mateo@intel.com>
> > > > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> > > > Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> > > > Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > > > Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
> > > > ---
> > > >  drivers/gpu/drm/i915/i915_guc_submission.c | 51 ++++++++++++++----------------
> > > >  1 file changed, 23 insertions(+), 28 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c
> > > > index b4d24cd7639a..3651a1b0d13c 100644
> > > > --- a/drivers/gpu/drm/i915/i915_guc_submission.c
> > > > +++ b/drivers/gpu/drm/i915/i915_guc_submission.c
> > > > @@ -806,26 +806,27 @@ static void guc_policies_init(struct guc_policies *policies)
> > > >  	policies->is_valid = 1;
> > > >  }
> > > >  
> > > > +#define p_offset(ptr, member) offsetof(typeof(*ptr), member)
> > > > +
> > > 
> > > I would place this helper macro in i915_utils.h ;)
> > 
> > I wanted to call it ptr_offset, more suitale for i915_utils.h, but
> > didn't fit into 80cols :)
> 
> You can save few chars by renaming 'offset' into 'base'
> 
> 	u32 offset;
> 	...
> 	base = i915_ggtt_offset(vma);
> 	...
> 	blob->ads.reg_state_buffer = base + ptr_offset(blob, reg_state_buffer);
> 
> then we are exactly at 80 column.
> 
> This will also make the code more cleaner as offset + offset didn't look good.

base + offset is better. Hmm, went with ptr_offsetof() since I had to
introduce a newline and I thought similarity with the underlying macro
would be sensible for i915_utils.h
-Chris

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

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

* [PATCH] drm/i915/guc: Use formalized struct definition for ads object
  2017-03-15 11:44       ` Michal Wajdeczko
  2017-03-15 11:47         ` Chris Wilson
@ 2017-03-15 11:49         ` Chris Wilson
  2017-03-16 10:53           ` Joonas Lahtinen
  1 sibling, 1 reply; 13+ messages in thread
From: Chris Wilson @ 2017-03-15 11:49 UTC (permalink / raw)
  To: intel-gfx

From: Michal Wajdeczko <michal.wajdeczko@intel.com>

Manual pointer manipulation is error prone. Let compiler calculate
right offsets for us in case we need to change ads layout.

v2: don't call it object (Chris)
v3: restyle offset assignments (Chris)
v4: stylistic reductions

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Oscar Mateo <oscar.mateo@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_guc_submission.c | 69 ++++++++++++++----------------
 drivers/gpu/drm/i915/i915_utils.h          |  2 +
 2 files changed, 33 insertions(+), 38 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c
index b4d24cd7639a..5ec2cbda2ba9 100644
--- a/drivers/gpu/drm/i915/i915_guc_submission.c
+++ b/drivers/gpu/drm/i915/i915_guc_submission.c
@@ -810,22 +810,21 @@ static void guc_addon_create(struct intel_guc *guc)
 {
 	struct drm_i915_private *dev_priv = guc_to_i915(guc);
 	struct i915_vma *vma;
-	struct guc_ads *ads;
-	struct guc_policies *policies;
-	struct guc_mmio_reg_state *reg_state;
-	struct intel_engine_cs *engine;
-	enum intel_engine_id id;
 	struct page *page;
-	u32 size;
-
 	/* The ads obj includes the struct itself and buffers passed to GuC */
-	size = sizeof(struct guc_ads) + sizeof(struct guc_policies) +
-			sizeof(struct guc_mmio_reg_state) +
-			GUC_S3_SAVE_SPACE_PAGES * PAGE_SIZE;
+	struct {
+		struct guc_ads ads;
+		struct guc_policies policies;
+		struct guc_mmio_reg_state reg_state;
+		u8 reg_state_buffer[GUC_S3_SAVE_SPACE_PAGES * PAGE_SIZE];
+	} __packed *blob;
+	struct intel_engine_cs *engine;
+	enum intel_engine_id id;
+	u32 base;
 
 	vma = guc->ads_vma;
 	if (!vma) {
-		vma = intel_guc_allocate_vma(guc, PAGE_ALIGN(size));
+		vma = intel_guc_allocate_vma(guc, PAGE_ALIGN(sizeof(*blob)));
 		if (IS_ERR(vma))
 			return;
 
@@ -833,44 +832,38 @@ static void guc_addon_create(struct intel_guc *guc)
 	}
 
 	page = i915_vma_first_page(vma);
-	ads = kmap(page);
-
-	/*
-	 * The GuC requires a "Golden Context" when it reinitialises
-	 * engines after a reset. Here we use the Render ring default
-	 * context, which must already exist and be pinned in the GGTT,
-	 * so its address won't change after we've told the GuC where
-	 * to find it.
-	 */
-	engine = dev_priv->engine[RCS];
-	ads->golden_context_lrca = engine->status_page.ggtt_offset;
-
-	for_each_engine(engine, dev_priv, id)
-		ads->eng_state_size[engine->guc_id] = intel_lr_context_size(engine);
+	blob = kmap(page);
 
 	/* GuC scheduling policies */
-	policies = (void *)ads + sizeof(struct guc_ads);
-	guc_policies_init(policies);
-
-	ads->scheduler_policies =
-		guc_ggtt_offset(vma) + sizeof(struct guc_ads);
+	guc_policies_init(&blob->policies);
 
 	/* MMIO reg state */
-	reg_state = (void *)policies + sizeof(struct guc_policies);
-
 	for_each_engine(engine, dev_priv, id) {
-		reg_state->mmio_white_list[engine->guc_id].mmio_start =
+		blob->reg_state.mmio_white_list[engine->guc_id].mmio_start =
 			engine->mmio_base + GUC_MMIO_WHITE_LIST_START;
 
 		/* Nothing to be saved or restored for now. */
-		reg_state->mmio_white_list[engine->guc_id].count = 0;
+		blob->reg_state.mmio_white_list[engine->guc_id].count = 0;
 	}
 
-	ads->reg_state_addr = ads->scheduler_policies +
-			sizeof(struct guc_policies);
+	/*
+	 * The GuC requires a "Golden Context" when it reinitialises
+	 * engines after a reset. Here we use the Render ring default
+	 * context, which must already exist and be pinned in the GGTT,
+	 * so its address won't change after we've told the GuC where
+	 * to find it.
+	 */
+	blob->ads.golden_context_lrca =
+		dev_priv->engine[RCS]->status_page.ggtt_offset;
+
+	for_each_engine(engine, dev_priv, id)
+		blob->ads.eng_state_size[engine->guc_id] =
+			intel_lr_context_size(engine);
 
-	ads->reg_state_buffer = ads->reg_state_addr +
-			sizeof(struct guc_mmio_reg_state);
+	base = guc_ggtt_offset(vma);
+	blob->ads.scheduler_policies = base + ptr_offset(blob, policies);
+	blob->ads.reg_state_buffer = base + ptr_offset(blob, reg_state_buffer);
+	blob->ads.reg_state_addr = base + ptr_offset(blob, reg_state);
 
 	kunmap(page);
 }
diff --git a/drivers/gpu/drm/i915/i915_utils.h b/drivers/gpu/drm/i915/i915_utils.h
index b8ba0f2f92af..94a3a3299910 100644
--- a/drivers/gpu/drm/i915/i915_utils.h
+++ b/drivers/gpu/drm/i915/i915_utils.h
@@ -66,6 +66,8 @@
 #define ptr_pack_bits(ptr, bits)					\
 	((typeof(ptr))((unsigned long)(ptr) | (bits)))
 
+#define ptr_offset(ptr, member) offsetof(typeof(*(ptr)), member)
+
 #define fetch_and_zero(ptr) ({						\
 	typeof(*ptr) __T = *(ptr);					\
 	*(ptr) = (typeof(*ptr))0;					\
-- 
2.11.0

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

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

* ✓ Fi.CI.BAT: success for drm/i915/guc: Use formalized struct definition for ads object (rev5)
  2017-03-14 13:33 [PATCH v3] drm/i915/guc: Use formalized struct definition for ads object Michal Wajdeczko
                   ` (3 preceding siblings ...)
  2017-03-15  8:47 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2017-03-15 12:46 ` Patchwork
  2017-03-15 15:48   ` Chris Wilson
  4 siblings, 1 reply; 13+ messages in thread
From: Patchwork @ 2017-03-15 12:46 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/guc: Use formalized struct definition for ads object (rev5)
URL   : https://patchwork.freedesktop.org/series/20826/
State : success

== Summary ==

Series 20826v5 drm/i915/guc: Use formalized struct definition for ads object
https://patchwork.freedesktop.org/api/1.0/series/20826/revisions/5/mbox/

Test gem_ctx_create:
        Subgroup basic-files:
                incomplete -> PASS       (fi-skl-6260u) fdo#100130
Test gem_exec_flush:
        Subgroup basic-batch-kernel-default-uc:
                incomplete -> PASS       (fi-skl-6700k) fdo#100130
        Subgroup basic-uc-pro-default:
                incomplete -> PASS       (fi-skl-6770hq) fdo#100130
        Subgroup basic-wb-ro-before-default:
                incomplete -> PASS       (fi-kbl-7500u) fdo#100130

fdo#100130 https://bugs.freedesktop.org/show_bug.cgi?id=100130

fi-bdw-5557u     total:278  pass:267  dwarn:0   dfail:0   fail:0   skip:11  time: 457s
fi-bsw-n3050     total:278  pass:239  dwarn:0   dfail:0   fail:0   skip:39  time: 576s
fi-bxt-j4205     total:278  pass:259  dwarn:0   dfail:0   fail:0   skip:19  time: 534s
fi-byt-j1900     total:278  pass:251  dwarn:0   dfail:0   fail:0   skip:27  time: 500s
fi-byt-n2820     total:278  pass:247  dwarn:0   dfail:0   fail:0   skip:31  time: 499s
fi-hsw-4770      total:278  pass:262  dwarn:0   dfail:0   fail:0   skip:16  time: 431s
fi-ivb-3520m     total:278  pass:260  dwarn:0   dfail:0   fail:0   skip:18  time: 510s
fi-ivb-3770      total:278  pass:260  dwarn:0   dfail:0   fail:0   skip:18  time: 495s
fi-kbl-7500u     total:278  pass:260  dwarn:0   dfail:0   fail:0   skip:18  time: 487s
fi-skl-6260u     total:278  pass:268  dwarn:0   dfail:0   fail:0   skip:10  time: 481s
fi-skl-6700k     total:278  pass:256  dwarn:4   dfail:0   fail:0   skip:18  time: 489s
fi-skl-6770hq    total:278  pass:268  dwarn:0   dfail:0   fail:0   skip:10  time: 522s
fi-snb-2520m     total:278  pass:250  dwarn:0   dfail:0   fail:0   skip:28  time: 549s
fi-snb-2600      total:278  pass:249  dwarn:0   dfail:0   fail:0   skip:29  time: 421s

15bd1396bee591d573aad0f305dd0d9915d4a884 drm-tip: 2017y-03m-15d-10h-42m-31s UTC integration manifest
b3ad3bb drm/i915/guc: Use formalized struct definition for ads object

== Logs ==

For more details see: https://intel-gfx-ci.01.org/CI/Patchwork_4179/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: ✓ Fi.CI.BAT: success for drm/i915/guc: Use formalized struct definition for ads object (rev5)
  2017-03-15 12:46 ` ✓ Fi.CI.BAT: success for drm/i915/guc: Use formalized struct definition for ads object (rev5) Patchwork
@ 2017-03-15 15:48   ` Chris Wilson
  0 siblings, 0 replies; 13+ messages in thread
From: Chris Wilson @ 2017-03-15 15:48 UTC (permalink / raw)
  To: intel-gfx

On Wed, Mar 15, 2017 at 12:46:57PM -0000, Patchwork wrote:
> == Series Details ==
> 
> Series: drm/i915/guc: Use formalized struct definition for ads object (rev5)
> URL   : https://patchwork.freedesktop.org/series/20826/
> State : success
> 
> == Summary ==
> 
> Series 20826v5 drm/i915/guc: Use formalized struct definition for ads object
> https://patchwork.freedesktop.org/api/1.0/series/20826/revisions/5/mbox/
> 
> Test gem_ctx_create:
>         Subgroup basic-files:
>                 incomplete -> PASS       (fi-skl-6260u) fdo#100130
> Test gem_exec_flush:
>         Subgroup basic-batch-kernel-default-uc:
>                 incomplete -> PASS       (fi-skl-6700k) fdo#100130
>         Subgroup basic-uc-pro-default:
>                 incomplete -> PASS       (fi-skl-6770hq) fdo#100130
>         Subgroup basic-wb-ro-before-default:
>                 incomplete -> PASS       (fi-kbl-7500u) fdo#100130
> 
> fdo#100130 https://bugs.freedesktop.org/show_bug.cgi?id=100130

Pushed. Didn't require the major rebase surgery as I expected. The ads
patch must be in the other guc cleanup series!
-Chris

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

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

* Re: [PATCH] drm/i915/guc: Use formalized struct definition for ads object
  2017-03-15 11:49         ` Chris Wilson
@ 2017-03-16 10:53           ` Joonas Lahtinen
  0 siblings, 0 replies; 13+ messages in thread
From: Joonas Lahtinen @ 2017-03-16 10:53 UTC (permalink / raw)
  To: Chris Wilson, intel-gfx

On ke, 2017-03-15 at 11:49 +0000, Chris Wilson wrote:
> > From: Michal Wajdeczko <michal.wajdeczko@intel.com>
> 
> Manual pointer manipulation is error prone. Let compiler calculate
> right offsets for us in case we need to change ads layout.
> 
> v2: don't call it object (Chris)
> v3: restyle offset assignments (Chris)
> v4: stylistic reductions
> 
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Oscar Mateo <oscar.mateo@intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>

This code definitely makes the computations better.

<SNIP>

> @@ -833,44 +832,38 @@ static void guc_addon_create(struct intel_guc *guc)
>  	}
>  
>  	page = i915_vma_first_page(vma);
> -	ads = kmap(page);

<SNIP>

> +	blob = kmap(page);

I would still like to see a BUILD_BUG_ON to verify that everything
addressed through blob truly fits within the first page.

Other than that;

Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>

Regards, Joonas
-- 
Joonas Lahtinen
Open Source Technology Center
Intel Corporation
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

end of thread, other threads:[~2017-03-16 10:53 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-14 13:33 [PATCH v3] drm/i915/guc: Use formalized struct definition for ads object Michal Wajdeczko
2017-03-14 19:18 ` ✓ Fi.CI.BAT: success for drm/i915/guc: Use formalized struct definition for ads object (rev3) Patchwork
2017-03-14 20:53 ` [PATCH] drm/i915/guc: Use formalized struct definition for ads object Chris Wilson
2017-03-15 11:02   ` Michal Wajdeczko
2017-03-15 11:19     ` Chris Wilson
2017-03-15 11:44       ` Michal Wajdeczko
2017-03-15 11:47         ` Chris Wilson
2017-03-15 11:49         ` Chris Wilson
2017-03-16 10:53           ` Joonas Lahtinen
2017-03-15  8:33 ` ✗ Fi.CI.BAT: failure for drm/i915/guc: Use formalized struct definition for ads object (rev4) Patchwork
2017-03-15  8:47 ` ✓ Fi.CI.BAT: success " Patchwork
2017-03-15 12:46 ` ✓ Fi.CI.BAT: success for drm/i915/guc: Use formalized struct definition for ads object (rev5) Patchwork
2017-03-15 15:48   ` Chris Wilson

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.