On Wed, Nov 13, 2019 at 10:51:42AM +0100, Thomas Hellström (VMware) wrote: > From: Thomas Hellstrom <thellst...@vmware.com> > > With AMD-SEV high-bandwidth port messaging runs into trouble since the > message content is encrypted using the vm-specific key, and the > hypervisor is unable to read it. > > So use unencrypted dma-coherent bounce buffers for temporary message > storage space. Allocating that memory is expensive so a future > optimization might include a static unencrypted memory area for messages. > > Signed-off-by: Thomas Hellstrom <thellst...@vmware.com> > Reviewed-by: Brian Paul <bri...@vmware.com>
Hi Thomas, The 0day team has been doing clang builds for us and sending the results to our mailing list for triage; this patch causes the following warning. Seems legitimate, mind taking a look at it and resolving it how you see fit? Cheers, Nathan On Thu, Nov 14, 2019 at 03:36:44AM +0800, kbuild test robot wrote: > CC: kbuild-...@lists.01.org > In-Reply-To: <20191113095144.2981-1-thomas...@shipmail.org> > References: <20191113095144.2981-1-thomas...@shipmail.org> > TO: "Thomas Hellström (VMware)" <thomas...@shipmail.org> > CC: dri-devel@lists.freedesktop.org, Thomas Hellstrom > <thellst...@vmware.com>, Brian Paul <bri...@vmware.com>, Thomas Hellstrom > <thellst...@vmware.com>, Brian Paul <bri...@vmware.com> > CC: Thomas Hellstrom <thellst...@vmware.com>, Brian Paul <bri...@vmware.com> > > Hi "Thomas, > > I love your patch! Perhaps something to improve: > > [auto build test WARNING on linus/master] > [also build test WARNING on v5.4-rc7 next-20191113] > [if your patch is applied to the wrong git tree, please drop us a note to help > improve the system. BTW, we also suggest to use '--base' option to specify the > base tree in git format-patch, please see > https://stackoverflow.com/a/37406982] > > url: > https://github.com/0day-ci/linux/commits/Thomas-Hellstr-m-VMware/drm-vmwgfx-Use-dma-coherent-memory-for-high-bandwidth-port-messaging/20191114-020818 > base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git > 0e3f1ad80fc8cb0c517fd9a9afb22752b741fa76 > config: x86_64-rhel-7.6 (attached as .config) > compiler: clang version 10.0.0 (git://gitmirror/llvm_project > 335ac2eb662ce5f1888e2a50310b01fba2d40d68) > reproduce: > # save the attached .config to linux build tree > make ARCH=x86_64 > > If you fix the issue, kindly add following tag > Reported-by: kbuild test robot <l...@intel.com> > > All warnings (new ones prefixed by >>): > > >> drivers/gpu/drm/vmwgfx/vmwgfx_msg.c:441:6: warning: variable > >> 'reply_handle' is used uninitialized whenever '||' condition is true > >> [-Wsometimes-uninitialized] > if (vmw_send_msg(&channel, msg) || > ^~~~~~~~~~~~~~~~~~~~~~~~~~~ > drivers/gpu/drm/vmwgfx/vmwgfx_msg.c:467:47: note: uninitialized use occurs > here > dma_free_coherent(dev, reply_len + 1, reply, reply_handle); > ^~~~~~~~~~~~ > drivers/gpu/drm/vmwgfx/vmwgfx_msg.c:441:6: note: remove the '||' if its > condition is always false > if (vmw_send_msg(&channel, msg) || > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > drivers/gpu/drm/vmwgfx/vmwgfx_msg.c:421:37: note: initialize the variable > 'reply_handle' to silence this warning > dma_addr_t req_handle, reply_handle; > ^ > = 0 > 1 warning generated. > > vim +441 drivers/gpu/drm/vmwgfx/vmwgfx_msg.c > > 89da76fde68de1 Sinclair Yeh 2016-04-27 400 > 89da76fde68de1 Sinclair Yeh 2016-04-27 401 > 89da76fde68de1 Sinclair Yeh 2016-04-27 402 /** > 89da76fde68de1 Sinclair Yeh 2016-04-27 403 * vmw_host_get_guestinfo: > Gets a GuestInfo parameter > 89da76fde68de1 Sinclair Yeh 2016-04-27 404 * > 89da76fde68de1 Sinclair Yeh 2016-04-27 405 * Gets the value of a > GuestInfo.* parameter. The value returned will be in > 89da76fde68de1 Sinclair Yeh 2016-04-27 406 * a string, and it is up > to the caller to post-process. > 89da76fde68de1 Sinclair Yeh 2016-04-27 407 * > 6bdb21230a2a01 Thomas Hellstrom 2019-11-13 408 * @dev: Pointer to struct > device used for coherent memory allocation > 89da76fde68de1 Sinclair Yeh 2016-04-27 409 * @guest_info_param: > Parameter to get, e.g. GuestInfo.svga.gl3 > 89da76fde68de1 Sinclair Yeh 2016-04-27 410 * @buffer: if NULL, > *reply_len will contain reply size. > 89da76fde68de1 Sinclair Yeh 2016-04-27 411 * @length: size of the > reply_buf. Set to size of reply upon return > 89da76fde68de1 Sinclair Yeh 2016-04-27 412 * > 89da76fde68de1 Sinclair Yeh 2016-04-27 413 * Returns: 0 on success > 89da76fde68de1 Sinclair Yeh 2016-04-27 414 */ > 6bdb21230a2a01 Thomas Hellstrom 2019-11-13 415 int > vmw_host_get_guestinfo(struct device *dev, const char *guest_info_param, > 89da76fde68de1 Sinclair Yeh 2016-04-27 416 char > *buffer, size_t *length) > 89da76fde68de1 Sinclair Yeh 2016-04-27 417 { > 89da76fde68de1 Sinclair Yeh 2016-04-27 418 struct rpc_channel > channel; > 89da76fde68de1 Sinclair Yeh 2016-04-27 419 char *msg, *reply = > NULL; > 6073a09210e06f Himanshu Jha 2018-03-22 420 size_t reply_len = 0; > 6bdb21230a2a01 Thomas Hellstrom 2019-11-13 421 dma_addr_t req_handle, > reply_handle; > 6bdb21230a2a01 Thomas Hellstrom 2019-11-13 422 int req_len = > strlen("info-get ") + strlen(guest_info_param) + 1; > 89da76fde68de1 Sinclair Yeh 2016-04-27 423 > 89da76fde68de1 Sinclair Yeh 2016-04-27 424 if (!vmw_msg_enabled) > 89da76fde68de1 Sinclair Yeh 2016-04-27 425 return -ENODEV; > 89da76fde68de1 Sinclair Yeh 2016-04-27 426 > 89da76fde68de1 Sinclair Yeh 2016-04-27 427 if (!guest_info_param > || !length) > 89da76fde68de1 Sinclair Yeh 2016-04-27 428 return -EINVAL; > 89da76fde68de1 Sinclair Yeh 2016-04-27 429 > 6bdb21230a2a01 Thomas Hellstrom 2019-11-13 430 msg = > dma_alloc_coherent(dev, req_len, &req_handle, GFP_KERNEL); > 1a4adb05632e90 Ravikant B Sharma 2016-11-08 431 if (!msg) { > 3fbeccf8ceb165 Thomas Hellstrom 2018-06-20 432 > DRM_ERROR("Cannot allocate memory to get guest info \"%s\".", > 3fbeccf8ceb165 Thomas Hellstrom 2018-06-20 433 > guest_info_param); > 89da76fde68de1 Sinclair Yeh 2016-04-27 434 return -ENOMEM; > 89da76fde68de1 Sinclair Yeh 2016-04-27 435 } > 6bdb21230a2a01 Thomas Hellstrom 2019-11-13 436 snprintf(msg, req_len, > "info-get %s", guest_info_param); > 89da76fde68de1 Sinclair Yeh 2016-04-27 437 > f37230c0ad4810 Thomas Hellstrom 2018-05-23 438 if > (vmw_open_channel(&channel, RPCI_PROTOCOL_NUM)) > f37230c0ad4810 Thomas Hellstrom 2018-05-23 439 goto out_open; > 89da76fde68de1 Sinclair Yeh 2016-04-27 440 > f37230c0ad4810 Thomas Hellstrom 2018-05-23 @441 if > (vmw_send_msg(&channel, msg) || > 6bdb21230a2a01 Thomas Hellstrom 2019-11-13 442 vmw_recv_msg(dev, > &channel, (void *) &reply, &reply_len, > 6bdb21230a2a01 Thomas Hellstrom 2019-11-13 443 > &reply_handle)) > f37230c0ad4810 Thomas Hellstrom 2018-05-23 444 goto out_msg; > 89da76fde68de1 Sinclair Yeh 2016-04-27 445 > f37230c0ad4810 Thomas Hellstrom 2018-05-23 446 > vmw_close_channel(&channel); > 89da76fde68de1 Sinclair Yeh 2016-04-27 447 if (buffer && reply && > reply_len > 0) { > 89da76fde68de1 Sinclair Yeh 2016-04-27 448 /* Remove reply > code, which are the first 2 characters of > 89da76fde68de1 Sinclair Yeh 2016-04-27 449 * the reply > 89da76fde68de1 Sinclair Yeh 2016-04-27 450 */ > 89da76fde68de1 Sinclair Yeh 2016-04-27 451 reply_len = > max(reply_len - 2, (size_t) 0); > 89da76fde68de1 Sinclair Yeh 2016-04-27 452 reply_len = > min(reply_len, *length); > 89da76fde68de1 Sinclair Yeh 2016-04-27 453 > 89da76fde68de1 Sinclair Yeh 2016-04-27 454 if (reply_len > > 0) > 89da76fde68de1 Sinclair Yeh 2016-04-27 455 > memcpy(buffer, reply + 2, reply_len); > 89da76fde68de1 Sinclair Yeh 2016-04-27 456 } > 89da76fde68de1 Sinclair Yeh 2016-04-27 457 > 89da76fde68de1 Sinclair Yeh 2016-04-27 458 *length = reply_len; > 89da76fde68de1 Sinclair Yeh 2016-04-27 459 > 6bdb21230a2a01 Thomas Hellstrom 2019-11-13 460 dma_free_coherent(dev, > reply_len + 1, reply, reply_handle); > 6bdb21230a2a01 Thomas Hellstrom 2019-11-13 461 dma_free_coherent(dev, > req_len, msg, req_handle); > 89da76fde68de1 Sinclair Yeh 2016-04-27 462 > f37230c0ad4810 Thomas Hellstrom 2018-05-23 463 return 0; > f37230c0ad4810 Thomas Hellstrom 2018-05-23 464 > f37230c0ad4810 Thomas Hellstrom 2018-05-23 465 out_msg: > f37230c0ad4810 Thomas Hellstrom 2018-05-23 466 > vmw_close_channel(&channel); > 6bdb21230a2a01 Thomas Hellstrom 2019-11-13 467 dma_free_coherent(dev, > reply_len + 1, reply, reply_handle); > f37230c0ad4810 Thomas Hellstrom 2018-05-23 468 out_open: > f37230c0ad4810 Thomas Hellstrom 2018-05-23 469 *length = 0; > f37230c0ad4810 Thomas Hellstrom 2018-05-23 470 > 6bdb21230a2a01 Thomas Hellstrom 2019-11-13 471 DRM_ERROR("Failed to > get guest info \"%s\".", guest_info_param); > 6bdb21230a2a01 Thomas Hellstrom 2019-11-13 472 dma_free_coherent(dev, > req_len, msg, req_handle); > f37230c0ad4810 Thomas Hellstrom 2018-05-23 473 return -EINVAL; > 89da76fde68de1 Sinclair Yeh 2016-04-27 474 } > 89da76fde68de1 Sinclair Yeh 2016-04-27 475 > > :::::: The code at line 441 was first introduced by commit > :::::: f37230c0ad481091bc136788ff8b37dc86300c6d drm/vmwgfx: Fix host logging > / guestinfo reading error paths > > :::::: TO: Thomas Hellstrom <thellst...@vmware.com> > :::::: CC: Thomas Hellstrom <thellst...@vmware.com> > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org Intel Corporation _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel