On Tue, 2022-12-20 at 07:19 +0000, Kandpal, Suraj wrote:
> >
> > On Wed, 2022-12-14 at 14:37 +0530, Suraj Kandpal wrote:
> >
> >
> > Alan: See my review comment on patch #1 - i believe most of this function
> > above
> > (intel_hdcp_gsc_msg_send) could go into a common
> > intel_gsc_engine_send_hecipkt function (in a new gsc-heci specific file,
> > i.e. intel_gsc_heci.c) that lives in the uc/gsc domain, not here in
> > display. In fact
> > the "struct intel_hdcp_gsc_message" also also be renamed to be "struct
> > intel_gsc_heci_pkt_info" and its definition moved over to (and included
> > from) a
> > header in the uc/gsc domain.
> > I believe it make sense for the caller to allocate the objects but the
> > common
> > header to have the structure definition and the common function can do the
> > cmd-prep, submission, waiting (and eventually checking of pending-bit).
> >
> I can move a lot of these functions to intel_gsc_fw.c
> But I still don’t see the merit in adding more functions and files in just
> for more readability
>
> Regards,
> Suraj Kandpal
>
Replying back after the offline meeting. So just to recap, my concerns include:
1. In hindsight, "readability" wasn't the correct term - i wanted to highlight
the importance of how we organize the code hierarchy in accordance to the HW
architecture so
that if changes in future hw or workarounds are required, we can eventually can
maintain as much common-hw changes (agnostic to the internals of the heci-pkt)
to a single
layer
2. Also, with regards to the reviewing process, we know that 3 sets of series
are emerging over these coming weeks - gsc-sw-proxy, hdcp and pxp and all of
them are going to be
adding patches for the mtl-gsc-mem-header structure population and the gsc-cs
heci-load-pkt command submission. So it might be better for reviewers and
ourselves if we can
maintain roughly the same function names/locations/responsibilities as these
coming series add-on or modify those common codes/..
So as per this mornings, meeting that included Daniele, here is the summary
proposal we agreed on - that adds some common helpers while keeping other
common-hw resposibilities
as caller-handled (to cater for different e2e flows):
Create new common utility files with common functions:
1. gt/uc/intel_gsc_uc_heci_cmd_submit.h
1. define the mtl-mem-header as per now
2. Add the "host-session-handle-rules" we need to add BIT-MASKS
for different usages for host_session_handle
uint64_t: (details of these bitmasks can be discussed
thru review but here is what we concluded from mtg:
- BITMASKS [63...60] (0000 = hdcp, 00001 =
pxp-single, (downstrm-only 00002 = pxp-multi), future...)
- caller must obey - verified
by intel_gsc_uc_heci_cmd_emit_mtl_memhdr
- BITMASKS [59...50] (caller-mask)
- caller can fill this with
anything it wants
- PXP would use this
arb-session-rolling-counter, hdcp could use this for pipe differentiation
- BITMASKS [49...00] (randomly generated number)
- caller to fill this with
anything it wants but really should be randomly generated
* must be unique per calling process + usage.
2. gt/uc/intel_gsc_uc_heci_cmd_submit.c
a. helper -- intel_gsc_uc_heci_cmd_emit_mtl_memhdr
params:
- virt-ptr to the mem header (pinned
object)
- message_address_type
- params = size
- flags (after
- host-session = (has to verify in the
rules of "@HSH)" based on message_address_type)
b. common = intel_gsc_uc_heci_cmd_submit_packet
(does the same thing as the current code but an
independant function,
NOT overloading the gsc-load or
heci-submission based on "pkt" as current patch)
- mostly the same code
- caller will do mtl-header
pre-population using the helper 2-a
- takes in the objects (from
caller), creates the request internally
- no pending bit management -
caller handles that the checking of "pending-bit" + "gsc_message_handle" echo
c. for PXP arb session - dont use priveleged instruction, use
global instruction.
- need to verify if this works - testing was
done to use GGTT like multi-session - expected to work.
- if works, we can use the same 2-b submission
helper