Message ID | 1522763873-23041-12-git-send-email-ramalingam.c@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Ramalingam, Thank you for the patch! Yet something to improve: [auto build test ERROR on drm-intel/for-linux-next] [also build test ERROR on next-20180403] [cannot apply to v4.16] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Ramalingam-C/drm-i915-Implement-HDCP2-2/20180404-031743 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: i386-allmodconfig (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 All errors (new ones prefixed by >>): drivers/misc/mei/hdcp/mei_hdcp.c:52:5: error: redefinition of 'mei_initiate_hdcp2_session' int mei_initiate_hdcp2_session(struct mei_cl_device *cldev, ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from drivers/misc/mei/hdcp/mei_hdcp.c:35:0: include/linux/mei_hdcp.h:134:5: note: previous definition of 'mei_initiate_hdcp2_session' was here int mei_initiate_hdcp2_session(struct mei_cl_device *cldev, ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/misc/mei/hdcp/mei_hdcp.c:122:1: error: redefinition of 'mei_verify_receiver_cert_prepare_km' mei_verify_receiver_cert_prepare_km(struct mei_cl_device *cldev, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from drivers/misc/mei/hdcp/mei_hdcp.c:35:0: include/linux/mei_hdcp.h:141:1: note: previous definition of 'mei_verify_receiver_cert_prepare_km' was here mei_verify_receiver_cert_prepare_km(struct mei_cl_device *cldev, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/misc/mei/hdcp/mei_hdcp.c:200:5: error: redefinition of 'mei_verify_hprime' int mei_verify_hprime(struct mei_cl_device *cldev, struct mei_hdcp_data *data, ^~~~~~~~~~~~~~~~~ In file included from drivers/misc/mei/hdcp/mei_hdcp.c:35:0: include/linux/mei_hdcp.h:151:5: note: previous definition of 'mei_verify_hprime' was here int mei_verify_hprime(struct mei_cl_device *cldev, struct mei_hdcp_data *data, ^~~~~~~~~~~~~~~~~ >> drivers/misc/mei/hdcp/mei_hdcp.c:258:5: error: redefinition of 'mei_store_pairing_info' int mei_store_pairing_info(struct mei_cl_device *cldev, ^~~~~~~~~~~~~~~~~~~~~~ In file included from drivers/misc/mei/hdcp/mei_hdcp.c:35:0: include/linux/mei_hdcp.h:157:5: note: previous definition of 'mei_store_pairing_info' was here int mei_store_pairing_info(struct mei_cl_device *cldev, ^~~~~~~~~~~~~~~~~~~~~~ drivers/misc/mei/hdcp/mei_hdcp.c:318:5: error: redefinition of 'mei_cldev_register_notify' int mei_cldev_register_notify(struct notifier_block *nb) ^~~~~~~~~~~~~~~~~~~~~~~~~ In file included from drivers/misc/mei/hdcp/mei_hdcp.c:35:0: include/linux/mei_hdcp.h:125:12: note: previous definition of 'mei_cldev_register_notify' was here static int mei_cldev_register_notify(struct notifier_block *nb) ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/misc/mei/hdcp/mei_hdcp.c:324:5: error: redefinition of 'mei_cldev_unregister_notify' int mei_cldev_unregister_notify(struct notifier_block *nb) ^~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from drivers/misc/mei/hdcp/mei_hdcp.c:35:0: include/linux/mei_hdcp.h:129:12: note: previous definition of 'mei_cldev_unregister_notify' was here static int mei_cldev_unregister_notify(struct notifier_block *nb) ^~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/mei_hdcp.h:129:12: warning: 'mei_cldev_unregister_notify' defined but not used [-Wunused-function] include/linux/mei_hdcp.h:125:12: warning: 'mei_cldev_register_notify' defined but not used [-Wunused-function] static int mei_cldev_register_notify(struct notifier_block *nb) ^~~~~~~~~~~~~~~~~~~~~~~~~ vim +/mei_store_pairing_info +258 drivers/misc/mei/hdcp/mei_hdcp.c 188 189 /** 190 * mei_verify_hprime: 191 * Function to verify AKE_Send_H_prime received 192 * 193 * @cldev : Pointer for mei client device 194 * @data : Intel HW specific Data 195 * @rx_hprime : Pointer for AKE_Send_H_prime 196 * @hprime_sz : Input buffer size 197 * 198 * Returns 0 on Success, <0 on Failure 199 */ > 200 int mei_verify_hprime(struct mei_cl_device *cldev, struct mei_hdcp_data *data, 201 struct hdcp2_ake_send_hprime *rx_hprime) 202 { 203 struct wired_cmd_ake_send_hprime_in send_hprime_in = { { 0 } }; 204 struct wired_cmd_ake_send_hprime_out send_hprime_out = { { 0 } }; 205 struct device *dev; 206 ssize_t byte; 207 208 if (!data || !rx_hprime) 209 return -EINVAL; 210 211 dev = &cldev->dev; 212 213 send_hprime_in.header.api_version = HDCP_API_VERSION; 214 send_hprime_in.header.command_id = WIRED_AKE_SEND_HPRIME; 215 send_hprime_in.header.status = ME_HDCP_STATUS_SUCCESS; 216 send_hprime_in.header.buffer_len = WIRED_CMD_BUF_LEN_AKE_SEND_HPRIME_IN; 217 218 send_hprime_in.port.integrated_port_type = data->port_type; 219 send_hprime_in.port.physical_port = data->port; 220 221 memcpy(send_hprime_in.h_prime, rx_hprime->h_prime, 222 sizeof(rx_hprime->h_prime)); 223 224 byte = mei_cldev_send(cldev, (u8 *)&send_hprime_in, 225 sizeof(send_hprime_in)); 226 if (byte < 0) { 227 dev_dbg(dev, "mei_cldev_send failed. %d\n", (int)byte); 228 return byte; 229 } 230 231 byte = mei_cldev_recv(cldev, (u8 *)&send_hprime_out, 232 sizeof(send_hprime_out)); 233 if (byte < 0) { 234 dev_dbg(dev, "mei_cldev_recv failed. %d\n", (int)byte); 235 return byte; 236 } 237 238 if (send_hprime_out.header.status != ME_HDCP_STATUS_SUCCESS) { 239 dev_dbg(dev, "ME cmd 0x%08X Failed. Status: 0x%X\n", 240 WIRED_AKE_SEND_HPRIME, send_hprime_out.header.status); 241 return -1; 242 } 243 return 0; 244 } 245 EXPORT_SYMBOL(mei_verify_hprime); 246 247 /** 248 * mei_store_pairing_info: 249 * Function to store pairing info received from panel 250 * 251 * @cldev : Pointer for mei client device 252 * @data : Intel HW specific Data 253 * @pairing_info : Pointer for AKE_Send_Pairing_Info 254 * 255 * Returns 0 on Success, <0 on Failure 256 */ 257 > 258 int mei_store_pairing_info(struct mei_cl_device *cldev, 259 struct mei_hdcp_data *data, 260 struct hdcp2_ake_send_pairing_info *pairing_info) 261 { 262 struct wired_cmd_ake_send_pairing_info_in pairing_info_in = { { 0 } }; 263 struct wired_cmd_ake_send_pairing_info_out pairing_info_out = { { 0 } }; 264 struct device *dev; 265 ssize_t byte; 266 267 if (!data || !pairing_info) 268 return -EINVAL; 269 270 dev = &cldev->dev; 271 272 pairing_info_in.header.api_version = HDCP_API_VERSION; 273 pairing_info_in.header.command_id = WIRED_AKE_SEND_PAIRING_INFO; 274 pairing_info_in.header.status = ME_HDCP_STATUS_SUCCESS; 275 pairing_info_in.header.buffer_len = 276 WIRED_CMD_BUF_LEN_SEND_PAIRING_INFO_IN; 277 278 pairing_info_in.port.integrated_port_type = data->port_type; 279 pairing_info_in.port.physical_port = data->port; 280 281 memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km, 282 sizeof(pairing_info_in.e_kh_km)); 283 284 byte = mei_cldev_send(cldev, (u8 *)&pairing_info_in, 285 sizeof(pairing_info_in)); 286 if (byte < 0) { 287 dev_dbg(dev, "mei_cldev_send failed. %d\n", (int)byte); 288 return byte; 289 } 290 291 byte = mei_cldev_recv(cldev, (u8 *)&pairing_info_out, 292 sizeof(pairing_info_out)); 293 if (byte < 0) { 294 dev_dbg(dev, "mei_cldev_recv failed. %d\n", (int)byte); 295 return byte; 296 } 297 298 if (pairing_info_out.header.status != ME_HDCP_STATUS_SUCCESS) { 299 dev_dbg(dev, "ME cmd 0x%08X failed. Status: 0x%X\n", 300 WIRED_AKE_SEND_PAIRING_INFO, 301 pairing_info_out.header.status); 302 return -1; 303 } 304 return 0; 305 } 306 EXPORT_SYMBOL(mei_store_pairing_info); 307 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
>-----Original Message----- >From: Intel-gfx [mailto:intel-gfx-bounces@lists.freedesktop.org] On Behalf Of >Ramalingam C >Sent: Tuesday, April 3, 2018 7:27 PM >To: intel-gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org; >seanpaul@chromium.org; daniel@ffwll.ch; chris@chris-wilson.co.uk; >jani.nikula@linux.intel.com; Winkler, Tomas <tomas.winkler@intel.com>; >Usyskin, Alexander <alexander.usyskin@intel.com> >Cc: Vivi, Rodrigo <rodrigo.vivi@intel.com> >Subject: [Intel-gfx] [PATCH v3 11/40] misc/mei/hdcp: Store the HDCP Pairing info > >Provides Pairing info to ME to store. > >Pairing is a process to fast track the subsequent authentication with the same >HDCP sink. > >On Success, received HDCP pairing info is stored in non-volatile memory of ME. > >v2: > Rebased. >v3: > cldev is passed as first parameter [Tomas] > Redundant comments and cast are removed [Tomas] > >Signed-off-by: Ramalingam C <ramalingam.c@intel.com> >--- > drivers/misc/mei/hdcp/mei_hdcp.c | 61 >++++++++++++++++++++++++++++++++++++++++ > include/linux/mei_hdcp.h | 10 +++++++ > 2 files changed, 71 insertions(+) > >diff --git a/drivers/misc/mei/hdcp/mei_hdcp.c >b/drivers/misc/mei/hdcp/mei_hdcp.c >index fa548310de7a..60afdd0cee79 100644 >--- a/drivers/misc/mei/hdcp/mei_hdcp.c >+++ b/drivers/misc/mei/hdcp/mei_hdcp.c >@@ -244,6 +244,67 @@ int mei_verify_hprime(struct mei_cl_device *cldev, >struct mei_hdcp_data *data, } EXPORT_SYMBOL(mei_verify_hprime); > >+/** Drop the extra *, unless you really love it :) >+ * mei_store_pairing_info: >+ * Function to store pairing info received from panel >+ * >+ * @cldev : Pointer for mei client device >+ * @data : Intel HW specific Data >+ * @pairing_info : Pointer for AKE_Send_Pairing_Info >+ * >+ * Returns 0 on Success, <0 on Failure >+ */ >+ >+int mei_store_pairing_info(struct mei_cl_device *cldev, >+ struct mei_hdcp_data *data, >+ struct hdcp2_ake_send_pairing_info *pairing_info) { >+ struct wired_cmd_ake_send_pairing_info_in pairing_info_in = { { 0 } }; >+ struct wired_cmd_ake_send_pairing_info_out pairing_info_out = { { 0 } }; >+ struct device *dev; >+ ssize_t byte; >+ >+ if (!data || !pairing_info) >+ return -EINVAL; >+ >+ dev = &cldev->dev; >+ >+ pairing_info_in.header.api_version = HDCP_API_VERSION; >+ pairing_info_in.header.command_id = >WIRED_AKE_SEND_PAIRING_INFO; >+ pairing_info_in.header.status = ME_HDCP_STATUS_SUCCESS; >+ pairing_info_in.header.buffer_len = >+ > WIRED_CMD_BUF_LEN_SEND_PAIRING_INFO_IN; >+ >+ pairing_info_in.port.integrated_port_type = data->port_type; >+ pairing_info_in.port.physical_port = data->port; >+ >+ memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km, Validate pairing_info->e_kh_km for NULL. >+ sizeof(pairing_info_in.e_kh_km)); >+ >+ byte = mei_cldev_send(cldev, (u8 *)&pairing_info_in, >+ sizeof(pairing_info_in)); >+ if (byte < 0) { >+ dev_dbg(dev, "mei_cldev_send failed. %d\n", (int)byte); >+ return byte; >+ } >+ >+ byte = mei_cldev_recv(cldev, (u8 *)&pairing_info_out, >+ sizeof(pairing_info_out)); >+ if (byte < 0) { >+ dev_dbg(dev, "mei_cldev_recv failed. %d\n", (int)byte); >+ return byte; >+ } >+ >+ if (pairing_info_out.header.status != ME_HDCP_STATUS_SUCCESS) { >+ dev_dbg(dev, "ME cmd 0x%08X failed. Status: 0x%X\n", >+ WIRED_AKE_SEND_PAIRING_INFO, >+ pairing_info_out.header.status); >+ return -1; >+ } Leave a blank line here. >+ return 0; >+} >+EXPORT_SYMBOL(mei_store_pairing_info); >+ > void mei_cldev_state_notify_clients(struct mei_cl_device *cldev, bool enabled) { > if (enabled) >diff --git a/include/linux/mei_hdcp.h b/include/linux/mei_hdcp.h index >00bfde251ba4..be16e49d8018 100644 >--- a/include/linux/mei_hdcp.h >+++ b/include/linux/mei_hdcp.h >@@ -118,6 +118,9 @@ mei_verify_receiver_cert_prepare_km(struct >mei_cl_device *cldev, > size_t *msg_sz); > int mei_verify_hprime(struct mei_cl_device *cldev, struct mei_hdcp_data *data, > struct hdcp2_ake_send_hprime *rx_hprime); >+int mei_store_pairing_info(struct mei_cl_device *cldev, >+ struct mei_hdcp_data *data, >+ struct hdcp2_ake_send_pairing_info *pairing_info); > #else > static int mei_cldev_register_notify(struct notifier_block *nb) { @@ -150,5 >+153,12 @@ int mei_verify_hprime(struct mei_cl_device *cldev, struct >mei_hdcp_data *data, { > return -ENODEV; > } >+static inline >+int mei_store_pairing_info(struct mei_cl_device *cldev, >+ struct mei_hdcp_data *data, >+ struct hdcp2_ake_send_pairing_info *pairing_info) { >+ return -ENODEV; >+} > #endif /* defined (CONFIG_INTEL_MEI_HDCP) */ #endif /* defined >(_LINUX_MEI_HDCP_H) */ >-- >2.7.4 > >_______________________________________________ >Intel-gfx mailing list >Intel-gfx@lists.freedesktop.org >https://lists.freedesktop.org/mailman/listinfo/intel-gfx
On Wednesday 09 May 2018 03:58 PM, Shankar, Uma wrote: > >> -----Original Message----- >> From: Intel-gfx [mailto:intel-gfx-bounces@lists.freedesktop.org] On Behalf Of >> Ramalingam C >> Sent: Tuesday, April 3, 2018 7:27 PM >> To: intel-gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org; >> seanpaul@chromium.org; daniel@ffwll.ch; chris@chris-wilson.co.uk; >> jani.nikula@linux.intel.com; Winkler, Tomas <tomas.winkler@intel.com>; >> Usyskin, Alexander <alexander.usyskin@intel.com> >> Cc: Vivi, Rodrigo <rodrigo.vivi@intel.com> >> Subject: [Intel-gfx] [PATCH v3 11/40] misc/mei/hdcp: Store the HDCP Pairing info >> >> Provides Pairing info to ME to store. >> >> Pairing is a process to fast track the subsequent authentication with the same >> HDCP sink. >> >> On Success, received HDCP pairing info is stored in non-volatile memory of ME. >> >> v2: >> Rebased. >> v3: >> cldev is passed as first parameter [Tomas] >> Redundant comments and cast are removed [Tomas] >> >> Signed-off-by: Ramalingam C <ramalingam.c@intel.com> >> --- >> drivers/misc/mei/hdcp/mei_hdcp.c | 61 >> ++++++++++++++++++++++++++++++++++++++++ >> include/linux/mei_hdcp.h | 10 +++++++ >> 2 files changed, 71 insertions(+) >> >> diff --git a/drivers/misc/mei/hdcp/mei_hdcp.c >> b/drivers/misc/mei/hdcp/mei_hdcp.c >> index fa548310de7a..60afdd0cee79 100644 >> --- a/drivers/misc/mei/hdcp/mei_hdcp.c >> +++ b/drivers/misc/mei/hdcp/mei_hdcp.c >> @@ -244,6 +244,67 @@ int mei_verify_hprime(struct mei_cl_device *cldev, >> struct mei_hdcp_data *data, } EXPORT_SYMBOL(mei_verify_hprime); >> >> +/** > Drop the extra *, unless you really love it :) ha ha. Actually I have added intentionally. But removing them across all patches as per your suggestions. :) > >> + * mei_store_pairing_info: >> + * Function to store pairing info received from panel >> + * >> + * @cldev : Pointer for mei client device >> + * @data : Intel HW specific Data >> + * @pairing_info : Pointer for AKE_Send_Pairing_Info >> + * >> + * Returns 0 on Success, <0 on Failure >> + */ >> + >> +int mei_store_pairing_info(struct mei_cl_device *cldev, >> + struct mei_hdcp_data *data, >> + struct hdcp2_ake_send_pairing_info *pairing_info) { >> + struct wired_cmd_ake_send_pairing_info_in pairing_info_in = { { 0 } }; >> + struct wired_cmd_ake_send_pairing_info_out pairing_info_out = { { 0 } }; >> + struct device *dev; >> + ssize_t byte; >> + >> + if (!data || !pairing_info) >> + return -EINVAL; >> + >> + dev = &cldev->dev; >> + >> + pairing_info_in.header.api_version = HDCP_API_VERSION; >> + pairing_info_in.header.command_id = >> WIRED_AKE_SEND_PAIRING_INFO; >> + pairing_info_in.header.status = ME_HDCP_STATUS_SUCCESS; >> + pairing_info_in.header.buffer_len = >> + >> WIRED_CMD_BUF_LEN_SEND_PAIRING_INFO_IN; >> + >> + pairing_info_in.port.integrated_port_type = data->port_type; >> + pairing_info_in.port.physical_port = data->port; >> + >> + memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km, > Validate pairing_info->e_kh_km for NULL. As we discussed we need not check for null here. > >> + sizeof(pairing_info_in.e_kh_km)); >> + >> + byte = mei_cldev_send(cldev, (u8 *)&pairing_info_in, >> + sizeof(pairing_info_in)); >> + if (byte < 0) { >> + dev_dbg(dev, "mei_cldev_send failed. %d\n", (int)byte); >> + return byte; >> + } >> + >> + byte = mei_cldev_recv(cldev, (u8 *)&pairing_info_out, >> + sizeof(pairing_info_out)); >> + if (byte < 0) { >> + dev_dbg(dev, "mei_cldev_recv failed. %d\n", (int)byte); >> + return byte; >> + } >> + >> + if (pairing_info_out.header.status != ME_HDCP_STATUS_SUCCESS) { >> + dev_dbg(dev, "ME cmd 0x%08X failed. Status: 0x%X\n", >> + WIRED_AKE_SEND_PAIRING_INFO, >> + pairing_info_out.header.status); >> + return -1; >> + } > Leave a blank line here. sure. I will do it in all patches. Thanks. --Ram > >> + return 0; >> +} >> +EXPORT_SYMBOL(mei_store_pairing_info); >> + >> void mei_cldev_state_notify_clients(struct mei_cl_device *cldev, bool enabled) { >> if (enabled) >> diff --git a/include/linux/mei_hdcp.h b/include/linux/mei_hdcp.h index >> 00bfde251ba4..be16e49d8018 100644 >> --- a/include/linux/mei_hdcp.h >> +++ b/include/linux/mei_hdcp.h >> @@ -118,6 +118,9 @@ mei_verify_receiver_cert_prepare_km(struct >> mei_cl_device *cldev, >> size_t *msg_sz); >> int mei_verify_hprime(struct mei_cl_device *cldev, struct mei_hdcp_data *data, >> struct hdcp2_ake_send_hprime *rx_hprime); >> +int mei_store_pairing_info(struct mei_cl_device *cldev, >> + struct mei_hdcp_data *data, >> + struct hdcp2_ake_send_pairing_info *pairing_info); >> #else >> static int mei_cldev_register_notify(struct notifier_block *nb) { @@ -150,5 >> +153,12 @@ int mei_verify_hprime(struct mei_cl_device *cldev, struct >> mei_hdcp_data *data, { >> return -ENODEV; >> } >> +static inline >> +int mei_store_pairing_info(struct mei_cl_device *cldev, >> + struct mei_hdcp_data *data, >> + struct hdcp2_ake_send_pairing_info *pairing_info) { >> + return -ENODEV; >> +} >> #endif /* defined (CONFIG_INTEL_MEI_HDCP) */ #endif /* defined >> (_LINUX_MEI_HDCP_H) */ >> -- >> 2.7.4 >> >> _______________________________________________ >> Intel-gfx mailing list >> Intel-gfx@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> -----Original Message----- > From: C, Ramalingam > Sent: Wednesday, May 16, 2018 18:53 > To: Shankar, Uma <uma.shankar@intel.com>; intel- > gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org; > seanpaul@chromium.org; daniel@ffwll.ch; chris@chris-wilson.co.uk; > jani.nikula@linux.intel.com; Winkler, Tomas <tomas.winkler@intel.com>; > Usyskin, Alexander <alexander.usyskin@intel.com> > Cc: Vivi, Rodrigo <rodrigo.vivi@intel.com> > Subject: Re: [Intel-gfx] [PATCH v3 11/40] misc/mei/hdcp: Store the HDCP > Pairing info > > > > On Wednesday 09 May 2018 03:58 PM, Shankar, Uma wrote: > > > >> -----Original Message----- > >> From: Intel-gfx [mailto:intel-gfx-bounces@lists.freedesktop.org] On > >> Behalf Of Ramalingam C > >> Sent: Tuesday, April 3, 2018 7:27 PM > >> To: intel-gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org; > >> seanpaul@chromium.org; daniel@ffwll.ch; chris@chris-wilson.co.uk; > >> jani.nikula@linux.intel.com; Winkler, Tomas > >> <tomas.winkler@intel.com>; Usyskin, Alexander > >> <alexander.usyskin@intel.com> > >> Cc: Vivi, Rodrigo <rodrigo.vivi@intel.com> > >> Subject: [Intel-gfx] [PATCH v3 11/40] misc/mei/hdcp: Store the HDCP > >> Pairing info > >> > >> Provides Pairing info to ME to store. > >> > >> Pairing is a process to fast track the subsequent authentication with > >> the same HDCP sink. > >> > >> On Success, received HDCP pairing info is stored in non-volatile memory > of ME. > >> > >> v2: > >> Rebased. > >> v3: > >> cldev is passed as first parameter [Tomas] > >> Redundant comments and cast are removed [Tomas] > >> > >> Signed-off-by: Ramalingam C <ramalingam.c@intel.com> > >> --- > >> drivers/misc/mei/hdcp/mei_hdcp.c | 61 > >> ++++++++++++++++++++++++++++++++++++++++ > >> include/linux/mei_hdcp.h | 10 +++++++ > >> 2 files changed, 71 insertions(+) > >> > >> diff --git a/drivers/misc/mei/hdcp/mei_hdcp.c > >> b/drivers/misc/mei/hdcp/mei_hdcp.c > >> index fa548310de7a..60afdd0cee79 100644 > >> --- a/drivers/misc/mei/hdcp/mei_hdcp.c > >> +++ b/drivers/misc/mei/hdcp/mei_hdcp.c > >> @@ -244,6 +244,67 @@ int mei_verify_hprime(struct mei_cl_device > >> *cldev, struct mei_hdcp_data *data, } > >> EXPORT_SYMBOL(mei_verify_hprime); > >> > >> +/** > > Drop the extra *, unless you really love it :) > ha ha. Actually I have added intentionally. But removing them across all > patches as per your suggestions. :) /** is a syntax for KDoc, so if you want to receive automatic code documentation you should use it and adhere to KDoc syntax > > > >> + * mei_store_pairing_info: > >> + * Function to store pairing info received from panel > >> + * > >> + * @cldev : Pointer for mei client device > >> + * @data : Intel HW specific Data > >> + * @pairing_info : Pointer for AKE_Send_Pairing_Info > >> + * > >> + * Returns 0 on Success, <0 on Failure */ > >> + > >> +int mei_store_pairing_info(struct mei_cl_device *cldev, > >> + struct mei_hdcp_data *data, > >> + struct hdcp2_ake_send_pairing_info *pairing_info) > { > >> + struct wired_cmd_ake_send_pairing_info_in pairing_info_in = { { 0 } > }; > >> + struct wired_cmd_ake_send_pairing_info_out pairing_info_out = { { > 0 } }; > >> + struct device *dev; > >> + ssize_t byte; > >> + > >> + if (!data || !pairing_info) > >> + return -EINVAL; > >> + > >> + dev = &cldev->dev; > >> + > >> + pairing_info_in.header.api_version = HDCP_API_VERSION; > >> + pairing_info_in.header.command_id = > >> WIRED_AKE_SEND_PAIRING_INFO; > >> + pairing_info_in.header.status = ME_HDCP_STATUS_SUCCESS; > >> + pairing_info_in.header.buffer_len = > >> + > >> WIRED_CMD_BUF_LEN_SEND_PAIRING_INFO_IN; > >> + > >> + pairing_info_in.port.integrated_port_type = data->port_type; > >> + pairing_info_in.port.physical_port = data->port; > >> + > >> + memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km, > > Validate pairing_info->e_kh_km for NULL. > As we discussed we need not check for null here. > > > >> + sizeof(pairing_info_in.e_kh_km)); > >> + > >> + byte = mei_cldev_send(cldev, (u8 *)&pairing_info_in, > >> + sizeof(pairing_info_in)); > >> + if (byte < 0) { > >> + dev_dbg(dev, "mei_cldev_send failed. %d\n", (int)byte); > >> + return byte; > >> + } > >> + > >> + byte = mei_cldev_recv(cldev, (u8 *)&pairing_info_out, > >> + sizeof(pairing_info_out)); > >> + if (byte < 0) { > >> + dev_dbg(dev, "mei_cldev_recv failed. %d\n", (int)byte); > >> + return byte; > >> + } > >> + > >> + if (pairing_info_out.header.status != ME_HDCP_STATUS_SUCCESS) { > >> + dev_dbg(dev, "ME cmd 0x%08X failed. Status: 0x%X\n", > >> + WIRED_AKE_SEND_PAIRING_INFO, > >> + pairing_info_out.header.status); > >> + return -1; > >> + } > > Leave a blank line here. > sure. I will do it in all patches. Thanks. > > --Ram > > > >> + return 0; > >> +} > >> +EXPORT_SYMBOL(mei_store_pairing_info); > >> + > >> void mei_cldev_state_notify_clients(struct mei_cl_device *cldev, bool > enabled) { > >> if (enabled) > >> diff --git a/include/linux/mei_hdcp.h b/include/linux/mei_hdcp.h > >> index > >> 00bfde251ba4..be16e49d8018 100644 > >> --- a/include/linux/mei_hdcp.h > >> +++ b/include/linux/mei_hdcp.h > >> @@ -118,6 +118,9 @@ mei_verify_receiver_cert_prepare_km(struct > >> mei_cl_device *cldev, > >> size_t *msg_sz); > >> int mei_verify_hprime(struct mei_cl_device *cldev, struct mei_hdcp_data > *data, > >> struct hdcp2_ake_send_hprime *rx_hprime); > >> +int mei_store_pairing_info(struct mei_cl_device *cldev, > >> + struct mei_hdcp_data *data, > >> + struct hdcp2_ake_send_pairing_info *pairing_info); > >> #else > >> static int mei_cldev_register_notify(struct notifier_block *nb) { @@ > >> -150,5 > >> +153,12 @@ int mei_verify_hprime(struct mei_cl_device *cldev, struct > >> mei_hdcp_data *data, { > >> return -ENODEV; > >> } > >> +static inline > >> +int mei_store_pairing_info(struct mei_cl_device *cldev, > >> + struct mei_hdcp_data *data, > >> + struct hdcp2_ake_send_pairing_info *pairing_info) > { > >> + return -ENODEV; > >> +} > >> #endif /* defined (CONFIG_INTEL_MEI_HDCP) */ #endif /* defined > >> (_LINUX_MEI_HDCP_H) */ > >> -- > >> 2.7.4 > >> > >> _______________________________________________ > >> Intel-gfx mailing list > >> Intel-gfx@lists.freedesktop.org > >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> -----Original Message----- > From: Usyskin, Alexander > Sent: Thursday, May 17, 2018 11:29 AM > To: C, Ramalingam <ramalingam.c@intel.com>; Shankar, Uma > <uma.shankar@intel.com>; intel-gfx@lists.freedesktop.org; dri- > devel@lists.freedesktop.org; seanpaul@chromium.org; daniel@ffwll.ch; > chris@chris-wilson.co.uk; jani.nikula@linux.intel.com; Winkler, Tomas > <tomas.winkler@intel.com> > Cc: Vivi, Rodrigo <rodrigo.vivi@intel.com> > Subject: RE: [Intel-gfx] [PATCH v3 11/40] misc/mei/hdcp: Store the HDCP Pairing > info > > > > > -----Original Message----- > > From: C, Ramalingam > > Sent: Wednesday, May 16, 2018 18:53 > > To: Shankar, Uma <uma.shankar@intel.com>; intel- > > gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org; > > seanpaul@chromium.org; daniel@ffwll.ch; chris@chris-wilson.co.uk; > > jani.nikula@linux.intel.com; Winkler, Tomas <tomas.winkler@intel.com>; > > Usyskin, Alexander <alexander.usyskin@intel.com> > > Cc: Vivi, Rodrigo <rodrigo.vivi@intel.com> > > Subject: Re: [Intel-gfx] [PATCH v3 11/40] misc/mei/hdcp: Store the > > HDCP Pairing info > > > > > > > > On Wednesday 09 May 2018 03:58 PM, Shankar, Uma wrote: > > > > > >> -----Original Message----- > > >> From: Intel-gfx [mailto:intel-gfx-bounces@lists.freedesktop.org] On > > >> Behalf Of Ramalingam C > > >> Sent: Tuesday, April 3, 2018 7:27 PM > > >> To: intel-gfx@lists.freedesktop.org; > > >> dri-devel@lists.freedesktop.org; seanpaul@chromium.org; > > >> daniel@ffwll.ch; chris@chris-wilson.co.uk; > > >> jani.nikula@linux.intel.com; Winkler, Tomas > > >> <tomas.winkler@intel.com>; Usyskin, Alexander > > >> <alexander.usyskin@intel.com> > > >> Cc: Vivi, Rodrigo <rodrigo.vivi@intel.com> > > >> Subject: [Intel-gfx] [PATCH v3 11/40] misc/mei/hdcp: Store the HDCP > > >> Pairing info > > >> > > >> Provides Pairing info to ME to store. > > >> > > >> Pairing is a process to fast track the subsequent authentication > > >> with the same HDCP sink. > > >> > > >> On Success, received HDCP pairing info is stored in non-volatile > > >> memory > > of ME. > > >> > > >> v2: > > >> Rebased. > > >> v3: > > >> cldev is passed as first parameter [Tomas] > > >> Redundant comments and cast are removed [Tomas] > > >> > > >> Signed-off-by: Ramalingam C <ramalingam.c@intel.com> > > >> --- > > >> drivers/misc/mei/hdcp/mei_hdcp.c | 61 > > >> ++++++++++++++++++++++++++++++++++++++++ > > >> include/linux/mei_hdcp.h | 10 +++++++ > > >> 2 files changed, 71 insertions(+) > > >> > > >> diff --git a/drivers/misc/mei/hdcp/mei_hdcp.c > > >> b/drivers/misc/mei/hdcp/mei_hdcp.c > > >> index fa548310de7a..60afdd0cee79 100644 > > >> --- a/drivers/misc/mei/hdcp/mei_hdcp.c > > >> +++ b/drivers/misc/mei/hdcp/mei_hdcp.c > > >> @@ -244,6 +244,67 @@ int mei_verify_hprime(struct mei_cl_device > > >> *cldev, struct mei_hdcp_data *data, } > > >> EXPORT_SYMBOL(mei_verify_hprime); > > >> > > >> +/** > > > Drop the extra *, unless you really love it :) > > ha ha. Actually I have added intentionally. But removing them across > > all patches as per your suggestions. :) > > /** is a syntax for KDoc, so if you want to receive automatic code > documentation you should use it and adhere to KDoc syntax Thanks Alexander for the information. At present I am not adding the KDoc support, if it is not compulsory. So I will remove the /**. --Ram > > > > > >> + * mei_store_pairing_info: > > >> + * Function to store pairing info received from panel > > >> + * > > >> + * @cldev : Pointer for mei client device > > >> + * @data : Intel HW specific Data > > >> + * @pairing_info : Pointer for AKE_Send_Pairing_Info > > >> + * > > >> + * Returns 0 on Success, <0 on Failure */ > > >> + > > >> +int mei_store_pairing_info(struct mei_cl_device *cldev, > > >> + struct mei_hdcp_data *data, > > >> + struct hdcp2_ake_send_pairing_info *pairing_info) > > { > > >> + struct wired_cmd_ake_send_pairing_info_in pairing_info_in = { { 0 > > >> +} > > }; > > >> + struct wired_cmd_ake_send_pairing_info_out pairing_info_out = { { > > 0 } }; > > >> + struct device *dev; > > >> + ssize_t byte; > > >> + > > >> + if (!data || !pairing_info) > > >> + return -EINVAL; > > >> + > > >> + dev = &cldev->dev; > > >> + > > >> + pairing_info_in.header.api_version = HDCP_API_VERSION; > > >> + pairing_info_in.header.command_id = > > >> WIRED_AKE_SEND_PAIRING_INFO; > > >> + pairing_info_in.header.status = ME_HDCP_STATUS_SUCCESS; > > >> + pairing_info_in.header.buffer_len = > > >> + > > >> WIRED_CMD_BUF_LEN_SEND_PAIRING_INFO_IN; > > >> + > > >> + pairing_info_in.port.integrated_port_type = data->port_type; > > >> + pairing_info_in.port.physical_port = data->port; > > >> + > > >> + memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km, > > > Validate pairing_info->e_kh_km for NULL. > > As we discussed we need not check for null here. > > > > > >> + sizeof(pairing_info_in.e_kh_km)); > > >> + > > >> + byte = mei_cldev_send(cldev, (u8 *)&pairing_info_in, > > >> + sizeof(pairing_info_in)); > > >> + if (byte < 0) { > > >> + dev_dbg(dev, "mei_cldev_send failed. %d\n", (int)byte); > > >> + return byte; > > >> + } > > >> + > > >> + byte = mei_cldev_recv(cldev, (u8 *)&pairing_info_out, > > >> + sizeof(pairing_info_out)); > > >> + if (byte < 0) { > > >> + dev_dbg(dev, "mei_cldev_recv failed. %d\n", (int)byte); > > >> + return byte; > > >> + } > > >> + > > >> + if (pairing_info_out.header.status != ME_HDCP_STATUS_SUCCESS) { > > >> + dev_dbg(dev, "ME cmd 0x%08X failed. Status: 0x%X\n", > > >> + WIRED_AKE_SEND_PAIRING_INFO, > > >> + pairing_info_out.header.status); > > >> + return -1; > > >> + } > > > Leave a blank line here. > > sure. I will do it in all patches. Thanks. > > > > --Ram > > > > > >> + return 0; > > >> +} > > >> +EXPORT_SYMBOL(mei_store_pairing_info); > > >> + > > >> void mei_cldev_state_notify_clients(struct mei_cl_device *cldev, > > >> bool > > enabled) { > > >> if (enabled) > > >> diff --git a/include/linux/mei_hdcp.h b/include/linux/mei_hdcp.h > > >> index > > >> 00bfde251ba4..be16e49d8018 100644 > > >> --- a/include/linux/mei_hdcp.h > > >> +++ b/include/linux/mei_hdcp.h > > >> @@ -118,6 +118,9 @@ mei_verify_receiver_cert_prepare_km(struct > > >> mei_cl_device *cldev, > > >> size_t *msg_sz); > > >> int mei_verify_hprime(struct mei_cl_device *cldev, struct > > >> mei_hdcp_data > > *data, > > >> struct hdcp2_ake_send_hprime *rx_hprime); > > >> +int mei_store_pairing_info(struct mei_cl_device *cldev, > > >> + struct mei_hdcp_data *data, > > >> + struct hdcp2_ake_send_pairing_info *pairing_info); > > >> #else > > >> static int mei_cldev_register_notify(struct notifier_block *nb) { > > >> @@ > > >> -150,5 > > >> +153,12 @@ int mei_verify_hprime(struct mei_cl_device *cldev, > > >> +struct > > >> mei_hdcp_data *data, { > > >> return -ENODEV; > > >> } > > >> +static inline > > >> +int mei_store_pairing_info(struct mei_cl_device *cldev, > > >> + struct mei_hdcp_data *data, > > >> + struct hdcp2_ake_send_pairing_info *pairing_info) > > { > > >> + return -ENODEV; > > >> +} > > >> #endif /* defined (CONFIG_INTEL_MEI_HDCP) */ #endif /* defined > > >> (_LINUX_MEI_HDCP_H) */ > > >> -- > > >> 2.7.4 > > >> > > >> _______________________________________________ > > >> Intel-gfx mailing list > > >> Intel-gfx@lists.freedesktop.org > > >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
On Thu, 17 May 2018, "C, Ramalingam" <ramalingam.c@intel.com> wrote: >> > >> +/** >> > > Drop the extra *, unless you really love it :) >> > ha ha. Actually I have added intentionally. But removing them across >> > all patches as per your suggestions. :) >> >> /** is a syntax for KDoc, so if you want to receive automatic code >> documentation you should use it and adhere to KDoc syntax > > Thanks Alexander for the information. At present I am not adding the > KDoc support, if it is not compulsory. So I will remove the /**. It's "kernel-doc" to be pedantic. No such thing as KDoc. If you use /** please stick to the exact kernel-doc format. The below is not. You'll find the documentation under Documentation/doc-guide. If you drop /** please either use free form comments or stick to the kernel-doc format. Please don't leave behind things that look eerily similar to kernel-doc comments but are not. Without /** you won't even get warnings about them. /** * mei_store_pairing_info - Store pairing info received from panel * @cldev: Pointer for mei client device * @data: Intel HW specific Data * @pairing_info: Pointer for AKE_Send_Pairing_Info * * Returns 0 on success, <0 on failure. */ BR, Jani. > > --Ram >> > > >> > >> + * mei_store_pairing_info: >> > >> + * Function to store pairing info received from panel >> > >> + * >> > >> + * @cldev : Pointer for mei client device >> > >> + * @data : Intel HW specific Data >> > >> + * @pairing_info : Pointer for AKE_Send_Pairing_Info >> > >> + * >> > >> + * Returns 0 on Success, <0 on Failure */
Thanks Jani. I will use free form comments in v4, meanwhile i will explore the required stuff for kernel-doc and add kernel-doc entries where ever it makes sense, in upcoming versions. --Ram On Thursday 17 May 2018 01:47 PM, Jani Nikula wrote: > On Thu, 17 May 2018, "C, Ramalingam" <ramalingam.c@intel.com> wrote: >>>>>> +/** >>>>> Drop the extra *, unless you really love it :) >>>> ha ha. Actually I have added intentionally. But removing them across >>>> all patches as per your suggestions. :) >>> /** is a syntax for KDoc, so if you want to receive automatic code >>> documentation you should use it and adhere to KDoc syntax >> Thanks Alexander for the information. At present I am not adding the >> KDoc support, if it is not compulsory. So I will remove the /**. > It's "kernel-doc" to be pedantic. No such thing as KDoc. > > If you use /** please stick to the exact kernel-doc format. The below is > not. You'll find the documentation under Documentation/doc-guide. > > If you drop /** please either use free form comments or stick to the > kernel-doc format. Please don't leave behind things that look eerily > similar to kernel-doc comments but are not. Without /** you won't even > get warnings about them. > > /** > * mei_store_pairing_info - Store pairing info received from panel > * @cldev: Pointer for mei client device > * @data: Intel HW specific Data > * @pairing_info: Pointer for AKE_Send_Pairing_Info > * > * Returns 0 on success, <0 on failure. > */ > > BR, > Jani. > > >> --Ram >>>>>> + * mei_store_pairing_info: >>>>>> + * Function to store pairing info received from panel >>>>>> + * >>>>>> + * @cldev : Pointer for mei client device >>>>>> + * @data : Intel HW specific Data >>>>>> + * @pairing_info : Pointer for AKE_Send_Pairing_Info >>>>>> + * >>>>>> + * Returns 0 on Success, <0 on Failure */
diff --git a/drivers/misc/mei/hdcp/mei_hdcp.c b/drivers/misc/mei/hdcp/mei_hdcp.c index fa548310de7a..60afdd0cee79 100644 --- a/drivers/misc/mei/hdcp/mei_hdcp.c +++ b/drivers/misc/mei/hdcp/mei_hdcp.c @@ -244,6 +244,67 @@ int mei_verify_hprime(struct mei_cl_device *cldev, struct mei_hdcp_data *data, } EXPORT_SYMBOL(mei_verify_hprime); +/** + * mei_store_pairing_info: + * Function to store pairing info received from panel + * + * @cldev : Pointer for mei client device + * @data : Intel HW specific Data + * @pairing_info : Pointer for AKE_Send_Pairing_Info + * + * Returns 0 on Success, <0 on Failure + */ + +int mei_store_pairing_info(struct mei_cl_device *cldev, + struct mei_hdcp_data *data, + struct hdcp2_ake_send_pairing_info *pairing_info) +{ + struct wired_cmd_ake_send_pairing_info_in pairing_info_in = { { 0 } }; + struct wired_cmd_ake_send_pairing_info_out pairing_info_out = { { 0 } }; + struct device *dev; + ssize_t byte; + + if (!data || !pairing_info) + return -EINVAL; + + dev = &cldev->dev; + + pairing_info_in.header.api_version = HDCP_API_VERSION; + pairing_info_in.header.command_id = WIRED_AKE_SEND_PAIRING_INFO; + pairing_info_in.header.status = ME_HDCP_STATUS_SUCCESS; + pairing_info_in.header.buffer_len = + WIRED_CMD_BUF_LEN_SEND_PAIRING_INFO_IN; + + pairing_info_in.port.integrated_port_type = data->port_type; + pairing_info_in.port.physical_port = data->port; + + memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km, + sizeof(pairing_info_in.e_kh_km)); + + byte = mei_cldev_send(cldev, (u8 *)&pairing_info_in, + sizeof(pairing_info_in)); + if (byte < 0) { + dev_dbg(dev, "mei_cldev_send failed. %d\n", (int)byte); + return byte; + } + + byte = mei_cldev_recv(cldev, (u8 *)&pairing_info_out, + sizeof(pairing_info_out)); + if (byte < 0) { + dev_dbg(dev, "mei_cldev_recv failed. %d\n", (int)byte); + return byte; + } + + if (pairing_info_out.header.status != ME_HDCP_STATUS_SUCCESS) { + dev_dbg(dev, "ME cmd 0x%08X failed. Status: 0x%X\n", + WIRED_AKE_SEND_PAIRING_INFO, + pairing_info_out.header.status); + return -1; + } + return 0; +} +EXPORT_SYMBOL(mei_store_pairing_info); + void mei_cldev_state_notify_clients(struct mei_cl_device *cldev, bool enabled) { if (enabled) diff --git a/include/linux/mei_hdcp.h b/include/linux/mei_hdcp.h index 00bfde251ba4..be16e49d8018 100644 --- a/include/linux/mei_hdcp.h +++ b/include/linux/mei_hdcp.h @@ -118,6 +118,9 @@ mei_verify_receiver_cert_prepare_km(struct mei_cl_device *cldev, size_t *msg_sz); int mei_verify_hprime(struct mei_cl_device *cldev, struct mei_hdcp_data *data, struct hdcp2_ake_send_hprime *rx_hprime); +int mei_store_pairing_info(struct mei_cl_device *cldev, + struct mei_hdcp_data *data, + struct hdcp2_ake_send_pairing_info *pairing_info); #else static int mei_cldev_register_notify(struct notifier_block *nb) { @@ -150,5 +153,12 @@ int mei_verify_hprime(struct mei_cl_device *cldev, struct mei_hdcp_data *data, { return -ENODEV; } +static inline +int mei_store_pairing_info(struct mei_cl_device *cldev, + struct mei_hdcp_data *data, + struct hdcp2_ake_send_pairing_info *pairing_info) +{ + return -ENODEV; +} #endif /* defined (CONFIG_INTEL_MEI_HDCP) */ #endif /* defined (_LINUX_MEI_HDCP_H) */
Provides Pairing info to ME to store. Pairing is a process to fast track the subsequent authentication with the same HDCP sink. On Success, received HDCP pairing info is stored in non-volatile memory of ME. v2: Rebased. v3: cldev is passed as first parameter [Tomas] Redundant comments and cast are removed [Tomas] Signed-off-by: Ramalingam C <ramalingam.c@intel.com> --- drivers/misc/mei/hdcp/mei_hdcp.c | 61 ++++++++++++++++++++++++++++++++++++++++ include/linux/mei_hdcp.h | 10 +++++++ 2 files changed, 71 insertions(+)