On 4/27/2023 10:25 PM, Saarinen, Jani wrote:
Hi,
-----Original Message-----
From: Intel-gfx <intel-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Ye, Tony
Sent: perjantai 28. huhtikuuta 2023 6.11
To: Ceraolo Spurio, Daniele <daniele.ceraolospurio@xxxxxxxxx>; intel-
gfx@xxxxxxxxxxxxxxxxxxxxx
Cc: Teres Alexis, Alan Previn <alan.previn.teres.alexis@xxxxxxxxx>; dri-
devel@xxxxxxxxxxxxxxxxxxxxx; Zhang, Carl <carl.zhang@xxxxxxxxx>
Subject: Re: [PATCH 0/8] drm/i915: HuC loading and authentication for
MTL
Acked-by: Tony Ye <tony.ye@xxxxxxxxx>
CI results would be also good to look at before... https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117080v1/index.html?
For some reason no single MTL tests and many aborts...
Is there any way to know if the MTLs where just offline or if they
failed driver load? This is working fine in my local MTL testing, so not
sure what might be broken.
Regarding the aborts, looks like I have broken DG2 reset. I tested a
previous local version of this on DG2 but not the latest, so I must've
broken something when refactoring the code. I'll figure it out and fix
it up.
Daniele
Thanks,
Tony
On 4/27/2023 7:34 PM, Daniele Ceraolo Spurio wrote:
The HuC loading and authentication flow is once again changing and a
new "clear-media only" authentication step is introduced. The flow is
as
follows:
1) The HuC is loaded via DMA - same as all non-GSC HuC binaries.
2) The HuC is authenticated by the GuC - this is the same step as
performed for all non-GSC HuC binaries and re-uses the same code, but
it is now resulting in a partial authentication that only allows
clear-media workloads.
3) The HuC is fully authenticated for all workloads by the GSC - this
is done via a new PXP command, submitted via the GSCCS.
The advantage of this new flow is that we can start processing
clear-media workloads without having to wait for the GSC to be ready,
which can take several seconds.
As part of this change, the HuC status getparam has been updated with
a new value to indicate a partial authentication. Note tha the media
driver is checking for value > 0 for clear media workloads, so no
changes are required in userspace for that to work.
The SW proxy series [1] has been included, squashed in a single patch,
as some of some of the patches in this series depend on it. This is
not a functional dependencies, the patches just touch the same code;
the proxy patches are planned to be merged first, so it is easier to
base the new patches on top of it to avoid having to rebase them later.
[1]https://patchwork.freedesktop.org/series/115806/
Cc: Alan Previn<alan.previn.teres.alexis@xxxxxxxxx>
Cc: Tony Ye<tony.ye@xxxxxxxxx>
Daniele Ceraolo Spurio (8):
DO NOT REVIEW: drm/i915: Add support for MTL GSC SW Proxy
drm/i915/uc: perma-pin firmwares
drm/i915/huc: Parse the GSC-enabled HuC binary
drm/i915/huc: Load GSC-enabled HuC via DMA xfer if the fuse says so
drm/i915/huc: differentiate the 2 steps of the MTL HuC auth flow
drm/i915/mtl/huc: auth HuC via GSC
drm/i915/mtl/huc: Use the media gt for the HuC getparam
drm/i915/huc: define HuC FW version for MTL
drivers/gpu/drm/i915/Makefile | 1 +
drivers/gpu/drm/i915/gt/intel_ggtt.c | 3 +
drivers/gpu/drm/i915/gt/intel_gt_irq.c | 22 +-
drivers/gpu/drm/i915/gt/intel_gt_regs.h | 3 +
.../drm/i915/gt/uc/intel_gsc_meu_headers.h | 74 +++
drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.c | 424 ++++++++++++++++++
drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.h | 18 +
drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c | 89 +++-
drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.h | 17 +-
.../i915/gt/uc/intel_gsc_uc_heci_cmd_submit.c | 2 +-
.../i915/gt/uc/intel_gsc_uc_heci_cmd_submit.h | 1 +
drivers/gpu/drm/i915/gt/uc/intel_guc.c | 2 +-
drivers/gpu/drm/i915/gt/uc/intel_huc.c | 182 +++++---
drivers/gpu/drm/i915/gt/uc/intel_huc.h | 26 +-
drivers/gpu/drm/i915/gt/uc/intel_huc_fw.c | 214 ++++++++-
drivers/gpu/drm/i915/gt/uc/intel_huc_fw.h | 6 +-
drivers/gpu/drm/i915/gt/uc/intel_huc_print.h | 21 +
drivers/gpu/drm/i915/gt/uc/intel_uc.c | 10 +-
drivers/gpu/drm/i915/gt/uc/intel_uc.h | 2 +
drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 120 ++---
drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h | 9 +-
drivers/gpu/drm/i915/i915_getparam.c | 6 +-
drivers/gpu/drm/i915/i915_reg.h | 3 +
.../drm/i915/pxp/intel_pxp_cmd_interface_43.h | 14 +-
drivers/gpu/drm/i915/pxp/intel_pxp_huc.c | 2 +-
drivers/misc/mei/Kconfig | 2 +-
drivers/misc/mei/Makefile | 1 +
drivers/misc/mei/gsc_proxy/Kconfig | 14 +
drivers/misc/mei/gsc_proxy/Makefile | 7 +
drivers/misc/mei/gsc_proxy/mei_gsc_proxy.c | 208 +++++++++
include/drm/i915_component.h | 3 +-
include/drm/i915_gsc_proxy_mei_interface.h | 53 +++
include/uapi/drm/i915_drm.h | 3 +-
33 files changed, 1428 insertions(+), 134 deletions(-)
create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_gsc_meu_headers.h
create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.c
create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.h
create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_huc_print.h
create mode 100644 drivers/misc/mei/gsc_proxy/Kconfig
create mode 100644 drivers/misc/mei/gsc_proxy/Makefile
create mode 100644 drivers/misc/mei/gsc_proxy/mei_gsc_proxy.c
create mode 100644 include/drm/i915_gsc_proxy_mei_interface.h