]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/dram: add return value and handling to intel_dram_detect()
authorJani Nikula <jani.nikula@intel.com>
Tue, 27 May 2025 09:25:25 +0000 (12:25 +0300)
committerJani Nikula <jani.nikula@intel.com>
Wed, 4 Jun 2025 15:57:23 +0000 (18:57 +0300)
We'll want to start returning errors from intel_dram_detect(). As the
first step, add the return value and error handling, even if we still
only return 0.

Do no functional changes, but leave a comment about whether we should
bail out on dram detection failures.

Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
Link: https://lore.kernel.org/r/be2c31c459fb95d8161b719d499403eea5ec17b7.1748337870.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/i915_driver.c
drivers/gpu/drm/i915/soc/intel_dram.c
drivers/gpu/drm/i915/soc/intel_dram.h
drivers/gpu/drm/xe/display/xe_display.c

index 510eb3ed4b0ecfa940cda4732b6c0b69f55cee6c..c6263c6d33845ea03da04e3827c0042ea88e3985 100644 (file)
@@ -568,7 +568,9 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv)
         * Fill the dram structure to get the system dram info. This will be
         * used for memory latency calculation.
         */
-       intel_dram_detect(dev_priv);
+       ret = intel_dram_detect(dev_priv);
+       if (ret)
+               goto err_opregion;
 
        intel_bw_init_hw(display);
 
index f42dcdb74d40c4b1429d10b3d59a5835b04109c1..e7fa938c98cfeb0512d3a4aff69b0e941c34b3f5 100644 (file)
@@ -704,7 +704,7 @@ static int xelpdp_get_dram_info(struct drm_i915_private *i915, struct dram_info
        return 0;
 }
 
-void intel_dram_detect(struct drm_i915_private *i915)
+int intel_dram_detect(struct drm_i915_private *i915)
 {
        struct dram_info *dram_info = &i915->dram_info;
        int ret;
@@ -713,7 +713,7 @@ void intel_dram_detect(struct drm_i915_private *i915)
        detect_mem_freq(i915);
 
        if (GRAPHICS_VER(i915) < 9 || IS_DG2(i915) || !HAS_DISPLAY(i915))
-               return;
+               return 0;
 
        /*
         * Assume level 0 watermark latency adjustment is needed until proven
@@ -735,8 +735,9 @@ void intel_dram_detect(struct drm_i915_private *i915)
        drm_dbg_kms(&i915->drm, "DRAM type: %s\n",
                    intel_dram_type_str(dram_info->type));
 
+       /* TODO: Do we want to abort probe on dram detection failures? */
        if (ret)
-               return;
+               return 0;
 
        drm_dbg_kms(&i915->drm, "Num qgv points %u\n", dram_info->num_qgv_points);
 
@@ -744,6 +745,8 @@ void intel_dram_detect(struct drm_i915_private *i915)
 
        drm_dbg_kms(&i915->drm, "Watermark level 0 adjustment needed: %s\n",
                    str_yes_no(dram_info->wm_lv_0_adjust_needed));
+
+       return 0;
 }
 
 const struct dram_info *intel_dram_info(struct drm_device *drm)
index 17a20cd2c6d5a4652fb9bdc05678011c4ee611f3..25fe60b2b11783bcf0dba6b50fe02306e6d5bf21 100644 (file)
@@ -11,7 +11,7 @@ struct drm_device;
 struct dram_info;
 
 void intel_dram_edram_detect(struct drm_i915_private *i915);
-void intel_dram_detect(struct drm_i915_private *i915);
+int intel_dram_detect(struct drm_i915_private *i915);
 unsigned int i9xx_fsb_freq(struct drm_i915_private *i915);
 const struct dram_info *intel_dram_info(struct drm_device *drm);
 
index 3f92bf51813e510cd006c9493df2b880aae063ae..eafe2f093a6cfa522f122cea70df1b9ae772c57f 100644 (file)
@@ -122,7 +122,9 @@ int xe_display_init_early(struct xe_device *xe)
         * Fill the dram structure to get the system dram info. This will be
         * used for memory latency calculation.
         */
-       intel_dram_detect(xe);
+       err = intel_dram_detect(xe);
+       if (err)
+               goto err_opregion;
 
        intel_bw_init_hw(display);