Re: [Freedreno] [PATCH v6 01/10] drm/hdcp: Add drm_hdcp_atomic_check()

2023-01-20 Thread Dmitry Baryshkov



On 20 January 2023 18:32:47 GMT+03:00, Sean Paul  wrote:
>On Thu, Jan 19, 2023 at 11:37:52AM +0100, Krzysztof Kozlowski wrote:
>> On 18/01/2023 20:30, Mark Yacoub wrote:
>> > From: Sean Paul 
>> > 
>> > This patch moves the hdcp atomic check from i915 to drm_hdcp so other
>> > drivers can use it. No functional changes, just cleaned up some of the
>> > code when moving it over.
>> > 
>> > Acked-by: Jani Nikula 
>> > Acked-by: Jani Nikula 
>> > Reviewed-by: Rodrigo Vivi 
>> > Reviewed-by: Abhinav Kumar 
>> > Signed-off-by: Sean Paul 
>> > Signed-off-by: Mark Yacoub 
>> > Link: 
>> > https://patchwork.freedesktop.org/patch/msgid/20210913175747.47456-2-s...@poorly.run
>> >  #v1
>> > Link: 
>> > https://patchwork.freedesktop.org/patch/msgid/20210915203834.1439-2-s...@poorly.run
>> >  #v2
>> > Link: 
>> > https://patchwork.freedesktop.org/patch/msgid/20211001151145.55916-2-s...@poorly.run
>> >  #v3
>> > Link: 
>> > https://patchwork.freedesktop.org/patch/msgid/20211105030434.2828845-2-s...@poorly.run
>> >  #v4
>> > Link: 
>> > https://patchwork.freedesktop.org/patch/msgid/20220411204741.1074308-2-s...@poorly.run
>> >  #v5
>> 
>> It seems all your previous versions were sent not to correct people and
>> lists. Therefore we see it for the first time even though it is v6! 
>
>Hi Krzysztof,
>Thanks for your review comments.
>
>Here are the addresses the last version was sent to, who is missing?
>
>To: dri-de...@lists.freedesktop.org, 
>jani.nik...@intel.com,
>intel-...@lists.freedesktop.org,
>freedreno@lists.freedesktop.org,
>rodrigo.v...@intel.com
>Cc: bjorn.anders...@linaro.org, 
>swb...@chromium.org,
>abhin...@codeaurora.org,
>markyac...@chromium.org,
>Sean Paul ,
>Maarten Lankhorst ,
>Maxime Ripard ,
>Thomas Zimmermann ,
>David Airlie ,
>Daniel Vetter ,
>Jani Nikula ,
>Joonas Lahtinen ,
>Tvrtko Ursulin 
>
>> It's
>> not the first such weird CC list in chromium, so maybe your
>> organisational process could be improved? Not only for you but for
>> colleagues as well, so you all start using get_maintainers.pl on newest
>> kernel (not something ancient)?
>
>I can't really speak for others, but I use MAINTAINERS from drm-tip. The 
>previous patch sets were sent before 24df12013853 ("MAINTAINERS: Add 
>Dmitry as MSM DRM driver co-maintainer"), which might explain why you think
>there are absences?

Current iteration of the patchset got at least three addresses wrong. They have 
been changed for various reasons. Thus I also can suppose that the list is 
incomplete and/or incorrect.

>
>Thanks again,
>
>Sean
>
>> 
>> Best regards,
>> Krzysztof
>> 
>

-- 
With best wishes
Dmitry


Re: [Freedreno] [PATCH v6 01/10] drm/hdcp: Add drm_hdcp_atomic_check()

2023-01-20 Thread Sean Paul
On Thu, Jan 19, 2023 at 11:37:52AM +0100, Krzysztof Kozlowski wrote:
> On 18/01/2023 20:30, Mark Yacoub wrote:
> > From: Sean Paul 
> > 
> > This patch moves the hdcp atomic check from i915 to drm_hdcp so other
> > drivers can use it. No functional changes, just cleaned up some of the
> > code when moving it over.
> > 
> > Acked-by: Jani Nikula 
> > Acked-by: Jani Nikula 
> > Reviewed-by: Rodrigo Vivi 
> > Reviewed-by: Abhinav Kumar 
> > Signed-off-by: Sean Paul 
> > Signed-off-by: Mark Yacoub 
> > Link: 
> > https://patchwork.freedesktop.org/patch/msgid/20210913175747.47456-2-s...@poorly.run
> >  #v1
> > Link: 
> > https://patchwork.freedesktop.org/patch/msgid/20210915203834.1439-2-s...@poorly.run
> >  #v2
> > Link: 
> > https://patchwork.freedesktop.org/patch/msgid/20211001151145.55916-2-s...@poorly.run
> >  #v3
> > Link: 
> > https://patchwork.freedesktop.org/patch/msgid/20211105030434.2828845-2-s...@poorly.run
> >  #v4
> > Link: 
> > https://patchwork.freedesktop.org/patch/msgid/20220411204741.1074308-2-s...@poorly.run
> >  #v5
> 
> It seems all your previous versions were sent not to correct people and
> lists. Therefore we see it for the first time even though it is v6! 

Hi Krzysztof,
Thanks for your review comments.

Here are the addresses the last version was sent to, who is missing?

To: dri-de...@lists.freedesktop.org, 
jani.nik...@intel.com,
intel-...@lists.freedesktop.org,
freedreno@lists.freedesktop.org,
rodrigo.v...@intel.com
Cc: bjorn.anders...@linaro.org, 
swb...@chromium.org,
abhin...@codeaurora.org,
markyac...@chromium.org,
Sean Paul ,
Maarten Lankhorst ,
Maxime Ripard ,
Thomas Zimmermann ,
David Airlie ,
Daniel Vetter ,
Jani Nikula ,
Joonas Lahtinen ,
Tvrtko Ursulin 

> It's
> not the first such weird CC list in chromium, so maybe your
> organisational process could be improved? Not only for you but for
> colleagues as well, so you all start using get_maintainers.pl on newest
> kernel (not something ancient)?

I can't really speak for others, but I use MAINTAINERS from drm-tip. The 
previous patch sets were sent before 24df12013853 ("MAINTAINERS: Add 
Dmitry as MSM DRM driver co-maintainer"), which might explain why you think
there are absences?

Thanks again,

Sean

> 
> Best regards,
> Krzysztof
> 

-- 
Sean Paul, Software Engineer, Google / Chromium OS


Re: [Freedreno] [PATCH v6 01/10] drm/hdcp: Add drm_hdcp_atomic_check()

2023-01-19 Thread Dmitry Baryshkov

On 18/01/2023 21:30, Mark Yacoub wrote:

From: Sean Paul 

This patch moves the hdcp atomic check from i915 to drm_hdcp so other
drivers can use it. No functional changes, just cleaned up some of the
code when moving it over.

Acked-by: Jani Nikula 
Acked-by: Jani Nikula 
Reviewed-by: Rodrigo Vivi 
Reviewed-by: Abhinav Kumar 
Signed-off-by: Sean Paul 
Signed-off-by: Mark Yacoub 
Link: 
https://patchwork.freedesktop.org/patch/msgid/20210913175747.47456-2-s...@poorly.run
 #v1
Link: 
https://patchwork.freedesktop.org/patch/msgid/20210915203834.1439-2-s...@poorly.run
 #v2
Link: 
https://patchwork.freedesktop.org/patch/msgid/20211001151145.55916-2-s...@poorly.run
 #v3
Link: 
https://patchwork.freedesktop.org/patch/msgid/20211105030434.2828845-2-s...@poorly.run
 #v4
Link: 
https://patchwork.freedesktop.org/patch/msgid/20220411204741.1074308-2-s...@poorly.run
 #v5

Changes in v2:
-None
Changes in v3:
-None
Changes in v4:
-None
Changes in v5:
-None
Changes in V6:
-Rebase: move helper from drm_hdcp.c to drm_hdcp_helper.c

---
  drivers/gpu/drm/display/drm_hdcp_helper.c   | 69 +
  drivers/gpu/drm/i915/display/intel_atomic.c |  4 +-
  drivers/gpu/drm/i915/display/intel_hdcp.c   | 47 --
  drivers/gpu/drm/i915/display/intel_hdcp.h   |  3 -
  include/drm/display/drm_hdcp_helper.h   |  3 +
  5 files changed, 74 insertions(+), 52 deletions(-)


With the hope that commit message is cleaned up:

Reviewed-by: Dmitry Baryshkov 

--
With best wishes
Dmitry



Re: [Freedreno] [PATCH v6 01/10] drm/hdcp: Add drm_hdcp_atomic_check()

2023-01-19 Thread Krzysztof Kozlowski
On 18/01/2023 20:30, Mark Yacoub wrote:
> From: Sean Paul 
> 
> This patch moves the hdcp atomic check from i915 to drm_hdcp so other
> drivers can use it. No functional changes, just cleaned up some of the
> code when moving it over.
> 
> Acked-by: Jani Nikula 
> Acked-by: Jani Nikula 
> Reviewed-by: Rodrigo Vivi 
> Reviewed-by: Abhinav Kumar 
> Signed-off-by: Sean Paul 
> Signed-off-by: Mark Yacoub 
> Link: 
> https://patchwork.freedesktop.org/patch/msgid/20210913175747.47456-2-s...@poorly.run
>  #v1
> Link: 
> https://patchwork.freedesktop.org/patch/msgid/20210915203834.1439-2-s...@poorly.run
>  #v2
> Link: 
> https://patchwork.freedesktop.org/patch/msgid/20211001151145.55916-2-s...@poorly.run
>  #v3
> Link: 
> https://patchwork.freedesktop.org/patch/msgid/20211105030434.2828845-2-s...@poorly.run
>  #v4
> Link: 
> https://patchwork.freedesktop.org/patch/msgid/20220411204741.1074308-2-s...@poorly.run
>  #v5

It seems all your previous versions were sent not to correct people and
lists. Therefore we see it for the first time even though it is v6! It's
not the first such weird CC list in chromium, so maybe your
organisational process could be improved? Not only for you but for
colleagues as well, so you all start using get_maintainers.pl on newest
kernel (not something ancient)?

Best regards,
Krzysztof



[Freedreno] [PATCH v6 01/10] drm/hdcp: Add drm_hdcp_atomic_check()

2023-01-18 Thread Mark Yacoub
From: Sean Paul 

This patch moves the hdcp atomic check from i915 to drm_hdcp so other
drivers can use it. No functional changes, just cleaned up some of the
code when moving it over.

Acked-by: Jani Nikula 
Acked-by: Jani Nikula 
Reviewed-by: Rodrigo Vivi 
Reviewed-by: Abhinav Kumar 
Signed-off-by: Sean Paul 
Signed-off-by: Mark Yacoub 
Link: 
https://patchwork.freedesktop.org/patch/msgid/20210913175747.47456-2-s...@poorly.run
 #v1
Link: 
https://patchwork.freedesktop.org/patch/msgid/20210915203834.1439-2-s...@poorly.run
 #v2
Link: 
https://patchwork.freedesktop.org/patch/msgid/20211001151145.55916-2-s...@poorly.run
 #v3
Link: 
https://patchwork.freedesktop.org/patch/msgid/20211105030434.2828845-2-s...@poorly.run
 #v4
Link: 
https://patchwork.freedesktop.org/patch/msgid/20220411204741.1074308-2-s...@poorly.run
 #v5

Changes in v2:
-None
Changes in v3:
-None
Changes in v4:
-None
Changes in v5:
-None
Changes in V6:
-Rebase: move helper from drm_hdcp.c to drm_hdcp_helper.c

---
 drivers/gpu/drm/display/drm_hdcp_helper.c   | 69 +
 drivers/gpu/drm/i915/display/intel_atomic.c |  4 +-
 drivers/gpu/drm/i915/display/intel_hdcp.c   | 47 --
 drivers/gpu/drm/i915/display/intel_hdcp.h   |  3 -
 include/drm/display/drm_hdcp_helper.h   |  3 +
 5 files changed, 74 insertions(+), 52 deletions(-)

diff --git a/drivers/gpu/drm/display/drm_hdcp_helper.c 
b/drivers/gpu/drm/display/drm_hdcp_helper.c
index e78999c72bd7..7d910523b05f 100644
--- a/drivers/gpu/drm/display/drm_hdcp_helper.c
+++ b/drivers/gpu/drm/display/drm_hdcp_helper.c
@@ -20,6 +20,7 @@
 #include 
 #include 
 #include 
+#include 
 
 static inline void drm_hdcp_print_ksv(const u8 *ksv)
 {
@@ -419,3 +420,71 @@ void drm_hdcp_update_content_protection(struct 
drm_connector *connector,
 dev->mode_config.content_protection_property);
 }
 EXPORT_SYMBOL(drm_hdcp_update_content_protection);
+
+/**
+ * drm_hdcp_atomic_check - Helper for drivers to call during 
connector->atomic_check
+ *
+ * @state: pointer to the atomic state being checked
+ * @connector: drm_connector on which content protection state needs an update
+ *
+ * This function can be used by display drivers to perform an atomic check on 
the
+ * hdcp state elements. If hdcp state has changed, this function will set
+ * mode_changed on the crtc driving the connector so it can update its hardware
+ * to match the hdcp state.
+ */
+void drm_hdcp_atomic_check(struct drm_connector *connector,
+  struct drm_atomic_state *state)
+{
+   struct drm_connector_state *new_conn_state, *old_conn_state;
+   struct drm_crtc_state *new_crtc_state;
+   u64 old_hdcp, new_hdcp;
+
+   old_conn_state = drm_atomic_get_old_connector_state(state, connector);
+   old_hdcp = old_conn_state->content_protection;
+
+   new_conn_state = drm_atomic_get_new_connector_state(state, connector);
+   new_hdcp = new_conn_state->content_protection;
+
+   if (!new_conn_state->crtc) {
+   /*
+* If the connector is being disabled with CP enabled, mark it
+* desired so it's re-enabled when the connector is brought back
+*/
+   if (old_hdcp == DRM_MODE_CONTENT_PROTECTION_ENABLED)
+   new_conn_state->content_protection =
+   DRM_MODE_CONTENT_PROTECTION_DESIRED;
+   return;
+   }
+
+   new_crtc_state =
+   drm_atomic_get_new_crtc_state(state, new_conn_state->crtc);
+   /*
+   * Fix the HDCP uapi content protection state in case of modeset.
+   * FIXME: As per HDCP content protection property uapi doc, an uevent()
+   * need to be sent if there is transition from ENABLED->DESIRED.
+   */
+   if (drm_atomic_crtc_needs_modeset(new_crtc_state) &&
+   (old_hdcp == DRM_MODE_CONTENT_PROTECTION_ENABLED &&
+new_hdcp != DRM_MODE_CONTENT_PROTECTION_UNDESIRED))
+   new_conn_state->content_protection =
+   DRM_MODE_CONTENT_PROTECTION_DESIRED;
+
+   /*
+* Nothing to do if content type is unchanged and one of:
+*  - state didn't change
+*  - HDCP was activated since the last commit
+*  - attempting to set to desired while already enabled
+*/
+   if (old_hdcp == new_hdcp ||
+   (old_hdcp == DRM_MODE_CONTENT_PROTECTION_DESIRED &&
+new_hdcp == DRM_MODE_CONTENT_PROTECTION_ENABLED) ||
+   (old_hdcp == DRM_MODE_CONTENT_PROTECTION_ENABLED &&
+new_hdcp == DRM_MODE_CONTENT_PROTECTION_DESIRED)) {
+   if (old_conn_state->hdcp_content_type ==
+   new_conn_state->hdcp_content_type)
+   return;
+   }
+
+   new_crtc_state->mode_changed = true;
+}
+EXPORT_SYMBOL(drm_hdcp_atomic_check);
diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c 
b/drivers/gpu/drm/i915/display/intel_atomic.c
index 18f0