[Intel-gfx] [PATCH 10/10] drm/i915/uc: Add params for specifying firmware

Srivatsa, Anusha anusha.srivatsa at intel.com
Wed Mar 8 01:19:48 UTC 2017



>-----Original Message-----
>From: Intel-gfx [mailto:intel-gfx-bounces at lists.freedesktop.org] On Behalf Of
>Arkadiusz Hiler
>Sent: Tuesday, March 7, 2017 7:25 AM
>To: intel-gfx at lists.freedesktop.org
>Subject: [Intel-gfx] [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 at chris-wilson.co.uk>
>Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
>Cc: Michal Winiarski <michal.winiarski at intel.com>
>Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler at intel.com>
>---
> 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 at lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/intel-gfx


More information about the Intel-gfx mailing list