Re: [Intel-gfx] [PATCH v9 1/1] drm/i915/huc: Reorganize HuC authentication

2017-09-26 Thread Chris Wilson
Quoting Sagar Arun Kamble (2017-09-26 08:17:16)
> Prepared intel_auth_huc to separate HuC specific functionality
> from GuC send action. Created new header intel_huc.h to group
> HuC specific declarations.
> 
> v2: Changed argument preparation for AUTHENTICATE_HUC.
> s/intel_auth_huc/intel_huc_auth. Deferred creation of intel_huc.h
> to later patch.
> 
> v3: Rebase as intel_guc.h is removed. Added param description to
> intel_huc_auth. (Michal)
> 
> v4: Rebase as intel_guc.h is added again. :)
> 
> v5: Rebase w.r.t removal of GuC code restructuring.
> 
> v6-v7: Rebase.
> 
> v8: Tagged subject as drm/i915/huc. (Michal Wajdeczko)
> Added kernel-doc description to intel_huc_auth and intel_guc_auth_huc.
> s/dev_priv/i915 and removed unnecessary variable offset. (Joonas)
> 
> v9: Rebase. Had conflict with i915_modparams change.
> 
> Cc: Joonas Lahtinen 
> Cc: Michal Wajdeczko 
> Cc: Michał Winiarski 
> Reviewed-by: Michal Wajdeczko 
> Signed-off-by: Sagar Arun Kamble 

Lgtm,
Reviewed-by: Chris Wilson 
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v9 1/1] drm/i915/huc: Reorganize HuC authentication

2017-09-26 Thread Joonas Lahtinen
On Tue, 2017-09-26 at 12:47 +0530, Sagar Arun Kamble wrote:
> Prepared intel_auth_huc to separate HuC specific functionality
> from GuC send action. Created new header intel_huc.h to group
> HuC specific declarations.
> 
> v2: Changed argument preparation for AUTHENTICATE_HUC.
> s/intel_auth_huc/intel_huc_auth. Deferred creation of intel_huc.h
> to later patch.
> 
> v3: Rebase as intel_guc.h is removed. Added param description to
> intel_huc_auth. (Michal)
> 
> v4: Rebase as intel_guc.h is added again. :)
> 
> v5: Rebase w.r.t removal of GuC code restructuring.
> 
> v6-v7: Rebase.
> 
> v8: Tagged subject as drm/i915/huc. (Michal Wajdeczko)
> Added kernel-doc description to intel_huc_auth and intel_guc_auth_huc.
> s/dev_priv/i915 and removed unnecessary variable offset. (Joonas)
> 
> v9: Rebase. Had conflict with i915_modparams change.
> 
> Cc: Joonas Lahtinen 
> Cc: Michal Wajdeczko 
> Cc: Michał Winiarski 
> Reviewed-by: Michal Wajdeczko 
> Signed-off-by: Sagar Arun Kamble 

Reviewed-by: Joonas Lahtinen 

Regards, Joonas
-- 
Joonas Lahtinen
Open Source Technology Center
Intel Corporation
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH v9 1/1] drm/i915/huc: Reorganize HuC authentication

2017-09-26 Thread Sagar Arun Kamble
Prepared intel_auth_huc to separate HuC specific functionality
from GuC send action. Created new header intel_huc.h to group
HuC specific declarations.

v2: Changed argument preparation for AUTHENTICATE_HUC.
s/intel_auth_huc/intel_huc_auth. Deferred creation of intel_huc.h
to later patch.

v3: Rebase as intel_guc.h is removed. Added param description to
intel_huc_auth. (Michal)

v4: Rebase as intel_guc.h is added again. :)

v5: Rebase w.r.t removal of GuC code restructuring.

v6-v7: Rebase.

v8: Tagged subject as drm/i915/huc. (Michal Wajdeczko)
Added kernel-doc description to intel_huc_auth and intel_guc_auth_huc.
s/dev_priv/i915 and removed unnecessary variable offset. (Joonas)

v9: Rebase. Had conflict with i915_modparams change.

Cc: Joonas Lahtinen 
Cc: Michal Wajdeczko 
Cc: Michał Winiarski 
Reviewed-by: Michal Wajdeczko 
Signed-off-by: Sagar Arun Kamble 
---
 drivers/gpu/drm/i915/intel_huc.c | 38 ++
 drivers/gpu/drm/i915/intel_uc.c  | 23 ++-
 drivers/gpu/drm/i915/intel_uc.h  |  3 ++-
 3 files changed, 42 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_huc.c b/drivers/gpu/drm/i915/intel_huc.c
index 6e1779b..8b4b535 100644
--- a/drivers/gpu/drm/i915/intel_huc.c
+++ b/drivers/gpu/drm/i915/intel_huc.c
@@ -225,19 +225,22 @@ void intel_huc_init_hw(struct intel_huc *huc)
 }
 
 /**
- * intel_guc_auth_huc() - authenticate ucode
- * @dev_priv: the drm_i915_device
+ * intel_huc_auth() - Authenticate HuC uCode
+ * @huc: intel_huc structure
+ *
+ * Called after HuC and GuC firmware loading during intel_uc_init_hw().
  *
- * Triggers a HuC fw authentication request to the GuC via intel_guc_action_
- * authenticate_huc interface.
+ * This function pins HuC firmware image object into GGTT.
+ * Then it invokes GuC action to authenticate passing the offset to RSA
+ * signature through intel_guc_auth_huc(). It then waits for 50ms for
+ * firmware verification ACK and unpins the object.
  */
-void intel_guc_auth_huc(struct drm_i915_private *dev_priv)
+void intel_huc_auth(struct intel_huc *huc)
 {
-   struct intel_guc *guc = _priv->guc;
-   struct intel_huc *huc = _priv->huc;
+   struct drm_i915_private *i915 = huc_to_i915(huc);
+   struct intel_guc *guc = >guc;
struct i915_vma *vma;
int ret;
-   u32 data[2];
 
if (huc->fw.load_status != INTEL_UC_FIRMWARE_SUCCESS)
return;
@@ -250,23 +253,19 @@ void intel_guc_auth_huc(struct drm_i915_private *dev_priv)
return;
}
 
-   /* Specify auth action and where public signature is. */
-   data[0] = INTEL_GUC_ACTION_AUTHENTICATE_HUC;
-   data[1] = guc_ggtt_offset(vma) + huc->fw.rsa_offset;
-
-   ret = intel_guc_send(guc, data, ARRAY_SIZE(data));
+   ret = intel_guc_auth_huc(guc,
+guc_ggtt_offset(vma) + huc->fw.rsa_offset);
if (ret) {
DRM_ERROR("HuC: GuC did not ack Auth request %d\n", ret);
goto out;
}
 
/* Check authentication status, it should be done by now */
-   ret = intel_wait_for_register(dev_priv,
-   HUC_STATUS2,
-   HUC_FW_VERIFIED,
-   HUC_FW_VERIFIED,
-   50);
-
+   ret = intel_wait_for_register(i915,
+ HUC_STATUS2,
+ HUC_FW_VERIFIED,
+ HUC_FW_VERIFIED,
+ 50);
if (ret) {
DRM_ERROR("HuC: Authentication failed %d\n", ret);
goto out;
@@ -275,4 +274,3 @@ void intel_guc_auth_huc(struct drm_i915_private *dev_priv)
 out:
i915_vma_unpin(vma);
 }
-
diff --git a/drivers/gpu/drm/i915/intel_uc.c b/drivers/gpu/drm/i915/intel_uc.c
index 9018540..2774778 100644
--- a/drivers/gpu/drm/i915/intel_uc.c
+++ b/drivers/gpu/drm/i915/intel_uc.c
@@ -328,6 +328,27 @@ static void guc_disable_communication(struct intel_guc 
*guc)
guc->send = intel_guc_send_nop;
 }
 
+/**
+ * intel_guc_auth_huc() - Send action to GuC to authenticate HuC ucode
+ * @guc: intel_guc structure
+ * @rsa_offset: rsa offset w.r.t ggtt base of huc vma
+ *
+ * Triggers a HuC firmware authentication request to the GuC via intel_guc_send
+ * INTEL_GUC_ACTION_AUTHENTICATE_HUC interface. This function is invoked by
+ * intel_huc_auth().
+ *
+ * Return: non-zero code on error
+ */
+int intel_guc_auth_huc(struct intel_guc *guc, u32 rsa_offset)
+{
+   u32 action[] = {
+   INTEL_GUC_ACTION_AUTHENTICATE_HUC,
+   rsa_offset
+   };
+
+   return intel_guc_send(guc, action, ARRAY_SIZE(action));
+}
+
 int intel_uc_init_hw(struct drm_i915_private *dev_priv)
 {
struct