tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: c7d4c1fd91ab4a6d2620497921a9c6bf54650ab8 commit: 33c79741deaf09b50d56db4b22879d9557e846df [8121/10489] scsi: lpfc: vmid: Introduce VMID in I/O path config: powerpc-skiroot_defconfig (attached as .config) compiler: powerpc64le-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://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=33c79741deaf09b50d56db4b22879d9557e846df git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 33c79741deaf09b50d56db4b22879d9557e846df # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=powerpc If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>): drivers/scsi/lpfc/lpfc_scsi.c: In function 'lpfc_queuecommand': >> drivers/scsi/lpfc/lpfc_scsi.c:5595:3: error: 'uuid' undeclared (first use in this function); did you mean 'upid'? 5595 | uuid = lpfc_is_command_vm_io(cmnd); | ^~~~ | upid drivers/scsi/lpfc/lpfc_scsi.c:5595:3: note: each undeclared identifier is reported only once for each function it appears in vim +5595 drivers/scsi/lpfc/lpfc_scsi.c 5465 5466 rdata = lpfc_rport_data_from_scsi_device(cmnd->device); 5467 5468 /* sanity check on references */ 5469 if (unlikely(!rdata) || unlikely(!rport)) 5470 goto out_fail_command; 5471 5472 err = fc_remote_port_chkready(rport); 5473 if (err) { 5474 cmnd->result = err; 5475 goto out_fail_command; 5476 } 5477 ndlp = rdata->pnode; 5478 5479 if ((scsi_get_prot_op(cmnd) != SCSI_PROT_NORMAL) && 5480 (!(phba->sli3_options & LPFC_SLI3_BG_ENABLED))) { 5481 5482 lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, 5483 "9058 BLKGRD: ERROR: rcvd protected cmd:%02x" 5484 " op:%02x str=%s without registering for" 5485 " BlockGuard - Rejecting command\n", 5486 cmnd->cmnd[0], scsi_get_prot_op(cmnd), 5487 dif_op_str[scsi_get_prot_op(cmnd)]); 5488 goto out_fail_command; 5489 } 5490 5491 /* 5492 * Catch race where our node has transitioned, but the 5493 * transport is still transitioning. 5494 */ 5495 if (!ndlp) 5496 goto out_tgt_busy; 5497 if (lpfc_ndlp_check_qdepth(phba, ndlp)) { 5498 if (atomic_read(&ndlp->cmd_pending) >= ndlp->cmd_qdepth) { 5499 lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP_ERROR, 5500 "3377 Target Queue Full, scsi Id:%d " 5501 "Qdepth:%d Pending command:%d" 5502 " WWNN:%02x:%02x:%02x:%02x:" 5503 "%02x:%02x:%02x:%02x, " 5504 " WWPN:%02x:%02x:%02x:%02x:" 5505 "%02x:%02x:%02x:%02x", 5506 ndlp->nlp_sid, ndlp->cmd_qdepth, 5507 atomic_read(&ndlp->cmd_pending), 5508 ndlp->nlp_nodename.u.wwn[0], 5509 ndlp->nlp_nodename.u.wwn[1], 5510 ndlp->nlp_nodename.u.wwn[2], 5511 ndlp->nlp_nodename.u.wwn[3], 5512 ndlp->nlp_nodename.u.wwn[4], 5513 ndlp->nlp_nodename.u.wwn[5], 5514 ndlp->nlp_nodename.u.wwn[6], 5515 ndlp->nlp_nodename.u.wwn[7], 5516 ndlp->nlp_portname.u.wwn[0], 5517 ndlp->nlp_portname.u.wwn[1], 5518 ndlp->nlp_portname.u.wwn[2], 5519 ndlp->nlp_portname.u.wwn[3], 5520 ndlp->nlp_portname.u.wwn[4], 5521 ndlp->nlp_portname.u.wwn[5], 5522 ndlp->nlp_portname.u.wwn[6], 5523 ndlp->nlp_portname.u.wwn[7]); 5524 goto out_tgt_busy; 5525 } 5526 } 5527 5528 lpfc_cmd = lpfc_get_scsi_buf(phba, ndlp, cmnd); 5529 if (lpfc_cmd == NULL) { 5530 lpfc_rampdown_queue_depth(phba); 5531 5532 lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP_ERROR, 5533 "0707 driver's buffer pool is empty, " 5534 "IO busied\n"); 5535 goto out_host_busy; 5536 } 5537 5538 /* 5539 * Store the midlayer's command structure for the completion phase 5540 * and complete the command initialization. 5541 */ 5542 lpfc_cmd->pCmd = cmnd; 5543 lpfc_cmd->rdata = rdata; 5544 lpfc_cmd->ndlp = ndlp; 5545 lpfc_cmd->cur_iocbq.iocb_cmpl = NULL; 5546 cmnd->host_scribble = (unsigned char *)lpfc_cmd; 5547 5548 err = lpfc_scsi_prep_cmnd(vport, lpfc_cmd, ndlp); 5549 if (err) 5550 goto out_host_busy_release_buf; 5551 5552 if (scsi_get_prot_op(cmnd) != SCSI_PROT_NORMAL) { 5553 if (vport->phba->cfg_enable_bg) { 5554 lpfc_printf_vlog(vport, 5555 KERN_INFO, LOG_SCSI_CMD, 5556 "9033 BLKGRD: rcvd %s cmd:x%x " 5557 "reftag x%x cnt %u pt %x\n", 5558 dif_op_str[scsi_get_prot_op(cmnd)], 5559 cmnd->cmnd[0], 5560 t10_pi_ref_tag(cmnd->request), 5561 blk_rq_sectors(cmnd->request), 5562 (cmnd->cmnd[1]>>5)); 5563 } 5564 err = lpfc_bg_scsi_prep_dma_buf(phba, lpfc_cmd); 5565 } else { 5566 if (vport->phba->cfg_enable_bg) { 5567 lpfc_printf_vlog(vport, 5568 KERN_INFO, LOG_SCSI_CMD, 5569 "9038 BLKGRD: rcvd PROT_NORMAL cmd: " 5570 "x%x reftag x%x cnt %u pt %x\n", 5571 cmnd->cmnd[0], 5572 t10_pi_ref_tag(cmnd->request), 5573 blk_rq_sectors(cmnd->request), 5574 (cmnd->cmnd[1]>>5)); 5575 } 5576 err = lpfc_scsi_prep_dma_buf(phba, lpfc_cmd); 5577 } 5578 5579 if (unlikely(err)) { 5580 if (err == 2) { 5581 cmnd->result = DID_ERROR << 16; 5582 goto out_fail_command_release_buf; 5583 } 5584 goto out_host_busy_free_buf; 5585 } 5586 5587 5588 /* check the necessary and sufficient condition to support VMID */ 5589 if (lpfc_is_vmid_enabled(phba) && 5590 (ndlp->vmid_support || 5591 phba->pport->vmid_priority_tagging == 5592 LPFC_VMID_PRIO_TAG_ALL_TARGETS)) { 5593 /* is the I/O generated by a VM, get the associated virtual */ 5594 /* entity id */ > 5595 uuid = lpfc_is_command_vm_io(cmnd); 5596 5597 if (uuid) { 5598 err = lpfc_vmid_get_appid(vport, uuid, cmnd, 5599 (union lpfc_vmid_io_tag *) 5600 &lpfc_cmd->cur_iocbq.vmid_tag); 5601 if (!err) 5602 lpfc_cmd->cur_iocbq.iocb_flag |= LPFC_IO_VMID; 5603 } 5604 } 5605 5606 atomic_inc(&ndlp->cmd_pending); 5607 #ifdef CONFIG_SCSI_LPFC_DEBUG_FS 5608 if (unlikely(phba->hdwqstat_on & LPFC_CHECK_SCSI_IO)) 5609 this_cpu_inc(phba->sli4_hba.c_stat->xmt_io); 5610 #endif 5611 /* Issue I/O to adapter */ 5612 err = lpfc_sli_issue_fcp_io(phba, LPFC_FCP_RING, 5613 &lpfc_cmd->cur_iocbq, 5614 SLI_IOCB_RET_IOCB); 5615 #ifdef CONFIG_SCSI_LPFC_DEBUG_FS 5616 if (start) { 5617 lpfc_cmd->ts_cmd_start = start; 5618 lpfc_cmd->ts_last_cmd = phba->ktime_last_cmd; 5619 lpfc_cmd->ts_cmd_wqput = ktime_get_ns(); 5620 } else { 5621 lpfc_cmd->ts_cmd_start = 0; 5622 } 5623 #endif 5624 if (err) { 5625 lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP, 5626 "3376 FCP could not issue IOCB err %x " 5627 "FCP cmd x%x <%d/%llu> " 5628 "sid: x%x did: x%x oxid: x%x " 5629 "Data: x%x x%x x%x x%x\n", 5630 err, cmnd->cmnd[0], 5631 cmnd->device ? cmnd->device->id : 0xffff, 5632 cmnd->device ? cmnd->device->lun : (u64)-1, 5633 vport->fc_myDID, ndlp->nlp_DID, 5634 phba->sli_rev == LPFC_SLI_REV4 ? 5635 lpfc_cmd->cur_iocbq.sli4_xritag : 0xffff, 5636 phba->sli_rev == LPFC_SLI_REV4 ? 5637 phba->sli4_hba.rpi_ids[ndlp->nlp_rpi] : 5638 lpfc_cmd->cur_iocbq.iocb.ulpContext, 5639 lpfc_cmd->cur_iocbq.iotag, 5640 phba->sli_rev == LPFC_SLI_REV4 ? 5641 bf_get(wqe_tmo, 5642 &lpfc_cmd->cur_iocbq.wqe.generic.wqe_com) : 5643 lpfc_cmd->cur_iocbq.iocb.ulpTimeout, 5644 (uint32_t) 5645 (cmnd->request->timeout / 1000)); 5646 5647 goto out_host_busy_free_buf; 5648 } 5649 5650 if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) { 5651 lpfc_sli_handle_fast_ring_event(phba, 5652 &phba->sli.sli3_ring[LPFC_FCP_RING], HA_R0RE_REQ); 5653 5654 if (phba->cfg_poll & DISABLE_FCP_RING_INT) 5655 lpfc_poll_rearm_timer(phba); 5656 } 5657 5658 if (phba->cfg_xri_rebalancing) 5659 lpfc_keep_pvt_pool_above_lowwm(phba, lpfc_cmd->hdwq_no); 5660 5661 return 0; 5662 5663 out_host_busy_free_buf: 5664 idx = lpfc_cmd->hdwq_no; 5665 lpfc_scsi_unprep_dma_buf(phba, lpfc_cmd); 5666 if (phba->sli4_hba.hdwq) { 5667 switch (lpfc_cmd->fcp_cmnd->fcpCntl3) { 5668 case WRITE_DATA: 5669 phba->sli4_hba.hdwq[idx].scsi_cstat.output_requests--; 5670 break; 5671 case READ_DATA: 5672 phba->sli4_hba.hdwq[idx].scsi_cstat.input_requests--; 5673 break; 5674 default: 5675 phba->sli4_hba.hdwq[idx].scsi_cstat.control_requests--; 5676 } 5677 } 5678 out_host_busy_release_buf: 5679 lpfc_release_scsi_buf(phba, lpfc_cmd); 5680 out_host_busy: 5681 return SCSI_MLQUEUE_HOST_BUSY; 5682 5683 out_tgt_busy: 5684 return SCSI_MLQUEUE_TARGET_BUSY; 5685 5686 out_fail_command_release_buf: 5687 lpfc_release_scsi_buf(phba, lpfc_cmd); 5688 5689 out_fail_command: 5690 cmnd->scsi_done(cmnd); 5691 return 0; 5692 } 5693 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip