All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Kandpal, Suraj" <suraj.kandpal@intel.com>
To: "Gupta, Anshuman" <anshuman.gupta@intel.com>,
	"Li, Juston" <juston.li@intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>
Cc: "seanpaul@chromium.org" <seanpaul@chromium.org>,
	"C, Ramalingam" <ramalingam.c@intel.com>,
	"Vivi, Rodrigo" <rodrigo.vivi@intel.com>
Subject: Re: [Intel-gfx] [PATCH v6 2/3] drm/i915/hdcp: read RxInfo once when reading RepeaterAuth_Send_ReceiverID_List
Date: Fri, 3 Sep 2021 05:23:33 +0000	[thread overview]
Message-ID: <BN9PR11MB5305FB4F6027932200B15E85E3CF9@BN9PR11MB5305.namprd11.prod.outlook.com> (raw)
In-Reply-To: <9b05d24bb4944e5b9742e83b6c3688c6@intel.com>

Hi ,

I have tested the patch 20856 against ci_drm_10499 and the patch 20921 against ci_drm_10537 kernel using the IGT kms_test_protection test on TGL platform with the following setups:
- HCDP2.2 Monitor connected to HDCP 2.2 Monitor
- HCDP2.2 Monitor connected to HDCP 1.4 Monitor
- HCDP1.4 Monitor connected to HDCP 1.4 Monitor
- HCDP2.2 Monitor standalone
- HDCP1.4 Monitor standalone 

I did not see any delta between the Patchwork and CI_DRM kernel and all DP MST Scenarios seem to work fine. We can go ahead and merge this patch.

 

Tested-by: Suraj K <suraj.kandpal@intel.com>

-----Original Message-----
From: Gupta, Anshuman <anshuman.gupta@intel.com> 
Sent: Thursday, September 2, 2021 6:39 PM
To: Li, Juston <juston.li@intel.com>; intel-gfx@lists.freedesktop.org; Kandpal, Suraj <suraj.kandpal@intel.com>
Cc: seanpaul@chromium.org; C, Ramalingam <ramalingam.c@intel.com>; Vivi, Rodrigo <rodrigo.vivi@intel.com>
Subject: RE: [Intel-gfx] [PATCH v6 2/3] drm/i915/hdcp: read RxInfo once when reading RepeaterAuth_Send_ReceiverID_List



> -----Original Message-----
> From: Li, Juston <juston.li@intel.com>
> Sent: Friday, August 20, 2021 12:19 AM
> To: intel-gfx@lists.freedesktop.org
> Cc: seanpaul@chromium.org; Gupta, Anshuman <anshuman.gupta@intel.com>; 
> C, Ramalingam <ramalingam.c@intel.com>; Vivi, Rodrigo 
> <rodrigo.vivi@intel.com>; Li, Juston <juston.li@intel.com>
> Subject: [Intel-gfx] [PATCH v6 2/3] drm/i915/hdcp: read RxInfo once 
> when reading RepeaterAuth_Send_ReceiverID_List
> 
> When reading RepeaterAuth_Send_ReceiverID_List, RxInfo is read by 
> itself once to retrieve the DEVICE_COUNT to calculate the size of the 
> ReceiverID list then read a second time as a part of reading ReceiverID list.
> 
> On some MST docking stations, RxInfo can only be read after the 
> RxStatus READY bit is set otherwise the read will return -EIO. The 
> spec states that the READY bit should be cleared as soon as RxInfo has been read.
> 
> In this case, the first RxInfo read succeeds but after the READY bit 
> is cleared, the second read fails.
> 
> Fix it by reading RxInfo once and storing it before reading the rest 
> of RepeaterAuth_Send_ReceiverID_List once we know the size.
> 
> Modify get_receiver_id_list_size() to read and store RxInfo in the 
> message buffer and also parse DEVICE_COUNT so we know the size of 
> RepeaterAuth_Send_ReceiverID_List.
> 
> Afterwards, retrieve the rest of the message at the offset for seq_num_V.
> 
> Changes in v5:
> - Don't change the offset define for Send_ReceiverID_List
>   When reading, update message offset to account for RxInfo being read
> 
> Changes in v4:
> - rebase and edit commit message
> 
> Changes in v3:
> - remove comment
> 
> Changes in v2:
> - remove unnecessary moving of drm_i915_private from patch 1
> 
> Signed-off-by: Juston Li <juston.li@intel.com>
> Reviewed-by: Ramalingam C <ramalingam.c@intel.com>
> Reviewed-by: Anshuman Gupta <anshuman.gupta@intel.com>
Adding Suraj to this thread.
> ---
>  drivers/gpu/drm/i915/display/intel_dp_hdcp.c | 31 
> ++++++++++----------
>  1 file changed, 16 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> index 1d0096654776..fbfb3c4d16bb 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> @@ -496,11 +496,10 @@ get_rxinfo_hdcp_1_dev_downstream(struct
> intel_digital_port *dig_port, bool *hdcp  }
> 
>  static
> -ssize_t get_receiver_id_list_size(struct intel_digital_port 
> *dig_port)
> +ssize_t get_receiver_id_list_rx_info(struct intel_digital_port 
> +*dig_port, u32 *dev_cnt, u8 *byte)
>  {
> -u8 rx_info[HDCP_2_2_RXINFO_LEN];
> -u32 dev_cnt;
>  ssize_t ret;
> +u8 *rx_info = byte;
> 
>  ret = drm_dp_dpcd_read(&dig_port->dp.aux,
>         DP_HDCP_2_2_REG_RXINFO_OFFSET, @@ -508,15
> +507,11 @@ ssize_t get_receiver_id_list_size(struct intel_digital_port
> *dig_port)
>  if (ret != HDCP_2_2_RXINFO_LEN)
>  return ret >= 0 ? -EIO : ret;
> 
> -dev_cnt = (HDCP_2_2_DEV_COUNT_HI(rx_info[0]) << 4 |
> +*dev_cnt = (HDCP_2_2_DEV_COUNT_HI(rx_info[0]) << 4 |
>     HDCP_2_2_DEV_COUNT_LO(rx_info[1]));
> 
> -if (dev_cnt > HDCP_2_2_MAX_DEVICE_COUNT) -dev_cnt = 
> HDCP_2_2_MAX_DEVICE_COUNT;
> -
> -ret = sizeof(struct hdcp2_rep_send_receiverid_list) - 
> -HDCP_2_2_RECEIVER_IDS_MAX_LEN + -(dev_cnt * 
> HDCP_2_2_RECEIVER_ID_LEN);
> +if (*dev_cnt > HDCP_2_2_MAX_DEVICE_COUNT) *dev_cnt = 
> +HDCP_2_2_MAX_DEVICE_COUNT;
> 
>  return ret;
>  }
> @@ -534,6 +529,7 @@ int intel_dp_hdcp2_read_msg(struct 
> intel_digital_port *dig_port,  const struct hdcp2_dp_msg_data 
> *hdcp2_msg_data;  ktime_t msg_end = ktime_set(0, 0);  bool 
> msg_expired;
> +u32 dev_cnt;
> 
>  hdcp2_msg_data = get_hdcp2_dp_msg_data(msg_id);  if (!hdcp2_msg_data) 
> @@ -546,17 +542,22 @@ int intel_dp_hdcp2_read_msg(struct 
> intel_digital_port *dig_port,
> 
>  hdcp->cp_irq_count_cached = atomic_read(&hdcp->cp_irq_count);
> 
> +/* DP adaptation msgs has no msg_id */
> +byte++;
> +
>  if (msg_id == HDCP_2_2_REP_SEND_RECVID_LIST) { -ret = 
> get_receiver_id_list_size(dig_port);
> +ret = get_receiver_id_list_rx_info(dig_port, &dev_cnt, byte);
>  if (ret < 0)
>  return ret;
> 
> -size = ret;
> +byte += ret;
> +size = sizeof(struct hdcp2_rep_send_receiverid_list) - 
> +HDCP_2_2_RXINFO_LEN - HDCP_2_2_RECEIVER_IDS_MAX_LEN
> +
> +(dev_cnt * HDCP_2_2_RECEIVER_ID_LEN); offset += HDCP_2_2_RXINFO_LEN;
>  }
> -bytes_to_recv = size - 1;
> 
> -/* DP adaptation msgs has no msg_id */
> -byte++;
> +bytes_to_recv = size - 1;
> 
>  while (bytes_to_recv) {
>  len = bytes_to_recv > DP_AUX_MAX_PAYLOAD_BYTES ?
> --
> 2.31.1



  reply	other threads:[~2021-09-03  5:23 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-19 18:48 [Intel-gfx] [PATCH v6 0/3] drm/i915/hdcp: HDCP2.2 MST dock fixes Juston Li
2021-08-19 18:48 ` [Intel-gfx] [PATCH v6 1/3] drm/i915/hdcp: update cp_irq_count_cached in intel_dp_hdcp2_read_msg() Juston Li
2021-09-02 13:08   ` Gupta, Anshuman
2021-09-03  5:23     ` Kandpal, Suraj
2021-08-19 18:48 ` [Intel-gfx] [PATCH v6 2/3] drm/i915/hdcp: read RxInfo once when reading RepeaterAuth_Send_ReceiverID_List Juston Li
2021-09-02 13:09   ` Gupta, Anshuman
2021-09-03  5:23     ` Kandpal, Suraj [this message]
2021-08-19 18:48 ` [Intel-gfx] [PATCH v6 3/3] drm/i915/hdcp: reuse rx_info for mst stream type1 capability check Juston Li
2021-09-02 13:10   ` Gupta, Anshuman
2021-09-03  4:46     ` Kandpal, Suraj
2021-08-19 20:49 ` [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/hdcp: HDCP2.2 MST dock fixes (rev7) Patchwork
2021-08-19 22:34 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2021-08-30 19:15 ` [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/hdcp: HDCP2.2 MST dock fixes (rev8) Patchwork
2021-08-30 21:11 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2021-09-07  4:21   ` Gupta, Anshuman
2021-09-07  5:33     ` Gupta, Anshuman
2021-09-08  4:52       ` Kattamanchi, JaswanthX
2021-09-09  8:03   ` Anshuman Gupta
2021-09-07  5:54 ` 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=BN9PR11MB5305FB4F6027932200B15E85E3CF9@BN9PR11MB5305.namprd11.prod.outlook.com \
    --to=suraj.kandpal@intel.com \
    --cc=anshuman.gupta@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=juston.li@intel.com \
    --cc=ramalingam.c@intel.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.