Re: [PATCH 5/7] usb: dwc3: gadget: Account for extra TRB

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Thinh,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on e3ee0e740c3887d2293e8d54a8707218d70d86ca]

url:    https://github.com/0day-ci/linux/commits/Thinh-Nguyen/usb-dwc3-gadget-Fix-TRB-preparation/20200806-084719
base:    e3ee0e740c3887d2293e8d54a8707218d70d86ca
config: x86_64-randconfig-a004-20200805 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 076b120bebfd727b502208601012a44ab2e1028e)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

   drivers/usb/dwc3/gadget.c:1177:16: warning: unused variable 'rem' [-Wunused-variable]
                   unsigned int rem = length % maxp;
                                ^
>> drivers/usb/dwc3/gadget.c:1306:1: warning: non-void function does not return a value in all control paths [-Wreturn-type]
   }
   ^
   2 warnings generated.

vim +1306 drivers/usb/dwc3/gadget.c

5ee85d890f8de5 Felipe Balbi         2016-05-13  1235  
5ee85d890f8de5 Felipe Balbi         2016-05-13  1236  /*
5ee85d890f8de5 Felipe Balbi         2016-05-13  1237   * dwc3_prepare_trbs - setup TRBs from requests
5ee85d890f8de5 Felipe Balbi         2016-05-13  1238   * @dep: endpoint for which requests are being prepared
5ee85d890f8de5 Felipe Balbi         2016-05-13  1239   *
5ee85d890f8de5 Felipe Balbi         2016-05-13  1240   * The function goes through the requests list and sets up TRBs for the
5ee85d890f8de5 Felipe Balbi         2016-05-13  1241   * transfers. The function returns once there are no more TRBs available or
5ee85d890f8de5 Felipe Balbi         2016-05-13  1242   * it runs out of requests.
5ee85d890f8de5 Felipe Balbi         2016-05-13  1243   */
e1a8607778079c Thinh Nguyen         2020-08-05  1244  static int dwc3_prepare_trbs(struct dwc3_ep *dep)
5ee85d890f8de5 Felipe Balbi         2016-05-13  1245  {
5ee85d890f8de5 Felipe Balbi         2016-05-13  1246  	struct dwc3_request	*req, *n;
e1a8607778079c Thinh Nguyen         2020-08-05  1247  	int ret = 0;
5ee85d890f8de5 Felipe Balbi         2016-05-13  1248  
5ee85d890f8de5 Felipe Balbi         2016-05-13  1249  	BUILD_BUG_ON_NOT_POWER_OF_2(DWC3_TRB_NUM);
5ee85d890f8de5 Felipe Balbi         2016-05-13  1250  
d86c5a676e5b1e Felipe Balbi         2016-10-25  1251  	/*
d86c5a676e5b1e Felipe Balbi         2016-10-25  1252  	 * We can get in a situation where there's a request in the started list
d86c5a676e5b1e Felipe Balbi         2016-10-25  1253  	 * but there weren't enough TRBs to fully kick it in the first time
d86c5a676e5b1e Felipe Balbi         2016-10-25  1254  	 * around, so it has been waiting for more TRBs to be freed up.
d86c5a676e5b1e Felipe Balbi         2016-10-25  1255  	 *
d86c5a676e5b1e Felipe Balbi         2016-10-25  1256  	 * In that case, we should check if we have a request with pending_sgs
d86c5a676e5b1e Felipe Balbi         2016-10-25  1257  	 * in the started list and prepare TRBs for that request first,
d86c5a676e5b1e Felipe Balbi         2016-10-25  1258  	 * otherwise we will prepare TRBs completely out of order and that will
d86c5a676e5b1e Felipe Balbi         2016-10-25  1259  	 * break things.
d86c5a676e5b1e Felipe Balbi         2016-10-25  1260  	 */
d86c5a676e5b1e Felipe Balbi         2016-10-25  1261  	list_for_each_entry(req, &dep->started_list, list) {
e1a8607778079c Thinh Nguyen         2020-08-05  1262  		if (req->num_pending_sgs > 0) {
e1a8607778079c Thinh Nguyen         2020-08-05  1263  			ret = dwc3_prepare_one_trb_sg(dep, req);
e1a8607778079c Thinh Nguyen         2020-08-05  1264  			if (ret)
e1a8607778079c Thinh Nguyen         2020-08-05  1265  				return ret;
e1a8607778079c Thinh Nguyen         2020-08-05  1266  		}
63c7bb299fc9c4 Thinh Nguyen         2020-05-15  1267  
63c7bb299fc9c4 Thinh Nguyen         2020-05-15  1268  		/*
63c7bb299fc9c4 Thinh Nguyen         2020-05-15  1269  		 * Don't prepare beyond a transfer. In DWC_usb32, its transfer
63c7bb299fc9c4 Thinh Nguyen         2020-05-15  1270  		 * burst capability may try to read and use TRBs beyond the
63c7bb299fc9c4 Thinh Nguyen         2020-05-15  1271  		 * active transfer instead of stopping.
63c7bb299fc9c4 Thinh Nguyen         2020-05-15  1272  		 */
63c7bb299fc9c4 Thinh Nguyen         2020-05-15  1273  		if (dep->stream_capable && req->request.is_last)
e1a8607778079c Thinh Nguyen         2020-08-05  1274  			return 0;
d86c5a676e5b1e Felipe Balbi         2016-10-25  1275  	}
d86c5a676e5b1e Felipe Balbi         2016-10-25  1276  
5ee85d890f8de5 Felipe Balbi         2016-05-13  1277  	list_for_each_entry_safe(req, n, &dep->pending_list, list) {
cdb55b39fab82b Felipe Balbi         2017-05-17  1278  		struct dwc3	*dwc = dep->dwc;
cdb55b39fab82b Felipe Balbi         2017-05-17  1279  
cdb55b39fab82b Felipe Balbi         2017-05-17  1280  		ret = usb_gadget_map_request_by_dev(dwc->sysdev, &req->request,
cdb55b39fab82b Felipe Balbi         2017-05-17  1281  						    dep->direction);
cdb55b39fab82b Felipe Balbi         2017-05-17  1282  		if (ret)
e1a8607778079c Thinh Nguyen         2020-08-05  1283  			return ret;
cdb55b39fab82b Felipe Balbi         2017-05-17  1284  
cdb55b39fab82b Felipe Balbi         2017-05-17  1285  		req->sg			= req->request.sg;
a31e63b608ff78 Anurag Kumar Vulisha 2018-03-27  1286  		req->start_sg		= req->sg;
c96e6725db9d6a Anurag Kumar Vulisha 2018-03-27  1287  		req->num_queued_sgs	= 0;
cdb55b39fab82b Felipe Balbi         2017-05-17  1288  		req->num_pending_sgs	= req->request.num_mapped_sgs;
cdb55b39fab82b Felipe Balbi         2017-05-17  1289  
1f512119a08c0d Felipe Balbi         2016-08-12  1290  		if (req->num_pending_sgs > 0)
e1a8607778079c Thinh Nguyen         2020-08-05  1291  			ret = dwc3_prepare_one_trb_sg(dep, req);
5ee85d890f8de5 Felipe Balbi         2016-05-13  1292  		else
e1a8607778079c Thinh Nguyen         2020-08-05  1293  			ret = dwc3_prepare_one_trb_linear(dep, req);
5ee85d890f8de5 Felipe Balbi         2016-05-13  1294  
e1a8607778079c Thinh Nguyen         2020-08-05  1295  		if (ret)
e1a8607778079c Thinh Nguyen         2020-08-05  1296  			return ret;
aefe3d232b6629 Thinh Nguyen         2020-05-05  1297  
aefe3d232b6629 Thinh Nguyen         2020-05-05  1298  		/*
aefe3d232b6629 Thinh Nguyen         2020-05-05  1299  		 * Don't prepare beyond a transfer. In DWC_usb32, its transfer
aefe3d232b6629 Thinh Nguyen         2020-05-05  1300  		 * burst capability may try to read and use TRBs beyond the
aefe3d232b6629 Thinh Nguyen         2020-05-05  1301  		 * active transfer instead of stopping.
aefe3d232b6629 Thinh Nguyen         2020-05-05  1302  		 */
aefe3d232b6629 Thinh Nguyen         2020-05-05  1303  		if (dep->stream_capable && req->request.is_last)
e1a8607778079c Thinh Nguyen         2020-08-05  1304  			return 0;
72246da40f3719 Felipe Balbi         2011-08-19  1305  	}
72246da40f3719 Felipe Balbi         2011-08-19 @1306  }
72246da40f3719 Felipe Balbi         2011-08-19  1307  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux