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

Reply via email to