Hi Tejas, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on usb/usb-testing] [also build test WARNING on next-20201013] [cannot apply to balbi-usb/testing/next peter.chen-usb/ci-for-usb-next v5.9] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Tejas-Joglekar/Add-logic-to-consolidate-TRBs-for-Synopsys-xHC/20201013-204605 base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing config: m68k-randconfig-m031-20201013 (attached as .config) compiler: m68k-linux-gcc (GCC) 9.3.0 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 # https://github.com/0day-ci/linux/commit/9d7453725e3adcd62b021dbf4cbd4f29476e71e4 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Tejas-Joglekar/Add-logic-to-consolidate-TRBs-for-Synopsys-xHC/20201013-204605 git checkout 9d7453725e3adcd62b021dbf4cbd4f29476e71e4 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k 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/host/xhci.c: In function 'xhci_map_temp_buffer': >> drivers/usb/host/xhci.c:1269:19: warning: variable 'xhci' set but not used [-Wunused-but-set-variable] 1269 | struct xhci_hcd *xhci; | ^~~~ >> drivers/usb/host/xhci.c:1266:15: warning: variable 'len' set but not used [-Wunused-but-set-variable] 1266 | unsigned int len; | ^~~ drivers/usb/host/xhci.c: In function 'xhci_urb_temp_buffer_required': >> drivers/usb/host/xhci.c:1305:15: warning: variable 'buf_len' set but not used [-Wunused-but-set-variable] 1305 | unsigned int buf_len; | ^~~~~~~ drivers/usb/host/xhci.c: In function 'xhci_unmap_temp_buf': drivers/usb/host/xhci.c:1345:15: warning: variable 'len' set but not used [-Wunused-but-set-variable] 1345 | unsigned int len; | ^~~ >> drivers/usb/host/xhci.c:1344:22: warning: variable 'sg' set but not used [-Wunused-but-set-variable] 1344 | struct scatterlist *sg; | ^~ vim +/xhci +1269 drivers/usb/host/xhci.c 1261 1262 static int xhci_map_temp_buffer(struct usb_hcd *hcd, struct urb *urb) 1263 { 1264 void *temp; 1265 int ret = 0; > 1266 unsigned int len; 1267 unsigned int buf_len; 1268 enum dma_data_direction dir; > 1269 struct xhci_hcd *xhci; 1270 1271 xhci = hcd_to_xhci(hcd); 1272 dir = usb_urb_dir_in(urb) ? DMA_FROM_DEVICE : DMA_TO_DEVICE; 1273 buf_len = urb->transfer_buffer_length; 1274 1275 temp = kzalloc_node(buf_len, GFP_ATOMIC, 1276 dev_to_node(hcd->self.sysdev)); 1277 1278 if (usb_urb_dir_out(urb)) 1279 len = sg_pcopy_to_buffer(urb->sg, urb->num_sgs, 1280 temp, buf_len, 0); 1281 1282 urb->transfer_buffer = temp; 1283 urb->transfer_dma = dma_map_single(hcd->self.sysdev, 1284 urb->transfer_buffer, 1285 urb->transfer_buffer_length, 1286 dir); 1287 1288 if (dma_mapping_error(hcd->self.sysdev, 1289 urb->transfer_dma)) { 1290 ret = -EAGAIN; 1291 kfree(temp); 1292 } else { 1293 urb->transfer_flags |= URB_DMA_MAP_SINGLE; 1294 } 1295 1296 return ret; 1297 } 1298 1299 static bool xhci_urb_temp_buffer_required(struct usb_hcd *hcd, 1300 struct urb *urb) 1301 { 1302 bool ret = false; 1303 unsigned int i; 1304 unsigned int len = 0; > 1305 unsigned int buf_len; 1306 unsigned int trb_size; 1307 unsigned int max_pkt; 1308 struct scatterlist *sg; 1309 struct scatterlist *tail_sg; 1310 1311 sg = urb->sg; 1312 tail_sg = urb->sg; 1313 buf_len = urb->transfer_buffer_length; 1314 max_pkt = usb_endpoint_maxp(&urb->ep->desc); 1315 1316 if (!urb->num_sgs) 1317 return ret; 1318 1319 if (urb->dev->speed >= USB_SPEED_SUPER) 1320 trb_size = TRB_CACHE_SIZE_SS; 1321 else 1322 trb_size = TRB_CACHE_SIZE_HS; 1323 1324 if (urb->transfer_buffer_length != 0 && 1325 !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)) { 1326 for_each_sg(urb->sg, sg, urb->num_sgs, i) { 1327 len = len + sg->length; 1328 if (i > trb_size - 2) { 1329 len = len - tail_sg->length; 1330 if (len < max_pkt) { 1331 ret = true; 1332 break; 1333 } 1334 1335 tail_sg = sg_next(tail_sg); 1336 } 1337 } 1338 } 1339 return ret; 1340 } 1341 1342 static void xhci_unmap_temp_buf(struct usb_hcd *hcd, struct urb *urb) 1343 { > 1344 struct scatterlist *sg; 1345 unsigned int len; 1346 unsigned int buf_len; 1347 enum dma_data_direction dir; 1348 1349 dir = usb_urb_dir_in(urb) ? DMA_FROM_DEVICE : DMA_TO_DEVICE; 1350 1351 sg = urb->sg; 1352 buf_len = urb->transfer_buffer_length; 1353 1354 if (IS_ENABLED(CONFIG_HAS_DMA) && 1355 (urb->transfer_flags & URB_DMA_MAP_SINGLE)) 1356 dma_unmap_single(hcd->self.sysdev, 1357 urb->transfer_dma, 1358 urb->transfer_buffer_length, 1359 dir); 1360 1361 if (usb_urb_dir_in(urb)) 1362 len = sg_pcopy_from_buffer(urb->sg, urb->num_sgs, 1363 urb->transfer_buffer, 1364 buf_len, 1365 0); 1366 1367 urb->transfer_flags &= ~URB_DMA_MAP_SINGLE; 1368 kfree(urb->transfer_buffer); 1369 urb->transfer_buffer = NULL; 1370 } 1371 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip