public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Ramalingam C <ramalingam.c@intel.com>
To: Sean Paul <seanpaul@chromium.org>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	"Vivi, Rodrigo" <rodrigo.vivi@intel.com>
Subject: Re: [PATCH 1/8] drm/i915: Handle failure from 2nd stage HDCP auth
Date: Fri, 2 Feb 2018 20:56:01 +0530	[thread overview]
Message-ID: <83d3cc50-ac33-0808-2b46-c01d5a9d4eb5@intel.com> (raw)
In-Reply-To: <CAOw6vbLf7sDCVUFNJAtF-J9j_ohFm3ne_WjZvO_Cn_3eeyeKxg@mail.gmail.com>



On Friday 02 February 2018 08:52 PM, Sean Paul wrote:
> On Fri, Feb 2, 2018 at 9:51 AM, Ramalingam C <ramalingam.c@intel.com> wrote:
>>
>> On Friday 02 February 2018 08:15 PM, Sean Paul wrote:
>>> On Fri, Feb 02, 2018 at 07:52:24PM +0530, Ramalingam C wrote:
>>>>
>>>> On Friday 02 February 2018 07:39 PM, Sean Paul wrote:
>>>>> On Fri, Feb 02, 2018 at 04:15:13PM +0530, Ramalingam C wrote:
>>>>>> We enable the HDCP encryption as a part of first stage authentication.
>>>>>> So when second stage authentication fails, we need to disable the HDCP
>>>>>> encryption and signalling.
>>>>>>
>>>>>> This patch handles above requirement.
>>>>>>
>>>>>> For reusing the _intel_hdcp_disable from generic authentication flow,
>>>>>> this patch retain the reference to connector till the generic hdcp
>>>>>> flow.
>>>>>> This will be handy to provide the connector details in HDCP enable
>>>>>> debug info.
>>>>>>
>>>>>> Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
>>>>>> ---
>>>>>>     drivers/gpu/drm/i915/intel_hdcp.c | 41
>>>>>> +++++++++++++++++++++++----------------
>>>>>>     1 file changed, 24 insertions(+), 17 deletions(-)
>>>>>>
>>>>>> diff --git a/drivers/gpu/drm/i915/intel_hdcp.c
>>>>>> b/drivers/gpu/drm/i915/intel_hdcp.c
>>>>>> index b97184eccd9c..0021511ae4d7 100644
>>>>>> --- a/drivers/gpu/drm/i915/intel_hdcp.c
>>>>>> +++ b/drivers/gpu/drm/i915/intel_hdcp.c
>>>>>> @@ -16,6 +16,8 @@
>>>>>>     #define KEY_LOAD_TRIES       5
>>>>>> +static int _intel_hdcp_disable(struct intel_connector *connector);
>>>>>> +
>>>>>>     static int intel_hdcp_poll_ksv_fifo(struct intel_digital_port
>>>>>> *intel_dig_port,
>>>>>>                                      const struct intel_hdcp_shim *shim)
>>>>>>     {
>>>>>> @@ -138,17 +140,24 @@ bool intel_hdcp_is_ksv_valid(u8 *ksv)
>>>>>>          return true;
>>>>>>     }
>>>>>> +static
>>>>>> +struct intel_digital_port *conn_to_dig_port(struct intel_connector
>>>>>> *connector)
>>>>>> +{
>>>>>> +       return enc_to_dig_port(&connector->encoder->base);
>>>>>> +}
>>>>>> +
>>>>>>     /* Implements Part 2 of the HDCP authorization procedure */
>>>>>>     static
>>>>>> -int intel_hdcp_auth_downstream(struct intel_digital_port
>>>>>> *intel_dig_port,
>>>>>> -                              const struct intel_hdcp_shim *shim)
>>>>>> +int intel_hdcp_auth_downstream(struct intel_connector *connector)
>>>>>>     {
>>>>>>          struct drm_i915_private *dev_priv;
>>>>>>          u32 vprime, sha_text, sha_leftovers, rep_ctl;
>>>>>>          u8 bstatus[2], num_downstream, *ksv_fifo;
>>>>>>          int ret, i, j, sha_idx;
>>>>>> +       const struct intel_hdcp_shim *shim = connector->hdcp_shim;
>>>>>> +       struct intel_digital_port *intel_dig_port =
>>>>>> conn_to_dig_port(connector);
>>>>>> -       dev_priv = intel_dig_port->base.base.dev->dev_private;
>>>>>> +       dev_priv = to_i915(connector->base.dev);
>>>>>>          ret = intel_hdcp_poll_ksv_fifo(intel_dig_port, shim);
>>>>>>          if (ret) {
>>>>>> @@ -385,8 +394,7 @@ int intel_hdcp_auth_downstream(struct
>>>>>> intel_digital_port *intel_dig_port,
>>>>>>     }
>>>>>>     /* Implements Part 1 of the HDCP authorization procedure */
>>>>>> -static int intel_hdcp_auth(struct intel_digital_port *intel_dig_port,
>>>>>> -                          const struct intel_hdcp_shim *shim)
>>>>>> +static int intel_hdcp_auth(struct intel_connector *connector)
>>>>>>     {
>>>>>>          struct drm_i915_private *dev_priv;
>>>>>>          enum port port;
>>>>>> @@ -405,9 +413,10 @@ static int intel_hdcp_auth(struct
>>>>>> intel_digital_port *intel_dig_port,
>>>>>>                  u8 shim[DRM_HDCP_RI_LEN];
>>>>>>          } ri;
>>>>>>          bool repeater_present;
>>>>>> +       const struct intel_hdcp_shim *shim = connector->hdcp_shim;
>>>>>> +       struct intel_digital_port *intel_dig_port =
>>>>>> conn_to_dig_port(connector);
>>>>>> -       dev_priv = intel_dig_port->base.base.dev->dev_private;
>>>>>> -
>>>>>> +       dev_priv = to_i915(connector->base.dev);
>>>>>>          port = intel_dig_port->base.port;
>>>>>>          /* Initialize An with 2 random values and acquire it */
>>>>>> @@ -498,19 +507,18 @@ static int intel_hdcp_auth(struct
>>>>>> intel_digital_port *intel_dig_port,
>>>>>>           * on those as well.
>>>>>>           */
>>>>>> -       if (repeater_present)
>>>>>> -               return intel_hdcp_auth_downstream(intel_dig_port,
>>>>>> shim);
>>>>>> +       if (repeater_present) {
>>>>>> +               ret = intel_hdcp_auth_downstream(connector);
>>>>>> +               if (ret) {
>>>>>> +                       _intel_hdcp_disable(connector);
>>>>> If you just call this from _intel_hdcp_enable when intel_hdcp_auth()
>>>>> fails, you
>>>>> can avoid all of this code, it'd just be one line.
>>>> Yes. Thought about that option too. Actually I would prefer having the
>>>> reference of intel_connector untill generic hdcp auth implementation.
>>>> we can pass the intel digital port for encoder specific shims.
>>>>
>>>> This will help me with
>>>>       providing the connector details for state transitions as in next
>>>> patches
>>>>       next steps like SRM passing in for revocation and downstream
>>>> topology
>>>> gathering (perhaps will start with availability of complementing user
>>>> space)
>>>>
>>>> At this point if we dont want this code, I will disable hdcp from enable
>>>> functions.
>>> Yes please. Let's not try to predict the future and keep things as simple
>>> as
>>> possible.
>>>
>>> Sean
>> but patch 3(adding connector info into hdcp state transition debug logs)
>> still needs conenctor ref at auth.
>> Do we still want to drop the connector ref passing? If so we will lose patch
>> 3 too.
> I was thinking about this further, and it doesn't really make sense to
> change some of the messages and not all of them. So perhaps
> middle-of-the-road solution would be to add a new DEBUG_KMS message at
> the beginning of both  _intel_hdcp_enable and _intel_hdcp_disable
> listing the connector name/id and reporting that hdcp is being
> enabled/disabled. That way anything that follows can be attributed to
> that connector. This also avoids having to shuffle the arguments
> around.
>
> Sean
Ok I will add that as v2 of patch 3.

--Ram
>
>> -Ram
>>
>>
>>>> -Ram
>>>>>
>>>>>> +                       return ret;
>>>>>> +               }
>>>>>> +       }
>>>>>>          DRM_DEBUG_KMS("HDCP is enabled (no repeater present)\n");
>>>>>>          return 0;
>>>>>>     }
>>>>>> -static
>>>>>> -struct intel_digital_port *conn_to_dig_port(struct intel_connector
>>>>>> *connector)
>>>>>> -{
>>>>>> -       return
>>>>>> enc_to_dig_port(&intel_attached_encoder(&connector->base)->base);
>>>>>> -}
>>>>>> -
>>>>>>     static int _intel_hdcp_disable(struct intel_connector *connector)
>>>>>>     {
>>>>>>          struct drm_i915_private *dev_priv =
>>>>>> connector->base.dev->dev_private;
>>>>>> @@ -558,8 +566,7 @@ static int _intel_hdcp_enable(struct
>>>>>> intel_connector *connector)
>>>>>>                  return ret;
>>>>>>          }
>>>>>> -       ret = intel_hdcp_auth(conn_to_dig_port(connector),
>>>>>> -                             connector->hdcp_shim);
>>>>>> +       ret = intel_hdcp_auth(connector);
>>>>>>          if (ret) {
>>>>>>                  DRM_ERROR("Failed to authenticate HDCP (%d)\n", ret);
>>>>>>                  return ret;
>>>>>> --
>>>>>> 2.7.4
>>>>>>

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2018-02-02 15:31 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-02 10:45 [PATCH 0/8] Adhering to HDCP1.4 Compliance Test Spec Ramalingam C
2018-02-02 10:45 ` [PATCH 1/8] drm/i915: Handle failure from 2nd stage HDCP auth Ramalingam C
2018-02-02 14:09   ` Sean Paul
2018-02-02 14:22     ` Ramalingam C
2018-02-02 14:45       ` Sean Paul
2018-02-02 14:51         ` Ramalingam C
2018-02-02 15:22           ` Sean Paul
2018-02-02 15:26             ` Ramalingam C [this message]
2018-02-02 10:45 ` [PATCH 2/8] drm/i915: Stop encryption for repeater with no sink Ramalingam C
2018-02-02 14:13   ` Sean Paul
2018-02-02 14:12     ` Ramalingam C
2018-02-02 14:48       ` Sean Paul
2018-02-02 15:03         ` Ramalingam C
2018-02-02 15:19           ` Sean Paul
2018-02-02 10:45 ` [PATCH 3/8] drm/i915: Connector info in HDCP debug msgs Ramalingam C
2018-02-02 14:15   ` Sean Paul
2018-02-02 10:45 ` [PATCH 4/8] drm/i915: Retry HDCP BKSV read Ramalingam C
2018-02-02 14:16   ` Sean Paul
2018-02-02 14:26     ` Ramalingam C
2018-02-02 14:44       ` Sean Paul
2018-02-02 10:45 ` [PATCH 5/8] drm/i915: Optimize HDCP key load Ramalingam C
2018-02-02 14:18   ` Sean Paul
2018-02-02 14:33     ` Ramalingam C
2018-02-02 15:24       ` Sean Paul
2018-02-02 10:45 ` [PATCH 6/8] drm/i915: Detect panel's hdcp capability Ramalingam C
2018-02-02 14:24   ` Sean Paul
2018-02-02 14:38     ` Ramalingam C
2018-02-02 15:40       ` Sean Paul
2018-02-02 10:45 ` [PATCH 7/8] drm/i915: Reauthenticate HDCP on failure Ramalingam C
2018-02-02 14:37   ` Sean Paul
2018-02-02 15:05     ` Ramalingam C
2018-02-02 10:45 ` [PATCH 8/8] drm/i915: fix misalignment in HDCP register def Ramalingam C
2018-02-02 14:38   ` Sean Paul
2018-02-02 11:10 ` ✓ Fi.CI.BAT: success for Adhering to HDCP1.4 Compliance Test Spec Patchwork
2018-02-02 12:50 ` ✗ Fi.CI.IGT: failure " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83d3cc50-ac33-0808-2b46-c01d5a9d4eb5@intel.com \
    --to=ramalingam.c@intel.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=rodrigo.vivi@intel.com \
    --cc=seanpaul@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox