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



Reply via email to