All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet
@ 2023-09-28 18:08 Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 01/15] drm/i915: stop including i915_utils.h from intel_runtime_pm.h Jani Nikula
                   ` (16 more replies)
  0 siblings, 17 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

I've got a script that roughly answers the question, "If this header was
modified, how many object files would have to be rebuilt?"

We have a lot of headers that cause the rebuild of almost the entire
driver when modified.

Reduce includes in i915_drv.h and i915_gpu_error.h.

Here are the before (-) and after (+) stats. If you build the driver a
lot, save yourself a bunch of waiting time, and help get this merged.

BR,
Jani.


+drivers/gpu/drm/i915/gem/i915_gem_object.h: 316
-drivers/gpu/drm/i915/gem/i915_gem_object.h: 340
+drivers/gpu/drm/i915/gt/intel_engine.h: 180
-drivers/gpu/drm/i915/gt/intel_engine.h: 325
+drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h: 309
-drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h: 339
+drivers/gpu/drm/i915/gt/intel_gsc.h: 268
-drivers/gpu/drm/i915/gt/intel_gsc.h: 329
+drivers/gpu/drm/i915/gt/intel_gt_buffer_pool_types.h: 268
-drivers/gpu/drm/i915/gt/intel_gt_buffer_pool_types.h: 329
+drivers/gpu/drm/i915/gt/intel_gtt.h: 318
-drivers/gpu/drm/i915/gt/intel_gtt.h: 340
+drivers/gpu/drm/i915/gt/intel_gt_types.h: 268
-drivers/gpu/drm/i915/gt/intel_gt_types.h: 329
+drivers/gpu/drm/i915/gt/intel_hwconfig.h: 268
-drivers/gpu/drm/i915/gt/intel_hwconfig.h: 329
+drivers/gpu/drm/i915/gt/intel_llc_types.h: 268
-drivers/gpu/drm/i915/gt/intel_llc_types.h: 329
+drivers/gpu/drm/i915/gt/intel_migrate_types.h: 268
-drivers/gpu/drm/i915/gt/intel_migrate_types.h: 329
+drivers/gpu/drm/i915/gt/intel_rc6_types.h: 268
-drivers/gpu/drm/i915/gt/intel_rc6_types.h: 329
+drivers/gpu/drm/i915/gt/intel_reset.h: 318
-drivers/gpu/drm/i915/gt/intel_reset.h: 340
+drivers/gpu/drm/i915/gt/intel_reset_types.h: 318
-drivers/gpu/drm/i915/gt/intel_reset_types.h: 340
+drivers/gpu/drm/i915/gt/intel_rps_types.h: 270
-drivers/gpu/drm/i915/gt/intel_rps_types.h: 330
+drivers/gpu/drm/i915/gt/intel_timeline.h: 181
-drivers/gpu/drm/i915/gt/intel_timeline.h: 326
+drivers/gpu/drm/i915/gt/intel_wopcm.h: 268
-drivers/gpu/drm/i915/gt/intel_wopcm.h: 329
+drivers/gpu/drm/i915/gt/intel_workarounds.h: 180
-drivers/gpu/drm/i915/gt/intel_workarounds.h: 325
+drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.h: 270
-drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.h: 331
+drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h: 271
-drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h: 332
+drivers/gpu/drm/i915/gt/uc/intel_guc_fw.h: 271
-drivers/gpu/drm/i915/gt/uc/intel_guc_fw.h: 332
+drivers/gpu/drm/i915/gt/uc/intel_guc.h: 271
-drivers/gpu/drm/i915/gt/uc/intel_guc.h: 332
+drivers/gpu/drm/i915/gt/uc/intel_guc_log.h: 271
-drivers/gpu/drm/i915/gt/uc/intel_guc_log.h: 332
+drivers/gpu/drm/i915/gt/uc/intel_guc_rc.h: 270
-drivers/gpu/drm/i915/gt/uc/intel_guc_rc.h: 331
+drivers/gpu/drm/i915/gt/uc/intel_guc_reg.h: 271
-drivers/gpu/drm/i915/gt/uc/intel_guc_reg.h: 332
+drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.h: 271
-drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.h: 332
+drivers/gpu/drm/i915/gt/uc/intel_guc_slpc_types.h: 271
-drivers/gpu/drm/i915/gt/uc/intel_guc_slpc_types.h: 332
+drivers/gpu/drm/i915/gt/uc/intel_guc_submission.h: 271
-drivers/gpu/drm/i915/gt/uc/intel_guc_submission.h: 332
+drivers/gpu/drm/i915/gt/uc/intel_huc_fw.h: 271
-drivers/gpu/drm/i915/gt/uc/intel_huc_fw.h: 332
+drivers/gpu/drm/i915/gt/uc/intel_huc.h: 271
-drivers/gpu/drm/i915/gt/uc/intel_huc.h: 332
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h: 272
-drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h: 333
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h: 272
-drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h: 333
+drivers/gpu/drm/i915/gt/uc/intel_uc.h: 270
-drivers/gpu/drm/i915/gt/uc/intel_uc.h: 331
+drivers/gpu/drm/i915/i915_gem_gtt.h: 317
-drivers/gpu/drm/i915/i915_gem_gtt.h: 340
+drivers/gpu/drm/i915/i915_gem_ww.h: 320
-drivers/gpu/drm/i915/i915_gem_ww.h: 344
+drivers/gpu/drm/i915/i915_syncmap.h: 182
-drivers/gpu/drm/i915/i915_syncmap.h: 327
+drivers/gpu/drm/i915/i915_sysfs.h: 5
-drivers/gpu/drm/i915/i915_sysfs.h: 4
+drivers/gpu/drm/i915/i915_vma.h: 309
-drivers/gpu/drm/i915/i915_vma.h: 339
+drivers/gpu/drm/i915/i915_vma_types.h: 318
-drivers/gpu/drm/i915/i915_vma_types.h: 340


Jani Nikula (15):
  drm/i915: stop including i915_utils.h from intel_runtime_pm.h
  drm/i915/mocs: use to_gt() instead of direct &i915->gt
  drm/i915: allocate i915->gt0 dynamically
  drm/i915/gt: remove i915->gt0 in favour of i915->gt[0]
  drm/i915: make some error capture functions static
  drm/i915: move gpu error debugfs to i915_gpu_error.c
  drm/i915: move gpu error sysfs to i915_gpu_error.c
  drm/i915: convert i915_coredump_get/put() to proper functions
  drm/i915: do more in i915_gpu_coredump_alloc()
  drm/i915: move execlist capture to i915_gpu_error.c
  drm/i915/guc: don't look at gpu error guts in guc capture
  drm/i915: hide gpu error structures inside i915_gpu_error.c
  drm/i915: stop including gt/intel_engine.h and gt/intel_gt_types.h
    from i915_drv.h
  drm/i915: stop including gt/uc/intel_uc.h from i915_drv.h
  drm/i915: stop including gt/intel_workarounds.h from i915_drv.h

 .../drm/i915/display/intel_display_reset.c    |   1 +
 .../gpu/drm/i915/display/intel_display_rps.c  |   1 +
 drivers/gpu/drm/i915/display/intel_fbdev.c    |   1 +
 .../drm/i915/display/intel_plane_initial.c    |   1 +
 drivers/gpu/drm/i915/gem/i915_gem_lmem.c      |   5 +-
 drivers/gpu/drm/i915/gem/i915_gem_tiling.c    |   1 +
 drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.c    |   1 +
 drivers/gpu/drm/i915/gem/i915_gem_userptr.c   |   1 +
 drivers/gpu/drm/i915/gt/gen7_renderclear.c    |   1 +
 .../drm/i915/gt/intel_execlists_submission.c  |  38 +-
 drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c  |   3 +-
 drivers/gpu/drm/i915/gt/intel_gt.c            |  10 +-
 drivers/gpu/drm/i915/gt/intel_gt_requests.c   |   1 +
 drivers/gpu/drm/i915/gt/intel_mocs.c          |   4 +-
 drivers/gpu/drm/i915/gt/intel_rps.c           |   1 +
 drivers/gpu/drm/i915/gt/intel_sseu.c          |   1 +
 drivers/gpu/drm/i915/gt/intel_sseu_debugfs.c  |   2 +-
 drivers/gpu/drm/i915/gt/intel_wopcm.c         |   3 +-
 drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c     |   5 +-
 .../gpu/drm/i915/gt/uc/intel_guc_capture.c    |  63 +--
 .../gpu/drm/i915/gt/uc/intel_guc_capture.h    |  20 +-
 drivers/gpu/drm/i915/gvt/execlist.c           |   3 +-
 drivers/gpu/drm/i915/gvt/gvt.h                |   1 +
 drivers/gpu/drm/i915/i915_debugfs.c           | 108 +---
 drivers/gpu/drm/i915/i915_drv.h               |  14 +-
 drivers/gpu/drm/i915/i915_getparam.c          |   1 +
 drivers/gpu/drm/i915/i915_gpu_error.c         | 507 +++++++++++++++++-
 drivers/gpu/drm/i915/i915_gpu_error.h         | 329 +-----------
 drivers/gpu/drm/i915/i915_mm.c                |   4 +-
 drivers/gpu/drm/i915/i915_pci.c               |   3 +-
 drivers/gpu/drm/i915/i915_query.c             |   6 +-
 drivers/gpu/drm/i915/i915_sysfs.c             |  81 +--
 drivers/gpu/drm/i915/i915_utils.h             |   1 +
 drivers/gpu/drm/i915/i915_vgpu.c              |   2 +
 drivers/gpu/drm/i915/intel_gvt_mmio_table.c   |   1 +
 drivers/gpu/drm/i915/intel_region_ttm.c       |   2 +
 drivers/gpu/drm/i915/intel_runtime_pm.h       |   2 -
 drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.c  |   1 +
 drivers/gpu/drm/i915/pxp/intel_pxp_pm.c       |   1 +
 drivers/gpu/drm/i915/pxp/intel_pxp_session.c  |   3 +-
 .../i915/selftests/intel_scheduler_helpers.c  |   2 +-
 .../gpu/drm/i915/selftests/mock_gem_device.c  |   1 -
 42 files changed, 612 insertions(+), 625 deletions(-)

-- 
2.39.2


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

* [Intel-gfx] [PATCH 01/15] drm/i915: stop including i915_utils.h from intel_runtime_pm.h
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 02/15] drm/i915/mocs: use to_gt() instead of direct &i915->gt Jani Nikula
                   ` (15 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Remove an unnecessary include.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/intel_runtime_pm.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.h b/drivers/gpu/drm/i915/intel_runtime_pm.h
index f79cda7a2503..be43614c73fd 100644
--- a/drivers/gpu/drm/i915/intel_runtime_pm.h
+++ b/drivers/gpu/drm/i915/intel_runtime_pm.h
@@ -11,8 +11,6 @@
 
 #include "intel_wakeref.h"
 
-#include "i915_utils.h"
-
 struct device;
 struct drm_i915_private;
 struct drm_printer;
-- 
2.39.2


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

* [Intel-gfx] [PATCH 02/15] drm/i915/mocs: use to_gt() instead of direct &i915->gt
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 01/15] drm/i915: stop including i915_utils.h from intel_runtime_pm.h Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 03/15] drm/i915: allocate i915->gt0 dynamically Jani Nikula
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Have to give up the const on i915 pointer, but it's not big of a deal
considering non-const i915 gets passed all over the place.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_mocs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_mocs.c b/drivers/gpu/drm/i915/gt/intel_mocs.c
index 07269ff3be13..353f93baaca0 100644
--- a/drivers/gpu/drm/i915/gt/intel_mocs.c
+++ b/drivers/gpu/drm/i915/gt/intel_mocs.c
@@ -487,7 +487,7 @@ static bool has_mocs(const struct drm_i915_private *i915)
 	return !IS_DGFX(i915);
 }
 
-static unsigned int get_mocs_settings(const struct drm_i915_private *i915,
+static unsigned int get_mocs_settings(struct drm_i915_private *i915,
 				      struct drm_i915_mocs_table *table)
 {
 	unsigned int flags;
@@ -495,7 +495,7 @@ static unsigned int get_mocs_settings(const struct drm_i915_private *i915,
 	memset(table, 0, sizeof(struct drm_i915_mocs_table));
 
 	table->unused_entries_index = I915_MOCS_PTE;
-	if (IS_GFX_GT_IP_RANGE(&i915->gt0, IP_VER(12, 70), IP_VER(12, 71))) {
+	if (IS_GFX_GT_IP_RANGE(to_gt(i915), IP_VER(12, 70), IP_VER(12, 71))) {
 		table->size = ARRAY_SIZE(mtl_mocs_table);
 		table->table = mtl_mocs_table;
 		table->n_entries = MTL_NUM_MOCS_ENTRIES;
-- 
2.39.2


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

* [Intel-gfx] [PATCH 03/15] drm/i915: allocate i915->gt0 dynamically
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 01/15] drm/i915: stop including i915_utils.h from intel_runtime_pm.h Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 02/15] drm/i915/mocs: use to_gt() instead of direct &i915->gt Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 04/15] drm/i915/gt: remove i915->gt0 in favour of i915->gt[0] Jani Nikula
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Convert i915->gt0 to a pointer, and allocate it dynamically.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_gt.c | 8 +++++++-
 drivers/gpu/drm/i915/i915_drv.h    | 8 ++++----
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
index 93062c35e072..a3d68ff4b191 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt.c
@@ -62,7 +62,13 @@ void intel_gt_common_init_early(struct intel_gt *gt)
 /* Preliminary initialization of Tile 0 */
 int intel_root_gt_init_early(struct drm_i915_private *i915)
 {
-	struct intel_gt *gt = to_gt(i915);
+	struct intel_gt *gt;
+
+	gt = drmm_kzalloc(&i915->drm, sizeof(*gt), GFP_KERNEL);
+	if (!gt)
+		return -ENOMEM;
+
+	i915->gt0 = gt;
 
 	gt->i915 = i915;
 	gt->uncore = &i915->uncore;
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 511eba3bbdba..a1cb16afa46d 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -318,10 +318,10 @@ struct drm_i915_private {
 	struct i915_hwmon *hwmon;
 
 	/* Abstract the submission mechanism (legacy ringbuffer or execlists) away */
-	struct intel_gt gt0;
+	struct intel_gt *gt0;
 
 	/*
-	 * i915->gt[0] == &i915->gt0
+	 * i915->gt[0] == i915->gt0
 	 */
 	struct intel_gt *gt[I915_MAX_GT];
 
@@ -382,9 +382,9 @@ static inline struct drm_i915_private *pdev_to_i915(struct pci_dev *pdev)
 	return pci_get_drvdata(pdev);
 }
 
-static inline struct intel_gt *to_gt(struct drm_i915_private *i915)
+static inline struct intel_gt *to_gt(const struct drm_i915_private *i915)
 {
-	return &i915->gt0;
+	return i915->gt0;
 }
 
 /* Simple iterator over all initialised engines */
-- 
2.39.2


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

* [Intel-gfx] [PATCH 04/15] drm/i915/gt: remove i915->gt0 in favour of i915->gt[0]
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
                   ` (2 preceding siblings ...)
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 03/15] drm/i915: allocate i915->gt0 dynamically Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 05/15] drm/i915: make some error capture functions static Jani Nikula
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Since gt0 == i915->gt[0], just drop the former.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_gt.c               | 4 +---
 drivers/gpu/drm/i915/i915_drv.h                  | 8 +-------
 drivers/gpu/drm/i915/selftests/mock_gem_device.c | 1 -
 3 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
index a3d68ff4b191..bb6c3f68f7d2 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt.c
@@ -68,7 +68,7 @@ int intel_root_gt_init_early(struct drm_i915_private *i915)
 	if (!gt)
 		return -ENOMEM;
 
-	i915->gt0 = gt;
+	i915->gt[0] = gt;
 
 	gt->i915 = i915;
 	gt->uncore = &i915->uncore;
@@ -917,8 +917,6 @@ int intel_gt_probe_all(struct drm_i915_private *i915)
 	if (ret)
 		return ret;
 
-	i915->gt[0] = gt;
-
 	if (!HAS_EXTRA_GT_LIST(i915))
 		return 0;
 
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index a1cb16afa46d..d04a9c32c44f 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -317,12 +317,6 @@ struct drm_i915_private {
 
 	struct i915_hwmon *hwmon;
 
-	/* Abstract the submission mechanism (legacy ringbuffer or execlists) away */
-	struct intel_gt *gt0;
-
-	/*
-	 * i915->gt[0] == i915->gt0
-	 */
 	struct intel_gt *gt[I915_MAX_GT];
 
 	struct kobject *sysfs_gt;
@@ -384,7 +378,7 @@ static inline struct drm_i915_private *pdev_to_i915(struct pci_dev *pdev)
 
 static inline struct intel_gt *to_gt(const struct drm_i915_private *i915)
 {
-	return i915->gt0;
+	return i915->gt[0];
 }
 
 /* Simple iterator over all initialised engines */
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
index 7de6477803f8..af349fd9abc2 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
@@ -114,7 +114,6 @@ static struct dev_pm_domain pm_domain = {
 
 static void mock_gt_probe(struct drm_i915_private *i915)
 {
-	i915->gt[0] = to_gt(i915);
 	i915->gt[0]->name = "Mock GT";
 }
 
-- 
2.39.2


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

* [Intel-gfx] [PATCH 05/15] drm/i915: make some error capture functions static
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
                   ` (3 preceding siblings ...)
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 04/15] drm/i915/gt: remove i915->gt0 in favour of i915->gt[0] Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 06/15] drm/i915: move gpu error debugfs to i915_gpu_error.c Jani Nikula
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Not needed outside of i915_gpu_error.c.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_gpu_error.c | 8 ++++----
 drivers/gpu/drm/i915/i915_gpu_error.h | 5 -----
 2 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index f4ebcfb70289..767687821f7a 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -520,7 +520,7 @@ __find_vma(struct i915_vma_coredump *vma, const char *name)
 	return NULL;
 }
 
-struct i915_vma_coredump *
+static struct i915_vma_coredump *
 intel_gpu_error_find_batch(const struct intel_engine_coredump *ee)
 {
 	return __find_vma(ee->vma, "batch");
@@ -609,9 +609,9 @@ void i915_error_printf(struct drm_i915_error_state_buf *e, const char *f, ...)
 	va_end(args);
 }
 
-void intel_gpu_error_print_vma(struct drm_i915_error_state_buf *m,
-			       const struct intel_engine_cs *engine,
-			       const struct i915_vma_coredump *vma)
+static void intel_gpu_error_print_vma(struct drm_i915_error_state_buf *m,
+				      const struct intel_engine_cs *engine,
+				      const struct i915_vma_coredump *vma)
 {
 	char out[ASCII85_BUFSZ];
 	struct page *page;
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.h b/drivers/gpu/drm/i915/i915_gpu_error.h
index 9f5971f5e980..c982b162b7ff 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.h
+++ b/drivers/gpu/drm/i915/i915_gpu_error.h
@@ -275,11 +275,6 @@ static inline void intel_klog_error_capture(struct intel_gt *gt,
 
 __printf(2, 3)
 void i915_error_printf(struct drm_i915_error_state_buf *e, const char *f, ...);
-void intel_gpu_error_print_vma(struct drm_i915_error_state_buf *m,
-			       const struct intel_engine_cs *engine,
-			       const struct i915_vma_coredump *vma);
-struct i915_vma_coredump *
-intel_gpu_error_find_batch(const struct intel_engine_coredump *ee);
 
 struct i915_gpu_coredump *i915_gpu_coredump(struct intel_gt *gt,
 					    intel_engine_mask_t engine_mask, u32 dump_flags);
-- 
2.39.2


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

* [Intel-gfx] [PATCH 06/15] drm/i915: move gpu error debugfs to i915_gpu_error.c
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
                   ` (4 preceding siblings ...)
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 05/15] drm/i915: make some error capture functions static Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 07/15] drm/i915: move gpu error sysfs " Jani Nikula
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Hide gpu error specifics in i915_gpu_error.c. This is also cleaner wrt
conditional compilation, as i915_gpu_error.c is only built with
DRM_I915_CAPTURE_ERROR=y.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_debugfs.c   | 108 +------------------------
 drivers/gpu/drm/i915/i915_gpu_error.c | 111 +++++++++++++++++++++++++-
 drivers/gpu/drm/i915/i915_gpu_error.h |   8 +-
 3 files changed, 119 insertions(+), 108 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index e9b79c2c37d8..beffac46a5e2 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -49,6 +49,7 @@
 #include "i915_debugfs.h"
 #include "i915_debugfs_params.h"
 #include "i915_driver.h"
+#include "i915_gpu_error.h"
 #include "i915_irq.h"
 #include "i915_reg.h"
 #include "i915_scheduler.h"
@@ -297,107 +298,6 @@ static int i915_gem_object_info(struct seq_file *m, void *data)
 	return 0;
 }
 
-#if IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR)
-static ssize_t gpu_state_read(struct file *file, char __user *ubuf,
-			      size_t count, loff_t *pos)
-{
-	struct i915_gpu_coredump *error;
-	ssize_t ret;
-	void *buf;
-
-	error = file->private_data;
-	if (!error)
-		return 0;
-
-	/* Bounce buffer required because of kernfs __user API convenience. */
-	buf = kmalloc(count, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	ret = i915_gpu_coredump_copy_to_buffer(error, buf, *pos, count);
-	if (ret <= 0)
-		goto out;
-
-	if (!copy_to_user(ubuf, buf, ret))
-		*pos += ret;
-	else
-		ret = -EFAULT;
-
-out:
-	kfree(buf);
-	return ret;
-}
-
-static int gpu_state_release(struct inode *inode, struct file *file)
-{
-	i915_gpu_coredump_put(file->private_data);
-	return 0;
-}
-
-static int i915_gpu_info_open(struct inode *inode, struct file *file)
-{
-	struct drm_i915_private *i915 = inode->i_private;
-	struct i915_gpu_coredump *gpu;
-	intel_wakeref_t wakeref;
-
-	gpu = NULL;
-	with_intel_runtime_pm(&i915->runtime_pm, wakeref)
-		gpu = i915_gpu_coredump(to_gt(i915), ALL_ENGINES, CORE_DUMP_FLAG_NONE);
-
-	if (IS_ERR(gpu))
-		return PTR_ERR(gpu);
-
-	file->private_data = gpu;
-	return 0;
-}
-
-static const struct file_operations i915_gpu_info_fops = {
-	.owner = THIS_MODULE,
-	.open = i915_gpu_info_open,
-	.read = gpu_state_read,
-	.llseek = default_llseek,
-	.release = gpu_state_release,
-};
-
-static ssize_t
-i915_error_state_write(struct file *filp,
-		       const char __user *ubuf,
-		       size_t cnt,
-		       loff_t *ppos)
-{
-	struct i915_gpu_coredump *error = filp->private_data;
-
-	if (!error)
-		return 0;
-
-	drm_dbg(&error->i915->drm, "Resetting error state\n");
-	i915_reset_error_state(error->i915);
-
-	return cnt;
-}
-
-static int i915_error_state_open(struct inode *inode, struct file *file)
-{
-	struct i915_gpu_coredump *error;
-
-	error = i915_first_error_state(inode->i_private);
-	if (IS_ERR(error))
-		return PTR_ERR(error);
-
-	file->private_data  = error;
-	return 0;
-}
-
-static const struct file_operations i915_error_state_fops = {
-	.owner = THIS_MODULE,
-	.open = i915_error_state_open,
-	.read = gpu_state_read,
-	.write = i915_error_state_write,
-	.llseek = default_llseek,
-	.release = gpu_state_release,
-};
-#endif
-
 static int i915_frequency_info(struct seq_file *m, void *unused)
 {
 	struct drm_i915_private *i915 = node_to_i915(m->private);
@@ -837,10 +737,6 @@ static const struct i915_debugfs_files {
 	{"i915_perf_noa_delay", &i915_perf_noa_delay_fops},
 	{"i915_wedged", &i915_wedged_fops},
 	{"i915_gem_drop_caches", &i915_drop_caches_fops},
-#if IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR)
-	{"i915_error_state", &i915_error_state_fops},
-	{"i915_gpu_info", &i915_gpu_info_fops},
-#endif
 };
 
 void i915_debugfs_register(struct drm_i915_private *dev_priv)
@@ -863,4 +759,6 @@ void i915_debugfs_register(struct drm_i915_private *dev_priv)
 	drm_debugfs_create_files(i915_debugfs_list,
 				 ARRAY_SIZE(i915_debugfs_list),
 				 minor->debugfs_root, minor);
+
+	i915_gpu_error_debugfs_register(dev_priv);
 }
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index 767687821f7a..71dacd6e5360 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -2128,7 +2128,7 @@ __i915_gpu_coredump(struct intel_gt *gt, intel_engine_mask_t engine_mask, u32 du
 	return error;
 }
 
-struct i915_gpu_coredump *
+static struct i915_gpu_coredump *
 i915_gpu_coredump(struct intel_gt *gt, intel_engine_mask_t engine_mask, u32 dump_flags)
 {
 	static DEFINE_MUTEX(capture_mutex);
@@ -2366,3 +2366,112 @@ void intel_klog_error_capture(struct intel_gt *gt,
 	drm_info(&i915->drm, "[Capture/%d.%d] Dumped %zd bytes\n", l_count, line++, pos_err);
 }
 #endif
+
+static ssize_t gpu_state_read(struct file *file, char __user *ubuf,
+			      size_t count, loff_t *pos)
+{
+	struct i915_gpu_coredump *error;
+	ssize_t ret;
+	void *buf;
+
+	error = file->private_data;
+	if (!error)
+		return 0;
+
+	/* Bounce buffer required because of kernfs __user API convenience. */
+	buf = kmalloc(count, GFP_KERNEL);
+	if (!buf)
+		return -ENOMEM;
+
+	ret = i915_gpu_coredump_copy_to_buffer(error, buf, *pos, count);
+	if (ret <= 0)
+		goto out;
+
+	if (!copy_to_user(ubuf, buf, ret))
+		*pos += ret;
+	else
+		ret = -EFAULT;
+
+out:
+	kfree(buf);
+	return ret;
+}
+
+static int gpu_state_release(struct inode *inode, struct file *file)
+{
+	i915_gpu_coredump_put(file->private_data);
+	return 0;
+}
+
+static int i915_gpu_info_open(struct inode *inode, struct file *file)
+{
+	struct drm_i915_private *i915 = inode->i_private;
+	struct i915_gpu_coredump *gpu;
+	intel_wakeref_t wakeref;
+
+	gpu = NULL;
+	with_intel_runtime_pm(&i915->runtime_pm, wakeref)
+		gpu = i915_gpu_coredump(to_gt(i915), ALL_ENGINES, CORE_DUMP_FLAG_NONE);
+
+	if (IS_ERR(gpu))
+		return PTR_ERR(gpu);
+
+	file->private_data = gpu;
+	return 0;
+}
+
+static const struct file_operations i915_gpu_info_fops = {
+	.owner = THIS_MODULE,
+	.open = i915_gpu_info_open,
+	.read = gpu_state_read,
+	.llseek = default_llseek,
+	.release = gpu_state_release,
+};
+
+static ssize_t
+i915_error_state_write(struct file *filp,
+		       const char __user *ubuf,
+		       size_t cnt,
+		       loff_t *ppos)
+{
+	struct i915_gpu_coredump *error = filp->private_data;
+
+	if (!error)
+		return 0;
+
+	drm_dbg(&error->i915->drm, "Resetting error state\n");
+	i915_reset_error_state(error->i915);
+
+	return cnt;
+}
+
+static int i915_error_state_open(struct inode *inode, struct file *file)
+{
+	struct i915_gpu_coredump *error;
+
+	error = i915_first_error_state(inode->i_private);
+	if (IS_ERR(error))
+		return PTR_ERR(error);
+
+	file->private_data  = error;
+	return 0;
+}
+
+static const struct file_operations i915_error_state_fops = {
+	.owner = THIS_MODULE,
+	.open = i915_error_state_open,
+	.read = gpu_state_read,
+	.write = i915_error_state_write,
+	.llseek = default_llseek,
+	.release = gpu_state_release,
+};
+
+void i915_gpu_error_debugfs_register(struct drm_i915_private *i915)
+{
+	struct drm_minor *minor = i915->drm.primary;
+
+	debugfs_create_file("i915_error_state", 0644, minor->debugfs_root, i915,
+			    &i915_error_state_fops);
+	debugfs_create_file("i915_gpu_info", 0644, minor->debugfs_root, i915,
+			    &i915_gpu_info_fops);
+}
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.h b/drivers/gpu/drm/i915/i915_gpu_error.h
index c982b162b7ff..a6f2a7518cf0 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.h
+++ b/drivers/gpu/drm/i915/i915_gpu_error.h
@@ -276,8 +276,6 @@ static inline void intel_klog_error_capture(struct intel_gt *gt,
 __printf(2, 3)
 void i915_error_printf(struct drm_i915_error_state_buf *e, const char *f, ...);
 
-struct i915_gpu_coredump *i915_gpu_coredump(struct intel_gt *gt,
-					    intel_engine_mask_t engine_mask, u32 dump_flags);
 void i915_capture_error_state(struct intel_gt *gt,
 			      intel_engine_mask_t engine_mask, u32 dump_flags);
 
@@ -329,6 +327,8 @@ struct i915_gpu_coredump *i915_first_error_state(struct drm_i915_private *i915);
 void i915_reset_error_state(struct drm_i915_private *i915);
 void i915_disable_error_state(struct drm_i915_private *i915, int err);
 
+void i915_gpu_error_debugfs_register(struct drm_i915_private *i915);
+
 #else
 
 __printf(2, 3)
@@ -411,6 +411,10 @@ static inline void i915_disable_error_state(struct drm_i915_private *i915,
 {
 }
 
+static inline void i915_gpu_error_debugfs_register(struct drm_i915_private *i915)
+{
+}
+
 #endif /* IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR) */
 
 #endif /* _I915_GPU_ERROR_H_ */
-- 
2.39.2


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

* [Intel-gfx] [PATCH 07/15] drm/i915: move gpu error sysfs to i915_gpu_error.c
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
                   ` (5 preceding siblings ...)
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 06/15] drm/i915: move gpu error debugfs to i915_gpu_error.c Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 08/15] drm/i915: convert i915_coredump_get/put() to proper functions Jani Nikula
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Hide gpu error specifics in i915_gpu_error.c. This is also cleaner wrt
conditional compilation, as i915_gpu_error.c is only built with
DRM_I915_CAPTURE_ERROR=y.

With this, we can also make i915_first_error_state() static.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_gpu_error.c | 75 ++++++++++++++++++++++++-
 drivers/gpu/drm/i915/i915_gpu_error.h | 17 +++---
 drivers/gpu/drm/i915/i915_sysfs.c     | 79 +--------------------------
 3 files changed, 86 insertions(+), 85 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index 71dacd6e5360..17699b20694c 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -57,6 +57,7 @@
 #include "i915_memcpy.h"
 #include "i915_reg.h"
 #include "i915_scatterlist.h"
+#include "i915_sysfs.h"
 #include "i915_utils.h"
 
 #define ALLOW_FAIL (__GFP_KSWAPD_RECLAIM | __GFP_RETRY_MAYFAIL | __GFP_NOWARN)
@@ -2199,7 +2200,7 @@ void i915_capture_error_state(struct intel_gt *gt,
 	i915_gpu_coredump_put(error);
 }
 
-struct i915_gpu_coredump *
+static struct i915_gpu_coredump *
 i915_first_error_state(struct drm_i915_private *i915)
 {
 	struct i915_gpu_coredump *error;
@@ -2475,3 +2476,75 @@ void i915_gpu_error_debugfs_register(struct drm_i915_private *i915)
 	debugfs_create_file("i915_gpu_info", 0644, minor->debugfs_root, i915,
 			    &i915_gpu_info_fops);
 }
+
+static ssize_t error_state_read(struct file *filp, struct kobject *kobj,
+				struct bin_attribute *attr, char *buf,
+				loff_t off, size_t count)
+{
+
+	struct device *kdev = kobj_to_dev(kobj);
+	struct drm_i915_private *i915 = kdev_minor_to_i915(kdev);
+	struct i915_gpu_coredump *gpu;
+	ssize_t ret = 0;
+
+	/*
+	 * FIXME: Concurrent clients triggering resets and reading + clearing
+	 * dumps can cause inconsistent sysfs reads when a user calls in with a
+	 * non-zero offset to complete a prior partial read but the
+	 * gpu_coredump has been cleared or replaced.
+	 */
+
+	gpu = i915_first_error_state(i915);
+	if (IS_ERR(gpu)) {
+		ret = PTR_ERR(gpu);
+	} else if (gpu) {
+		ret = i915_gpu_coredump_copy_to_buffer(gpu, buf, off, count);
+		i915_gpu_coredump_put(gpu);
+	} else {
+		const char *str = "No error state collected\n";
+		size_t len = strlen(str);
+
+		if (off < len) {
+			ret = min_t(size_t, count, len - off);
+			memcpy(buf, str + off, ret);
+		}
+	}
+
+	return ret;
+}
+
+static ssize_t error_state_write(struct file *file, struct kobject *kobj,
+				 struct bin_attribute *attr, char *buf,
+				 loff_t off, size_t count)
+{
+	struct device *kdev = kobj_to_dev(kobj);
+	struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
+
+	drm_dbg(&dev_priv->drm, "Resetting error state\n");
+	i915_reset_error_state(dev_priv);
+
+	return count;
+}
+
+static const struct bin_attribute error_state_attr = {
+	.attr.name = "error",
+	.attr.mode = S_IRUSR | S_IWUSR,
+	.size = 0,
+	.read = error_state_read,
+	.write = error_state_write,
+};
+
+void i915_gpu_error_sysfs_setup(struct drm_i915_private *i915)
+{
+	struct device *kdev = i915->drm.primary->kdev;
+
+	if (sysfs_create_bin_file(&kdev->kobj, &error_state_attr))
+		drm_err(&i915->drm, "error_state sysfs setup failed\n");
+}
+
+void i915_gpu_error_sysfs_teardown(struct drm_i915_private *i915)
+{
+	struct device *kdev = i915->drm.primary->kdev;
+
+	sysfs_remove_bin_file(&kdev->kobj, &error_state_attr);
+}
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.h b/drivers/gpu/drm/i915/i915_gpu_error.h
index a6f2a7518cf0..68c964d6720a 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.h
+++ b/drivers/gpu/drm/i915/i915_gpu_error.h
@@ -323,11 +323,12 @@ static inline void i915_gpu_coredump_put(struct i915_gpu_coredump *gpu)
 		kref_put(&gpu->ref, __i915_gpu_coredump_free);
 }
 
-struct i915_gpu_coredump *i915_first_error_state(struct drm_i915_private *i915);
 void i915_reset_error_state(struct drm_i915_private *i915);
 void i915_disable_error_state(struct drm_i915_private *i915, int err);
 
 void i915_gpu_error_debugfs_register(struct drm_i915_private *i915);
+void i915_gpu_error_sysfs_setup(struct drm_i915_private *i915);
+void i915_gpu_error_sysfs_teardown(struct drm_i915_private *i915);
 
 #else
 
@@ -396,12 +397,6 @@ static inline void i915_gpu_coredump_put(struct i915_gpu_coredump *gpu)
 {
 }
 
-static inline struct i915_gpu_coredump *
-i915_first_error_state(struct drm_i915_private *i915)
-{
-	return ERR_PTR(-ENODEV);
-}
-
 static inline void i915_reset_error_state(struct drm_i915_private *i915)
 {
 }
@@ -415,6 +410,14 @@ static inline void i915_gpu_error_debugfs_register(struct drm_i915_private *i915
 {
 }
 
+static inline void i915_gpu_error_sysfs_setup(struct drm_i915_private *i915)
+{
+}
+
+static inline void i915_gpu_error_sysfs_teardown(struct drm_i915_private *i915)
+{
+}
+
 #endif /* IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR) */
 
 #endif /* _I915_GPU_ERROR_H_ */
diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
index e88bb4f04305..613decd47760 100644
--- a/drivers/gpu/drm/i915/i915_sysfs.c
+++ b/drivers/gpu/drm/i915/i915_sysfs.c
@@ -155,81 +155,6 @@ static const struct bin_attribute dpf_attrs_1 = {
 	.private = (void *)1
 };
 
-#if IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR)
-
-static ssize_t error_state_read(struct file *filp, struct kobject *kobj,
-				struct bin_attribute *attr, char *buf,
-				loff_t off, size_t count)
-{
-
-	struct device *kdev = kobj_to_dev(kobj);
-	struct drm_i915_private *i915 = kdev_minor_to_i915(kdev);
-	struct i915_gpu_coredump *gpu;
-	ssize_t ret = 0;
-
-	/*
-	 * FIXME: Concurrent clients triggering resets and reading + clearing
-	 * dumps can cause inconsistent sysfs reads when a user calls in with a
-	 * non-zero offset to complete a prior partial read but the
-	 * gpu_coredump has been cleared or replaced.
-	 */
-
-	gpu = i915_first_error_state(i915);
-	if (IS_ERR(gpu)) {
-		ret = PTR_ERR(gpu);
-	} else if (gpu) {
-		ret = i915_gpu_coredump_copy_to_buffer(gpu, buf, off, count);
-		i915_gpu_coredump_put(gpu);
-	} else {
-		const char *str = "No error state collected\n";
-		size_t len = strlen(str);
-
-		if (off < len) {
-			ret = min_t(size_t, count, len - off);
-			memcpy(buf, str + off, ret);
-		}
-	}
-
-	return ret;
-}
-
-static ssize_t error_state_write(struct file *file, struct kobject *kobj,
-				 struct bin_attribute *attr, char *buf,
-				 loff_t off, size_t count)
-{
-	struct device *kdev = kobj_to_dev(kobj);
-	struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
-
-	drm_dbg(&dev_priv->drm, "Resetting error state\n");
-	i915_reset_error_state(dev_priv);
-
-	return count;
-}
-
-static const struct bin_attribute error_state_attr = {
-	.attr.name = "error",
-	.attr.mode = S_IRUSR | S_IWUSR,
-	.size = 0,
-	.read = error_state_read,
-	.write = error_state_write,
-};
-
-static void i915_setup_error_capture(struct device *kdev)
-{
-	if (sysfs_create_bin_file(&kdev->kobj, &error_state_attr))
-		drm_err(&kdev_minor_to_i915(kdev)->drm,
-			"error_state sysfs setup failed\n");
-}
-
-static void i915_teardown_error_capture(struct device *kdev)
-{
-	sysfs_remove_bin_file(&kdev->kobj, &error_state_attr);
-}
-#else
-static void i915_setup_error_capture(struct device *kdev) {}
-static void i915_teardown_error_capture(struct device *kdev) {}
-#endif
-
 void i915_setup_sysfs(struct drm_i915_private *dev_priv)
 {
 	struct device *kdev = dev_priv->drm.primary->kdev;
@@ -255,7 +180,7 @@ void i915_setup_sysfs(struct drm_i915_private *dev_priv)
 		drm_warn(&dev_priv->drm,
 			 "failed to register GT sysfs directory\n");
 
-	i915_setup_error_capture(kdev);
+	i915_gpu_error_sysfs_setup(dev_priv);
 
 	intel_engines_add_sysfs(dev_priv);
 }
@@ -264,7 +189,7 @@ void i915_teardown_sysfs(struct drm_i915_private *dev_priv)
 {
 	struct device *kdev = dev_priv->drm.primary->kdev;
 
-	i915_teardown_error_capture(kdev);
+	i915_gpu_error_sysfs_teardown(dev_priv);
 
 	device_remove_bin_file(kdev,  &dpf_attrs_1);
 	device_remove_bin_file(kdev,  &dpf_attrs);
-- 
2.39.2


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

* [Intel-gfx] [PATCH 08/15] drm/i915: convert i915_coredump_get/put() to proper functions
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
                   ` (6 preceding siblings ...)
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 07/15] drm/i915: move gpu error sysfs " Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc() Jani Nikula
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Also make i915_gpu_coredump_get() static, as it's not used outside of
i915_gpu_error.h.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_gpu_error.c | 14 +++++++++++++-
 drivers/gpu/drm/i915/i915_gpu_error.h | 14 +-------------
 2 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index 17699b20694c..9b1bb5aeec11 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -1060,7 +1060,7 @@ static void cleanup_gt(struct intel_gt_coredump *gt)
 	kfree(gt);
 }
 
-void __i915_gpu_coredump_free(struct kref *error_ref)
+static void i915_gpu_coredump_free(struct kref *error_ref)
 {
 	struct i915_gpu_coredump *error =
 		container_of(error_ref, typeof(*error), ref);
@@ -1080,6 +1080,18 @@ void __i915_gpu_coredump_free(struct kref *error_ref)
 	kfree(error);
 }
 
+static struct i915_gpu_coredump *i915_gpu_coredump_get(struct i915_gpu_coredump *gpu)
+{
+	kref_get(&gpu->ref);
+	return gpu;
+}
+
+void i915_gpu_coredump_put(struct i915_gpu_coredump *gpu)
+{
+	if (gpu)
+		kref_put(&gpu->ref, i915_gpu_coredump_free);
+}
+
 static struct i915_vma_coredump *
 i915_vma_coredump_create(const struct intel_gt *gt,
 			 const struct i915_vma_resource *vma_res,
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.h b/drivers/gpu/drm/i915/i915_gpu_error.h
index 68c964d6720a..f6f8d284a07d 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.h
+++ b/drivers/gpu/drm/i915/i915_gpu_error.h
@@ -305,23 +305,11 @@ void i915_vma_capture_finish(struct intel_gt_coredump *gt,
 
 void i915_error_state_store(struct i915_gpu_coredump *error);
 
-static inline struct i915_gpu_coredump *
-i915_gpu_coredump_get(struct i915_gpu_coredump *gpu)
-{
-	kref_get(&gpu->ref);
-	return gpu;
-}
-
 ssize_t
 i915_gpu_coredump_copy_to_buffer(struct i915_gpu_coredump *error,
 				 char *buf, loff_t offset, size_t count);
 
-void __i915_gpu_coredump_free(struct kref *kref);
-static inline void i915_gpu_coredump_put(struct i915_gpu_coredump *gpu)
-{
-	if (gpu)
-		kref_put(&gpu->ref, __i915_gpu_coredump_free);
-}
+void i915_gpu_coredump_put(struct i915_gpu_coredump *gpu);
 
 void i915_reset_error_state(struct drm_i915_private *i915);
 void i915_disable_error_state(struct drm_i915_private *i915, int err);
-- 
2.39.2


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

* [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc()
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
                   ` (7 preceding siblings ...)
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 08/15] drm/i915: convert i915_coredump_get/put() to proper functions Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-29  4:42     ` kernel test robot
                     ` (2 more replies)
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 10/15] drm/i915: move execlist capture to i915_gpu_error.c Jani Nikula
                   ` (7 subsequent siblings)
  16 siblings, 3 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Reduce gpu error interface further by doing more in
i915_gpu_coredump_alloc().

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 .../drm/i915/gt/intel_execlists_submission.c  | 16 +-------
 drivers/gpu/drm/i915/i915_gpu_error.c         | 38 +++++++++++++++++--
 drivers/gpu/drm/i915/i915_gpu_error.h         | 20 +---------
 3 files changed, 37 insertions(+), 37 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
index e8f42ec6b1b4..7c7e8c3a12e0 100644
--- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
+++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
@@ -2261,26 +2261,12 @@ static struct execlists_capture *capture_regs(struct intel_engine_cs *engine)
 	if (!cap)
 		return NULL;
 
-	cap->error = i915_gpu_coredump_alloc(engine->i915, gfp);
+	cap->error = i915_gpu_coredump_alloc(engine, gfp);
 	if (!cap->error)
 		goto err_cap;
 
-	cap->error->gt = intel_gt_coredump_alloc(engine->gt, gfp, CORE_DUMP_FLAG_NONE);
-	if (!cap->error->gt)
-		goto err_gpu;
-
-	cap->error->gt->engine = intel_engine_coredump_alloc(engine, gfp, CORE_DUMP_FLAG_NONE);
-	if (!cap->error->gt->engine)
-		goto err_gt;
-
-	cap->error->gt->engine->hung = true;
-
 	return cap;
 
-err_gt:
-	kfree(cap->error->gt);
-err_gpu:
-	kfree(cap->error);
 err_cap:
 	kfree(cap);
 	return NULL;
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index 9b1bb5aeec11..e4185f30f07c 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -63,6 +63,9 @@
 #define ALLOW_FAIL (__GFP_KSWAPD_RECLAIM | __GFP_RETRY_MAYFAIL | __GFP_NOWARN)
 #define ATOMIC_MAYFAIL (GFP_ATOMIC | __GFP_NOWARN)
 
+struct intel_gt_coredump *
+intel_gt_coredump_alloc(struct intel_gt *gt, gfp_t gfp, u32 dump_flags);
+
 static void __sg_set_buf(struct scatterlist *sg,
 			 void *addr, unsigned int len, loff_t it)
 {
@@ -2005,8 +2008,8 @@ static void capture_gen(struct i915_gpu_coredump *error)
 	error->driver_caps = i915->caps;
 }
 
-struct i915_gpu_coredump *
-i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp)
+static struct i915_gpu_coredump *
+__i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp)
 {
 	struct i915_gpu_coredump *error;
 
@@ -2030,6 +2033,35 @@ i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp)
 	return error;
 }
 
+struct i915_gpu_coredump *
+i915_gpu_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp)
+{
+	struct i915_gpu_coredump *error;
+
+	error = __i915_gpu_coredump_alloc(engine->i915, gfp);
+	if (!error)
+		return NULL;
+
+	error->gt = intel_gt_coredump_alloc(engine->gt, gfp, CORE_DUMP_FLAG_NONE);
+	if (!error->gt)
+		goto err_gpu;
+
+	error->gt->engine = intel_engine_coredump_alloc(engine, gfp, CORE_DUMP_FLAG_NONE);
+	if (!error->gt->engine)
+		goto err_gt;
+
+	error->gt->engine->hung = true;
+
+	return error;
+
+err_gt:
+	kfree(error->gt);
+err_gpu:
+	kfree(error);
+
+	return NULL;
+}
+
 #define DAY_AS_SECONDS(x) (24 * 60 * 60 * (x))
 
 struct intel_gt_coredump *
@@ -2102,7 +2134,7 @@ __i915_gpu_coredump(struct intel_gt *gt, intel_engine_mask_t engine_mask, u32 du
 	if (IS_ERR(error))
 		return error;
 
-	error = i915_gpu_coredump_alloc(i915, ALLOW_FAIL);
+	error = __i915_gpu_coredump_alloc(i915, ALLOW_FAIL);
 	if (!error)
 		return ERR_PTR(-ENOMEM);
 
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.h b/drivers/gpu/drm/i915/i915_gpu_error.h
index f6f8d284a07d..0439dde95344 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.h
+++ b/drivers/gpu/drm/i915/i915_gpu_error.h
@@ -280,13 +280,7 @@ void i915_capture_error_state(struct intel_gt *gt,
 			      intel_engine_mask_t engine_mask, u32 dump_flags);
 
 struct i915_gpu_coredump *
-i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp);
-
-struct intel_gt_coredump *
-intel_gt_coredump_alloc(struct intel_gt *gt, gfp_t gfp, u32 dump_flags);
-
-struct intel_engine_coredump *
-intel_engine_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp, u32 dump_flags);
+i915_gpu_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp);
 
 struct intel_engine_capture_vma *
 intel_engine_coredump_add_request(struct intel_engine_coredump *ee,
@@ -337,18 +331,6 @@ i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp)
 	return NULL;
 }
 
-static inline struct intel_gt_coredump *
-intel_gt_coredump_alloc(struct intel_gt *gt, gfp_t gfp, u32 dump_flags)
-{
-	return NULL;
-}
-
-static inline struct intel_engine_coredump *
-intel_engine_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp, u32 dump_flags)
-{
-	return NULL;
-}
-
 static inline struct intel_engine_capture_vma *
 intel_engine_coredump_add_request(struct intel_engine_coredump *ee,
 				  struct i915_request *rq,
-- 
2.39.2


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

* [Intel-gfx] [PATCH 10/15] drm/i915: move execlist capture to i915_gpu_error.c
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
                   ` (8 preceding siblings ...)
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc() Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 11/15] drm/i915/guc: don't look at gpu error guts in guc capture Jani Nikula
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Localize error capture details within i915_gpu_error.c so we can reduce
the interfaces.

FIXME: I don't know what the function should be called.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 .../drm/i915/gt/intel_execlists_submission.c  | 22 +-------
 drivers/gpu/drm/i915/i915_gpu_error.c         | 36 ++++++++++---
 drivers/gpu/drm/i915/i915_gpu_error.h         | 51 ++-----------------
 3 files changed, 36 insertions(+), 73 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
index 7c7e8c3a12e0..aea2fd75f227 100644
--- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
+++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
@@ -2222,31 +2222,13 @@ struct execlists_capture {
 static void execlists_capture_work(struct work_struct *work)
 {
 	struct execlists_capture *cap = container_of(work, typeof(*cap), work);
-	const gfp_t gfp = __GFP_KSWAPD_RECLAIM | __GFP_RETRY_MAYFAIL |
-		__GFP_NOWARN;
-	struct intel_engine_cs *engine = cap->rq->engine;
-	struct intel_gt_coredump *gt = cap->error->gt;
-	struct intel_engine_capture_vma *vma;
-
-	/* Compress all the objects attached to the request, slow! */
-	vma = intel_engine_coredump_add_request(gt->engine, cap->rq, gfp);
-	if (vma) {
-		struct i915_vma_compress *compress =
-			i915_vma_capture_prepare(gt);
-
-		intel_engine_coredump_add_vma(gt->engine, vma, compress);
-		i915_vma_capture_finish(gt, compress);
-	}
 
-	gt->simulated = gt->engine->simulated;
-	cap->error->simulated = gt->simulated;
+	i915_gpu_error_execlist_capture(cap->error, cap->rq);
 
-	/* Publish the error state, and announce it to the world */
-	i915_error_state_store(cap->error);
 	i915_gpu_coredump_put(cap->error);
 
 	/* Return this request and all that depend upon it for signaling */
-	execlists_unhold(engine, cap->rq);
+	execlists_unhold(cap->rq->engine, cap->rq);
 	i915_request_put(cap->rq);
 
 	kfree(cap);
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index e4185f30f07c..837542c94b00 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -1584,7 +1584,7 @@ engine_coredump_add_context(struct intel_engine_coredump *ee,
 	return vma;
 }
 
-struct intel_engine_capture_vma *
+static struct intel_engine_capture_vma *
 intel_engine_coredump_add_request(struct intel_engine_coredump *ee,
 				  struct i915_request *rq,
 				  gfp_t gfp)
@@ -1610,7 +1610,7 @@ intel_engine_coredump_add_request(struct intel_engine_coredump *ee,
 	return vma;
 }
 
-void
+static void
 intel_engine_coredump_add_vma(struct intel_engine_coredump *ee,
 			      struct intel_engine_capture_vma *capture,
 			      struct i915_vma_compress *compress)
@@ -2096,7 +2096,7 @@ intel_gt_coredump_alloc(struct intel_gt *gt, gfp_t gfp, u32 dump_flags)
 	return gc;
 }
 
-struct i915_vma_compress *
+static struct i915_vma_compress *
 i915_vma_capture_prepare(struct intel_gt_coredump *gt)
 {
 	struct i915_vma_compress *compress;
@@ -2113,8 +2113,8 @@ i915_vma_capture_prepare(struct intel_gt_coredump *gt)
 	return compress;
 }
 
-void i915_vma_capture_finish(struct intel_gt_coredump *gt,
-			     struct i915_vma_compress *compress)
+static void i915_vma_capture_finish(struct intel_gt_coredump *gt,
+				    struct i915_vma_compress *compress)
 {
 	if (!compress)
 		return;
@@ -2189,7 +2189,7 @@ i915_gpu_coredump(struct intel_gt *gt, intel_engine_mask_t engine_mask, u32 dump
 	return dump;
 }
 
-void i915_error_state_store(struct i915_gpu_coredump *error)
+static void i915_error_state_store(struct i915_gpu_coredump *error)
 {
 	struct drm_i915_private *i915;
 	static bool warned;
@@ -2244,6 +2244,30 @@ void i915_capture_error_state(struct intel_gt *gt,
 	i915_gpu_coredump_put(error);
 }
 
+void i915_gpu_error_execlist_capture(struct i915_gpu_coredump *error,
+				     struct i915_request *rq)
+{
+	struct intel_gt_coredump *gt = error->gt;
+	struct intel_engine_capture_vma *vma;
+	const gfp_t gfp = __GFP_KSWAPD_RECLAIM | __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
+
+	/* Compress all the objects attached to the request, slow! */
+	vma = intel_engine_coredump_add_request(gt->engine, rq, gfp);
+	if (vma) {
+		struct i915_vma_compress *compress =
+			i915_vma_capture_prepare(gt);
+
+		intel_engine_coredump_add_vma(gt->engine, vma, compress);
+		i915_vma_capture_finish(gt, compress);
+	}
+
+	gt->simulated = gt->engine->simulated;
+	error->simulated = gt->simulated;
+
+	/* Publish the error state, and announce it to the world */
+	i915_error_state_store(error);
+}
+
 static struct i915_gpu_coredump *
 i915_first_error_state(struct drm_i915_private *i915)
 {
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.h b/drivers/gpu/drm/i915/i915_gpu_error.h
index 0439dde95344..c2c15e29e266 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.h
+++ b/drivers/gpu/drm/i915/i915_gpu_error.h
@@ -27,8 +27,6 @@
 #include "i915_scheduler.h"
 
 struct drm_i915_private;
-struct i915_vma_compress;
-struct intel_engine_capture_vma;
 struct intel_overlay_error_state;
 
 struct i915_vma_coredump {
@@ -282,22 +280,8 @@ void i915_capture_error_state(struct intel_gt *gt,
 struct i915_gpu_coredump *
 i915_gpu_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp);
 
-struct intel_engine_capture_vma *
-intel_engine_coredump_add_request(struct intel_engine_coredump *ee,
-				  struct i915_request *rq,
-				  gfp_t gfp);
-
-void intel_engine_coredump_add_vma(struct intel_engine_coredump *ee,
-				   struct intel_engine_capture_vma *capture,
-				   struct i915_vma_compress *compress);
-
-struct i915_vma_compress *
-i915_vma_capture_prepare(struct intel_gt_coredump *gt);
-
-void i915_vma_capture_finish(struct intel_gt_coredump *gt,
-			     struct i915_vma_compress *compress);
-
-void i915_error_state_store(struct i915_gpu_coredump *error);
+void i915_gpu_error_execlist_capture(struct i915_gpu_coredump *error,
+				     struct i915_request *rq);
 
 ssize_t
 i915_gpu_coredump_copy_to_buffer(struct i915_gpu_coredump *error,
@@ -331,35 +315,8 @@ i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp)
 	return NULL;
 }
 
-static inline struct intel_engine_capture_vma *
-intel_engine_coredump_add_request(struct intel_engine_coredump *ee,
-				  struct i915_request *rq,
-				  gfp_t gfp)
-{
-	return NULL;
-}
-
-static inline void
-intel_engine_coredump_add_vma(struct intel_engine_coredump *ee,
-			      struct intel_engine_capture_vma *capture,
-			      struct i915_vma_compress *compress)
-{
-}
-
-static inline struct i915_vma_compress *
-i915_vma_capture_prepare(struct intel_gt_coredump *gt)
-{
-	return NULL;
-}
-
-static inline void
-i915_vma_capture_finish(struct intel_gt_coredump *gt,
-			struct i915_vma_compress *compress)
-{
-}
-
-static inline void
-i915_error_state_store(struct i915_gpu_coredump *error)
+static inline void i915_gpu_error_execlist_capture(struct i915_gpu_coredump *error,
+						   struct i915_request *rq)
 {
 }
 
-- 
2.39.2


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

* [Intel-gfx] [PATCH 11/15] drm/i915/guc: don't look at gpu error guts in guc capture
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
                   ` (9 preceding siblings ...)
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 10/15] drm/i915: move execlist capture to i915_gpu_error.c Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 12/15] drm/i915: hide gpu error structures inside i915_gpu_error.c Jani Nikula
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

The new interfaces aren't pretty, but it clarifies the separation
between intel_guc_capture.c and i915_gpu_error.c. The former should not
modify stuff internal to the latter.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 .../gpu/drm/i915/gt/uc/intel_guc_capture.c    | 63 ++++++++-----------
 .../gpu/drm/i915/gt/uc/intel_guc_capture.h    | 20 ++++--
 drivers/gpu/drm/i915/i915_gpu_error.c         | 24 +++++--
 3 files changed, 57 insertions(+), 50 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c
index 331cec07c125..cdbe7b5c997f 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c
@@ -1415,7 +1415,8 @@ guc_capture_reg_to_str(const struct intel_guc *guc, u32 owner, u32 type,
 	} while (0)
 
 int intel_guc_capture_print_engine_node(struct drm_i915_error_state_buf *ebuf,
-					const struct intel_engine_coredump *ee)
+					struct __guc_capture_parsed_output *node,
+					struct intel_guc *guc)
 {
 	const char *grptype[GUC_STATE_CAPTURE_GROUP_TYPE_MAX] = {
 		"full-capture",
@@ -1426,31 +1427,14 @@ int intel_guc_capture_print_engine_node(struct drm_i915_error_state_buf *ebuf,
 		"Engine-Class",
 		"Engine-Instance"
 	};
-	struct intel_guc_state_capture *cap;
-	struct __guc_capture_parsed_output *node;
 	struct intel_engine_cs *eng;
 	struct guc_mmio_reg *regs;
-	struct intel_guc *guc;
 	const char *str;
 	int numregs, i, j;
 	u32 is_ext;
 
-	if (!ebuf || !ee)
+	if (!ebuf)
 		return -EINVAL;
-	cap = ee->guc_capture;
-	if (!cap || !ee->engine)
-		return -ENODEV;
-
-	guc = &ee->engine->gt->uc.guc;
-
-	i915_error_printf(ebuf, "global --- GuC Error Capture on %s command stream:\n",
-			  ee->engine->name);
-
-	node = ee->guc_capture_node;
-	if (!node) {
-		i915_error_printf(ebuf, "  No matching ee-node\n");
-		return 0;
-	}
 
 	i915_error_printf(ebuf, "Coverage:  %s\n", grptype[node->is_partial]);
 
@@ -1502,7 +1486,8 @@ int intel_guc_capture_print_engine_node(struct drm_i915_error_state_buf *ebuf,
 
 #endif //CONFIG_DRM_I915_CAPTURE_ERROR
 
-static void guc_capture_find_ecode(struct intel_engine_coredump *ee)
+static void guc_capture_find_ecode(struct __guc_capture_parsed_output *guc_capture_node,
+				   u32 *ipehr, u32 *instdone)
 {
 	struct gcap_reg_list_info *reginfo;
 	struct guc_mmio_reg *regs;
@@ -1510,27 +1495,26 @@ static void guc_capture_find_ecode(struct intel_engine_coredump *ee)
 	i915_reg_t reg_instdone = RING_INSTDONE(0);
 	int i;
 
-	if (!ee->guc_capture_node)
+	if (!guc_capture_node)
 		return;
 
-	reginfo = ee->guc_capture_node->reginfo + GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE;
+	reginfo = guc_capture_node->reginfo + GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE;
 	regs = reginfo->regs;
 	for (i = 0; i < reginfo->num_regs; i++) {
 		if (regs[i].offset == reg_ipehr.reg)
-			ee->ipehr = regs[i].value;
+			*ipehr = regs[i].value;
 		else if (regs[i].offset == reg_instdone.reg)
-			ee->instdone.instdone = regs[i].value;
+			*instdone = regs[i].value;
 	}
 }
 
-void intel_guc_capture_free_node(struct intel_engine_coredump *ee)
+void intel_guc_capture_free_node(struct intel_guc_state_capture *guc_capture,
+				 struct __guc_capture_parsed_output *guc_capture_node)
 {
-	if (!ee || !ee->guc_capture_node)
+	if (!guc_capture_node)
 		return;
 
-	guc_capture_add_node_to_cachelist(ee->guc_capture, ee->guc_capture_node);
-	ee->guc_capture = NULL;
-	ee->guc_capture_node = NULL;
+	guc_capture_add_node_to_cachelist(guc_capture, guc_capture_node);
 }
 
 bool intel_guc_capture_is_matching_engine(struct intel_gt *gt,
@@ -1564,20 +1548,23 @@ bool intel_guc_capture_is_matching_engine(struct intel_gt *gt,
 }
 
 void intel_guc_capture_get_matching_node(struct intel_gt *gt,
-					 struct intel_engine_coredump *ee,
-					 struct intel_context *ce)
+					 struct intel_context *ce,
+					 unsigned int guc_id,
+					 struct intel_guc_state_capture **guc_capture,
+					 struct __guc_capture_parsed_output **guc_capture_node,
+					 u32 *ipehr, u32 *instdone)
 {
 	struct __guc_capture_parsed_output *n, *ntmp;
 	struct intel_guc *guc;
 
-	if (!gt || !ee || !ce)
+	if (!gt || !ce)
 		return;
 
 	guc = &gt->uc.guc;
 	if (!guc->capture)
 		return;
 
-	GEM_BUG_ON(ee->guc_capture_node);
+	GEM_BUG_ON(*guc_capture_node);
 
 	/*
 	 * Look for a matching GuC reported error capture node from
@@ -1585,14 +1572,14 @@ void intel_guc_capture_get_matching_node(struct intel_gt *gt,
 	 * identification.
 	 */
 	list_for_each_entry_safe(n, ntmp, &guc->capture->outlist, link) {
-		if (n->eng_inst == GUC_ID_TO_ENGINE_INSTANCE(ee->engine->guc_id) &&
-		    n->eng_class == GUC_ID_TO_ENGINE_CLASS(ee->engine->guc_id) &&
+		if (n->eng_inst == GUC_ID_TO_ENGINE_INSTANCE(guc_id) &&
+		    n->eng_class == GUC_ID_TO_ENGINE_CLASS(guc_id) &&
 		    n->guc_id == ce->guc_id.id &&
 		    (n->lrca & CTX_GTT_ADDRESS_MASK) == (ce->lrc.lrca & CTX_GTT_ADDRESS_MASK)) {
 			list_del(&n->link);
-			ee->guc_capture_node = n;
-			ee->guc_capture = guc->capture;
-			guc_capture_find_ecode(ee);
+			*guc_capture_node = n;
+			*guc_capture = guc->capture;
+			guc_capture_find_ecode(n, ipehr, instdone);
 			return;
 		}
 	}
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.h b/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.h
index 302256d45431..b5862a2672f3 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.h
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.h
@@ -8,19 +8,27 @@
 
 #include <linux/types.h>
 
+struct __guc_capture_parsed_output;
 struct drm_i915_error_state_buf;
 struct guc_gt_system_info;
+struct intel_context;
 struct intel_engine_coredump;
 struct intel_engine_cs;
-struct intel_context;
 struct intel_gt;
 struct intel_guc;
+struct intel_guc_state_capture;
 
-void intel_guc_capture_free_node(struct intel_engine_coredump *ee);
-int intel_guc_capture_print_engine_node(struct drm_i915_error_state_buf *m,
-					const struct intel_engine_coredump *ee);
-void intel_guc_capture_get_matching_node(struct intel_gt *gt, struct intel_engine_coredump *ee,
-					 struct intel_context *ce);
+void intel_guc_capture_free_node(struct intel_guc_state_capture *guc_capture,
+				 struct __guc_capture_parsed_output *guc_capture_node);
+int intel_guc_capture_print_engine_node(struct drm_i915_error_state_buf *ebuf,
+					struct __guc_capture_parsed_output *node,
+					struct intel_guc *guc);
+void intel_guc_capture_get_matching_node(struct intel_gt *gt,
+					 struct intel_context *ce,
+					 unsigned int guc_id,
+					 struct intel_guc_state_capture **guc_capture,
+					 struct __guc_capture_parsed_output **guc_capture_node,
+					 u32 *ipehr, u32 *instdone);
 bool intel_guc_capture_is_matching_engine(struct intel_gt *gt, struct intel_context *ce,
 					  struct intel_engine_cs *engine);
 void intel_guc_capture_process(struct intel_guc *guc);
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index 837542c94b00..e73b53b384a5 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -815,11 +815,16 @@ static void err_print_gt_engines(struct drm_i915_error_state_buf *m,
 		const struct i915_vma_coredump *vma;
 
 		if (gt->uc && gt->uc->guc.is_guc_capture) {
-			if (ee->guc_capture_node)
-				intel_guc_capture_print_engine_node(m, ee);
-			else
+			if (ee->guc_capture && ee->guc_capture_node && ee->engine) {
+				i915_error_printf(m, "global --- GuC Error Capture on %s command stream:\n",
+						  ee->engine->name);
+
+				intel_guc_capture_print_engine_node(m, ee->guc_capture_node,
+								    &ee->engine->gt->uc.guc);
+			} else {
 				err_printf(m, "  Missing GuC capture node for %s\n",
 					   ee->engine->name);
+			}
 		} else {
 			error_print_engine(m, ee);
 		}
@@ -1053,7 +1058,8 @@ static void cleanup_gt(struct intel_gt_coredump *gt)
 		gt->engine = ee->next;
 
 		i915_vma_coredump_free(ee->vma);
-		intel_guc_capture_free_node(ee);
+		intel_guc_capture_free_node(ee->guc_capture,
+					    ee->guc_capture_node);
 		kfree(ee);
 	}
 
@@ -1669,7 +1675,12 @@ capture_engine(struct intel_engine_cs *engine,
 		intel_engine_coredump_add_vma(ee, capture, compress);
 
 		if (dump_flags & CORE_DUMP_FLAG_IS_GUC_CAPTURE)
-			intel_guc_capture_get_matching_node(engine->gt, ee, ce);
+			intel_guc_capture_get_matching_node(engine->gt, ce,
+							    ee->engine->guc_id,
+							    &ee->guc_capture,
+							    &ee->guc_capture_node,
+							    &ee->ipehr,
+							    &ee->instdone.instdone);
 	} else {
 		kfree(ee);
 		ee = NULL;
@@ -1702,7 +1713,8 @@ gt_record_engines(struct intel_gt_coredump *gt,
 		gt->simulated |= ee->simulated;
 		if (ee->simulated) {
 			if (dump_flags & CORE_DUMP_FLAG_IS_GUC_CAPTURE)
-				intel_guc_capture_free_node(ee);
+				intel_guc_capture_free_node(ee->guc_capture,
+							    ee->guc_capture_node);
 			kfree(ee);
 			continue;
 		}
-- 
2.39.2


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

* [Intel-gfx] [PATCH 12/15] drm/i915: hide gpu error structures inside i915_gpu_error.c
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
                   ` (10 preceding siblings ...)
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 11/15] drm/i915/guc: don't look at gpu error guts in guc capture Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 13/15] drm/i915: stop including gt/intel_engine.h and gt/intel_gt_types.h from i915_drv.h Jani Nikula
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

With the interfaces cleaned up, we can move the error structs inside
i915_gpu_error.c, and drop a number of includes from the header.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_gpu_error.c | 201 +++++++++++++++++++++++
 drivers/gpu/drm/i915/i915_gpu_error.h | 222 +-------------------------
 2 files changed, 205 insertions(+), 218 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index e73b53b384a5..136c494b67e8 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -63,6 +63,207 @@
 #define ALLOW_FAIL (__GFP_KSWAPD_RECLAIM | __GFP_RETRY_MAYFAIL | __GFP_NOWARN)
 #define ATOMIC_MAYFAIL (GFP_ATOMIC | __GFP_NOWARN)
 
+struct i915_vma_coredump {
+	struct i915_vma_coredump *next;
+
+	char name[20];
+
+	u64 gtt_offset;
+	u64 gtt_size;
+	u32 gtt_page_sizes;
+
+	int unused;
+	struct list_head page_list;
+};
+
+struct i915_request_coredump {
+	unsigned long flags;
+	pid_t pid;
+	u32 context;
+	u32 seqno;
+	u32 head;
+	u32 tail;
+	struct i915_sched_attr sched_attr;
+};
+
+struct __guc_capture_parsed_output;
+
+struct intel_engine_coredump {
+	const struct intel_engine_cs *engine;
+
+	bool hung;
+	bool simulated;
+	u32 reset_count;
+
+	/* position of active request inside the ring */
+	u32 rq_head, rq_post, rq_tail;
+
+	/* Register state */
+	u32 ccid;
+	u32 start;
+	u32 tail;
+	u32 head;
+	u32 ctl;
+	u32 mode;
+	u32 hws;
+	u32 ipeir;
+	u32 ipehr;
+	u32 esr;
+	u32 bbstate;
+	u32 instpm;
+	u32 instps;
+	u64 bbaddr;
+	u64 acthd;
+	u32 fault_reg;
+	u64 faddr;
+	u32 rc_psmi; /* sleep state */
+	u32 nopid;
+	u32 excc;
+	u32 cmd_cctl;
+	u32 cscmdop;
+	u32 ctx_sr_ctl;
+	u32 dma_faddr_hi;
+	u32 dma_faddr_lo;
+	struct intel_instdone instdone;
+
+	/* GuC matched capture-lists info */
+	struct intel_guc_state_capture *guc_capture;
+	struct __guc_capture_parsed_output *guc_capture_node;
+
+	struct i915_gem_context_coredump {
+		char comm[TASK_COMM_LEN];
+
+		u64 total_runtime;
+		u64 avg_runtime;
+
+		pid_t pid;
+		int active;
+		int guilty;
+		struct i915_sched_attr sched_attr;
+		u32 hwsp_seqno;
+	} context;
+
+	struct i915_vma_coredump *vma;
+
+	struct i915_request_coredump execlist[EXECLIST_MAX_PORTS];
+	unsigned int num_ports;
+
+	struct {
+		u32 gfx_mode;
+		union {
+			u64 pdp[4];
+			u32 pp_dir_base;
+		};
+	} vm_info;
+
+	struct intel_engine_coredump *next;
+};
+
+struct intel_ctb_coredump {
+	u32 raw_head, head;
+	u32 raw_tail, tail;
+	u32 raw_status;
+	u32 desc_offset;
+	u32 cmds_offset;
+	u32 size;
+};
+
+struct intel_gt_coredump {
+	const struct intel_gt *_gt;
+	bool awake;
+	bool simulated;
+
+	struct intel_gt_info info;
+
+	/* Generic register state */
+	u32 eir;
+	u32 pgtbl_er;
+	u32 ier;
+	u32 gtier[6], ngtier;
+	u32 forcewake;
+	u32 error; /* gen6+ */
+	u32 err_int; /* gen7 */
+	u32 fault_data0; /* gen8, gen9 */
+	u32 fault_data1; /* gen8, gen9 */
+	u32 done_reg;
+	u32 gac_eco;
+	u32 gam_ecochk;
+	u32 gab_ctl;
+	u32 gfx_mode;
+	u32 gtt_cache;
+	u32 aux_err; /* gen12 */
+	u32 gam_done; /* gen12 */
+	u32 clock_frequency;
+	u32 clock_period_ns;
+
+	/* Display related */
+	u32 derrmr;
+	u32 sfc_done[I915_MAX_SFC]; /* gen12 */
+
+	u32 nfence;
+	u64 fence[I915_MAX_NUM_FENCES];
+
+	struct intel_engine_coredump *engine;
+
+	struct intel_uc_coredump {
+		struct intel_uc_fw guc_fw;
+		struct intel_uc_fw huc_fw;
+		struct guc_info {
+			struct intel_ctb_coredump ctb[2];
+			struct i915_vma_coredump *vma_ctb;
+			struct i915_vma_coredump *vma_log;
+			u32 timestamp;
+			u16 last_fence;
+			bool is_guc_capture;
+		} guc;
+	} *uc;
+
+	struct intel_gt_coredump *next;
+};
+
+struct i915_gpu_coredump {
+	struct kref ref;
+	ktime_t time;
+	ktime_t boottime;
+	ktime_t uptime;
+	unsigned long capture;
+
+	struct drm_i915_private *i915;
+
+	struct intel_gt_coredump *gt;
+
+	char error_msg[128];
+	bool simulated;
+	bool wakelock;
+	bool suspended;
+	int iommu;
+	u32 reset_count;
+	u32 suspend_count;
+
+	struct intel_device_info device_info;
+	struct intel_runtime_info runtime_info;
+	struct intel_display_device_info display_device_info;
+	struct intel_display_runtime_info display_runtime_info;
+	struct intel_driver_caps driver_caps;
+	struct i915_params params;
+
+	struct intel_overlay_error_state *overlay;
+
+	struct scatterlist *sgl, *fit;
+};
+
+struct drm_i915_error_state_buf {
+	struct drm_i915_private *i915;
+	struct scatterlist *sgl, *cur, *end;
+
+	char *buf;
+	size_t bytes;
+	size_t size;
+	loff_t iter;
+
+	int err;
+};
+
 struct intel_gt_coredump *
 intel_gt_coredump_alloc(struct intel_gt *gt, gfp_t gfp, u32 dump_flags);
 
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.h b/drivers/gpu/drm/i915/i915_gpu_error.h
index c2c15e29e266..5a2d0f506385 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.h
+++ b/drivers/gpu/drm/i915/i915_gpu_error.h
@@ -8,215 +8,13 @@
 #define _I915_GPU_ERROR_H_
 
 #include <linux/atomic.h>
-#include <linux/kref.h>
-#include <linux/ktime.h>
-#include <linux/sched.h>
+#include <linux/types.h>
 
-#include <drm/drm_mm.h>
-
-#include "display/intel_display_device.h"
-#include "gt/intel_engine.h"
-#include "gt/intel_gt_types.h"
-#include "gt/uc/intel_uc_fw.h"
-
-#include "intel_device_info.h"
-
-#include "i915_gem.h"
-#include "i915_gem_gtt.h"
-#include "i915_params.h"
-#include "i915_scheduler.h"
+#include "gt/intel_engine_types.h"
 
+struct drm_i915_error_state_buf;
 struct drm_i915_private;
-struct intel_overlay_error_state;
-
-struct i915_vma_coredump {
-	struct i915_vma_coredump *next;
-
-	char name[20];
-
-	u64 gtt_offset;
-	u64 gtt_size;
-	u32 gtt_page_sizes;
-
-	int unused;
-	struct list_head page_list;
-};
-
-struct i915_request_coredump {
-	unsigned long flags;
-	pid_t pid;
-	u32 context;
-	u32 seqno;
-	u32 head;
-	u32 tail;
-	struct i915_sched_attr sched_attr;
-};
-
-struct __guc_capture_parsed_output;
-
-struct intel_engine_coredump {
-	const struct intel_engine_cs *engine;
-
-	bool hung;
-	bool simulated;
-	u32 reset_count;
-
-	/* position of active request inside the ring */
-	u32 rq_head, rq_post, rq_tail;
-
-	/* Register state */
-	u32 ccid;
-	u32 start;
-	u32 tail;
-	u32 head;
-	u32 ctl;
-	u32 mode;
-	u32 hws;
-	u32 ipeir;
-	u32 ipehr;
-	u32 esr;
-	u32 bbstate;
-	u32 instpm;
-	u32 instps;
-	u64 bbaddr;
-	u64 acthd;
-	u32 fault_reg;
-	u64 faddr;
-	u32 rc_psmi; /* sleep state */
-	u32 nopid;
-	u32 excc;
-	u32 cmd_cctl;
-	u32 cscmdop;
-	u32 ctx_sr_ctl;
-	u32 dma_faddr_hi;
-	u32 dma_faddr_lo;
-	struct intel_instdone instdone;
-
-	/* GuC matched capture-lists info */
-	struct intel_guc_state_capture *guc_capture;
-	struct __guc_capture_parsed_output *guc_capture_node;
-
-	struct i915_gem_context_coredump {
-		char comm[TASK_COMM_LEN];
-
-		u64 total_runtime;
-		u64 avg_runtime;
-
-		pid_t pid;
-		int active;
-		int guilty;
-		struct i915_sched_attr sched_attr;
-		u32 hwsp_seqno;
-	} context;
-
-	struct i915_vma_coredump *vma;
-
-	struct i915_request_coredump execlist[EXECLIST_MAX_PORTS];
-	unsigned int num_ports;
-
-	struct {
-		u32 gfx_mode;
-		union {
-			u64 pdp[4];
-			u32 pp_dir_base;
-		};
-	} vm_info;
-
-	struct intel_engine_coredump *next;
-};
-
-struct intel_ctb_coredump {
-	u32 raw_head, head;
-	u32 raw_tail, tail;
-	u32 raw_status;
-	u32 desc_offset;
-	u32 cmds_offset;
-	u32 size;
-};
-
-struct intel_gt_coredump {
-	const struct intel_gt *_gt;
-	bool awake;
-	bool simulated;
-
-	struct intel_gt_info info;
-
-	/* Generic register state */
-	u32 eir;
-	u32 pgtbl_er;
-	u32 ier;
-	u32 gtier[6], ngtier;
-	u32 forcewake;
-	u32 error; /* gen6+ */
-	u32 err_int; /* gen7 */
-	u32 fault_data0; /* gen8, gen9 */
-	u32 fault_data1; /* gen8, gen9 */
-	u32 done_reg;
-	u32 gac_eco;
-	u32 gam_ecochk;
-	u32 gab_ctl;
-	u32 gfx_mode;
-	u32 gtt_cache;
-	u32 aux_err; /* gen12 */
-	u32 gam_done; /* gen12 */
-	u32 clock_frequency;
-	u32 clock_period_ns;
-
-	/* Display related */
-	u32 derrmr;
-	u32 sfc_done[I915_MAX_SFC]; /* gen12 */
-
-	u32 nfence;
-	u64 fence[I915_MAX_NUM_FENCES];
-
-	struct intel_engine_coredump *engine;
-
-	struct intel_uc_coredump {
-		struct intel_uc_fw guc_fw;
-		struct intel_uc_fw huc_fw;
-		struct guc_info {
-			struct intel_ctb_coredump ctb[2];
-			struct i915_vma_coredump *vma_ctb;
-			struct i915_vma_coredump *vma_log;
-			u32 timestamp;
-			u16 last_fence;
-			bool is_guc_capture;
-		} guc;
-	} *uc;
-
-	struct intel_gt_coredump *next;
-};
-
-struct i915_gpu_coredump {
-	struct kref ref;
-	ktime_t time;
-	ktime_t boottime;
-	ktime_t uptime;
-	unsigned long capture;
-
-	struct drm_i915_private *i915;
-
-	struct intel_gt_coredump *gt;
-
-	char error_msg[128];
-	bool simulated;
-	bool wakelock;
-	bool suspended;
-	int iommu;
-	u32 reset_count;
-	u32 suspend_count;
-
-	struct intel_device_info device_info;
-	struct intel_runtime_info runtime_info;
-	struct intel_display_device_info display_device_info;
-	struct intel_display_runtime_info display_runtime_info;
-	struct intel_driver_caps driver_caps;
-	struct i915_params params;
-
-	struct intel_overlay_error_state *overlay;
-
-	struct scatterlist *sgl, *fit;
-};
+struct i915_gpu_coredump;
 
 struct i915_gpu_error {
 	/* For reset and error_state handling. */
@@ -233,18 +31,6 @@ struct i915_gpu_error {
 	atomic_t reset_engine_count[I915_NUM_ENGINES];
 };
 
-struct drm_i915_error_state_buf {
-	struct drm_i915_private *i915;
-	struct scatterlist *sgl, *cur, *end;
-
-	char *buf;
-	size_t bytes;
-	size_t size;
-	loff_t iter;
-
-	int err;
-};
-
 static inline u32 i915_reset_count(struct i915_gpu_error *error)
 {
 	return atomic_read(&error->reset_count);
-- 
2.39.2


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

* [Intel-gfx] [PATCH 13/15] drm/i915: stop including gt/intel_engine.h and gt/intel_gt_types.h from i915_drv.h
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
                   ` (11 preceding siblings ...)
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 12/15] drm/i915: hide gpu error structures inside i915_gpu_error.c Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 14/15] drm/i915: stop including gt/uc/intel_uc.h " Jani Nikula
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

i915_drv.h no longer needs the headers, and they are not included
indirectly either. Removing them reveals a ton of places that implicitly
depend on the includes. Make them explicit.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display_reset.c       | 1 +
 drivers/gpu/drm/i915/display/intel_display_rps.c         | 1 +
 drivers/gpu/drm/i915/display/intel_fbdev.c               | 1 +
 drivers/gpu/drm/i915/display/intel_plane_initial.c       | 1 +
 drivers/gpu/drm/i915/gem/i915_gem_tiling.c               | 1 +
 drivers/gpu/drm/i915/gem/i915_gem_userptr.c              | 1 +
 drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c             | 3 ++-
 drivers/gpu/drm/i915/gt/intel_gt_requests.c              | 1 +
 drivers/gpu/drm/i915/gt/intel_rps.c                      | 1 +
 drivers/gpu/drm/i915/gt/intel_sseu.c                     | 1 +
 drivers/gpu/drm/i915/gt/intel_sseu_debugfs.c             | 2 +-
 drivers/gpu/drm/i915/gt/intel_wopcm.c                    | 3 ++-
 drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c                | 5 +++--
 drivers/gpu/drm/i915/gvt/execlist.c                      | 3 ++-
 drivers/gpu/drm/i915/gvt/gvt.h                           | 1 +
 drivers/gpu/drm/i915/i915_drv.h                          | 2 --
 drivers/gpu/drm/i915/i915_getparam.c                     | 1 +
 drivers/gpu/drm/i915/i915_mm.c                           | 4 ++--
 drivers/gpu/drm/i915/i915_pci.c                          | 3 ++-
 drivers/gpu/drm/i915/i915_query.c                        | 6 ++++--
 drivers/gpu/drm/i915/intel_gvt_mmio_table.c              | 1 +
 drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.c             | 1 +
 drivers/gpu/drm/i915/pxp/intel_pxp_pm.c                  | 1 +
 drivers/gpu/drm/i915/pxp/intel_pxp_session.c             | 3 ++-
 drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c | 2 +-
 25 files changed, 35 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_reset.c b/drivers/gpu/drm/i915/display/intel_display_reset.c
index 17178d5d7788..107f0d398df6 100644
--- a/drivers/gpu/drm/i915/display/intel_display_reset.c
+++ b/drivers/gpu/drm/i915/display/intel_display_reset.c
@@ -5,6 +5,7 @@
 
 #include <drm/drm_atomic_helper.h>
 
+#include "gt/intel_gt_types.h"
 #include "i915_drv.h"
 #include "intel_clock_gating.h"
 #include "intel_display_driver.h"
diff --git a/drivers/gpu/drm/i915/display/intel_display_rps.c b/drivers/gpu/drm/i915/display/intel_display_rps.c
index 918d0327169a..92b19adf0939 100644
--- a/drivers/gpu/drm/i915/display/intel_display_rps.c
+++ b/drivers/gpu/drm/i915/display/intel_display_rps.c
@@ -6,6 +6,7 @@
 #include <drm/drm_crtc.h>
 #include <drm/drm_vblank.h>
 
+#include "gt/intel_gt_types.h"
 #include "gt/intel_rps.h"
 #include "i915_drv.h"
 #include "intel_display_rps.h"
diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c
index 31d0d695d567..b246ff2afc7a 100644
--- a/drivers/gpu/drm/i915/display/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
@@ -45,6 +45,7 @@
 
 #include "gem/i915_gem_lmem.h"
 #include "gem/i915_gem_mman.h"
+#include "gt/intel_gt_types.h"
 
 #include "i915_drv.h"
 #include "intel_display_types.h"
diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.c b/drivers/gpu/drm/i915/display/intel_plane_initial.c
index 451a642e106e..83a355cb4218 100644
--- a/drivers/gpu/drm/i915/display/intel_plane_initial.c
+++ b/drivers/gpu/drm/i915/display/intel_plane_initial.c
@@ -4,6 +4,7 @@
  */
 
 #include "gem/i915_gem_region.h"
+#include "gt/intel_gt_types.h"
 #include "i915_drv.h"
 #include "intel_atomic_plane.h"
 #include "intel_display.h"
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_tiling.c b/drivers/gpu/drm/i915/gem/i915_gem_tiling.c
index a049ca0b7980..5ca651623d83 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_tiling.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_tiling.c
@@ -7,6 +7,7 @@
 #include <linux/string.h>
 #include <linux/bitops.h>
 
+#include "gt/intel_gt_types.h"
 #include "i915_drv.h"
 #include "i915_gem.h"
 #include "i915_gem_ioctls.h"
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
index 1d3ebdf4069b..69bff60e44ee 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
@@ -39,6 +39,7 @@
 #include <linux/swap.h>
 #include <linux/sched/mm.h>
 
+#include "gt/intel_gt_types.h"
 #include "i915_drv.h"
 #include "i915_gem_ioctls.h"
 #include "i915_gem_object.h"
diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
index 40371b8a9bbb..8c036baaea3c 100644
--- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
+++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
@@ -7,11 +7,12 @@
 
 #include "display/intel_display.h"
 #include "i915_drv.h"
+#include "i915_pvinfo.h"
 #include "i915_reg.h"
 #include "i915_scatterlist.h"
-#include "i915_pvinfo.h"
 #include "i915_vgpu.h"
 #include "intel_gt_regs.h"
+#include "intel_gt_types.h"
 #include "intel_mchbar_regs.h"
 
 /**
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.c b/drivers/gpu/drm/i915/gt/intel_gt_requests.c
index d1a382dfaa1d..c681a7a04315 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_requests.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.c
@@ -7,6 +7,7 @@
 
 #include "i915_drv.h" /* for_each_engine() */
 #include "i915_request.h"
+#include "intel_engine.h"
 #include "intel_engine_heartbeat.h"
 #include "intel_execlists_submission.h"
 #include "intel_gt.h"
diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
index 4feef874e6d6..b53118495cb6 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps.c
+++ b/drivers/gpu/drm/i915/gt/intel_rps.c
@@ -13,6 +13,7 @@
 #include "i915_irq.h"
 #include "i915_reg.h"
 #include "intel_breadcrumbs.h"
+#include "intel_engine.h"
 #include "intel_gt.h"
 #include "intel_gt_clock_utils.h"
 #include "intel_gt_irq.h"
diff --git a/drivers/gpu/drm/i915/gt/intel_sseu.c b/drivers/gpu/drm/i915/gt/intel_sseu.c
index f602895f6d0d..13a2749cfb45 100644
--- a/drivers/gpu/drm/i915/gt/intel_sseu.c
+++ b/drivers/gpu/drm/i915/gt/intel_sseu.c
@@ -9,6 +9,7 @@
 #include "i915_perf_types.h"
 #include "intel_engine_regs.h"
 #include "intel_gt_regs.h"
+#include "intel_gt_types.h"
 #include "intel_sseu.h"
 
 void intel_sseu_set_info(struct sseu_dev_info *sseu, u8 max_slices,
diff --git a/drivers/gpu/drm/i915/gt/intel_sseu_debugfs.c b/drivers/gpu/drm/i915/gt/intel_sseu_debugfs.c
index c2ee5e1826b5..8b54bad0f5ae 100644
--- a/drivers/gpu/drm/i915/gt/intel_sseu_debugfs.c
+++ b/drivers/gpu/drm/i915/gt/intel_sseu_debugfs.c
@@ -1,5 +1,4 @@
 // SPDX-License-Identifier: MIT
-
 /*
  * Copyright © 2020 Intel Corporation
  */
@@ -10,6 +9,7 @@
 #include "i915_drv.h"
 #include "intel_gt_debugfs.h"
 #include "intel_gt_regs.h"
+#include "intel_gt_types.h"
 #include "intel_sseu_debugfs.h"
 
 static void cherryview_sseu_device_status(struct intel_gt *gt,
diff --git a/drivers/gpu/drm/i915/gt/intel_wopcm.c b/drivers/gpu/drm/i915/gt/intel_wopcm.c
index 7ebbcc191c2d..fcad35df0671 100644
--- a/drivers/gpu/drm/i915/gt/intel_wopcm.c
+++ b/drivers/gpu/drm/i915/gt/intel_wopcm.c
@@ -3,8 +3,9 @@
  * Copyright © 2017-2019 Intel Corporation
  */
 
-#include "intel_wopcm.h"
 #include "i915_drv.h"
+#include "intel_gt_types.h"
+#include "intel_wopcm.h"
 
 /**
  * DOC: WOPCM Layout
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c b/drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c
index 0d3b22a74365..cf0ef467542d 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c
@@ -5,13 +5,14 @@
 
 #include <linux/types.h>
 
+#include "gt/intel_engine.h"
 #include "gt/intel_gt.h"
 #include "gt/intel_gt_print.h"
+#include "i915_drv.h"
+#include "i915_reg.h"
 #include "intel_gsc_fw.h"
 #include "intel_gsc_proxy.h"
 #include "intel_gsc_uc.h"
-#include "i915_drv.h"
-#include "i915_reg.h"
 
 static void gsc_work(struct work_struct *work)
 {
diff --git a/drivers/gpu/drm/i915/gvt/execlist.c b/drivers/gpu/drm/i915/gvt/execlist.c
index 274c6ef42400..ad392c4f4e2a 100644
--- a/drivers/gpu/drm/i915/gvt/execlist.c
+++ b/drivers/gpu/drm/i915/gvt/execlist.c
@@ -32,8 +32,9 @@
  *
  */
 
-#include "i915_drv.h"
+#include "gt/intel_engine.h"
 #include "gvt.h"
+#include "i915_drv.h"
 
 #define _EL_OFFSET_STATUS       0x234
 #define _EL_OFFSET_STATUS_BUF   0x370
diff --git a/drivers/gpu/drm/i915/gvt/gvt.h b/drivers/gpu/drm/i915/gvt/gvt.h
index 53a0a42a50db..489f868736e0 100644
--- a/drivers/gpu/drm/i915/gvt/gvt.h
+++ b/drivers/gpu/drm/i915/gvt/gvt.h
@@ -39,6 +39,7 @@
 
 #include <asm/kvm_page_track.h>
 
+#include "gt/intel_gt_types.h"
 #include "i915_drv.h"
 #include "intel_gvt.h"
 
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index d04a9c32c44f..cd4d55f5f8de 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -43,8 +43,6 @@
 #include "gem/i915_gem_shrinker.h"
 #include "gem/i915_gem_stolen.h"
 
-#include "gt/intel_engine.h"
-#include "gt/intel_gt_types.h"
 #include "gt/intel_region_lmem.h"
 #include "gt/intel_workarounds.h"
 #include "gt/uc/intel_uc.h"
diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c
index 5c3fec63cb4c..a1944382377a 100644
--- a/drivers/gpu/drm/i915/i915_getparam.c
+++ b/drivers/gpu/drm/i915/i915_getparam.c
@@ -4,6 +4,7 @@
 
 #include "gem/i915_gem_mman.h"
 #include "gt/intel_engine_user.h"
+#include "gt/intel_gt_types.h"
 
 #include "pxp/intel_pxp.h"
 
diff --git a/drivers/gpu/drm/i915/i915_mm.c b/drivers/gpu/drm/i915/i915_mm.c
index 7998bc74ab49..e2f4ec1c29c7 100644
--- a/drivers/gpu/drm/i915/i915_mm.c
+++ b/drivers/gpu/drm/i915/i915_mm.c
@@ -22,9 +22,9 @@
  *
  */
 
-#include <linux/mm.h>
+#include <asm/cacheflush.h>
 #include <linux/io-mapping.h>
-
+#include <linux/mm.h>
 
 #include "i915_drv.h"
 #include "i915_mm.h"
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index df7c261410f7..4dc638e8b887 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -28,9 +28,10 @@
 
 #include "display/intel_display.h"
 #include "display/intel_display_driver.h"
+#include "gem/i915_gem_object_types.h"
 #include "gt/intel_gt_regs.h"
+#include "gt/intel_gt_types.h"
 #include "gt/intel_sa_media.h"
-#include "gem/i915_gem_object_types.h"
 
 #include "i915_driver.h"
 #include "i915_drv.h"
diff --git a/drivers/gpu/drm/i915/i915_query.c b/drivers/gpu/drm/i915/i915_query.c
index 00871ef99792..84ebfe94456a 100644
--- a/drivers/gpu/drm/i915/i915_query.c
+++ b/drivers/gpu/drm/i915/i915_query.c
@@ -6,11 +6,13 @@
 
 #include <linux/nospec.h>
 
+#include <uapi/drm/i915_drm.h>
+
+#include "gt/intel_engine_user.h"
+#include "gt/intel_gt_types.h"
 #include "i915_drv.h"
 #include "i915_perf.h"
 #include "i915_query.h"
-#include "gt/intel_engine_user.h"
-#include <uapi/drm/i915_drm.h>
 
 static int copy_query_item(void *query_hdr, size_t query_sz,
 			   u32 total_length,
diff --git a/drivers/gpu/drm/i915/intel_gvt_mmio_table.c b/drivers/gpu/drm/i915/intel_gvt_mmio_table.c
index b3c036a54529..0e3d9a9ec4d4 100644
--- a/drivers/gpu/drm/i915/intel_gvt_mmio_table.c
+++ b/drivers/gpu/drm/i915/intel_gvt_mmio_table.c
@@ -16,6 +16,7 @@
 #include "display/skl_watermark_regs.h"
 #include "display/vlv_dsi_pll_regs.h"
 #include "gt/intel_gt_regs.h"
+#include "gt/intel_gt_types.h"
 #include "gvt/gvt.h"
 
 #include "i915_drv.h"
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.c b/drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.c
index e07c5b380789..c8e5b22eccff 100644
--- a/drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.c
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.c
@@ -9,6 +9,7 @@
 #include <drm/drm_print.h>
 
 #include "gt/intel_gt_debugfs.h"
+#include "gt/intel_gt_types.h"
 
 #include "i915_drv.h"
 
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_pm.c b/drivers/gpu/drm/i915/pxp/intel_pxp_pm.c
index 6dfd24918953..7acdecc758c0 100644
--- a/drivers/gpu/drm/i915/pxp/intel_pxp_pm.c
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp_pm.c
@@ -3,6 +3,7 @@
  * Copyright(c) 2020 Intel Corporation.
  */
 
+#include "gt/intel_gt_types.h"
 #include "i915_drv.h"
 
 #include "intel_pxp.h"
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_session.c b/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
index 0a3e66b0265e..eccb5fbe2557 100644
--- a/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp_session.c
@@ -3,15 +3,16 @@
  * Copyright(c) 2020, Intel Corporation. All rights reserved.
  */
 
+#include "gt/intel_gt_types.h"
 #include "i915_drv.h"
 
 #include "intel_pxp.h"
 #include "intel_pxp_cmd.h"
 #include "intel_pxp_gsccs.h"
+#include "intel_pxp_regs.h"
 #include "intel_pxp_session.h"
 #include "intel_pxp_tee.h"
 #include "intel_pxp_types.h"
-#include "intel_pxp_regs.h"
 
 #define ARB_SESSION I915_PROTECTED_CONTENT_DEFAULT_SESSION /* shorter define */
 
diff --git a/drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c b/drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c
index 2990dd4d4a0d..be9086da29fc 100644
--- a/drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c
+++ b/drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c
@@ -3,7 +3,7 @@
  * Copyright © 2021 Intel Corporation
  */
 
-//#include "gt/intel_engine_user.h"
+#include "gt/intel_engine.h"
 #include "gt/intel_gt.h"
 #include "i915_drv.h"
 #include "i915_selftest.h"
-- 
2.39.2


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

* [Intel-gfx] [PATCH 14/15] drm/i915: stop including gt/uc/intel_uc.h from i915_drv.h
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
                   ` (12 preceding siblings ...)
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 13/15] drm/i915: stop including gt/intel_engine.h and gt/intel_gt_types.h from i915_drv.h Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 15/15] drm/i915: stop including gt/intel_workarounds.h " Jani Nikula
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Turns out it's not needed, except implicitly in a handful of
places. Make them explicit.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/gem/i915_gem_lmem.c   | 5 +++--
 drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.c | 1 +
 drivers/gpu/drm/i915/gt/gen7_renderclear.c | 1 +
 drivers/gpu/drm/i915/i915_drv.h            | 1 -
 drivers/gpu/drm/i915/i915_sysfs.c          | 2 ++
 drivers/gpu/drm/i915/i915_utils.h          | 1 +
 drivers/gpu/drm/i915/i915_vgpu.c           | 2 ++
 drivers/gpu/drm/i915/intel_region_ttm.c    | 2 ++
 8 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_lmem.c b/drivers/gpu/drm/i915/gem/i915_gem_lmem.c
index 3198b64ad7db..a12047897650 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_lmem.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_lmem.c
@@ -5,10 +5,11 @@
 
 #include <uapi/drm/i915_drm.h>
 
-#include "intel_memory_region.h"
-#include "gem/i915_gem_region.h"
 #include "gem/i915_gem_lmem.h"
+#include "gem/i915_gem_object.h"
+#include "gem/i915_gem_region.h"
 #include "i915_drv.h"
+#include "intel_memory_region.h"
 
 void __iomem *
 i915_gem_object_lmem_io_map(struct drm_i915_gem_object *obj,
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.c
index ad649523d5e0..b9f02de8c1bb 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.c
@@ -10,6 +10,7 @@
 #include "intel_memory_region.h"
 #include "intel_region_ttm.h"
 
+#include "gem/i915_gem_object.h"
 #include "gem/i915_gem_region.h"
 #include "gem/i915_gem_ttm.h"
 #include "gem/i915_gem_ttm_move.h"
diff --git a/drivers/gpu/drm/i915/gt/gen7_renderclear.c b/drivers/gpu/drm/i915/gt/gen7_renderclear.c
index d38b914d1206..0724ce39744a 100644
--- a/drivers/gpu/drm/i915/gt/gen7_renderclear.c
+++ b/drivers/gpu/drm/i915/gt/gen7_renderclear.c
@@ -5,6 +5,7 @@
 
 #include "gen7_renderclear.h"
 #include "i915_drv.h"
+#include "i915_vma.h"
 #include "intel_gpu_commands.h"
 #include "intel_gt_regs.h"
 
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index cd4d55f5f8de..fb7139514e18 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -45,7 +45,6 @@
 
 #include "gt/intel_region_lmem.h"
 #include "gt/intel_workarounds.h"
-#include "gt/uc/intel_uc.h"
 
 #include "soc/intel_pch.h"
 
diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
index 613decd47760..6226ce924562 100644
--- a/drivers/gpu/drm/i915/i915_sysfs.c
+++ b/drivers/gpu/drm/i915/i915_sysfs.c
@@ -30,6 +30,8 @@
 #include <linux/stat.h>
 #include <linux/sysfs.h>
 
+#include <drm/drm_file.h>
+
 #include "gt/intel_gt_regs.h"
 #include "gt/intel_rc6.h"
 #include "gt/intel_rps.h"
diff --git a/drivers/gpu/drm/i915/i915_utils.h b/drivers/gpu/drm/i915/i915_utils.h
index c61066498bf2..039b0a849c81 100644
--- a/drivers/gpu/drm/i915/i915_utils.h
+++ b/drivers/gpu/drm/i915/i915_utils.h
@@ -26,6 +26,7 @@
 #define __I915_UTILS_H
 
 #include <linux/list.h>
+#include <linux/delay.h>
 #include <linux/overflow.h>
 #include <linux/sched.h>
 #include <linux/string_helpers.h>
diff --git a/drivers/gpu/drm/i915/i915_vgpu.c b/drivers/gpu/drm/i915/i915_vgpu.c
index c97323973f9b..91f07b778eda 100644
--- a/drivers/gpu/drm/i915/i915_vgpu.c
+++ b/drivers/gpu/drm/i915/i915_vgpu.c
@@ -21,7 +21,9 @@
  * SOFTWARE.
  */
 
+#include "gt/intel_gtt.h"
 #include "i915_drv.h"
+#include "i915_gem_gtt.h"
 #include "i915_pvinfo.h"
 #include "i915_vgpu.h"
 
diff --git a/drivers/gpu/drm/i915/intel_region_ttm.c b/drivers/gpu/drm/i915/intel_region_ttm.c
index bf6097e7433d..d1fbd476a435 100644
--- a/drivers/gpu/drm/i915/intel_region_ttm.c
+++ b/drivers/gpu/drm/i915/intel_region_ttm.c
@@ -11,8 +11,10 @@
 
 #include "intel_region_ttm.h"
 
+#include "gem/i915_gem_object.h"
 #include "gem/i915_gem_region.h"
 #include "gem/i915_gem_ttm.h" /* For the funcs/ops export only */
+
 /**
  * DOC: TTM support structure
  *
-- 
2.39.2


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

* [Intel-gfx] [PATCH 15/15] drm/i915: stop including gt/intel_workarounds.h from i915_drv.h
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
                   ` (13 preceding siblings ...)
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 14/15] drm/i915: stop including gt/uc/intel_uc.h " Jani Nikula
@ 2023-09-28 18:08 ` Jani Nikula
  2023-09-28 19:05 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915: i915_drv.h and i915_gpu_error.h include diet Patchwork
  2023-09-29 14:41 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915: i915_drv.h and i915_gpu_error.h include diet (rev2) Patchwork
  16 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2023-09-28 18:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Not needed, and not included implicitly either.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index fb7139514e18..76b2019dc44e 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -44,7 +44,6 @@
 #include "gem/i915_gem_stolen.h"
 
 #include "gt/intel_region_lmem.h"
-#include "gt/intel_workarounds.h"
 
 #include "soc/intel_pch.h"
 
-- 
2.39.2


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

* [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915: i915_drv.h and i915_gpu_error.h include diet
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
                   ` (14 preceding siblings ...)
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 15/15] drm/i915: stop including gt/intel_workarounds.h " Jani Nikula
@ 2023-09-28 19:05 ` Patchwork
  2023-09-29 14:41 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915: i915_drv.h and i915_gpu_error.h include diet (rev2) Patchwork
  16 siblings, 0 replies; 24+ messages in thread
From: Patchwork @ 2023-09-28 19:05 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: i915_drv.h and i915_gpu_error.h include diet
URL   : https://patchwork.freedesktop.org/series/124418/
State : failure

== Summary ==

Error: make failed
  CALL    scripts/checksyscalls.sh
  DESCEND objtool
  INSTALL libsubcmd_headers
  CC [M]  drivers/gpu/drm/i915/i915_gpu_error.o
drivers/gpu/drm/i915/i915_gpu_error.c:1754:1: error: no previous prototype for ‘intel_engine_coredump_alloc’ [-Werror=missing-prototypes]
 1754 | intel_engine_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp, u32 dump_flags)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[6]: *** [scripts/Makefile.build:243: drivers/gpu/drm/i915/i915_gpu_error.o] Error 1
make[5]: *** [scripts/Makefile.build:480: drivers/gpu/drm/i915] Error 2
make[4]: *** [scripts/Makefile.build:480: drivers/gpu/drm] Error 2
make[3]: *** [scripts/Makefile.build:480: drivers/gpu] Error 2
make[2]: *** [scripts/Makefile.build:480: drivers] Error 2
make[1]: *** [/home/kbuild2/kernel/Makefile:1913: .] Error 2
make: *** [Makefile:234: __sub-make] Error 2
Build failed, no error log produced



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

* Re: [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc()
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc() Jani Nikula
@ 2023-09-29  4:42     ` kernel test robot
  2023-09-29  6:18     ` kernel test robot
  2023-09-29  7:46   ` [Intel-gfx] [PATCH v2] " Jani Nikula
  2 siblings, 0 replies; 24+ messages in thread
From: kernel test robot @ 2023-09-29  4:42 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx; +Cc: oe-kbuild-all, jani.nikula

Hi Jani,

kernel test robot noticed the following build errors:

[auto build test ERROR on drm-tip/drm-tip]

url:    https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-i915-stop-including-i915_utils-h-from-intel_runtime_pm-h/20230929-021205
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
patch link:    https://lore.kernel.org/r/d5f8aab89835a70c0af741e7f5765fc2c4875bf7.1695924021.git.jani.nikula%40intel.com
patch subject: [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc()
config: i386-buildonly-randconfig-005-20230929 (https://download.01.org/0day-ci/archive/20230929/202309291218.f8Nhsloo-lkp@intel.com/config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230929/202309291218.f8Nhsloo-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309291218.f8Nhsloo-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/gpu/drm/i915/gt/intel_execlists_submission.c: In function 'capture_regs':
>> drivers/gpu/drm/i915/gt/intel_execlists_submission.c:2264:39: error: passing argument 1 of 'i915_gpu_coredump_alloc' from incompatible pointer type [-Werror=incompatible-pointer-types]
     cap->error = i915_gpu_coredump_alloc(engine, gfp);
                                          ^~~~~~
   In file included from drivers/gpu/drm/i915/i915_drv.h:56:0,
                    from drivers/gpu/drm/i915/gt/intel_execlists_submission.c:112:
   drivers/gpu/drm/i915/i915_gpu_error.h:329:1: note: expected 'struct drm_i915_private *' but argument is of type 'struct intel_engine_cs *'
    i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp)
    ^~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +/i915_gpu_coredump_alloc +2264 drivers/gpu/drm/i915/gt/intel_execlists_submission.c

  2254	
  2255	static struct execlists_capture *capture_regs(struct intel_engine_cs *engine)
  2256	{
  2257		const gfp_t gfp = GFP_ATOMIC | __GFP_NOWARN;
  2258		struct execlists_capture *cap;
  2259	
  2260		cap = kmalloc(sizeof(*cap), gfp);
  2261		if (!cap)
  2262			return NULL;
  2263	
> 2264		cap->error = i915_gpu_coredump_alloc(engine, gfp);
  2265		if (!cap->error)
  2266			goto err_cap;
  2267	
  2268		return cap;
  2269	
  2270	err_cap:
  2271		kfree(cap);
  2272		return NULL;
  2273	}
  2274	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* Re: [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc()
@ 2023-09-29  4:42     ` kernel test robot
  0 siblings, 0 replies; 24+ messages in thread
From: kernel test robot @ 2023-09-29  4:42 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx; +Cc: jani.nikula, oe-kbuild-all

Hi Jani,

kernel test robot noticed the following build errors:

[auto build test ERROR on drm-tip/drm-tip]

url:    https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-i915-stop-including-i915_utils-h-from-intel_runtime_pm-h/20230929-021205
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
patch link:    https://lore.kernel.org/r/d5f8aab89835a70c0af741e7f5765fc2c4875bf7.1695924021.git.jani.nikula%40intel.com
patch subject: [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc()
config: i386-buildonly-randconfig-005-20230929 (https://download.01.org/0day-ci/archive/20230929/202309291218.f8Nhsloo-lkp@intel.com/config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230929/202309291218.f8Nhsloo-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309291218.f8Nhsloo-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/gpu/drm/i915/gt/intel_execlists_submission.c: In function 'capture_regs':
>> drivers/gpu/drm/i915/gt/intel_execlists_submission.c:2264:39: error: passing argument 1 of 'i915_gpu_coredump_alloc' from incompatible pointer type [-Werror=incompatible-pointer-types]
     cap->error = i915_gpu_coredump_alloc(engine, gfp);
                                          ^~~~~~
   In file included from drivers/gpu/drm/i915/i915_drv.h:56:0,
                    from drivers/gpu/drm/i915/gt/intel_execlists_submission.c:112:
   drivers/gpu/drm/i915/i915_gpu_error.h:329:1: note: expected 'struct drm_i915_private *' but argument is of type 'struct intel_engine_cs *'
    i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp)
    ^~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +/i915_gpu_coredump_alloc +2264 drivers/gpu/drm/i915/gt/intel_execlists_submission.c

  2254	
  2255	static struct execlists_capture *capture_regs(struct intel_engine_cs *engine)
  2256	{
  2257		const gfp_t gfp = GFP_ATOMIC | __GFP_NOWARN;
  2258		struct execlists_capture *cap;
  2259	
  2260		cap = kmalloc(sizeof(*cap), gfp);
  2261		if (!cap)
  2262			return NULL;
  2263	
> 2264		cap->error = i915_gpu_coredump_alloc(engine, gfp);
  2265		if (!cap->error)
  2266			goto err_cap;
  2267	
  2268		return cap;
  2269	
  2270	err_cap:
  2271		kfree(cap);
  2272		return NULL;
  2273	}
  2274	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* Re: [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc()
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc() Jani Nikula
@ 2023-09-29  6:18     ` kernel test robot
  2023-09-29  6:18     ` kernel test robot
  2023-09-29  7:46   ` [Intel-gfx] [PATCH v2] " Jani Nikula
  2 siblings, 0 replies; 24+ messages in thread
From: kernel test robot @ 2023-09-29  6:18 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx; +Cc: oe-kbuild-all, jani.nikula

Hi Jani,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-tip/drm-tip]

url:    https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-i915-stop-including-i915_utils-h-from-intel_runtime_pm-h/20230929-021205
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
patch link:    https://lore.kernel.org/r/d5f8aab89835a70c0af741e7f5765fc2c4875bf7.1695924021.git.jani.nikula%40intel.com
patch subject: [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc()
config: x86_64-buildonly-randconfig-005-20230929 (https://download.01.org/0day-ci/archive/20230929/202309291431.3pKN8WtO-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230929/202309291431.3pKN8WtO-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309291431.3pKN8WtO-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/i915/i915_gpu_error.c:1547:1: warning: no previous prototype for 'intel_engine_coredump_alloc' [-Wmissing-prototypes]
    1547 | intel_engine_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp, u32 dump_flags)
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +/intel_engine_coredump_alloc +1547 drivers/gpu/drm/i915/i915_gpu_error.c

ff20afc4cee7b6 Thomas Hellström 2021-11-29  1545  
742379c0c4001f Chris Wilson     2020-01-10  1546  struct intel_engine_coredump *
a6f0f9cf330a86 Alan Previn      2022-03-21 @1547  intel_engine_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp, u32 dump_flags)
742379c0c4001f Chris Wilson     2020-01-10  1548  {
742379c0c4001f Chris Wilson     2020-01-10  1549  	struct intel_engine_coredump *ee;
742379c0c4001f Chris Wilson     2020-01-10  1550  
742379c0c4001f Chris Wilson     2020-01-10  1551  	ee = kzalloc(sizeof(*ee), gfp);
c990b4c3597d6c Chris Wilson     2019-08-08  1552  	if (!ee)
742379c0c4001f Chris Wilson     2020-01-10  1553  		return NULL;
c990b4c3597d6c Chris Wilson     2019-08-08  1554  
742379c0c4001f Chris Wilson     2020-01-10  1555  	ee->engine = engine;
372fbb8e3927fc Chris Wilson     2014-01-27  1556  
a6f0f9cf330a86 Alan Previn      2022-03-21  1557  	if (!(dump_flags & CORE_DUMP_FLAG_IS_GUC_CAPTURE)) {
742379c0c4001f Chris Wilson     2020-01-10  1558  		engine_record_registers(ee);
742379c0c4001f Chris Wilson     2020-01-10  1559  		engine_record_execlists(ee);
a6f0f9cf330a86 Alan Previn      2022-03-21  1560  	}
3bdd4f84853106 Chris Wilson     2019-07-22  1561  
742379c0c4001f Chris Wilson     2020-01-10  1562  	return ee;
c990b4c3597d6c Chris Wilson     2019-08-08  1563  }
ae6c4806927b8b Daniel Vetter    2014-08-06  1564  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* Re: [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc()
@ 2023-09-29  6:18     ` kernel test robot
  0 siblings, 0 replies; 24+ messages in thread
From: kernel test robot @ 2023-09-29  6:18 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx; +Cc: jani.nikula, oe-kbuild-all

Hi Jani,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-tip/drm-tip]

url:    https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-i915-stop-including-i915_utils-h-from-intel_runtime_pm-h/20230929-021205
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
patch link:    https://lore.kernel.org/r/d5f8aab89835a70c0af741e7f5765fc2c4875bf7.1695924021.git.jani.nikula%40intel.com
patch subject: [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc()
config: x86_64-buildonly-randconfig-005-20230929 (https://download.01.org/0day-ci/archive/20230929/202309291431.3pKN8WtO-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230929/202309291431.3pKN8WtO-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309291431.3pKN8WtO-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/i915/i915_gpu_error.c:1547:1: warning: no previous prototype for 'intel_engine_coredump_alloc' [-Wmissing-prototypes]
    1547 | intel_engine_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp, u32 dump_flags)
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +/intel_engine_coredump_alloc +1547 drivers/gpu/drm/i915/i915_gpu_error.c

ff20afc4cee7b6 Thomas Hellström 2021-11-29  1545  
742379c0c4001f Chris Wilson     2020-01-10  1546  struct intel_engine_coredump *
a6f0f9cf330a86 Alan Previn      2022-03-21 @1547  intel_engine_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp, u32 dump_flags)
742379c0c4001f Chris Wilson     2020-01-10  1548  {
742379c0c4001f Chris Wilson     2020-01-10  1549  	struct intel_engine_coredump *ee;
742379c0c4001f Chris Wilson     2020-01-10  1550  
742379c0c4001f Chris Wilson     2020-01-10  1551  	ee = kzalloc(sizeof(*ee), gfp);
c990b4c3597d6c Chris Wilson     2019-08-08  1552  	if (!ee)
742379c0c4001f Chris Wilson     2020-01-10  1553  		return NULL;
c990b4c3597d6c Chris Wilson     2019-08-08  1554  
742379c0c4001f Chris Wilson     2020-01-10  1555  	ee->engine = engine;
372fbb8e3927fc Chris Wilson     2014-01-27  1556  
a6f0f9cf330a86 Alan Previn      2022-03-21  1557  	if (!(dump_flags & CORE_DUMP_FLAG_IS_GUC_CAPTURE)) {
742379c0c4001f Chris Wilson     2020-01-10  1558  		engine_record_registers(ee);
742379c0c4001f Chris Wilson     2020-01-10  1559  		engine_record_execlists(ee);
a6f0f9cf330a86 Alan Previn      2022-03-21  1560  	}
3bdd4f84853106 Chris Wilson     2019-07-22  1561  
742379c0c4001f Chris Wilson     2020-01-10  1562  	return ee;
c990b4c3597d6c Chris Wilson     2019-08-08  1563  }
ae6c4806927b8b Daniel Vetter    2014-08-06  1564  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* [Intel-gfx] [PATCH v2] drm/i915: do more in i915_gpu_coredump_alloc()
  2023-09-28 18:08 ` [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc() Jani Nikula
  2023-09-29  4:42     ` kernel test robot
  2023-09-29  6:18     ` kernel test robot
@ 2023-09-29  7:46   ` Jani Nikula
  2023-09-30 21:11     ` kernel test robot
  2 siblings, 1 reply; 24+ messages in thread
From: Jani Nikula @ 2023-09-29  7:46 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx

Reduce gpu error interface further by doing more in
i915_gpu_coredump_alloc().

v2: Fix build for CONFIG_DRM_I915_CAPTURE_ERROR=n

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 .../drm/i915/gt/intel_execlists_submission.c  | 16 +-------
 drivers/gpu/drm/i915/i915_gpu_error.c         | 38 +++++++++++++++++--
 drivers/gpu/drm/i915/i915_gpu_error.h         | 22 +----------
 3 files changed, 38 insertions(+), 38 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
index e8f42ec6b1b4..7c7e8c3a12e0 100644
--- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
+++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
@@ -2261,26 +2261,12 @@ static struct execlists_capture *capture_regs(struct intel_engine_cs *engine)
 	if (!cap)
 		return NULL;
 
-	cap->error = i915_gpu_coredump_alloc(engine->i915, gfp);
+	cap->error = i915_gpu_coredump_alloc(engine, gfp);
 	if (!cap->error)
 		goto err_cap;
 
-	cap->error->gt = intel_gt_coredump_alloc(engine->gt, gfp, CORE_DUMP_FLAG_NONE);
-	if (!cap->error->gt)
-		goto err_gpu;
-
-	cap->error->gt->engine = intel_engine_coredump_alloc(engine, gfp, CORE_DUMP_FLAG_NONE);
-	if (!cap->error->gt->engine)
-		goto err_gt;
-
-	cap->error->gt->engine->hung = true;
-
 	return cap;
 
-err_gt:
-	kfree(cap->error->gt);
-err_gpu:
-	kfree(cap->error);
 err_cap:
 	kfree(cap);
 	return NULL;
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index 9b1bb5aeec11..e4185f30f07c 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -63,6 +63,9 @@
 #define ALLOW_FAIL (__GFP_KSWAPD_RECLAIM | __GFP_RETRY_MAYFAIL | __GFP_NOWARN)
 #define ATOMIC_MAYFAIL (GFP_ATOMIC | __GFP_NOWARN)
 
+struct intel_gt_coredump *
+intel_gt_coredump_alloc(struct intel_gt *gt, gfp_t gfp, u32 dump_flags);
+
 static void __sg_set_buf(struct scatterlist *sg,
 			 void *addr, unsigned int len, loff_t it)
 {
@@ -2005,8 +2008,8 @@ static void capture_gen(struct i915_gpu_coredump *error)
 	error->driver_caps = i915->caps;
 }
 
-struct i915_gpu_coredump *
-i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp)
+static struct i915_gpu_coredump *
+__i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp)
 {
 	struct i915_gpu_coredump *error;
 
@@ -2030,6 +2033,35 @@ i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp)
 	return error;
 }
 
+struct i915_gpu_coredump *
+i915_gpu_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp)
+{
+	struct i915_gpu_coredump *error;
+
+	error = __i915_gpu_coredump_alloc(engine->i915, gfp);
+	if (!error)
+		return NULL;
+
+	error->gt = intel_gt_coredump_alloc(engine->gt, gfp, CORE_DUMP_FLAG_NONE);
+	if (!error->gt)
+		goto err_gpu;
+
+	error->gt->engine = intel_engine_coredump_alloc(engine, gfp, CORE_DUMP_FLAG_NONE);
+	if (!error->gt->engine)
+		goto err_gt;
+
+	error->gt->engine->hung = true;
+
+	return error;
+
+err_gt:
+	kfree(error->gt);
+err_gpu:
+	kfree(error);
+
+	return NULL;
+}
+
 #define DAY_AS_SECONDS(x) (24 * 60 * 60 * (x))
 
 struct intel_gt_coredump *
@@ -2102,7 +2134,7 @@ __i915_gpu_coredump(struct intel_gt *gt, intel_engine_mask_t engine_mask, u32 du
 	if (IS_ERR(error))
 		return error;
 
-	error = i915_gpu_coredump_alloc(i915, ALLOW_FAIL);
+	error = __i915_gpu_coredump_alloc(i915, ALLOW_FAIL);
 	if (!error)
 		return ERR_PTR(-ENOMEM);
 
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.h b/drivers/gpu/drm/i915/i915_gpu_error.h
index f6f8d284a07d..a0ab187b426d 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.h
+++ b/drivers/gpu/drm/i915/i915_gpu_error.h
@@ -280,13 +280,7 @@ void i915_capture_error_state(struct intel_gt *gt,
 			      intel_engine_mask_t engine_mask, u32 dump_flags);
 
 struct i915_gpu_coredump *
-i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp);
-
-struct intel_gt_coredump *
-intel_gt_coredump_alloc(struct intel_gt *gt, gfp_t gfp, u32 dump_flags);
-
-struct intel_engine_coredump *
-intel_engine_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp, u32 dump_flags);
+i915_gpu_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp);
 
 struct intel_engine_capture_vma *
 intel_engine_coredump_add_request(struct intel_engine_coredump *ee,
@@ -332,19 +326,7 @@ i915_capture_error_state(struct intel_gt *gt, intel_engine_mask_t engine_mask, u
 }
 
 static inline struct i915_gpu_coredump *
-i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp)
-{
-	return NULL;
-}
-
-static inline struct intel_gt_coredump *
-intel_gt_coredump_alloc(struct intel_gt *gt, gfp_t gfp, u32 dump_flags)
-{
-	return NULL;
-}
-
-static inline struct intel_engine_coredump *
-intel_engine_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp, u32 dump_flags)
+i915_gpu_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp)
 {
 	return NULL;
 }
-- 
2.39.2


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

* [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915: i915_drv.h and i915_gpu_error.h include diet (rev2)
  2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
                   ` (15 preceding siblings ...)
  2023-09-28 19:05 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915: i915_drv.h and i915_gpu_error.h include diet Patchwork
@ 2023-09-29 14:41 ` Patchwork
  16 siblings, 0 replies; 24+ messages in thread
From: Patchwork @ 2023-09-29 14:41 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: i915_drv.h and i915_gpu_error.h include diet (rev2)
URL   : https://patchwork.freedesktop.org/series/124418/
State : failure

== Summary ==

Error: make failed
  CALL    scripts/checksyscalls.sh
  DESCEND objtool
  INSTALL libsubcmd_headers
  CC [M]  drivers/gpu/drm/i915/i915_gpu_error.o
drivers/gpu/drm/i915/i915_gpu_error.c:1763:1: error: no previous prototype for ‘intel_engine_coredump_alloc’ [-Werror=missing-prototypes]
 1763 | intel_engine_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp, u32 dump_flags)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[6]: *** [scripts/Makefile.build:243: drivers/gpu/drm/i915/i915_gpu_error.o] Error 1
make[5]: *** [scripts/Makefile.build:480: drivers/gpu/drm/i915] Error 2
make[4]: *** [scripts/Makefile.build:480: drivers/gpu/drm] Error 2
make[3]: *** [scripts/Makefile.build:480: drivers/gpu] Error 2
make[2]: *** [scripts/Makefile.build:480: drivers] Error 2
make[1]: *** [/home/kbuild2/kernel/Makefile:1913: .] Error 2
make: *** [Makefile:234: __sub-make] Error 2
Build failed, no error log produced



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

* Re: [Intel-gfx] [PATCH v2] drm/i915: do more in i915_gpu_coredump_alloc()
  2023-09-29  7:46   ` [Intel-gfx] [PATCH v2] " Jani Nikula
@ 2023-09-30 21:11     ` kernel test robot
  0 siblings, 0 replies; 24+ messages in thread
From: kernel test robot @ 2023-09-30 21:11 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx; +Cc: oe-kbuild-all

Hi Jani,

kernel test robot noticed the following build warnings:



url:    https://github.com/intel-lab-lkp/linux/commits/UPDATE-20230929-163131/Jani-Nikula/drm-i915-stop-including-i915_utils-h-from-intel_runtime_pm-h/20230929-021205
base:   the 9th patch of https://lore.kernel.org/r/d5f8aab89835a70c0af741e7f5765fc2c4875bf7.1695924021.git.jani.nikula%40intel.com
patch link:    https://lore.kernel.org/r/20230929074636.1433475-1-jani.nikula%40intel.com
patch subject: [Intel-gfx] [PATCH v2] drm/i915: do more in i915_gpu_coredump_alloc()
config: i386-randconfig-061-20230930 (https://download.01.org/0day-ci/archive/20231001/202310010424.ZEwfaRR9-lkp@intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231001/202310010424.ZEwfaRR9-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310010424.ZEwfaRR9-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/i915/i915_gpu_error.c:1546:30: sparse: sparse: symbol 'intel_engine_coredump_alloc' was not declared. Should it be static?

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

end of thread, other threads:[~2023-09-30 21:11 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-28 18:08 [Intel-gfx] [PATCH 00/15] drm/i915: i915_drv.h and i915_gpu_error.h include diet Jani Nikula
2023-09-28 18:08 ` [Intel-gfx] [PATCH 01/15] drm/i915: stop including i915_utils.h from intel_runtime_pm.h Jani Nikula
2023-09-28 18:08 ` [Intel-gfx] [PATCH 02/15] drm/i915/mocs: use to_gt() instead of direct &i915->gt Jani Nikula
2023-09-28 18:08 ` [Intel-gfx] [PATCH 03/15] drm/i915: allocate i915->gt0 dynamically Jani Nikula
2023-09-28 18:08 ` [Intel-gfx] [PATCH 04/15] drm/i915/gt: remove i915->gt0 in favour of i915->gt[0] Jani Nikula
2023-09-28 18:08 ` [Intel-gfx] [PATCH 05/15] drm/i915: make some error capture functions static Jani Nikula
2023-09-28 18:08 ` [Intel-gfx] [PATCH 06/15] drm/i915: move gpu error debugfs to i915_gpu_error.c Jani Nikula
2023-09-28 18:08 ` [Intel-gfx] [PATCH 07/15] drm/i915: move gpu error sysfs " Jani Nikula
2023-09-28 18:08 ` [Intel-gfx] [PATCH 08/15] drm/i915: convert i915_coredump_get/put() to proper functions Jani Nikula
2023-09-28 18:08 ` [Intel-gfx] [PATCH 09/15] drm/i915: do more in i915_gpu_coredump_alloc() Jani Nikula
2023-09-29  4:42   ` kernel test robot
2023-09-29  4:42     ` kernel test robot
2023-09-29  6:18   ` kernel test robot
2023-09-29  6:18     ` kernel test robot
2023-09-29  7:46   ` [Intel-gfx] [PATCH v2] " Jani Nikula
2023-09-30 21:11     ` kernel test robot
2023-09-28 18:08 ` [Intel-gfx] [PATCH 10/15] drm/i915: move execlist capture to i915_gpu_error.c Jani Nikula
2023-09-28 18:08 ` [Intel-gfx] [PATCH 11/15] drm/i915/guc: don't look at gpu error guts in guc capture Jani Nikula
2023-09-28 18:08 ` [Intel-gfx] [PATCH 12/15] drm/i915: hide gpu error structures inside i915_gpu_error.c Jani Nikula
2023-09-28 18:08 ` [Intel-gfx] [PATCH 13/15] drm/i915: stop including gt/intel_engine.h and gt/intel_gt_types.h from i915_drv.h Jani Nikula
2023-09-28 18:08 ` [Intel-gfx] [PATCH 14/15] drm/i915: stop including gt/uc/intel_uc.h " Jani Nikula
2023-09-28 18:08 ` [Intel-gfx] [PATCH 15/15] drm/i915: stop including gt/intel_workarounds.h " Jani Nikula
2023-09-28 19:05 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915: i915_drv.h and i915_gpu_error.h include diet Patchwork
2023-09-29 14:41 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915: i915_drv.h and i915_gpu_error.h include diet (rev2) Patchwork

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.