Whether the "GPU reset clobbers display" platform property belongs to i915 core or display is neither here nor there. Move it to display for the benefit of follow-up changes.
Instead of having a device info flag for it, just express this in terms of the platforms: up to and including display version 4, except G45 and GM45. This is historical platform information, and it's not going to change. The added function actually better answers the question, "On which platforms a display reset is required after a GPU reset?" Cc: Ville Syrjälä <[email protected]> Cc: Maarten Lankhorst <[email protected]> Signed-off-by: Jani Nikula <[email protected]> --- drivers/gpu/drm/i915/display/intel_display_reset.c | 8 ++++++++ drivers/gpu/drm/i915/display/intel_display_reset.h | 1 + drivers/gpu/drm/i915/gt/intel_reset.c | 4 ++-- drivers/gpu/drm/i915/i915_pci.c | 6 ------ drivers/gpu/drm/i915/intel_device_info.h | 1 - 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display_reset.c b/drivers/gpu/drm/i915/display/intel_display_reset.c index 504ec7043cd9..6ec1af1c8431 100644 --- a/drivers/gpu/drm/i915/display/intel_display_reset.c +++ b/drivers/gpu/drm/i915/display/intel_display_reset.c @@ -23,6 +23,14 @@ bool intel_display_reset_supported(struct intel_display *display) return display && HAS_DISPLAY(display); } +bool intel_display_reset_needed_after_gpu_reset(struct intel_display *display) +{ + /* aka gpu_reset_clobbers_display */ + return intel_display_reset_supported(display) && + DISPLAY_VER(display) <= 4 && + !display->platform.g45 && !display->platform.gm45; +} + bool intel_display_reset_test(struct intel_display *display) { return display && HAS_DISPLAY(display) && diff --git a/drivers/gpu/drm/i915/display/intel_display_reset.h b/drivers/gpu/drm/i915/display/intel_display_reset.h index b88c330a3441..68312403904e 100644 --- a/drivers/gpu/drm/i915/display/intel_display_reset.h +++ b/drivers/gpu/drm/i915/display/intel_display_reset.h @@ -11,6 +11,7 @@ struct intel_display; bool intel_display_reset_supported(struct intel_display *display); +bool intel_display_reset_needed_after_gpu_reset(struct intel_display *display); bool intel_display_reset_test(struct intel_display *display); void intel_display_reset_prepare(struct intel_display *display); void intel_display_reset_finish(struct intel_display *display, bool test_only); diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c index 6053f3e8aa27..439635bf94dd 100644 --- a/drivers/gpu/drm/i915/gt/intel_reset.c +++ b/drivers/gpu/drm/i915/gt/intel_reset.c @@ -1180,9 +1180,9 @@ static int resume(struct intel_gt *gt) bool intel_gt_gpu_reset_clobbers_display(struct intel_gt *gt) { - struct drm_i915_private *i915 = gt->i915; + struct intel_display *display = gt->i915->display; - return INTEL_INFO(i915)->gpu_reset_clobbers_display; + return intel_display_reset_needed_after_gpu_reset(display); } /** diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c index 82415af47d54..64e8db0f7aed 100644 --- a/drivers/gpu/drm/i915/i915_pci.c +++ b/drivers/gpu/drm/i915/i915_pci.c @@ -80,7 +80,6 @@ __diag_ignore_all("-Woverride-init", "Allow field initialization overrides for d #define I830_FEATURES \ GEN(2), \ .is_mobile = 1, \ - .gpu_reset_clobbers_display = true, \ .has_3d_pipeline = 1, \ .hws_needs_physical = 1, \ .unfenced_needs_alignment = 1, \ @@ -96,7 +95,6 @@ __diag_ignore_all("-Woverride-init", "Allow field initialization overrides for d #define I845_FEATURES \ GEN(2), \ .has_3d_pipeline = 1, \ - .gpu_reset_clobbers_display = true, \ .hws_needs_physical = 1, \ .unfenced_needs_alignment = 1, \ .platform_engine_mask = BIT(RCS0), \ @@ -130,7 +128,6 @@ static const struct intel_device_info i865g_info = { #define GEN3_FEATURES \ GEN(3), \ - .gpu_reset_clobbers_display = true, \ .platform_engine_mask = BIT(RCS0), \ .has_3d_pipeline = 1, \ .has_snoop = true, \ @@ -193,7 +190,6 @@ static const struct intel_device_info pnv_m_info = { #define GEN4_FEATURES \ GEN(4), \ - .gpu_reset_clobbers_display = true, \ .platform_engine_mask = BIT(RCS0), \ .has_3d_pipeline = 1, \ .has_snoop = true, \ @@ -223,7 +219,6 @@ static const struct intel_device_info g45_info = { GEN4_FEATURES, PLATFORM(INTEL_G45), .platform_engine_mask = BIT(RCS0) | BIT(VCS0), - .gpu_reset_clobbers_display = false, }; static const struct intel_device_info gm45_info = { @@ -231,7 +226,6 @@ static const struct intel_device_info gm45_info = { PLATFORM(INTEL_GM45), .is_mobile = 1, .platform_engine_mask = BIT(RCS0) | BIT(VCS0), - .gpu_reset_clobbers_display = false, }; #define GEN5_FEATURES \ diff --git a/drivers/gpu/drm/i915/intel_device_info.h b/drivers/gpu/drm/i915/intel_device_info.h index 9387385cb418..7296e7dcf828 100644 --- a/drivers/gpu/drm/i915/intel_device_info.h +++ b/drivers/gpu/drm/i915/intel_device_info.h @@ -148,7 +148,6 @@ enum intel_ppgtt_type { /* Keep has_* in alphabetical order */ \ func(has_64bit_reloc); \ func(has_64k_pages); \ - func(gpu_reset_clobbers_display); \ func(has_reset_engine); \ func(has_3d_pipeline); \ func(has_flat_ccs); \ -- 2.47.3
