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:137: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:144: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:154: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:160: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_initiate_locality_check' int mei_initiate_locality_check(struct mei_cl_device *cldev, ^~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from drivers/misc/mei/hdcp/mei_hdcp.c:35:0: include/linux/mei_hdcp.h:167:5: note: previous definition of 'mei_initiate_locality_check' was here int mei_initiate_locality_check(struct mei_cl_device *cldev, ^~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/misc/mei/hdcp/mei_hdcp.c:374: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:128: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:380: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:132: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:132:12: warning: 'mei_cldev_unregister_notify' defined but not used [-Wunused-function] include/linux/mei_hdcp.h:128:12: warning: 'mei_cldev_register_notify' defined but not used [-Wunused-function] static int mei_cldev_register_notify(struct notifier_block *nb) ^~~~~~~~~~~~~~~~~~~~~~~~~ vim +/mei_initiate_locality_check +318 drivers/misc/mei/hdcp/mei_hdcp.c 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 308 /** 309 * mei_initiate_locality_check: 310 * Function to prepare LC_Init. 311 * 312 * @cldev : Pointer for mei client device 313 * @data : Intel HW specific Data 314 * @hdcp2_lc_init : Pointer for storing LC_Init 315 * 316 * Returns 0 on Success, <0 on Failure 317 */ > 318 int mei_initiate_locality_check(struct mei_cl_device *cldev, 319 struct mei_hdcp_data *data, 320 struct hdcp2_lc_init *lc_init_data) 321 { 322 struct wired_cmd_init_locality_check_in lc_init_in = { { 0 } }; 323 struct wired_cmd_init_locality_check_out lc_init_out = { { 0 } }; 324 struct device *dev; 325 ssize_t byte; 326 327 if (!data || !lc_init_data) 328 return -EINVAL; 329 330 dev = &cldev->dev; 331 332 lc_init_in.header.api_version = HDCP_API_VERSION; 333 lc_init_in.header.command_id = WIRED_INIT_LOCALITY_CHECK; 334 lc_init_in.header.status = ME_HDCP_STATUS_SUCCESS; 335 lc_init_in.header.buffer_len = WIRED_CMD_BUF_LEN_INIT_LOCALITY_CHECK_IN; 336 337 lc_init_in.port.integrated_port_type = data->port_type; 338 lc_init_in.port.physical_port = data->port; 339 340 byte = mei_cldev_send(cldev, (u8 *)&lc_init_in, sizeof(lc_init_in)); 341 if (byte < 0) { 342 dev_dbg(dev, "mei_cldev_send failed. %d\n", (int)byte); 343 return byte; 344 } 345 346 byte = mei_cldev_recv(cldev, (u8 *)&lc_init_out, sizeof(lc_init_out)); 347 if (byte < 0) { 348 dev_dbg(dev, "mei_cldev_recv failed. %d\n", (int)byte); 349 return byte; 350 } 351 352 if (lc_init_out.header.status != ME_HDCP_STATUS_SUCCESS) { 353 dev_dbg(dev, "ME cmd 0x%08X Failed. status: 0x%X\n", 354 WIRED_INIT_LOCALITY_CHECK, lc_init_out.header.status); 355 return -1; 356 } 357 358 lc_init_data->msg_id = HDCP_2_2_LC_INIT; 359 memcpy(lc_init_data->r_n, lc_init_out.r_n, HDCP_2_2_RN_LEN); 360 return 0; 361 } 362 EXPORT_SYMBOL(mei_initiate_locality_check); 363 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation