>-----Original Message----- >From: Intel-gfx [mailto:intel-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx] On Behalf Of >Arkadiusz Hiler >Sent: Tuesday, March 7, 2017 7:25 AM >To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx >Subject: [PATCH 10/10] drm/i915/uc: Add params for specifying >firmware > >`guc_firmware_path` and `huc_firmware_path` module parameters are added. > >Using the parameter disables version checks and loads desired firmware instead >of the default one. I see that the effort of this patch makes us test with different firmware versions and not just the default one. But is it worth introducing two new params ? We already have 3 parameters that are guc and huc related. Anusha >v2: make params unsafe && notice about disabled fw check (J. Lahtinen) > >Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> >Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> >Cc: Michal Winiarski <michal.winiarski@xxxxxxxxx> >Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@xxxxxxxxx> >--- > drivers/gpu/drm/i915/i915_params.c | 10 ++++++++++ > drivers/gpu/drm/i915/i915_params.h | 2 ++ > drivers/gpu/drm/i915/intel_guc_loader.c | 6 +++++- > drivers/gpu/drm/i915/intel_huc.c | 6 +++++- > drivers/gpu/drm/i915/intel_uc.c | 6 ++++-- > 5 files changed, 26 insertions(+), 4 deletions(-) > >diff --git a/drivers/gpu/drm/i915/i915_params.c >b/drivers/gpu/drm/i915/i915_params.c >index 2e9645e..b6a7e36 100644 >--- a/drivers/gpu/drm/i915/i915_params.c >+++ b/drivers/gpu/drm/i915/i915_params.c >@@ -59,6 +59,8 @@ struct i915_params i915 __read_mostly = { > .enable_guc_loading = 0, > .enable_guc_submission = 0, > .guc_log_level = -1, >+ .guc_firmware_path = NULL, >+ .huc_firmware_path = NULL, > .enable_dp_mst = true, > .inject_load_failure = 0, > .enable_dpcd_backlight = false, >@@ -230,6 +232,14 @@ module_param_named(guc_log_level, >i915.guc_log_level, int, 0400); MODULE_PARM_DESC(guc_log_level, > "GuC firmware logging level (-1:disabled (default), 0-3:enabled)"); > >+module_param_named_unsafe(guc_firmware_path, i915.guc_firmware_path, >+charp, 0400); MODULE_PARM_DESC(guc_firmware_path, >+ "GuC firmware path to use instead of the default one"); >+ >+module_param_named_unsafe(huc_firmware_path, i915.huc_firmware_path, >+charp, 0400); MODULE_PARM_DESC(huc_firmware_path, >+ "HuC firmware path to use instead of the default one"); >+ > module_param_named_unsafe(enable_dp_mst, i915.enable_dp_mst, bool, >0600); MODULE_PARM_DESC(enable_dp_mst, > "Enable multi-stream transport (MST) for new DisplayPort sinks. (default: >true)"); diff --git a/drivers/gpu/drm/i915/i915_params.h >b/drivers/gpu/drm/i915/i915_params.h >index 55d47ee..34148cc 100644 >--- a/drivers/gpu/drm/i915/i915_params.h >+++ b/drivers/gpu/drm/i915/i915_params.h >@@ -46,6 +46,8 @@ > func(int, enable_guc_loading); \ > func(int, enable_guc_submission); \ > func(int, guc_log_level); \ >+ func(char *, guc_firmware_path); \ >+ func(char *, huc_firmware_path); \ > func(int, use_mmio_flip); \ > func(int, mmio_debug); \ > func(int, edp_vswing); \ >diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c >b/drivers/gpu/drm/i915/intel_guc_loader.c >index 0478483..283b0ca 100644 >--- a/drivers/gpu/drm/i915/intel_guc_loader.c >+++ b/drivers/gpu/drm/i915/intel_guc_loader.c >@@ -474,7 +474,11 @@ int intel_guc_select_fw(struct intel_guc *guc) > guc->fw.load_status = INTEL_UC_FIRMWARE_NONE; > guc->fw.fw = INTEL_UC_FW_TYPE_GUC; > >- if (IS_SKYLAKE(dev_priv)) { >+ if (i915.guc_firmware_path) { >+ guc->fw.path = i915.guc_firmware_path; >+ guc->fw.major_ver_wanted = 0; >+ guc->fw.minor_ver_wanted = 0; >+ } else if (IS_SKYLAKE(dev_priv)) { > guc->fw.path = I915_SKL_GUC_UCODE; > guc->fw.major_ver_wanted = SKL_FW_MAJOR; > guc->fw.minor_ver_wanted = SKL_FW_MINOR; diff --git >a/drivers/gpu/drm/i915/intel_huc.c b/drivers/gpu/drm/i915/intel_huc.c >index ea67abc..ab4ee08 100644 >--- a/drivers/gpu/drm/i915/intel_huc.c >+++ b/drivers/gpu/drm/i915/intel_huc.c >@@ -153,7 +153,11 @@ void intel_huc_select_fw(struct intel_huc *huc) > huc->fw.load_status = INTEL_UC_FIRMWARE_NONE; > huc->fw.fw = INTEL_UC_FW_TYPE_HUC; > >- if (IS_SKYLAKE(dev_priv)) { >+ if (i915.huc_firmware_path) { >+ huc->fw.path = i915.huc_firmware_path; >+ huc->fw.major_ver_wanted = 0; >+ huc->fw.minor_ver_wanted = 0; >+ } else if (IS_SKYLAKE(dev_priv)) { > huc->fw.path = I915_SKL_HUC_UCODE; > huc->fw.major_ver_wanted = SKL_HUC_FW_MAJOR; > huc->fw.minor_ver_wanted = SKL_HUC_FW_MINOR; diff --git >a/drivers/gpu/drm/i915/intel_uc.c b/drivers/gpu/drm/i915/intel_uc.c index >8875647..1cf4590 100644 >--- a/drivers/gpu/drm/i915/intel_uc.c >+++ b/drivers/gpu/drm/i915/intel_uc.c >@@ -359,8 +359,10 @@ void intel_uc_prepare_fw(struct drm_i915_private >*dev_priv, > goto fail; > } > >- if (uc_fw->major_ver_found != uc_fw->major_ver_wanted || >- uc_fw->minor_ver_found < uc_fw->minor_ver_wanted) { >+ if (uc_fw->major_ver_wanted == 0 && uc_fw->minor_ver_wanted == 0) { >+ DRM_NOTE("Skipping uC firmware version check\n"); >+ } else if (uc_fw->major_ver_found != uc_fw->major_ver_wanted || >+ uc_fw->minor_ver_found < uc_fw->minor_ver_wanted) { > DRM_NOTE("uC firmware version %d.%d, required %d.%d\n", > uc_fw->major_ver_found, uc_fw->minor_ver_found, > uc_fw->major_ver_wanted, uc_fw- >>minor_ver_wanted); >-- >2.9.3 > >_______________________________________________ >Intel-gfx mailing list >Intel-gfx@xxxxxxxxxxxxxxxxxxxxx >https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx