* [Intel-gfx] [PATCH 0/2] Fix modeset locking issue in HDCP MST
@ 2023-05-11 5:57 Suraj Kandpal
2023-05-11 5:57 ` [Intel-gfx] [PATCH 1/2] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function Suraj Kandpal
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Suraj Kandpal @ 2023-05-11 5:57 UTC (permalink / raw)
To: intel-gfx
HDCP MST scenario sees modeset locking issue ever since
topology_state was added to drm_atomic_state and all modeset
locks were being taken for us causing a locking issue to occur
when we iterate over connectors to assign vcpi id, the fix
being to pass acquire_ctx to drm_modeset_lock
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Suraj Kandpal (2):
drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function
drm/i915/hdcp: Fix modeset locking issue in hdcp mst
drivers/gpu/drm/i915/display/intel_ddi.c | 5 ++-
.../drm/i915/display/intel_display_types.h | 2 +
drivers/gpu/drm/i915/display/intel_dp_mst.c | 4 +-
drivers/gpu/drm/i915/display/intel_hdcp.c | 38 ++++++++++---------
drivers/gpu/drm/i915/display/intel_hdcp.h | 6 ++-
5 files changed, 32 insertions(+), 23 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Intel-gfx] [PATCH 1/2] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function
2023-05-11 5:57 [Intel-gfx] [PATCH 0/2] Fix modeset locking issue in HDCP MST Suraj Kandpal
@ 2023-05-11 5:57 ` Suraj Kandpal
2023-05-11 7:57 ` Jani Nikula
2023-05-11 5:57 ` [Intel-gfx] [PATCH 2/2] drm/i915/hdcp: Fix modeset locking issue in hdcp mst Suraj Kandpal
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Suraj Kandpal @ 2023-05-11 5:57 UTC (permalink / raw)
To: intel-gfx
Pass all the parameter in intel_encoder->enable()
to intel_hdcp_enable as we need intel_atomic_state
later down to get acquire_ctx.
Cc: Jani Nikula <jani.nikula@linux.intel.com>
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 | 5 +++--
drivers/gpu/drm/i915/display/intel_dp_mst.c | 4 ++--
drivers/gpu/drm/i915/display/intel_hdcp.c | 12 +++++++-----
drivers/gpu/drm/i915/display/intel_hdcp.h | 6 ++++--
4 files changed, 16 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index 29e4bfab4635..e838d56415cd 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);
+ conn_state);
+
}
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..e1e040434a97 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -800,9 +800,9 @@ 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);
+ conn_state);
}
static bool intel_dp_mst_enc_get_hw_state(struct intel_encoder *encoder,
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
index 650232c4892b..1928c80cb6a2 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
@@ -2330,8 +2330,10 @@ int intel_hdcp_init(struct intel_connector *connector,
return 0;
}
-int intel_hdcp_enable(struct intel_connector *connector,
- const struct intel_crtc_state *pipe_config, u8 content_type)
+int intel_hdcp_enable(struct intel_atomic_state *state,
+ struct intel_connector *connector,
+ const struct intel_crtc_state *pipe_config,
+ const struct drm_connector_state *conn_state)
{
struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
@@ -2352,7 +2354,7 @@ int intel_hdcp_enable(struct intel_connector *connector,
mutex_lock(&dig_port->hdcp_mutex);
drm_WARN_ON(&dev_priv->drm,
hdcp->value == DRM_MODE_CONTENT_PROTECTION_ENABLED);
- hdcp->content_type = content_type;
+ hdcp->content_type = (u8)conn_state->content_type;
if (intel_crtc_has_type(pipe_config, INTEL_OUTPUT_DP_MST)) {
hdcp->cpu_transcoder = pipe_config->mst_master_transcoder;
@@ -2483,9 +2485,9 @@ 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);
+ conn_state);
}
void intel_hdcp_component_fini(struct drm_i915_private *dev_priv)
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.h b/drivers/gpu/drm/i915/display/intel_hdcp.h
index 8f53b0c7fe5c..6aaec4df6f6c 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.h
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.h
@@ -28,8 +28,10 @@ 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,
- const struct intel_crtc_state *pipe_config, u8 content_type);
+int intel_hdcp_enable(struct intel_atomic_state *state,
+ struct intel_connector *connector,
+ const struct intel_crtc_state *pipe_config,
+ const struct drm_connector_state *conn_state);
int intel_hdcp_disable(struct intel_connector *connector);
void intel_hdcp_update_pipe(struct intel_atomic_state *state,
struct intel_encoder *encoder,
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Intel-gfx] [PATCH 2/2] drm/i915/hdcp: Fix modeset locking issue in hdcp mst
2023-05-11 5:57 [Intel-gfx] [PATCH 0/2] Fix modeset locking issue in HDCP MST Suraj Kandpal
2023-05-11 5:57 ` [Intel-gfx] [PATCH 1/2] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function Suraj Kandpal
@ 2023-05-11 5:57 ` Suraj Kandpal
2023-05-11 9:21 ` Nautiyal, Ankit K
2023-05-11 6:39 ` [Intel-gfx] ✓ Fi.CI.BAT: success for Fix modeset locking issue in HDCP MST Patchwork
2023-05-11 8:13 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
3 siblings, 1 reply; 8+ messages in thread
From: Suraj Kandpal @ 2023-05-11 5:57 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: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
.../drm/i915/display/intel_display_types.h | 2 ++
drivers/gpu/drm/i915/display/intel_hdcp.c | 26 ++++++++++---------
2 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 35c260bd1461..aecd84b66735 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1813,6 +1813,8 @@ struct intel_digital_port {
struct hdcp_port_data hdcp_port_data;
/* Whether the MST topology supports HDCP Type 1 Content */
bool hdcp_mst_type1_capable;
+ /* If streams for HDCP MST are assigned with vcpi id and stream type */
+ int hdcp_mst_streams_ready;
void (*write_infoframe)(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
index 1928c80cb6a2..d2874431c9d3 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 drm_atomic_state *state,
+ struct intel_connector *connector)
{
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;
}
@@ -69,7 +69,8 @@ static int intel_conn_to_vcpi(struct intel_connector *connector)
* policy to mark different content_types for different streams.
*/
static int
-intel_hdcp_required_content_stream(struct intel_digital_port *dig_port)
+intel_hdcp_required_content_stream(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;
@@ -81,9 +82,6 @@ intel_hdcp_required_content_stream(struct intel_digital_port *dig_port)
data->k = 0;
- if (dig_port->hdcp_auth_status)
- return 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)
@@ -99,7 +97,8 @@ 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->streams[data->k].stream_id =
+ intel_conn_to_vcpi(&state->base, connector);
data->k++;
/* if there is only one active stream */
@@ -127,15 +126,12 @@ static int intel_hdcp_prepare_streams(struct intel_connector *connector)
struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
struct hdcp_port_data *data = &dig_port->hdcp_port_data;
struct intel_hdcp *hdcp = &connector->hdcp;
- int ret;
if (!intel_encoder_is_mst(intel_attached_encoder(connector))) {
data->k = 1;
data->streams[0].stream_type = hdcp->content_type;
} else {
- ret = intel_hdcp_required_content_stream(dig_port);
- if (ret)
- return ret;
+ return dig_port->hdcp_mst_streams_ready;
}
return 0;
@@ -2373,6 +2369,12 @@ int intel_hdcp_enable(struct intel_atomic_state *state,
* 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)) {
+ dig_port->hdcp_mst_streams_ready =
+ intel_hdcp_required_content_stream(dig_port,
+ state);
+ }
+
ret = _intel_hdcp2_enable(connector);
if (!ret)
check_link_interval = DRM_HDCP2_CHECK_PERIOD_MS;
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for Fix modeset locking issue in HDCP MST
2023-05-11 5:57 [Intel-gfx] [PATCH 0/2] Fix modeset locking issue in HDCP MST Suraj Kandpal
2023-05-11 5:57 ` [Intel-gfx] [PATCH 1/2] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function Suraj Kandpal
2023-05-11 5:57 ` [Intel-gfx] [PATCH 2/2] drm/i915/hdcp: Fix modeset locking issue in hdcp mst Suraj Kandpal
@ 2023-05-11 6:39 ` Patchwork
2023-05-11 8:13 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
3 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2023-05-11 6:39 UTC (permalink / raw)
To: Suraj Kandpal; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 8251 bytes --]
== Series Details ==
Series: Fix modeset locking issue in HDCP MST
URL : https://patchwork.freedesktop.org/series/117615/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_13131 -> Patchwork_117615v1
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/index.html
Participating hosts (40 -> 39)
------------------------------
Additional (1): bat-mtlp-6
Missing (2): fi-kbl-soraka fi-snb-2520m
Known issues
------------
Here are the changes found in Patchwork_117615v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_selftest@live@gt_heartbeat:
- fi-kbl-7567u: [PASS][1] -> [DMESG-FAIL][2] ([i915#5334])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/fi-kbl-7567u/igt@i915_selftest@live@gt_heartbeat.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/fi-kbl-7567u/igt@i915_selftest@live@gt_heartbeat.html
- fi-apl-guc: [PASS][3] -> [DMESG-FAIL][4] ([i915#5334])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html
* igt@i915_selftest@live@hangcheck:
- fi-skl-guc: [PASS][5] -> [DMESG-WARN][6] ([i915#8073])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/fi-skl-guc/igt@i915_selftest@live@hangcheck.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/fi-skl-guc/igt@i915_selftest@live@hangcheck.html
* igt@i915_selftest@live@slpc:
- bat-rpls-1: NOTRUN -> [DMESG-WARN][7] ([i915#6367] / [i915#7953])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/bat-rpls-1/igt@i915_selftest@live@slpc.html
* igt@i915_suspend@basic-s2idle-without-i915:
- bat-rpls-2: NOTRUN -> [ABORT][8] ([i915#6687])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/bat-rpls-2/igt@i915_suspend@basic-s2idle-without-i915.html
* igt@i915_suspend@basic-s3-without-i915:
- bat-rpls-1: NOTRUN -> [ABORT][9] ([i915#6687] / [i915#7953] / [i915#7978])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/bat-rpls-1/igt@i915_suspend@basic-s3-without-i915.html
* igt@kms_pipe_crc_basic@read-crc:
- bat-adlp-9: NOTRUN -> [SKIP][10] ([i915#3546]) +1 similar issue
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/bat-adlp-9/igt@kms_pipe_crc_basic@read-crc.html
#### Possible fixes ####
* igt@dmabuf@all-tests@dma_fence:
- fi-kbl-7567u: [DMESG-FAIL][11] -> [PASS][12]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/fi-kbl-7567u/igt@dmabuf@all-tests@dma_fence.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/fi-kbl-7567u/igt@dmabuf@all-tests@dma_fence.html
* igt@dmabuf@all-tests@sanitycheck:
- fi-kbl-7567u: [ABORT][13] -> [PASS][14]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/fi-kbl-7567u/igt@dmabuf@all-tests@sanitycheck.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/fi-kbl-7567u/igt@dmabuf@all-tests@sanitycheck.html
* igt@i915_selftest@live@requests:
- {bat-mtlp-8}: [ABORT][15] ([i915#4983] / [i915#7920] / [i915#7953]) -> [PASS][16]
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/bat-mtlp-8/igt@i915_selftest@live@requests.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/bat-mtlp-8/igt@i915_selftest@live@requests.html
* igt@i915_selftest@live@reset:
- bat-rpls-2: [ABORT][17] ([i915#4983] / [i915#7461] / [i915#7913] / [i915#8347]) -> [PASS][18]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/bat-rpls-2/igt@i915_selftest@live@reset.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/bat-rpls-2/igt@i915_selftest@live@reset.html
- bat-rpls-1: [ABORT][19] ([i915#4983] / [i915#7461] / [i915#7953] / [i915#7981] / [i915#8347] / [i915#8384]) -> [PASS][20]
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/bat-rpls-1/igt@i915_selftest@live@reset.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/bat-rpls-1/igt@i915_selftest@live@reset.html
#### Warnings ####
* igt@kms_setmode@basic-clone-single-crtc:
- bat-rplp-1: [SKIP][21] ([i915#3555] / [i915#4579]) -> [ABORT][22] ([i915#8260])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/bat-rplp-1/igt@kms_setmode@basic-clone-single-crtc.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/bat-rplp-1/igt@kms_setmode@basic-clone-single-crtc.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
[i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
[i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
[i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
[i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
[i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
[i915#3595]: https://gitlab.freedesktop.org/drm/intel/issues/3595
[i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
[i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
[i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
[i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
[i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
[i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
[i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
[i915#4342]: https://gitlab.freedesktop.org/drm/intel/issues/4342
[i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579
[i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
[i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
[i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
[i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
[i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334
[i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367
[i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
[i915#6645]: https://gitlab.freedesktop.org/drm/intel/issues/6645
[i915#6687]: https://gitlab.freedesktop.org/drm/intel/issues/6687
[i915#7456]: https://gitlab.freedesktop.org/drm/intel/issues/7456
[i915#7461]: https://gitlab.freedesktop.org/drm/intel/issues/7461
[i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
[i915#7913]: https://gitlab.freedesktop.org/drm/intel/issues/7913
[i915#7920]: https://gitlab.freedesktop.org/drm/intel/issues/7920
[i915#7953]: https://gitlab.freedesktop.org/drm/intel/issues/7953
[i915#7978]: https://gitlab.freedesktop.org/drm/intel/issues/7978
[i915#7981]: https://gitlab.freedesktop.org/drm/intel/issues/7981
[i915#8073]: https://gitlab.freedesktop.org/drm/intel/issues/8073
[i915#8260]: https://gitlab.freedesktop.org/drm/intel/issues/8260
[i915#8347]: https://gitlab.freedesktop.org/drm/intel/issues/8347
[i915#8368]: https://gitlab.freedesktop.org/drm/intel/issues/8368
[i915#8384]: https://gitlab.freedesktop.org/drm/intel/issues/8384
Build changes
-------------
* Linux: CI_DRM_13131 -> Patchwork_117615v1
CI-20190529: 20190529
CI_DRM_13131: 92b7f1c42fc99ff1bad5e18d6b1aaa585f134d47 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7285: d1cbf2bad9c2664ab8bd3bd0946510a52800912f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_117615v1: 92b7f1c42fc99ff1bad5e18d6b1aaa585f134d47 @ git://anongit.freedesktop.org/gfx-ci/linux
### Linux commits
6ca501297dd2 drm/i915/hdcp: Fix modeset locking issue in hdcp mst
1e642af7c1d8 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_117615v1/index.html
[-- Attachment #2: Type: text/html, Size: 8331 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Intel-gfx] [PATCH 1/2] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function
2023-05-11 5:57 ` [Intel-gfx] [PATCH 1/2] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function Suraj Kandpal
@ 2023-05-11 7:57 ` Jani Nikula
2023-05-11 9:14 ` Kandpal, Suraj
0 siblings, 1 reply; 8+ messages in thread
From: Jani Nikula @ 2023-05-11 7:57 UTC (permalink / raw)
To: Suraj Kandpal, intel-gfx
On Thu, 11 May 2023, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> Pass all the parameter in intel_encoder->enable()
> to intel_hdcp_enable as we need intel_atomic_state
> later down to get acquire_ctx.
You're passing connector, not encoder, though.
BR,
Jani.
>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> 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 | 5 +++--
> drivers/gpu/drm/i915/display/intel_dp_mst.c | 4 ++--
> drivers/gpu/drm/i915/display/intel_hdcp.c | 12 +++++++-----
> drivers/gpu/drm/i915/display/intel_hdcp.h | 6 ++++--
> 4 files changed, 16 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
> index 29e4bfab4635..e838d56415cd 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);
> + conn_state);
> +
> }
>
> 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..e1e040434a97 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -800,9 +800,9 @@ 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);
> + conn_state);
> }
>
> static bool intel_dp_mst_enc_get_hw_state(struct intel_encoder *encoder,
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
> index 650232c4892b..1928c80cb6a2 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> @@ -2330,8 +2330,10 @@ int intel_hdcp_init(struct intel_connector *connector,
> return 0;
> }
>
> -int intel_hdcp_enable(struct intel_connector *connector,
> - const struct intel_crtc_state *pipe_config, u8 content_type)
> +int intel_hdcp_enable(struct intel_atomic_state *state,
> + struct intel_connector *connector,
> + const struct intel_crtc_state *pipe_config,
> + const struct drm_connector_state *conn_state)
> {
> struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
> @@ -2352,7 +2354,7 @@ int intel_hdcp_enable(struct intel_connector *connector,
> mutex_lock(&dig_port->hdcp_mutex);
> drm_WARN_ON(&dev_priv->drm,
> hdcp->value == DRM_MODE_CONTENT_PROTECTION_ENABLED);
> - hdcp->content_type = content_type;
> + hdcp->content_type = (u8)conn_state->content_type;
>
> if (intel_crtc_has_type(pipe_config, INTEL_OUTPUT_DP_MST)) {
> hdcp->cpu_transcoder = pipe_config->mst_master_transcoder;
> @@ -2483,9 +2485,9 @@ 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);
> + conn_state);
> }
>
> void intel_hdcp_component_fini(struct drm_i915_private *dev_priv)
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.h b/drivers/gpu/drm/i915/display/intel_hdcp.h
> index 8f53b0c7fe5c..6aaec4df6f6c 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp.h
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.h
> @@ -28,8 +28,10 @@ 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,
> - const struct intel_crtc_state *pipe_config, u8 content_type);
> +int intel_hdcp_enable(struct intel_atomic_state *state,
> + struct intel_connector *connector,
> + const struct intel_crtc_state *pipe_config,
> + const struct drm_connector_state *conn_state);
> int intel_hdcp_disable(struct intel_connector *connector);
> void intel_hdcp_update_pipe(struct intel_atomic_state *state,
> struct intel_encoder *encoder,
--
Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Intel-gfx] ✗ Fi.CI.IGT: failure for Fix modeset locking issue in HDCP MST
2023-05-11 5:57 [Intel-gfx] [PATCH 0/2] Fix modeset locking issue in HDCP MST Suraj Kandpal
` (2 preceding siblings ...)
2023-05-11 6:39 ` [Intel-gfx] ✓ Fi.CI.BAT: success for Fix modeset locking issue in HDCP MST Patchwork
@ 2023-05-11 8:13 ` Patchwork
3 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2023-05-11 8:13 UTC (permalink / raw)
To: Suraj Kandpal; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 9943 bytes --]
== Series Details ==
Series: Fix modeset locking issue in HDCP MST
URL : https://patchwork.freedesktop.org/series/117615/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_13131_full -> Patchwork_117615v1_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_117615v1_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_117615v1_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_117615v1_full:
### IGT changes ###
#### Possible regressions ####
* igt@gem_ctx_isolation@preservation-s3@vecs0:
- shard-apl: [PASS][1] -> [ABORT][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/shard-apl1/igt@gem_ctx_isolation@preservation-s3@vecs0.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/shard-apl3/igt@gem_ctx_isolation@preservation-s3@vecs0.html
Known issues
------------
Here are the changes found in Patchwork_117615v1_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_barrier_race@remote-request@rcs0:
- shard-apl: [PASS][3] -> [ABORT][4] ([i915#7461] / [i915#8211] / [i915#8234])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/shard-apl1/igt@gem_barrier_race@remote-request@rcs0.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/shard-apl7/igt@gem_barrier_race@remote-request@rcs0.html
* igt@gem_exec_fair@basic-pace-solo@rcs0:
- shard-glk: [PASS][5] -> [FAIL][6] ([i915#2842])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/shard-glk1/igt@gem_exec_fair@basic-pace-solo@rcs0.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/shard-glk4/igt@gem_exec_fair@basic-pace-solo@rcs0.html
* igt@i915_selftest@live@gt_heartbeat:
- shard-apl: [PASS][7] -> [DMESG-FAIL][8] ([i915#5334])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/shard-apl4/igt@i915_selftest@live@gt_heartbeat.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/shard-apl2/igt@i915_selftest@live@gt_heartbeat.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
- shard-glk: [PASS][9] -> [FAIL][10] ([i915#2346])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/shard-glk6/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/shard-glk4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
* igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-1:
- shard-apl: [PASS][11] -> [FAIL][12] ([i915#1188])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/shard-apl7/igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-1.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/shard-apl7/igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-1.html
#### Possible fixes ####
* igt@gem_exec_fair@basic-deadline:
- shard-glk: [FAIL][13] ([i915#2846]) -> [PASS][14]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/shard-glk5/igt@gem_exec_fair@basic-deadline.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/shard-glk5/igt@gem_exec_fair@basic-deadline.html
* igt@gem_exec_fair@basic-none-solo@rcs0:
- shard-apl: [FAIL][15] ([i915#2842]) -> [PASS][16] +1 similar issue
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/shard-apl6/igt@gem_exec_fair@basic-none-solo@rcs0.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/shard-apl1/igt@gem_exec_fair@basic-none-solo@rcs0.html
* igt@gem_exec_fair@basic-pace@rcs0:
- {shard-rkl}: [FAIL][17] ([i915#2842]) -> [PASS][18]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/shard-rkl-1/igt@gem_exec_fair@basic-pace@rcs0.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/shard-rkl-4/igt@gem_exec_fair@basic-pace@rcs0.html
* igt@gem_exec_suspend@basic-s4-devices@smem:
- {shard-tglu}: [ABORT][19] ([i915#7953] / [i915#7975] / [i915#8213]) -> [PASS][20]
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/shard-tglu-10/igt@gem_exec_suspend@basic-s4-devices@smem.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/shard-tglu-7/igt@gem_exec_suspend@basic-s4-devices@smem.html
* igt@i915_pm_rc6_residency@rc6-idle@vecs0:
- {shard-dg1}: [FAIL][21] ([i915#3591]) -> [PASS][22]
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/shard-dg1-12/igt@i915_pm_rc6_residency@rc6-idle@vecs0.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/shard-dg1-18/igt@i915_pm_rc6_residency@rc6-idle@vecs0.html
* igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
- {shard-rkl}: [FAIL][23] ([i915#3743]) -> [PASS][24]
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/shard-rkl-7/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/shard-rkl-6/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
- shard-glk: [FAIL][25] ([i915#2346]) -> [PASS][26]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
* igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2:
- shard-glk: [FAIL][27] ([i915#79]) -> [PASS][28]
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13131/shard-glk8/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_117615v1/shard-glk6/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
[fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
[fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
[fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
[i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
[i915#1188]: https://gitlab.freedesktop.org/drm/intel/issues/1188
[i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
[i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
[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#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591
[i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
[i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
[i915#3743]: https://gitlab.freedesktop.org/drm/intel/issues/3743
[i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
[i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
[i915#4036]: https://gitlab.freedesktop.org/drm/intel/issues/4036
[i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
[i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579
[i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
[i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
[i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
[i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
[i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
[i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334
[i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
[i915#5439]: https://gitlab.freedesktop.org/drm/intel/issues/5439
[i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
[i915#6245]: https://gitlab.freedesktop.org/drm/intel/issues/6245
[i915#7461]: https://gitlab.freedesktop.org/drm/intel/issues/7461
[i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
[i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
[i915#7953]: https://gitlab.freedesktop.org/drm/intel/issues/7953
[i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975
[i915#8211]: https://gitlab.freedesktop.org/drm/intel/issues/8211
[i915#8213]: https://gitlab.freedesktop.org/drm/intel/issues/8213
[i915#8234]: https://gitlab.freedesktop.org/drm/intel/issues/8234
[i915#8420]: https://gitlab.freedesktop.org/drm/intel/issues/8420
Build changes
-------------
* Linux: CI_DRM_13131 -> Patchwork_117615v1
CI-20190529: 20190529
CI_DRM_13131: 92b7f1c42fc99ff1bad5e18d6b1aaa585f134d47 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7285: d1cbf2bad9c2664ab8bd3bd0946510a52800912f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_117615v1: 92b7f1c42fc99ff1bad5e18d6b1aaa585f134d47 @ 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_117615v1/index.html
[-- Attachment #2: Type: text/html, Size: 9331 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Intel-gfx] [PATCH 1/2] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function
2023-05-11 7:57 ` Jani Nikula
@ 2023-05-11 9:14 ` Kandpal, Suraj
0 siblings, 0 replies; 8+ messages in thread
From: Kandpal, Suraj @ 2023-05-11 9:14 UTC (permalink / raw)
To: Jani Nikula, intel-gfx@lists.freedesktop.org
> -----Original Message-----
> From: Jani Nikula <jani.nikula@linux.intel.com>
> Sent: Thursday, May 11, 2023 1:27 PM
> To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-
> gfx@lists.freedesktop.org
> Cc: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>; Kandpal, Suraj
> <suraj.kandpal@intel.com>
> Subject: Re: [PATCH 1/2] drm/i915/hdcp: add intel_atomic_state argument to
> hdcp_enable function
>
> On Thu, 11 May 2023, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> > Pass all the parameter in intel_encoder->enable() to intel_hdcp_enable
> > as we need intel_atomic_state later down to get acquire_ctx.
>
> You're passing connector, not encoder, though.
>
Ohh missed that will fix in the newer revision
Regards,
Suraj Kandpal
> BR,
> Jani.
>
> >
> > Cc: Jani Nikula <jani.nikula@linux.intel.com>
> > 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 | 5 +++--
> > drivers/gpu/drm/i915/display/intel_dp_mst.c | 4 ++--
> > drivers/gpu/drm/i915/display/intel_hdcp.c | 12 +++++++-----
> > drivers/gpu/drm/i915/display/intel_hdcp.h | 6 ++++--
> > 4 files changed, 16 insertions(+), 11 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c
> > b/drivers/gpu/drm/i915/display/intel_ddi.c
> > index 29e4bfab4635..e838d56415cd 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);
> > + conn_state);
> > +
> > }
> >
> > 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..e1e040434a97 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> > @@ -800,9 +800,9 @@ 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);
> > + conn_state);
> > }
> >
> > static bool intel_dp_mst_enc_get_hw_state(struct intel_encoder
> > *encoder, diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c
> > b/drivers/gpu/drm/i915/display/intel_hdcp.c
> > index 650232c4892b..1928c80cb6a2 100644
> > --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> > +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> > @@ -2330,8 +2330,10 @@ int intel_hdcp_init(struct intel_connector
> *connector,
> > return 0;
> > }
> >
> > -int intel_hdcp_enable(struct intel_connector *connector,
> > - const struct intel_crtc_state *pipe_config, u8
> content_type)
> > +int intel_hdcp_enable(struct intel_atomic_state *state,
> > + struct intel_connector *connector,
> > + const struct intel_crtc_state *pipe_config,
> > + const struct drm_connector_state *conn_state)
> > {
> > struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> > struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> > @@ -2352,7 +2354,7 @@ int intel_hdcp_enable(struct intel_connector
> *connector,
> > mutex_lock(&dig_port->hdcp_mutex);
> > drm_WARN_ON(&dev_priv->drm,
> > hdcp->value ==
> DRM_MODE_CONTENT_PROTECTION_ENABLED);
> > - hdcp->content_type = content_type;
> > + hdcp->content_type = (u8)conn_state->content_type;
> >
> > if (intel_crtc_has_type(pipe_config, INTEL_OUTPUT_DP_MST)) {
> > hdcp->cpu_transcoder = pipe_config-
> >mst_master_transcoder;
> > @@ -2483,9 +2485,9 @@ 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);
> > + conn_state);
> > }
> >
> > void intel_hdcp_component_fini(struct drm_i915_private *dev_priv)
> > diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.h
> > b/drivers/gpu/drm/i915/display/intel_hdcp.h
> > index 8f53b0c7fe5c..6aaec4df6f6c 100644
> > --- a/drivers/gpu/drm/i915/display/intel_hdcp.h
> > +++ b/drivers/gpu/drm/i915/display/intel_hdcp.h
> > @@ -28,8 +28,10 @@ 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,
> > - const struct intel_crtc_state *pipe_config, u8
> content_type);
> > +int intel_hdcp_enable(struct intel_atomic_state *state,
> > + struct intel_connector *connector,
> > + const struct intel_crtc_state *pipe_config,
> > + const struct drm_connector_state *conn_state);
> > int intel_hdcp_disable(struct intel_connector *connector); void
> > intel_hdcp_update_pipe(struct intel_atomic_state *state,
> > struct intel_encoder *encoder,
>
> --
> Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Intel-gfx] [PATCH 2/2] drm/i915/hdcp: Fix modeset locking issue in hdcp mst
2023-05-11 5:57 ` [Intel-gfx] [PATCH 2/2] drm/i915/hdcp: Fix modeset locking issue in hdcp mst Suraj Kandpal
@ 2023-05-11 9:21 ` Nautiyal, Ankit K
0 siblings, 0 replies; 8+ messages in thread
From: Nautiyal, Ankit K @ 2023-05-11 9:21 UTC (permalink / raw)
To: Suraj Kandpal, intel-gfx
On 5/11/2023 11:27 AM, Suraj Kandpal 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: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
> .../drm/i915/display/intel_display_types.h | 2 ++
> drivers/gpu/drm/i915/display/intel_hdcp.c | 26 ++++++++++---------
> 2 files changed, 16 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 35c260bd1461..aecd84b66735 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1813,6 +1813,8 @@ struct intel_digital_port {
> struct hdcp_port_data hdcp_port_data;
> /* Whether the MST topology supports HDCP Type 1 Content */
> bool hdcp_mst_type1_capable;
> + /* If streams for HDCP MST are assigned with vcpi id and stream type */
> + int hdcp_mst_streams_ready;
>
> void (*write_infoframe)(struct intel_encoder *encoder,
> const struct intel_crtc_state *crtc_state,
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
> index 1928c80cb6a2..d2874431c9d3 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 drm_atomic_state *state,
> + struct intel_connector *connector)
> {
> 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;
> }
>
> @@ -69,7 +69,8 @@ static int intel_conn_to_vcpi(struct intel_connector *connector)
> * policy to mark different content_types for different streams.
> */
> static int
> -intel_hdcp_required_content_stream(struct intel_digital_port *dig_port)
> +intel_hdcp_required_content_stream(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;
> @@ -81,9 +82,6 @@ intel_hdcp_required_content_stream(struct intel_digital_port *dig_port)
>
> data->k = 0;
>
> - if (dig_port->hdcp_auth_status)
> - return 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)
> @@ -99,7 +97,8 @@ 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->streams[data->k].stream_id =
> + intel_conn_to_vcpi(&state->base, connector);
> data->k++;
>
> /* if there is only one active stream */
> @@ -127,15 +126,12 @@ static int intel_hdcp_prepare_streams(struct intel_connector *connector)
> struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
> struct hdcp_port_data *data = &dig_port->hdcp_port_data;
> struct intel_hdcp *hdcp = &connector->hdcp;
> - int ret;
>
> if (!intel_encoder_is_mst(intel_attached_encoder(connector))) {
> data->k = 1;
> data->streams[0].stream_type = hdcp->content_type;
> } else {
> - ret = intel_hdcp_required_content_stream(dig_port);
> - if (ret)
> - return ret;
> + return dig_port->hdcp_mst_streams_ready;
> }
>
> return 0;
> @@ -2373,6 +2369,12 @@ int intel_hdcp_enable(struct intel_atomic_state *state,
> * 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)) {
> + dig_port->hdcp_mst_streams_ready =
> + intel_hdcp_required_content_stream(dig_port,
> + state);
When we already know intel_hdcp_required_content_stream() has returned
error, there is no point in continuing with HDCP2 enable.
IMHO, lets drop hdcp_mst_streams_ready and just call
intel_hdcp_prepare_streams() here itself. There is no point in having
this set later during authentication retry loop.
Regards,
Ankit
> + }
> +
> ret = _intel_hdcp2_enable(connector);
> if (!ret)
> check_link_interval = DRM_HDCP2_CHECK_PERIOD_MS;
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-05-11 9:22 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-11 5:57 [Intel-gfx] [PATCH 0/2] Fix modeset locking issue in HDCP MST Suraj Kandpal
2023-05-11 5:57 ` [Intel-gfx] [PATCH 1/2] drm/i915/hdcp: add intel_atomic_state argument to hdcp_enable function Suraj Kandpal
2023-05-11 7:57 ` Jani Nikula
2023-05-11 9:14 ` Kandpal, Suraj
2023-05-11 5:57 ` [Intel-gfx] [PATCH 2/2] drm/i915/hdcp: Fix modeset locking issue in hdcp mst Suraj Kandpal
2023-05-11 9:21 ` Nautiyal, Ankit K
2023-05-11 6:39 ` [Intel-gfx] ✓ Fi.CI.BAT: success for Fix modeset locking issue in HDCP MST Patchwork
2023-05-11 8:13 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox