* [Intel-gfx] [PATCH] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function
@ 2023-05-04 3:37 Suraj Kandpal
2023-05-04 4:14 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Suraj Kandpal @ 2023-05-04 3:37 UTC (permalink / raw)
To: intel-gfx
Since topology state is being added to drm_atomic_state now all
drm_modeset_lock required are being taken from core this raises
an issue when we try to loop over connector and assign vcpi id to
our streams as we did not have atomic state to derive acquire_ctx
from hence we fill in stream info if dpmst encoder is found before
enabling hdcp.
Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
drivers/gpu/drm/i915/display/intel_ddi.c | 3 +-
drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 +-
drivers/gpu/drm/i915/display/intel_hdcp.c | 50 ++++++++++++++++++---
drivers/gpu/drm/i915/display/intel_hdcp.h | 3 +-
4 files changed, 49 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index 29e4bfab4635..182b8815b20d 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3264,9 +3264,10 @@ static void intel_enable_ddi(struct intel_atomic_state *state,
/* Enable hdcp if it's desired */
if (conn_state->content_protection ==
DRM_MODE_CONTENT_PROTECTION_DESIRED)
- intel_hdcp_enable(to_intel_connector(conn_state->connector),
+ intel_hdcp_enable(state, to_intel_connector(conn_state->connector),
crtc_state,
(u8)conn_state->hdcp_content_type);
+
}
static void intel_disable_ddi_dp(struct intel_atomic_state *state,
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index 2c49d9ab86a2..c92b00ceaae0 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -800,7 +800,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state,
/* Enable hdcp if it's desired */
if (conn_state->content_protection ==
DRM_MODE_CONTENT_PROTECTION_DESIRED)
- intel_hdcp_enable(to_intel_connector(conn_state->connector),
+ intel_hdcp_enable(state, to_intel_connector(conn_state->connector),
pipe_config,
(u8)conn_state->hdcp_content_type);
}
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
index e1dc3d96e708..c8cdf25914f7 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
@@ -30,7 +30,8 @@
#define KEY_LOAD_TRIES 5
#define HDCP2_LC_RETRY_CNT 3
-static int intel_conn_to_vcpi(struct intel_connector *connector)
+static int intel_conn_to_vcpi(struct intel_connector *connector,
+ struct drm_atomic_state *state)
{
struct drm_dp_mst_topology_mgr *mgr;
struct drm_dp_mst_atomic_payload *payload;
@@ -42,7 +43,7 @@ static int intel_conn_to_vcpi(struct intel_connector *connector)
return 0;
mgr = connector->port->mgr;
- drm_modeset_lock(&mgr->base.lock, NULL);
+ drm_modeset_lock(&mgr->base.lock, state->acquire_ctx);
mst_state = to_drm_dp_mst_topology_state(mgr->base.state);
payload = drm_atomic_get_mst_payload_state(mst_state, connector->port);
if (drm_WARN_ON(mgr->dev, !payload))
@@ -54,7 +55,6 @@ static int intel_conn_to_vcpi(struct intel_connector *connector)
goto out;
}
out:
- drm_modeset_unlock(&mgr->base.lock);
return vcpi;
}
@@ -99,7 +99,6 @@ intel_hdcp_required_content_stream(struct intel_digital_port *dig_port)
if (!enforce_type0 && !dig_port->hdcp_mst_type1_capable)
enforce_type0 = true;
- data->streams[data->k].stream_id = intel_conn_to_vcpi(connector);
data->k++;
/* if there is only one active stream */
@@ -122,6 +121,41 @@ intel_hdcp_required_content_stream(struct intel_digital_port *dig_port)
return 0;
}
+static int
+intel_hdcp_get_content_stream_id(struct intel_digital_port *dig_port,
+ struct intel_atomic_state *state)
+{
+ struct drm_connector_list_iter conn_iter;
+ struct intel_digital_port *conn_dig_port;
+ struct intel_connector *connector;
+ struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
+ struct hdcp_port_data *data = &dig_port->hdcp_port_data;
+
+ data->k = 0;
+
+ drm_connector_list_iter_begin(&i915->drm, &conn_iter);
+ for_each_intel_connector_iter(connector, &conn_iter) {
+ if (connector->base.status == connector_status_disconnected)
+ continue;
+
+ if (!intel_encoder_is_mst(intel_attached_encoder(connector)))
+ continue;
+
+ conn_dig_port = intel_attached_dig_port(connector);
+ if (conn_dig_port != dig_port)
+ continue;
+
+ data->streams[data->k].stream_id = intel_conn_to_vcpi(connector, &state->base);
+ data->k++;
+
+ /* if there is only one active stream */
+ if (dig_port->dp.active_mst_links <= 1)
+ break;
+ }
+ drm_connector_list_iter_end(&conn_iter);
+
+ return 0;
+}
static int intel_hdcp_prepare_streams(struct intel_connector *connector)
{
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
@@ -2333,7 +2367,8 @@ int intel_hdcp_init(struct intel_connector *connector,
return 0;
}
-int intel_hdcp_enable(struct intel_connector *connector,
+int intel_hdcp_enable(struct intel_atomic_state *state,
+ struct intel_connector *connector,
const struct intel_crtc_state *pipe_config, u8 content_type)
{
struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
@@ -2374,6 +2409,9 @@ int intel_hdcp_enable(struct intel_connector *connector,
* is capable of HDCP2.2, it is preferred to use HDCP2.2.
*/
if (intel_hdcp2_capable(connector)) {
+ if (intel_crtc_has_type(pipe_config, INTEL_OUTPUT_DP_MST))
+ intel_hdcp_get_content_stream_id(dig_port, state);
+
ret = _intel_hdcp2_enable(connector);
if (!ret)
check_link_interval = DRM_HDCP2_CHECK_PERIOD_MS;
@@ -2486,7 +2524,7 @@ void intel_hdcp_update_pipe(struct intel_atomic_state *state,
}
if (desired_and_not_enabled || content_protection_type_changed)
- intel_hdcp_enable(connector,
+ intel_hdcp_enable(state, connector,
crtc_state,
(u8)conn_state->hdcp_content_type);
}
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.h b/drivers/gpu/drm/i915/display/intel_hdcp.h
index 8f53b0c7fe5c..a6f4bf93f9bf 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.h
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.h
@@ -28,7 +28,8 @@ void intel_hdcp_atomic_check(struct drm_connector *connector,
int intel_hdcp_init(struct intel_connector *connector,
struct intel_digital_port *dig_port,
const struct intel_hdcp_shim *hdcp_shim);
-int intel_hdcp_enable(struct intel_connector *connector,
+int intel_hdcp_enable(struct intel_atomic_state *state,
+ struct intel_connector *connector,
const struct intel_crtc_state *pipe_config, u8 content_type);
int intel_hdcp_disable(struct intel_connector *connector);
void intel_hdcp_update_pipe(struct intel_atomic_state *state,
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function
2023-05-04 3:37 [Intel-gfx] [PATCH] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function Suraj Kandpal
@ 2023-05-04 4:14 ` Patchwork
2023-05-04 5:24 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2023-05-10 14:52 ` [Intel-gfx] [PATCH] " Jani Nikula
2 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2023-05-04 4:14 UTC (permalink / raw)
To: Suraj Kandpal; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 4029 bytes --]
== Series Details ==
Series: drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function
URL : https://patchwork.freedesktop.org/series/117261/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_13105 -> Patchwork_117261v1
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/index.html
Participating hosts (38 -> 37)
------------------------------
Missing (1): fi-snb-2520m
Known issues
------------
Here are the changes found in Patchwork_117261v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_selftest@live@slpc:
- bat-rpls-1: NOTRUN -> [DMESG-WARN][1] ([i915#6367])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/bat-rpls-1/igt@i915_selftest@live@slpc.html
* igt@kms_chamelium_hpd@common-hpd-after-suspend:
- bat-rpls-1: NOTRUN -> [SKIP][2] ([i915#7828])
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/bat-rpls-1/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
* igt@kms_pipe_crc_basic@suspend-read-crc:
- bat-rpls-1: NOTRUN -> [SKIP][3] ([i915#1845])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/bat-rpls-1/igt@kms_pipe_crc_basic@suspend-read-crc.html
#### Possible fixes ####
* igt@i915_selftest@live@requests:
- {bat-mtlp-8}: [ABORT][4] ([i915#4983] / [i915#7920]) -> [PASS][5]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/bat-mtlp-8/igt@i915_selftest@live@requests.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/bat-mtlp-8/igt@i915_selftest@live@requests.html
* igt@i915_selftest@live@reset:
- bat-rpls-1: [ABORT][6] ([i915#4983] / [i915#7461] / [i915#8347] / [i915#8384]) -> [PASS][7]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/bat-rpls-1/igt@i915_selftest@live@reset.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/bat-rpls-1/igt@i915_selftest@live@reset.html
* igt@kms_pipe_crc_basic@nonblocking-crc@pipe-d-dp-1:
- bat-dg2-8: [FAIL][8] ([i915#7932]) -> [PASS][9]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/bat-dg2-8/igt@kms_pipe_crc_basic@nonblocking-crc@pipe-d-dp-1.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/bat-dg2-8/igt@kms_pipe_crc_basic@nonblocking-crc@pipe-d-dp-1.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
[i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
[i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367
[i915#6645]: https://gitlab.freedesktop.org/drm/intel/issues/6645
[i915#7461]: https://gitlab.freedesktop.org/drm/intel/issues/7461
[i915#7699]: https://gitlab.freedesktop.org/drm/intel/issues/7699
[i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
[i915#7920]: https://gitlab.freedesktop.org/drm/intel/issues/7920
[i915#7932]: https://gitlab.freedesktop.org/drm/intel/issues/7932
[i915#8347]: https://gitlab.freedesktop.org/drm/intel/issues/8347
[i915#8384]: https://gitlab.freedesktop.org/drm/intel/issues/8384
Build changes
-------------
* Linux: CI_DRM_13105 -> Patchwork_117261v1
CI-20190529: 20190529
CI_DRM_13105: e9c4e0f955197134304733e2417f72ce6392cb30 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7277: 1cb3507f3ff28d11bd5cfabcde576fe78ddab571 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_117261v1: e9c4e0f955197134304733e2417f72ce6392cb30 @ git://anongit.freedesktop.org/gfx-ci/linux
### Linux commits
82d3004e095d drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/index.html
[-- Attachment #2: Type: text/html, Size: 4711 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function
2023-05-04 3:37 [Intel-gfx] [PATCH] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function Suraj Kandpal
2023-05-04 4:14 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
@ 2023-05-04 5:24 ` Patchwork
2023-05-10 14:52 ` [Intel-gfx] [PATCH] " Jani Nikula
2 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2023-05-04 5:24 UTC (permalink / raw)
To: Suraj Kandpal; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 11821 bytes --]
== Series Details ==
Series: drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function
URL : https://patchwork.freedesktop.org/series/117261/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_13105_full -> Patchwork_117261v1_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_117261v1_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_117261v1_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (7 -> 7)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_117261v1_full:
### IGT changes ###
#### Possible regressions ####
* igt@i915_pm_rps@waitboost:
- shard-apl: [PASS][1] -> [FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-apl7/igt@i915_pm_rps@waitboost.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-apl2/igt@i915_pm_rps@waitboost.html
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses.
They do not affect the overall result.
* igt@gem_exec_whisper@basic-contexts-priority-all:
- {shard-tglu}: [PASS][3] -> [DMESG-WARN][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-tglu-2/igt@gem_exec_whisper@basic-contexts-priority-all.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-tglu-8/igt@gem_exec_whisper@basic-contexts-priority-all.html
Known issues
------------
Here are the changes found in Patchwork_117261v1_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_exec_endless@dispatch@rcs0:
- shard-apl: [PASS][5] -> [TIMEOUT][6] ([i915#3778])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-apl7/igt@gem_exec_endless@dispatch@rcs0.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-apl2/igt@gem_exec_endless@dispatch@rcs0.html
* igt@gem_exec_fair@basic-pace-solo@rcs0:
- shard-apl: [PASS][7] -> [FAIL][8] ([i915#2842])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-apl1/igt@gem_exec_fair@basic-pace-solo@rcs0.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-apl1/igt@gem_exec_fair@basic-pace-solo@rcs0.html
* igt@gen9_exec_parse@allowed-single:
- shard-apl: [PASS][9] -> [ABORT][10] ([i915#5566])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-apl1/igt@gen9_exec_parse@allowed-single.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-apl2/igt@gen9_exec_parse@allowed-single.html
* igt@i915_suspend@basic-s3-without-i915:
- shard-snb: [PASS][11] -> [DMESG-WARN][12] ([i915#5090])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-snb6/igt@i915_suspend@basic-s3-without-i915.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-snb6/igt@i915_suspend@basic-s3-without-i915.html
* igt@kms_async_flips@alternate-sync-async-flip@pipe-a-hdmi-a-1:
- shard-glk: [PASS][13] -> [FAIL][14] ([i915#2521])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-glk9/igt@kms_async_flips@alternate-sync-async-flip@pipe-a-hdmi-a-1.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-glk1/igt@kms_async_flips@alternate-sync-async-flip@pipe-a-hdmi-a-1.html
* igt@kms_color@ctm-max@pipe-a-hdmi-a-1:
- shard-snb: NOTRUN -> [SKIP][15] ([fdo#109271]) +27 similar issues
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-snb1/igt@kms_color@ctm-max@pipe-a-hdmi-a-1.html
* igt@kms_flip@2x-flip-vs-expired-vblank@bc-hdmi-a1-hdmi-a2:
- shard-glk: [PASS][16] -> [FAIL][17] ([i915#79]) +1 similar issue
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-glk5/igt@kms_flip@2x-flip-vs-expired-vblank@bc-hdmi-a1-hdmi-a2.html
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-glk4/igt@kms_flip@2x-flip-vs-expired-vblank@bc-hdmi-a1-hdmi-a2.html
* igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-pwrite:
- shard-snb: [PASS][18] -> [SKIP][19] ([fdo#109271])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-snb6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-pwrite.html
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-snb6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-pwrite.html
#### Possible fixes ####
* igt@gem_ctx_freq@sysfs:
- {shard-dg1}: [FAIL][20] ([i915#6786]) -> [PASS][21]
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-dg1-17/igt@gem_ctx_freq@sysfs.html
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-dg1-16/igt@gem_ctx_freq@sysfs.html
* igt@gem_exec_fair@basic-deadline:
- {shard-rkl}: [FAIL][22] ([i915#2846]) -> [PASS][23]
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-rkl-3/igt@gem_exec_fair@basic-deadline.html
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-rkl-6/igt@gem_exec_fair@basic-deadline.html
* igt@gem_exec_fair@basic-pace-share@rcs0:
- {shard-tglu}: [FAIL][24] ([i915#2842]) -> [PASS][25]
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-tglu-6/igt@gem_exec_fair@basic-pace-share@rcs0.html
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-tglu-10/igt@gem_exec_fair@basic-pace-share@rcs0.html
* igt@i915_pm_rc6_residency@rc6-idle@rcs0:
- {shard-dg1}: [FAIL][26] ([i915#3591]) -> [PASS][27]
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-dg1-16/igt@i915_pm_rc6_residency@rc6-idle@rcs0.html
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-dg1-17/igt@i915_pm_rc6_residency@rc6-idle@rcs0.html
* igt@i915_pm_rpm@modeset-non-lpsp:
- {shard-rkl}: [SKIP][28] ([i915#1397]) -> [PASS][29]
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-rkl-7/igt@i915_pm_rpm@modeset-non-lpsp.html
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-rkl-3/igt@i915_pm_rpm@modeset-non-lpsp.html
* igt@i915_selftest@live@gt_heartbeat:
- shard-apl: [DMESG-FAIL][30] ([i915#5334]) -> [PASS][31]
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-apl4/igt@i915_selftest@live@gt_heartbeat.html
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-apl7/igt@i915_selftest@live@gt_heartbeat.html
* igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
- {shard-tglu}: [FAIL][32] ([i915#3743]) -> [PASS][33]
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-tglu-10/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-tglu-10/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
- shard-glk: [FAIL][34] ([i915#2346]) -> [PASS][35]
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-glk4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-glk8/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
- shard-apl: [FAIL][36] ([i915#2346]) -> [PASS][37]
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-apl1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-apl1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
* igt@kms_vblank@pipe-c-accuracy-idle:
- shard-glk: [FAIL][38] ([i915#43]) -> [PASS][39]
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-glk3/igt@kms_vblank@pipe-c-accuracy-idle.html
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-glk9/igt@kms_vblank@pipe-c-accuracy-idle.html
* igt@perf_pmu@idle@rcs0:
- {shard-rkl}: [FAIL][40] ([i915#4349]) -> [PASS][41]
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13105/shard-rkl-6/igt@perf_pmu@idle@rcs0.html
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/shard-rkl-3/igt@perf_pmu@idle@rcs0.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
[fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
[fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
[i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
[i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
[i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
[i915#2521]: https://gitlab.freedesktop.org/drm/intel/issues/2521
[i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
[i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
[i915#2846]: https://gitlab.freedesktop.org/drm/intel/issues/2846
[i915#315]: https://gitlab.freedesktop.org/drm/intel/issues/315
[i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
[i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591
[i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
[i915#3743]: https://gitlab.freedesktop.org/drm/intel/issues/3743
[i915#3778]: https://gitlab.freedesktop.org/drm/intel/issues/3778
[i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
[i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
[i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
[i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
[i915#43]: https://gitlab.freedesktop.org/drm/intel/issues/43
[i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
[i915#5090]: https://gitlab.freedesktop.org/drm/intel/issues/5090
[i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
[i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334
[i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
[i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
[i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
[i915#6786]: https://gitlab.freedesktop.org/drm/intel/issues/6786
[i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
[i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
Build changes
-------------
* Linux: CI_DRM_13105 -> Patchwork_117261v1
CI-20190529: 20190529
CI_DRM_13105: e9c4e0f955197134304733e2417f72ce6392cb30 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7277: 1cb3507f3ff28d11bd5cfabcde576fe78ddab571 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_117261v1: e9c4e0f955197134304733e2417f72ce6392cb30 @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117261v1/index.html
[-- Attachment #2: Type: text/html, Size: 12087 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function
2023-05-04 3:37 [Intel-gfx] [PATCH] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function Suraj Kandpal
2023-05-04 4:14 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2023-05-04 5:24 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
@ 2023-05-10 14:52 ` Jani Nikula
2023-05-11 4:41 ` Kandpal, Suraj
2 siblings, 1 reply; 5+ messages in thread
From: Jani Nikula @ 2023-05-10 14:52 UTC (permalink / raw)
To: Suraj Kandpal, intel-gfx
On Thu, 04 May 2023, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> Since topology state is being added to drm_atomic_state now all
> drm_modeset_lock required are being taken from core this raises
> an issue when we try to loop over connector and assign vcpi id to
> our streams as we did not have atomic state to derive acquire_ctx
> from hence we fill in stream info if dpmst encoder is found before
> enabling hdcp.
>
> Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
The subject implies you're just passing an extra parameter, but that's
really not the case. You're doing something else, and to achieve that,
you also pass an extra parameter.
One approach might be to have a separate patch to change the parameters
only, and it might be sensible to actually pass all the
intel_encoder->enable() parameters i.e.
(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *pipe_config,
const struct drm_connector_state *conn_state)
> ---
> drivers/gpu/drm/i915/display/intel_ddi.c | 3 +-
> drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 +-
> drivers/gpu/drm/i915/display/intel_hdcp.c | 50 ++++++++++++++++++---
> drivers/gpu/drm/i915/display/intel_hdcp.h | 3 +-
> 4 files changed, 49 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
> index 29e4bfab4635..182b8815b20d 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -3264,9 +3264,10 @@ static void intel_enable_ddi(struct intel_atomic_state *state,
> /* Enable hdcp if it's desired */
> if (conn_state->content_protection ==
> DRM_MODE_CONTENT_PROTECTION_DESIRED)
> - intel_hdcp_enable(to_intel_connector(conn_state->connector),
> + intel_hdcp_enable(state, to_intel_connector(conn_state->connector),
> crtc_state,
> (u8)conn_state->hdcp_content_type);
> +
> }
>
> static void intel_disable_ddi_dp(struct intel_atomic_state *state,
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 2c49d9ab86a2..c92b00ceaae0 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -800,7 +800,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state,
> /* Enable hdcp if it's desired */
> if (conn_state->content_protection ==
> DRM_MODE_CONTENT_PROTECTION_DESIRED)
> - intel_hdcp_enable(to_intel_connector(conn_state->connector),
> + intel_hdcp_enable(state, to_intel_connector(conn_state->connector),
> pipe_config,
> (u8)conn_state->hdcp_content_type);
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
> index e1dc3d96e708..c8cdf25914f7 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> @@ -30,7 +30,8 @@
> #define KEY_LOAD_TRIES 5
> #define HDCP2_LC_RETRY_CNT 3
>
> -static int intel_conn_to_vcpi(struct intel_connector *connector)
> +static int intel_conn_to_vcpi(struct intel_connector *connector,
> + struct drm_atomic_state *state)
> {
> struct drm_dp_mst_topology_mgr *mgr;
> struct drm_dp_mst_atomic_payload *payload;
> @@ -42,7 +43,7 @@ static int intel_conn_to_vcpi(struct intel_connector *connector)
> return 0;
> mgr = connector->port->mgr;
>
> - drm_modeset_lock(&mgr->base.lock, NULL);
> + drm_modeset_lock(&mgr->base.lock, state->acquire_ctx);
The return value must be checked and handled for ctx != NULL. Please git
grep for examples.
> mst_state = to_drm_dp_mst_topology_state(mgr->base.state);
> payload = drm_atomic_get_mst_payload_state(mst_state, connector->port);
> if (drm_WARN_ON(mgr->dev, !payload))
> @@ -54,7 +55,6 @@ static int intel_conn_to_vcpi(struct intel_connector *connector)
> goto out;
> }
> out:
> - drm_modeset_unlock(&mgr->base.lock);
> return vcpi;
> }
>
> @@ -99,7 +99,6 @@ intel_hdcp_required_content_stream(struct intel_digital_port *dig_port)
> if (!enforce_type0 && !dig_port->hdcp_mst_type1_capable)
> enforce_type0 = true;
>
> - data->streams[data->k].stream_id = intel_conn_to_vcpi(connector);
> data->k++;
>
> /* if there is only one active stream */
> @@ -122,6 +121,41 @@ intel_hdcp_required_content_stream(struct intel_digital_port *dig_port)
> return 0;
> }
>
> +static int
> +intel_hdcp_get_content_stream_id(struct intel_digital_port *dig_port,
> + struct intel_atomic_state *state)
To me it seems like this *sets* the stream id, not get. This doesn't
return any id.
> +{
> + struct drm_connector_list_iter conn_iter;
> + struct intel_digital_port *conn_dig_port;
> + struct intel_connector *connector;
> + struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
> + struct hdcp_port_data *data = &dig_port->hdcp_port_data;
> +
> + data->k = 0;
> +
> + drm_connector_list_iter_begin(&i915->drm, &conn_iter);
> + for_each_intel_connector_iter(connector, &conn_iter) {
> + if (connector->base.status == connector_status_disconnected)
> + continue;
> +
> + if (!intel_encoder_is_mst(intel_attached_encoder(connector)))
> + continue;
> +
> + conn_dig_port = intel_attached_dig_port(connector);
> + if (conn_dig_port != dig_port)
> + continue;
> +
> + data->streams[data->k].stream_id = intel_conn_to_vcpi(connector, &state->base);
> + data->k++;
> +
> + /* if there is only one active stream */
> + if (dig_port->dp.active_mst_links <= 1)
> + break;
> + }
> + drm_connector_list_iter_end(&conn_iter);
> +
> + return 0;
This is 95% copy-paste of intel_hdcp_required_content_stream().
> +}
> static int intel_hdcp_prepare_streams(struct intel_connector *connector)
> {
> struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
> @@ -2333,7 +2367,8 @@ int intel_hdcp_init(struct intel_connector *connector,
> return 0;
> }
>
> -int intel_hdcp_enable(struct intel_connector *connector,
> +int intel_hdcp_enable(struct intel_atomic_state *state,
> + struct intel_connector *connector,
> const struct intel_crtc_state *pipe_config, u8 content_type)
> {
> struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> @@ -2374,6 +2409,9 @@ int intel_hdcp_enable(struct intel_connector *connector,
> * is capable of HDCP2.2, it is preferred to use HDCP2.2.
> */
> if (intel_hdcp2_capable(connector)) {
> + if (intel_crtc_has_type(pipe_config, INTEL_OUTPUT_DP_MST))
> + intel_hdcp_get_content_stream_id(dig_port, state);
> +
The call chain below already leads to:
_intel_hdcp2_enable()
hdcp2_authenticate_and_encrypt()
intel_hdcp_prepare_streams()
intel_hdcp_required_content_stream() (for MST)
and as I said, that's almost the same as what you're adding as
intel_hdcp_get_content_stream_id().
So I don't get the point of doing almost exactly the same thing twice
here.
> ret = _intel_hdcp2_enable(connector);
> if (!ret)
> check_link_interval = DRM_HDCP2_CHECK_PERIOD_MS;
> @@ -2486,7 +2524,7 @@ void intel_hdcp_update_pipe(struct intel_atomic_state *state,
> }
>
> if (desired_and_not_enabled || content_protection_type_changed)
> - intel_hdcp_enable(connector,
> + intel_hdcp_enable(state, connector,
> crtc_state,
> (u8)conn_state->hdcp_content_type);
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.h b/drivers/gpu/drm/i915/display/intel_hdcp.h
> index 8f53b0c7fe5c..a6f4bf93f9bf 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp.h
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.h
> @@ -28,7 +28,8 @@ void intel_hdcp_atomic_check(struct drm_connector *connector,
> int intel_hdcp_init(struct intel_connector *connector,
> struct intel_digital_port *dig_port,
> const struct intel_hdcp_shim *hdcp_shim);
> -int intel_hdcp_enable(struct intel_connector *connector,
> +int intel_hdcp_enable(struct intel_atomic_state *state,
> + struct intel_connector *connector,
> const struct intel_crtc_state *pipe_config, u8 content_type);
> int intel_hdcp_disable(struct intel_connector *connector);
> void intel_hdcp_update_pipe(struct intel_atomic_state *state,
--
Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function
2023-05-10 14:52 ` [Intel-gfx] [PATCH] " Jani Nikula
@ 2023-05-11 4:41 ` Kandpal, Suraj
0 siblings, 0 replies; 5+ messages in thread
From: Kandpal, Suraj @ 2023-05-11 4:41 UTC (permalink / raw)
To: Jani Nikula, intel-gfx@lists.freedesktop.org
> On Thu, 04 May 2023, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> > Since topology state is being added to drm_atomic_state now all
> > drm_modeset_lock required are being taken from core this raises an
> > issue when we try to loop over connector and assign vcpi id to our
> > streams as we did not have atomic state to derive acquire_ctx from
> > hence we fill in stream info if dpmst encoder is found before enabling
> > hdcp.
> >
> > Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
>
> The subject implies you're just passing an extra parameter, but that's really
> not the case. You're doing something else, and to achieve that, you also pass
> an extra parameter.
>
> One approach might be to have a separate patch to change the parameters
> only, and it might be sensible to actually pass all the
> intel_encoder->enable() parameters i.e.
>
> (struct intel_atomic_state *state,
> struct intel_encoder *encoder,
> const struct intel_crtc_state *pipe_config, const struct drm_connector_state
> *conn_state)
>
Sure Jani will break the patch into two and pass all the intel_encoder->enable() params
> > ---
> > drivers/gpu/drm/i915/display/intel_ddi.c | 3 +-
> > drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 +-
> > drivers/gpu/drm/i915/display/intel_hdcp.c | 50 ++++++++++++++++++---
> > drivers/gpu/drm/i915/display/intel_hdcp.h | 3 +-
> > 4 files changed, 49 insertions(+), 9 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c
> > b/drivers/gpu/drm/i915/display/intel_ddi.c
> > index 29e4bfab4635..182b8815b20d 100644
> > --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> > @@ -3264,9 +3264,10 @@ static void intel_enable_ddi(struct
> intel_atomic_state *state,
> > /* Enable hdcp if it's desired */
> > if (conn_state->content_protection ==
> > DRM_MODE_CONTENT_PROTECTION_DESIRED)
> > - intel_hdcp_enable(to_intel_connector(conn_state-
> >connector),
> > + intel_hdcp_enable(state, to_intel_connector(conn_state-
> >connector),
> > crtc_state,
> > (u8)conn_state->hdcp_content_type);
> > +
> > }
> >
> > static void intel_disable_ddi_dp(struct intel_atomic_state *state,
> > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> > b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> > index 2c49d9ab86a2..c92b00ceaae0 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> > @@ -800,7 +800,7 @@ static void intel_mst_enable_dp(struct
> intel_atomic_state *state,
> > /* Enable hdcp if it's desired */
> > if (conn_state->content_protection ==
> > DRM_MODE_CONTENT_PROTECTION_DESIRED)
> > - intel_hdcp_enable(to_intel_connector(conn_state-
> >connector),
> > + intel_hdcp_enable(state, to_intel_connector(conn_state-
> >connector),
> > pipe_config,
> > (u8)conn_state->hdcp_content_type);
> > }
> > diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c
> > b/drivers/gpu/drm/i915/display/intel_hdcp.c
> > index e1dc3d96e708..c8cdf25914f7 100644
> > --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> > +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> > @@ -30,7 +30,8 @@
> > #define KEY_LOAD_TRIES 5
> > #define HDCP2_LC_RETRY_CNT 3
> >
> > -static int intel_conn_to_vcpi(struct intel_connector *connector)
> > +static int intel_conn_to_vcpi(struct intel_connector *connector,
> > + struct drm_atomic_state *state)
> > {
> > struct drm_dp_mst_topology_mgr *mgr;
> > struct drm_dp_mst_atomic_payload *payload; @@ -42,7 +43,7 @@
> static
> > int intel_conn_to_vcpi(struct intel_connector *connector)
> > return 0;
> > mgr = connector->port->mgr;
> >
> > - drm_modeset_lock(&mgr->base.lock, NULL);
> > + drm_modeset_lock(&mgr->base.lock, state->acquire_ctx);
>
> The return value must be checked and handled for ctx != NULL. Please git
> grep for examples.
>
> > mst_state = to_drm_dp_mst_topology_state(mgr->base.state);
> > payload = drm_atomic_get_mst_payload_state(mst_state,
> connector->port);
> > if (drm_WARN_ON(mgr->dev, !payload)) @@ -54,7 +55,6 @@ static
> int
> > intel_conn_to_vcpi(struct intel_connector *connector)
> > goto out;
> > }
> > out:
> > - drm_modeset_unlock(&mgr->base.lock);
> > return vcpi;
> > }
> >
> > @@ -99,7 +99,6 @@ intel_hdcp_required_content_stream(struct
> intel_digital_port *dig_port)
> > if (!enforce_type0 && !dig_port->hdcp_mst_type1_capable)
> > enforce_type0 = true;
> >
> > - data->streams[data->k].stream_id =
> intel_conn_to_vcpi(connector);
> > data->k++;
> >
> > /* if there is only one active stream */ @@ -122,6 +121,41
> @@
> > intel_hdcp_required_content_stream(struct intel_digital_port *dig_port)
> > return 0;
> > }
> >
> > +static int
> > +intel_hdcp_get_content_stream_id(struct intel_digital_port *dig_port,
> > + struct intel_atomic_state *state)
>
> To me it seems like this *sets* the stream id, not get. This doesn't return any
> id.
>
Right will change the name.
> > +{
> > + struct drm_connector_list_iter conn_iter;
> > + struct intel_digital_port *conn_dig_port;
> > + struct intel_connector *connector;
> > + struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
> > + struct hdcp_port_data *data = &dig_port->hdcp_port_data;
> > +
> > + data->k = 0;
> > +
> > + drm_connector_list_iter_begin(&i915->drm, &conn_iter);
> > + for_each_intel_connector_iter(connector, &conn_iter) {
> > + if (connector->base.status ==
> connector_status_disconnected)
> > + continue;
> > +
> > + if
> (!intel_encoder_is_mst(intel_attached_encoder(connector)))
> > + continue;
> > +
> > + conn_dig_port = intel_attached_dig_port(connector);
> > + if (conn_dig_port != dig_port)
> > + continue;
> > +
> > + data->streams[data->k].stream_id =
> intel_conn_to_vcpi(connector, &state->base);
> > + data->k++;
> > +
> > + /* if there is only one active stream */
> > + if (dig_port->dp.active_mst_links <= 1)
> > + break;
> > + }
> > + drm_connector_list_iter_end(&conn_iter);
> > +
> > + return 0;
>
> This is 95% copy-paste of intel_hdcp_required_content_stream().
>
> > +}
> > static int intel_hdcp_prepare_streams(struct intel_connector
> > *connector) {
> > struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> > @@ -2333,7 +2367,8 @@ int intel_hdcp_init(struct intel_connector
> *connector,
> > return 0;
> > }
> >
> > -int intel_hdcp_enable(struct intel_connector *connector,
> > +int intel_hdcp_enable(struct intel_atomic_state *state,
> > + struct intel_connector *connector,
> > const struct intel_crtc_state *pipe_config, u8
> content_type)
> > {
> > struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> @@
> > -2374,6 +2409,9 @@ int intel_hdcp_enable(struct intel_connector
> *connector,
> > * is capable of HDCP2.2, it is preferred to use HDCP2.2.
> > */
> > if (intel_hdcp2_capable(connector)) {
> > + if (intel_crtc_has_type(pipe_config,
> INTEL_OUTPUT_DP_MST))
> > + intel_hdcp_get_content_stream_id(dig_port, state);
> > +
>
> The call chain below already leads to:
>
> _intel_hdcp2_enable()
> hdcp2_authenticate_and_encrypt()
> intel_hdcp_prepare_streams()
> intel_hdcp_required_content_stream() (for MST)
>
> and as I said, that's almost the same as what you're adding as
> intel_hdcp_get_content_stream_id().
>
> So I don't get the point of doing almost exactly the same thing twice here.
>
So the issue here is I want to pass intel_atomic_state to conn_to_vcpi() which was
called in intel_hdcp_required_content_stream() but I cannot get the atomic_state here
as intel_hdcp2_enable gets called in places other than intel_hdcp_enable where its not possible
to derive intel_atomic_state.
But I do see the point and will try to remove redundant code.
Regards,
Suraj Kandpa;
> > ret = _intel_hdcp2_enable(connector);
> > if (!ret)
> > check_link_interval =
> DRM_HDCP2_CHECK_PERIOD_MS; @@ -2486,7
> > +2524,7 @@ void intel_hdcp_update_pipe(struct intel_atomic_state *state,
> > }
> >
> > if (desired_and_not_enabled || content_protection_type_changed)
> > - intel_hdcp_enable(connector,
> > + intel_hdcp_enable(state, connector,
> > crtc_state,
> > (u8)conn_state->hdcp_content_type);
> > }
> > diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.h
> > b/drivers/gpu/drm/i915/display/intel_hdcp.h
> > index 8f53b0c7fe5c..a6f4bf93f9bf 100644
> > --- a/drivers/gpu/drm/i915/display/intel_hdcp.h
> > +++ b/drivers/gpu/drm/i915/display/intel_hdcp.h
> > @@ -28,7 +28,8 @@ void intel_hdcp_atomic_check(struct drm_connector
> > *connector, int intel_hdcp_init(struct intel_connector *connector,
> > struct intel_digital_port *dig_port,
> > const struct intel_hdcp_shim *hdcp_shim); -int
> > intel_hdcp_enable(struct intel_connector *connector,
> > +int intel_hdcp_enable(struct intel_atomic_state *state,
> > + struct intel_connector *connector,
> > const struct intel_crtc_state *pipe_config, u8
> content_type);
> > int intel_hdcp_disable(struct intel_connector *connector); void
> > intel_hdcp_update_pipe(struct intel_atomic_state *state,
>
> --
> Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-05-11 4:43 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-04 3:37 [Intel-gfx] [PATCH] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function Suraj Kandpal
2023-05-04 4:14 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2023-05-04 5:24 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2023-05-10 14:52 ` [Intel-gfx] [PATCH] " Jani Nikula
2023-05-11 4:41 ` Kandpal, Suraj
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.