linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Kandpal, Suraj" <suraj.kandpal@intel.com>
To: Mark Yacoub <markyacoub@chromium.org>,
	"quic_khsieh@quicinc.com" <quic_khsieh@quicinc.com>,
	"linux-arm-msm@vger.kernel.org" <linux-arm-msm@vger.kernel.org>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>,
	"freedreno@lists.freedesktop.org"
	<freedreno@lists.freedesktop.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>
Cc: "quic_sbillaka@quicinc.com" <quic_sbillaka@quicinc.com>,
	"konrad.dybcio@somainline.org" <konrad.dybcio@somainline.org>,
	"Souza, Jose" <jose.souza@intel.com>,
	"bjorn.andersson@linaro.org" <bjorn.andersson@linaro.org>,
	"krzysztof.kozlowski+dt@linaro.org" 
	<krzysztof.kozlowski+dt@linaro.org>,
	"hbh25y@gmail.com" <hbh25y@gmail.com>,
	"Vasut, Marek" <marex@denx.de>,
	"Dixit, Ashutosh" <ashutosh.dixit@intel.com>,
	"sean@poorly.run" <sean@poorly.run>,
	"abhinavk@codeaurora.org" <abhinavk@codeaurora.org>,
	"javierm@redhat.com" <javierm@redhat.com>,
	"Murthy, Arun R" <arun.r.murthy@intel.com>,
	"Lisovskiy, Stanislav" <stanislav.lisovskiy@intel.com>,
	"agross@kernel.org" <agross@kernel.org>,
	"quic_jesszhan@quicinc.com" <quic_jesszhan@quicinc.com>,
	"Nautiyal, Ankit K" <ankit.k.nautiyal@intel.com>,
	"Nikula, Jani" <jani.nikula@intel.com>,
	"De Marchi, Lucas" <lucas.demarchi@intel.com>,
	"quic_abhinavk@quicinc.com" <quic_abhinavk@quicinc.com>,
	"swboyd@chromium.org" <swboyd@chromium.org>,
	"robh+dt@kernel.org" <robh+dt@kernel.org>,
	"christophe.jaillet@wanadoo.fr" <christophe.jaillet@wanadoo.fr>,
	"maxime@cerno.tech" <maxime@cerno.tech>,
	"Vivi, Rodrigo" <rodrigo.vivi@intel.com>,
	"johan+linaro@kernel.org" <johan+linaro@kernel.org>,
	"tvrtko.ursulin@linux.intel.com" <tvrtko.ursulin@linux.intel.com>,
	"andersson@kernel.org" <andersson@kernel.org>,
	"dianders@chromium.org" <dianders@chromium.org>,
	"Sharma, Swati2" <swati2.sharma@intel.com>,
	"'Navare, Manasi D'" <manasi.d.navare@intel.com>,
	"tzimmermann@suse.de" <tzimmermann@suse.de>,
	"Modem, Bhanuprakash" <bhanuprakash.modem@intel.com>,
	"dmitry.baryshkov@linaro.org" <dmitry.baryshkov@linaro.org>,
	"seanpaul@chromium.org" <seanpaul@chromium.org>
Subject: RE: [PATCH v6 06/10] drm/i915/hdcp: Retain hdcp_capable return codes
Date: Thu, 23 Mar 2023 07:17:34 +0000	[thread overview]
Message-ID: <MWHPR11MB1741D833E10227E8BA1CEE03E3879@MWHPR11MB1741.namprd11.prod.outlook.com> (raw)
In-Reply-To: <MWHPR11MB1741FB33E933A3285B7DC88DE3BA9@MWHPR11MB1741.namprd11.prod.outlook.com>



> -----Original Message-----
> From: Kandpal, Suraj
> Sent: Friday, March 10, 2023 1:55 PM
> To: Mark Yacoub <markyacoub@chromium.org>; quic_khsieh@quicinc.com;
> linux-arm-msm@vger.kernel.org; dri-devel@lists.freedesktop.org;
> freedreno@lists.freedesktop.org; devicetree@vger.kernel.org; linux-
> kernel@vger.kernel.org; intel-gfx@lists.freedesktop.org
> Cc: quic_sbillaka@quicinc.com; konrad.dybcio@somainline.org; Souza, Jose
> <jose.souza@intel.com>; bjorn.andersson@linaro.org;
> krzysztof.kozlowski+dt@linaro.org; hbh25y@gmail.com; Vasut, Marek
> <marex@denx.de>; Dixit, Ashutosh <ashutosh.dixit@intel.com>;
> sean@poorly.run; abhinavk@codeaurora.org; javierm@redhat.com; Murthy,
> Arun R <arun.r.murthy@intel.com>; Lisovskiy, Stanislav
> <Stanislav.Lisovskiy@intel.com>; agross@kernel.org;
> quic_jesszhan@quicinc.com; Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>;
> Nikula, Jani <jani.nikula@intel.com>; De Marchi, Lucas
> <lucas.demarchi@intel.com>; quic_abhinavk@quicinc.com;
> swboyd@chromium.org; robh+dt@kernel.org;
> christophe.jaillet@wanadoo.fr; maxime@cerno.tech; Vivi, Rodrigo
> <rodrigo.vivi@intel.com>; johan+linaro@kernel.org;
> tvrtko.ursulin@linux.intel.com; andersson@kernel.org;
> dianders@chromium.org; Sharma, Swati2 <swati2.sharma@intel.com>;
> Navare, Manasi D <manasi.d.navare@intel.com>; tzimmermann@suse.de;
> Modem, Bhanuprakash <Bhanuprakash.Modem@intel.com>;
> dmitry.baryshkov@linaro.org; seanpaul@chromium.org
> Subject: RE: [PATCH v6 06/10] drm/i915/hdcp: Retain hdcp_capable return
> codes
> 
> > Subject: [PATCH v6 06/10] drm/i915/hdcp: Retain hdcp_capable return
> > codes
> >
> > From: Sean Paul <seanpaul@chromium.org>
> >
> > The shim functions return error codes, but they are discarded in
> > intel_hdcp.c. This patch plumbs the return codes through so they are
> > properly handled.
> >
> > Acked-by: Jani Nikula <jani.nikula@intel.com>
> > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > Signed-off-by: Sean Paul <seanpaul@chromium.org>
> > Signed-off-by: Mark Yacoub <markyacoub@chromium.org>
> > Link:
> > https://patchwork.freedesktop.org/patch/msgid/20210913175747.47456-7-
> > sean@poorly.run #v1
> > Link:
> > https://patchwork.freedesktop.org/patch/msgid/20210915203834.1439-7-
> > sean@poorly.run #v2
> > Link:
> > https://patchwork.freedesktop.org/patch/msgid/20211001151145.55916-7-
> > sean@poorly.run #v3
> > Link:
> >
> https://patchwork.freedesktop.org/patch/msgid/20211105030434.2828845-
> > 7-sean@poorly.run #v4
> > Link:
> >
> https://patchwork.freedesktop.org/patch/msgid/20220411204741.1074308-
> > 7-sean@poorly.run #v5
> >
> > Changes in v2:
> > -None
> > Changes in v3:
> > -None
> > Changes in v4:
> > -None
> > Changes in v5:
> > -None
> > Changes in v6:
> > -Rebased
> >
> > ---
> >  .../drm/i915/display/intel_display_debugfs.c  |  9 +++-
> >  drivers/gpu/drm/i915/display/intel_hdcp.c     | 51 ++++++++++---------
> >  drivers/gpu/drm/i915/display/intel_hdcp.h     |  4 +-
> >  3 files changed, 37 insertions(+), 27 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> > b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> > index 7c7253a2541c..13a4153bb76e 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> > @@ -492,6 +492,7 @@ static void intel_panel_info(struct seq_file *m,
> > static void intel_hdcp_info(struct seq_file *m,
> >  			    struct intel_connector *intel_connector)  {
> > +	int ret;
> >  	bool hdcp_cap, hdcp2_cap;
> >
> >  	if (!intel_connector->hdcp.shim) {
> > @@ -499,8 +500,12 @@ static void intel_hdcp_info(struct seq_file *m,
> >  		goto out;
> >  	}
> >
> > -	hdcp_cap = intel_hdcp_capable(intel_connector);
> > -	hdcp2_cap = intel_hdcp2_capable(intel_connector);
> > +	ret = intel_hdcp_capable(intel_connector, &hdcp_cap);
> > +	if (ret)
> > +		hdcp_cap = false;
> > +	ret = intel_hdcp2_capable(intel_connector, &hdcp2_cap);
> > +	if (ret)
> > +		hdcp2_cap = false;
> >
> 
> This does not seem to be adding value here as this error which you referred
> to as being ignored is used both in case of hdmi and dp is being to determine
> if hdcp_cap or hdcp2 cap is true or false which you basically reiterate here too
> check the intel_dp_hdcp2_capable and intel_hdmi_hdcp2_capable .
> this change in itself can be removed.
> 
> Regards,
> Suraj Kandpal
> 
> >  	if (hdcp_cap)
> >  		seq_puts(m, "HDCP1.4 ");
> > diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c
> > b/drivers/gpu/drm/i915/display/intel_hdcp.c
> > index 0a20bc41be55..61a862ae1f28 100644
> > --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> > +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> > @@ -177,50 +177,49 @@ int intel_hdcp_read_valid_bksv(struct
> > intel_digital_port *dig_port,  }
> >
> >  /* Is HDCP1.4 capable on Platform and Sink */ -bool
> > intel_hdcp_capable(struct intel_connector *connector)
> > +int intel_hdcp_capable(struct intel_connector *connector, bool
> > +*capable)
> >  {
> >  	struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> >  	const struct intel_hdcp_shim *shim = connector->hdcp.shim;
> > -	bool capable = false;
> >  	u8 bksv[5];
> >
> > +	*capable = false;
> > +
> >  	if (!shim)
> > -		return capable;
> > +		return 0;
> >
> > -	if (shim->hdcp_capable) {
> > -		shim->hdcp_capable(dig_port, &capable);
> > -	} else {
> > -		if (!intel_hdcp_read_valid_bksv(dig_port, shim, bksv))
> > -			capable = true;
> > -	}
> > +	if (shim->hdcp_capable)
> > +		return shim->hdcp_capable(dig_port, capable);
> > +
> > +	if (!intel_hdcp_read_valid_bksv(dig_port, shim, bksv))
> > +		*capable = true;
> >
> > -	return capable;
> > +	return 0;
> >  }
> >
> >  /* Is HDCP2.2 capable on Platform and Sink */ -bool
> > intel_hdcp2_capable(struct intel_connector *connector)
> > +int intel_hdcp2_capable(struct intel_connector *connector, bool
> > +*capable)
> >  {
> >  	struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> >  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> >  	struct intel_hdcp *hdcp = &connector->hdcp;
> > -	bool capable = false;
> > +
> > +	*capable = false;
> >
> >  	/* I915 support for HDCP2.2 */
> >  	if (!hdcp->hdcp2_supported)
> > -		return false;
> > +		return 0;
> >
> >  	/* MEI interface is solid */
> >  	mutex_lock(&dev_priv->display.hdcp.comp_mutex);
> >  	if (!dev_priv->display.hdcp.comp_added ||  !dev_priv-
> > >display.hdcp.master) {
> >  		mutex_unlock(&dev_priv->display.hdcp.comp_mutex);
> > -		return false;
> > +		return 0;
> >  	}
> >  	mutex_unlock(&dev_priv->display.hdcp.comp_mutex);
> >
> >  	/* Sink's capability for HDCP2.2 */
> > -	hdcp->shim->hdcp_2_2_capable(dig_port, &capable);
> > -
> > -	return capable;
> > +	return hdcp->shim->hdcp_2_2_capable(dig_port, capable);
> >  }
> >
> >  static bool intel_hdcp_in_use(struct drm_i915_private *dev_priv, @@ -
> > 2355,6 +2354,7 @@ int intel_hdcp_enable(struct intel_connector
> > *connector,
> >  	struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> >  	struct intel_hdcp *hdcp = &connector->hdcp;
> >  	unsigned long check_link_interval =
> DRM_HDCP_CHECK_PERIOD_MS;
> > +	bool capable;
> >  	int ret = -EINVAL;
> >
> >  	if (!hdcp->shim)
> > @@ -2373,21 +2373,27 @@ int intel_hdcp_enable(struct intel_connector
> > *connector,
> >  	 * Considering that HDCP2.2 is more secure than HDCP1.4, If the
> > setup
> >  	 * is capable of HDCP2.2, it is preferred to use HDCP2.2.
> >  	 */
> > -	if (intel_hdcp2_capable(connector)) {
> > +	ret = intel_hdcp2_capable(connector, &capable);
> > +	if (capable) {
> >  		ret = _intel_hdcp2_enable(connector);
> > -		if (!ret)
> > +		if (!ret) {
> >  			check_link_interval =
> > DRM_HDCP2_CHECK_PERIOD_MS;
> > +			goto out;
> > +		}

HI,
Just noticed another changed here if any error is returned with intel_hdc2_capable
You directly jump to out which will stop us from enabling hdcp 1.4 we should check
for hdcp 1.4 capability even if hdcp 2.2 capability is returned with an error one other
reason I don't think the handling of error codes are adding value here.

Regards,
Suraj Kandpal
> >  	}
> >
> >  	/*
> >  	 * When HDCP2.2 fails and Content Type is not Type1, HDCP1.4 will
> >  	 * be attempted.
> >  	 */
> > -	if (ret && intel_hdcp_capable(connector) &&
> > -	    hdcp->content_type != DRM_MODE_HDCP_CONTENT_TYPE1) {
> > +	ret = intel_hdcp_capable(connector, &capable);
> > +	if (ret)
> > +		goto out;
> > +
> > +	if (capable && hdcp->content_type !=
> > DRM_MODE_HDCP_CONTENT_TYPE1)
> >  		ret = _intel_hdcp_enable(connector);
> > -	}
> >
> > +out:
> >  	if (!ret) {
> >  		schedule_delayed_work(&hdcp->check_work,
> > check_link_interval);
> >  		intel_hdcp_update_value(connector,
> > @@ -2395,7 +2401,6 @@ int intel_hdcp_enable(struct intel_connector
> > *connector,
> >  					true);
> >  	}
> >
> > -out:
> >  	mutex_unlock(&dig_port->hdcp_mutex);
> >  	mutex_unlock(&hdcp->mutex);
> >  	return ret;
> > diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.h
> > b/drivers/gpu/drm/i915/display/intel_hdcp.h
> > index 7c5fd84a7b65..f06f6e5a2b1a 100644
> > --- a/drivers/gpu/drm/i915/display/intel_hdcp.h
> > +++ b/drivers/gpu/drm/i915/display/intel_hdcp.h
> > @@ -33,8 +33,8 @@ void intel_hdcp_update_pipe(struct
> > intel_atomic_state *state,
> >  			    const struct intel_crtc_state *crtc_state,
> >  			    const struct drm_connector_state *conn_state);
> bool
> > is_hdcp_supported(struct drm_i915_private *dev_priv, enum port port);
> > -bool intel_hdcp_capable(struct intel_connector *connector); -bool
> > intel_hdcp2_capable(struct intel_connector *connector);
> > +int intel_hdcp_capable(struct intel_connector *connector, bool
> > +*capable); int intel_hdcp2_capable(struct intel_connector *connector,
> > +bool *capable);
> >  void intel_hdcp_component_init(struct drm_i915_private *dev_priv);
> > void intel_hdcp_component_fini(struct drm_i915_private *dev_priv);
> > void intel_hdcp_cleanup(struct intel_connector *connector);
> > --
> > 2.39.0.246.g2a6d74b583-goog


  reply	other threads:[~2023-03-23  7:18 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-18 19:30 [PATCH v6 00/10] drm/hdcp: Pull HDCP auth/exchange/check into helpers Mark Yacoub
2023-01-18 19:30 ` [PATCH v6 01/10] drm/hdcp: Add drm_hdcp_atomic_check() Mark Yacoub
2023-01-19 10:37   ` Krzysztof Kozlowski
2023-01-20 15:32     ` Sean Paul
2023-01-20 20:33       ` Dmitry Baryshkov
2023-01-19 11:41   ` Dmitry Baryshkov
2023-03-10  5:30   ` [Intel-gfx] " Kandpal, Suraj
2023-01-18 19:30 ` [PATCH v6 02/10] drm/hdcp: Avoid changing crtc state in hdcp atomic check Mark Yacoub
2023-01-19 11:45   ` Dmitry Baryshkov
2023-03-10  6:00   ` [Intel-gfx] " Kandpal, Suraj
2023-01-18 19:30 ` [PATCH v6 03/10] drm/hdcp: Update property value on content type and user changes Mark Yacoub
2023-01-18 19:30 ` [PATCH v6 04/10] drm/hdcp: Expand HDCP helper library for enable/disable/check Mark Yacoub
2023-01-19 12:54   ` Dmitry Baryshkov
2023-01-18 19:30 ` [PATCH v6 05/10] drm/i915/hdcp: Consolidate HDCP setup/state cache Mark Yacoub
2023-01-18 19:30 ` [PATCH v6 06/10] drm/i915/hdcp: Retain hdcp_capable return codes Mark Yacoub
2023-03-10  8:25   ` Kandpal, Suraj
2023-03-23  7:17     ` Kandpal, Suraj [this message]
2023-03-24 19:27       ` Mark Yacoub
2023-03-28  5:52         ` Kandpal, Suraj
2023-01-18 19:30 ` [PATCH v6 07/10] drm/i915/hdcp: Use HDCP helpers for i915 Mark Yacoub
2023-01-31 17:16   ` [Intel-gfx] " Rodrigo Vivi
2023-01-31 17:23     ` Rodrigo Vivi
2023-03-14  5:54   ` Kandpal, Suraj
2023-03-24 19:34     ` Mark Yacoub
2023-03-28  6:12       ` Kandpal, Suraj
2023-01-18 19:30 ` [PATCH v6 08/10] dt-bindings: msm/dp: Add bindings for HDCP registers Mark Yacoub
2023-01-19  1:16   ` Rob Herring
2023-01-19  7:48   ` Johan Hovold
2023-01-19  8:36   ` Dmitry Baryshkov
2023-01-18 19:30 ` [PATCH v6 09/10] arm64: dts: qcom: sc7180: Add support for HDCP in dp-controller Mark Yacoub
2023-01-19  1:32   ` Abhinav Kumar
2023-01-19  8:40   ` Dmitry Baryshkov
2023-01-19 10:35   ` Krzysztof Kozlowski
2023-01-20 15:54     ` Sean Paul
2023-01-21 10:16       ` Dmitry Baryshkov
2023-01-21 19:06       ` Krzysztof Kozlowski
2023-01-18 19:30 ` [PATCH v6 10/10] drm/msm: Implement HDCP 1.x using the new drm HDCP helpers Mark Yacoub
2023-01-19 11:35   ` Dmitry Baryshkov

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=MWHPR11MB1741D833E10227E8BA1CEE03E3879@MWHPR11MB1741.namprd11.prod.outlook.com \
    --to=suraj.kandpal@intel.com \
    --cc=abhinavk@codeaurora.org \
    --cc=agross@kernel.org \
    --cc=andersson@kernel.org \
    --cc=ankit.k.nautiyal@intel.com \
    --cc=arun.r.murthy@intel.com \
    --cc=ashutosh.dixit@intel.com \
    --cc=bhanuprakash.modem@intel.com \
    --cc=bjorn.andersson@linaro.org \
    --cc=christophe.jaillet@wanadoo.fr \
    --cc=devicetree@vger.kernel.org \
    --cc=dianders@chromium.org \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=hbh25y@gmail.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@intel.com \
    --cc=javierm@redhat.com \
    --cc=johan+linaro@kernel.org \
    --cc=jose.souza@intel.com \
    --cc=konrad.dybcio@somainline.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lucas.demarchi@intel.com \
    --cc=manasi.d.navare@intel.com \
    --cc=marex@denx.de \
    --cc=markyacoub@chromium.org \
    --cc=maxime@cerno.tech \
    --cc=quic_abhinavk@quicinc.com \
    --cc=quic_jesszhan@quicinc.com \
    --cc=quic_khsieh@quicinc.com \
    --cc=quic_sbillaka@quicinc.com \
    --cc=robh+dt@kernel.org \
    --cc=rodrigo.vivi@intel.com \
    --cc=sean@poorly.run \
    --cc=seanpaul@chromium.org \
    --cc=stanislav.lisovskiy@intel.com \
    --cc=swati2.sharma@intel.com \
    --cc=swboyd@chromium.org \
    --cc=tvrtko.ursulin@linux.intel.com \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

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

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