diff mbox

[v4,1/3] drm/i915: Use i915_vm_to_ppgtt instead of manual container_of

Message ID 1460016485-8089-1-git-send-email-joonas.lahtinen@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Joonas Lahtinen April 7, 2016, 8:08 a.m. UTC
Looks much better without container_of everywhere.

v2:
- In i915_gem_restore_gtt_mappings too (Chris)

v3:
- Do not cause WARN by calling on non PPGTT object (Chris)

Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_gem_gtt.c | 44 ++++++++++++++-----------------------
 1 file changed, 16 insertions(+), 28 deletions(-)

Comments

Joonas Lahtinen April 7, 2016, 11:53 a.m. UTC | #1
On to, 2016-04-07 at 11:31 +0000, Patchwork wrote:
> == Series Details ==
> 
> Series: series starting with [v4,1/3] drm/i915: Use i915_vm_to_ppgtt instead of manual container_of
> URL   : https://patchwork.freedesktop.org/series/5403/
> State : failure
> 
> == Summary ==
> 
> Series 5403v1 Series without cover letter
> http://patchwork.freedesktop.org/api/1.0/series/5403/revisions/1/mbox/
> 
> Test drv_hangman:
>         Subgroup error-state-basic:
>                 skip       -> PASS       (bsw-nuc-2)
>                 fail       -> PASS       (ilk-hp8440p)
> Test drv_module_reload_basic:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
>                 pass       -> DMESG-WARN (hsw-gt2)
> Test gem_basic:
>         Subgroup bad-close:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
>         Subgroup create-close:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
> Test gem_cs_tlb:
>         Subgroup basic-default:
>                 skip       -> PASS       (bsw-nuc-2)
> Test gem_ctx_create:
>         Subgroup basic:
>                 pass       -> INCOMPLETE (bsw-nuc-2)
> Test gem_ctx_param_basic:
>         Subgroup invalid-param-get:
>                 pass       -> INCOMPLETE (bsw-nuc-2)
>         Subgroup invalid-size-get:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
>         Subgroup non-root-set:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
>         Subgroup non-root-set-no-zeromap:
>                 dmesg-warn -> INCOMPLETE (bsw-nuc-2)
> Test gem_exec_basic:
>         Subgroup basic-blt:
>                 pass       -> SKIP       (bsw-nuc-2)
>         Subgroup basic-bsd:
>                 skip       -> PASS       (bsw-nuc-2)
>                 pass       -> FAIL       (ilk-hp8440p)
>         Subgroup basic-default:
>                 skip       -> PASS       (bsw-nuc-2)
>         Subgroup basic-render:
>                 skip       -> INCOMPLETE (bsw-nuc-2)
>         Subgroup basic-vebox:
>                 skip       -> INCOMPLETE (bsw-nuc-2)
>         Subgroup readonly-bsd:
>                 pass       -> FAIL       (ilk-hp8440p)
>         Subgroup readonly-vebox:
>                 skip       -> PASS       (bsw-nuc-2)
> Test gem_exec_store:
>         Subgroup basic-blt:
>                 pass       -> INCOMPLETE (bsw-nuc-2)
> Test gem_exec_whisper:
>         Subgroup basic:
>                 skip       -> DMESG-FAIL (bsw-nuc-2)
> Test gem_flink_basic:
>         Subgroup bad-open:
>                 dmesg-warn -> INCOMPLETE (bsw-nuc-2)
>         Subgroup flink-lifetime:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
> Test gem_linear_blits:
>         Subgroup basic:
>                 dmesg-fail -> PASS       (bsw-nuc-2)
> Test gem_mmap:
>         Subgroup basic:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
> Test gem_mmap_gtt:
>         Subgroup basic-read-no-prefault:
>                 pass       -> INCOMPLETE (bsw-nuc-2)
>         Subgroup basic-write-no-prefault:
>                 pass       -> DMESG-WARN (bsw-nuc-2)
> Test gem_ringfill:
>         Subgroup basic-default-hang:
>                 pass       -> SKIP       (bsw-nuc-2)
>                 pass       -> DMESG-FAIL (ilk-hp8440p)
> Test gem_storedw_loop:
>         Subgroup basic-blt:
>                 pass       -> DMESG-FAIL (bsw-nuc-2)
>         Subgroup basic-render:
>                 skip       -> PASS       (bsw-nuc-2)
>         Subgroup basic-vebox:
>                 pass       -> INCOMPLETE (bsw-nuc-2)
> Test gem_sync:
>         Subgroup basic-all:
>                 dmesg-fail -> INCOMPLETE (bsw-nuc-2)
>                 pass       -> DMESG-FAIL (ilk-hp8440p)
>         Subgroup basic-bsd:
>                 skip       -> PASS       (bsw-nuc-2)
>         Subgroup basic-each:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
>         Subgroup basic-render:
>                 incomplete -> PASS       (bdw-nuci7) UNSTABLE
> Test kms_addfb_basic:
>         Subgroup addfb25-bad-modifier:
>                 dmesg-warn -> INCOMPLETE (bsw-nuc-2)
>         Subgroup addfb25-x-tiled-mismatch:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
>         Subgroup bad-pitch-0:
>                 pass       -> DMESG-WARN (bsw-nuc-2)
>         Subgroup bad-pitch-128:
>                 pass       -> INCOMPLETE (bsw-nuc-2)
>         Subgroup bo-too-small-due-to-tiling:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
>         Subgroup size-max:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
>         Subgroup tile-pitch-mismatch:
>                 dmesg-warn -> INCOMPLETE (bsw-nuc-2)
>         Subgroup unused-modifier:
>                 pass       -> DMESG-WARN (bsw-nuc-2)
>         Subgroup unused-offsets:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
>         Subgroup unused-pitches:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
> Test kms_flip:
>         Subgroup basic-flip-vs-dpms:
>                 pass       -> DMESG-WARN (ilk-hp8440p) UNSTABLE
>         Subgroup basic-flip-vs-wf_vblank:
>                 pass       -> FAIL       (snb-x220t)
>         Subgroup basic-plain-flip:
>                 pass       -> INCOMPLETE (bsw-nuc-2)
> Test kms_force_connector_basic:
>         Subgroup force-connector-state:
>                 skip       -> PASS       (ivb-t430s)
>         Subgroup force-edid:
>                 pass       -> SKIP       (ivb-t430s)
>         Subgroup prune-stale-modes:
>                 pass       -> SKIP       (ivb-t430s)
> Test kms_frontbuffer_tracking:
>         Subgroup basic:
>                 pass       -> DMESG-FAIL (bsw-nuc-2)
> Test kms_pipe_crc_basic:
>         Subgroup bad-pipe:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
>         Subgroup hang-read-crc-pipe-a:
>                 pass       -> SKIP       (byt-nuc)
>         Subgroup nonblocking-crc-pipe-a:
>                 skip       -> INCOMPLETE (bsw-nuc-2)
>                 pass       -> DMESG-FAIL (ilk-hp8440p)
>         Subgroup read-crc-pipe-b-frame-sequence:
>                 skip       -> INCOMPLETE (bsw-nuc-2)
>         Subgroup suspend-read-crc-pipe-c:
>                 dmesg-warn -> PASS       (bsw-nuc-2)
>                 skip       -> DMESG-FAIL (ilk-hp8440p)
> Test pm_rpm:
>         Subgroup basic-pci-d3-state:
>                 pass       -> DMESG-WARN (bsw-nuc-2)
> Test prime_self_import:
>         Subgroup basic-with_one_bo_two_files:
>                 pass       -> INCOMPLETE (bsw-nuc-2)
> 

Could not have reasonably been anything to do with this series, if
anything had broken, it had broken for all platforms.

Merging in. Thanks for review.

Regards, Joonas

> bdw-nuci7        total:196  pass:184  dwarn:0   dfail:0   fail:0   skip:12 
> bdw-ultra        total:196  pass:175  dwarn:0   dfail:0   fail:0   skip:21 
> bsw-nuc-2        total:196  pass:107  dwarn:15  dfail:5   fail:0   skip:42 
> byt-nuc          total:196  pass:160  dwarn:0   dfail:0   fail:0   skip:36 
> hsw-brixbox      total:196  pass:174  dwarn:0   dfail:0   fail:0   skip:22 
> hsw-gt2          total:196  pass:178  dwarn:1   dfail:0   fail:0   skip:17 
> ilk-hp8440p      total:196  pass:126  dwarn:1   dfail:4   fail:2   skip:63 
> ivb-t430s        total:196  pass:169  dwarn:0   dfail:0   fail:0   skip:27 
> skl-i7k-2        total:196  pass:173  dwarn:0   dfail:0   fail:0   skip:23 
> skl-nuci5        total:196  pass:185  dwarn:0   dfail:0   fail:0   skip:11 
> snb-dellxps      total:196  pass:162  dwarn:0   dfail:0   fail:0   skip:34 
> snb-x220t        total:196  pass:161  dwarn:0   dfail:0   fail:2   skip:33 
> 
> Results at /archive/results/CI_IGT_test/Patchwork_1824/
> 
> 6b0bf94b75318abeab4c95fbf0507bc54d8959be drm-intel-nightly: 2016y-04m-07d-08h-29m-47s UTC integration manifest
> 6db180f7c7eda7803ac558b0a40be7e630edc961 drm/i915: Do not use {HAS_*, IS_*, INTEL_INFO}(dev_priv->dev)
> 4ec6b47d170e482b0553e04cb2a45302c20684ca drm/i915: Do not WARN_ON in i915_vm_to_ppgtt
> 091abd44cdcf5e9bbebc0af3c0df386e0e918f23 drm/i915: Use i915_vm_to_ppgtt instead of manual container_of
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index ae9cb27..1eda5fe 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -706,8 +706,7 @@  static void gen8_ppgtt_clear_pte_range(struct i915_address_space *vm,
 				       uint64_t length,
 				       gen8_pte_t scratch_pte)
 {
-	struct i915_hw_ppgtt *ppgtt =
-		container_of(vm, struct i915_hw_ppgtt, base);
+	struct i915_hw_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
 	gen8_pte_t *pt_vaddr;
 	unsigned pdpe = gen8_pdpe_index(start);
 	unsigned pde = gen8_pde_index(start);
@@ -762,8 +761,7 @@  static void gen8_ppgtt_clear_range(struct i915_address_space *vm,
 				   uint64_t length,
 				   bool use_scratch)
 {
-	struct i915_hw_ppgtt *ppgtt =
-		container_of(vm, struct i915_hw_ppgtt, base);
+	struct i915_hw_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
 	gen8_pte_t scratch_pte = gen8_pte_encode(px_dma(vm->scratch_page),
 						 I915_CACHE_LLC, use_scratch);
 
@@ -788,8 +786,7 @@  gen8_ppgtt_insert_pte_entries(struct i915_address_space *vm,
 			      uint64_t start,
 			      enum i915_cache_level cache_level)
 {
-	struct i915_hw_ppgtt *ppgtt =
-		container_of(vm, struct i915_hw_ppgtt, base);
+	struct i915_hw_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
 	gen8_pte_t *pt_vaddr;
 	unsigned pdpe = gen8_pdpe_index(start);
 	unsigned pde = gen8_pde_index(start);
@@ -829,8 +826,7 @@  static void gen8_ppgtt_insert_entries(struct i915_address_space *vm,
 				      enum i915_cache_level cache_level,
 				      u32 unused)
 {
-	struct i915_hw_ppgtt *ppgtt =
-		container_of(vm, struct i915_hw_ppgtt, base);
+	struct i915_hw_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
 	struct sg_page_iter sg_iter;
 
 	__sg_page_iter_start(&sg_iter, pages->sgl, sg_nents(pages->sgl), 0);
@@ -981,8 +977,7 @@  static void gen8_ppgtt_cleanup_4lvl(struct i915_hw_ppgtt *ppgtt)
 
 static void gen8_ppgtt_cleanup(struct i915_address_space *vm)
 {
-	struct i915_hw_ppgtt *ppgtt =
-		container_of(vm, struct i915_hw_ppgtt, base);
+	struct i915_hw_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
 
 	if (intel_vgpu_active(vm->dev))
 		gen8_ppgtt_notify_vgt(ppgtt, false);
@@ -1216,8 +1211,7 @@  static int gen8_alloc_va_range_3lvl(struct i915_address_space *vm,
 				    uint64_t start,
 				    uint64_t length)
 {
-	struct i915_hw_ppgtt *ppgtt =
-		container_of(vm, struct i915_hw_ppgtt, base);
+	struct i915_hw_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
 	unsigned long *new_page_dirs, *new_page_tables;
 	struct drm_device *dev = vm->dev;
 	struct i915_page_directory *pd;
@@ -1329,8 +1323,7 @@  static int gen8_alloc_va_range_4lvl(struct i915_address_space *vm,
 				    uint64_t length)
 {
 	DECLARE_BITMAP(new_pdps, GEN8_PML4ES_PER_PML4);
-	struct i915_hw_ppgtt *ppgtt =
-			container_of(vm, struct i915_hw_ppgtt, base);
+	struct i915_hw_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
 	struct i915_page_directory_pointer *pdp;
 	uint64_t pml4e;
 	int ret = 0;
@@ -1376,8 +1369,7 @@  err_out:
 static int gen8_alloc_va_range(struct i915_address_space *vm,
 			       uint64_t start, uint64_t length)
 {
-	struct i915_hw_ppgtt *ppgtt =
-		container_of(vm, struct i915_hw_ppgtt, base);
+	struct i915_hw_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
 
 	if (USES_FULL_48BIT_PPGTT(vm->dev))
 		return gen8_alloc_va_range_4lvl(vm, &ppgtt->pml4, start, length);
@@ -1795,8 +1787,7 @@  static void gen6_ppgtt_clear_range(struct i915_address_space *vm,
 				   uint64_t length,
 				   bool use_scratch)
 {
-	struct i915_hw_ppgtt *ppgtt =
-		container_of(vm, struct i915_hw_ppgtt, base);
+	struct i915_hw_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
 	gen6_pte_t *pt_vaddr, scratch_pte;
 	unsigned first_entry = start >> PAGE_SHIFT;
 	unsigned num_entries = length >> PAGE_SHIFT;
@@ -1830,8 +1821,7 @@  static void gen6_ppgtt_insert_entries(struct i915_address_space *vm,
 				      uint64_t start,
 				      enum i915_cache_level cache_level, u32 flags)
 {
-	struct i915_hw_ppgtt *ppgtt =
-		container_of(vm, struct i915_hw_ppgtt, base);
+	struct i915_hw_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
 	gen6_pte_t *pt_vaddr;
 	unsigned first_entry = start >> PAGE_SHIFT;
 	unsigned act_pt = first_entry / GEN6_PTES;
@@ -1865,8 +1855,7 @@  static int gen6_alloc_va_range(struct i915_address_space *vm,
 	struct drm_device *dev = vm->dev;
 	struct drm_i915_private *dev_priv = to_i915(dev);
 	struct i915_ggtt *ggtt = &dev_priv->ggtt;
-	struct i915_hw_ppgtt *ppgtt =
-				container_of(vm, struct i915_hw_ppgtt, base);
+	struct i915_hw_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
 	struct i915_page_table *pt;
 	uint32_t start, length, start_save, length_save;
 	uint32_t pde, temp;
@@ -1978,8 +1967,7 @@  static void gen6_free_scratch(struct i915_address_space *vm)
 
 static void gen6_ppgtt_cleanup(struct i915_address_space *vm)
 {
-	struct i915_hw_ppgtt *ppgtt =
-		container_of(vm, struct i915_hw_ppgtt, base);
+	struct i915_hw_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
 	struct i915_page_table *pt;
 	uint32_t pde;
 
@@ -3294,12 +3282,12 @@  void i915_gem_restore_gtt_mappings(struct drm_device *dev)
 		list_for_each_entry(vm, &dev_priv->vm_list, global_link) {
 			/* TODO: Perhaps it shouldn't be gen6 specific */
 
-			struct i915_hw_ppgtt *ppgtt =
-					container_of(vm, struct i915_hw_ppgtt,
-						     base);
+			struct i915_hw_ppgtt *ppgtt;
 
-			if (i915_is_ggtt(vm))
+			if (vm->is_ggtt)
 				ppgtt = dev_priv->mm.aliasing_ppgtt;
+			else
+				ppgtt = i915_vm_to_ppgtt(vm);
 
 			gen6_write_page_range(dev_priv, &ppgtt->pd,
 					      0, ppgtt->base.total);