Re: [PATCH] bus: mhi: host: Add tracing support

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

 



Hi Krishna,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 3006adf3be79cde4d14b1800b963b82b6e5572e0]

url:    https://github.com/intel-lab-lkp/linux/commits/Krishna-chaitanya-chundru/bus-mhi-host-Add-tracing-support/20231005-231430
base:   3006adf3be79cde4d14b1800b963b82b6e5572e0
patch link:    https://lore.kernel.org/r/20231005-ftrace_support-v1-1-23a2f394fa49%40quicinc.com
patch subject: [PATCH] bus: mhi: host: Add tracing support
config: i386-randconfig-062-20231010 (https://download.01.org/0day-ci/archive/20231010/202310102355.6SEa9YSi-lkp@xxxxxxxxx/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231010/202310102355.6SEa9YSi-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310102355.6SEa9YSi-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
>> drivers/bus/mhi/host/main.c:835:56: sparse: sparse: incorrect type in argument 3 (different base types) @@     expected unsigned long long [usertype] ptr @@     got restricted __le64 [usertype] ptr @@
   drivers/bus/mhi/host/main.c:835:56: sparse:     expected unsigned long long [usertype] ptr
   drivers/bus/mhi/host/main.c:835:56: sparse:     got restricted __le64 [usertype] ptr
>> drivers/bus/mhi/host/main.c:835:78: sparse: sparse: incorrect type in argument 4 (different base types) @@     expected int dword0 @@     got restricted __le32 @@
   drivers/bus/mhi/host/main.c:835:78: sparse:     expected int dword0
   drivers/bus/mhi/host/main.c:835:78: sparse:     got restricted __le32
>> drivers/bus/mhi/host/main.c:836:63: sparse: sparse: incorrect type in argument 5 (different base types) @@     expected int dword1 @@     got restricted __le32 @@
   drivers/bus/mhi/host/main.c:836:63: sparse:     expected int dword1
   drivers/bus/mhi/host/main.c:836:63: sparse:     got restricted __le32
   drivers/bus/mhi/host/main.c:1004:85: sparse: sparse: incorrect type in argument 2 (different base types) @@     expected unsigned long long [usertype] ptr @@     got restricted __le64 [usertype] ptr @@
   drivers/bus/mhi/host/main.c:1004:85: sparse:     expected unsigned long long [usertype] ptr
   drivers/bus/mhi/host/main.c:1004:85: sparse:     got restricted __le64 [usertype] ptr
   drivers/bus/mhi/host/main.c:1005:66: sparse: sparse: incorrect type in argument 3 (different base types) @@     expected int dword0 @@     got restricted __le32 @@
   drivers/bus/mhi/host/main.c:1005:66: sparse:     expected int dword0
   drivers/bus/mhi/host/main.c:1005:66: sparse:     got restricted __le32
   drivers/bus/mhi/host/main.c:1005:86: sparse: sparse: incorrect type in argument 4 (different base types) @@     expected int dword1 @@     got restricted __le32 @@
   drivers/bus/mhi/host/main.c:1005:86: sparse:     expected int dword1
   drivers/bus/mhi/host/main.c:1005:86: sparse:     got restricted __le32
>> drivers/bus/mhi/host/main.c:1246:34: sparse: sparse: incorrect type in argument 4 (different base types) @@     expected unsigned long long [usertype] tre_ptr @@     got restricted __le64 [usertype] ptr @@
   drivers/bus/mhi/host/main.c:1246:34: sparse:     expected unsigned long long [usertype] tre_ptr
   drivers/bus/mhi/host/main.c:1246:34: sparse:     got restricted __le64 [usertype] ptr
   drivers/bus/mhi/host/main.c:1246:55: sparse: sparse: incorrect type in argument 5 (different base types) @@     expected int dword0 @@     got restricted __le32 @@
   drivers/bus/mhi/host/main.c:1246:55: sparse:     expected int dword0
   drivers/bus/mhi/host/main.c:1246:55: sparse:     got restricted __le32
   drivers/bus/mhi/host/main.c:1246:74: sparse: sparse: incorrect type in argument 6 (different base types) @@     expected int dword1 @@     got restricted __le32 @@
   drivers/bus/mhi/host/main.c:1246:74: sparse:     expected int dword1
   drivers/bus/mhi/host/main.c:1246:74: sparse:     got restricted __le32
>> drivers/bus/mhi/host/main.c:834:80: sparse: sparse: non size-preserving pointer to integer cast
   drivers/bus/mhi/host/main.c:1245:75: sparse: sparse: non size-preserving pointer to integer cast

vim +835 drivers/bus/mhi/host/main.c

   799	
   800	int mhi_process_ctrl_ev_ring(struct mhi_controller *mhi_cntrl,
   801				     struct mhi_event *mhi_event,
   802				     u32 event_quota)
   803	{
   804		struct mhi_ring_element *dev_rp, *local_rp;
   805		struct mhi_ring *ev_ring = &mhi_event->ring;
   806		struct mhi_event_ctxt *er_ctxt =
   807			&mhi_cntrl->mhi_ctxt->er_ctxt[mhi_event->er_index];
   808		struct mhi_chan *mhi_chan;
   809		struct device *dev = &mhi_cntrl->mhi_dev->dev;
   810		u32 chan;
   811		int count = 0;
   812		dma_addr_t ptr = le64_to_cpu(er_ctxt->rp);
   813	
   814		/*
   815		 * This is a quick check to avoid unnecessary event processing
   816		 * in case MHI is already in error state, but it's still possible
   817		 * to transition to error state while processing events
   818		 */
   819		if (unlikely(MHI_EVENT_ACCESS_INVALID(mhi_cntrl->pm_state)))
   820			return -EIO;
   821	
   822		if (!is_valid_ring_ptr(ev_ring, ptr)) {
   823			dev_err(&mhi_cntrl->mhi_dev->dev,
   824				"Event ring rp points outside of the event ring\n");
   825			return -EIO;
   826		}
   827	
   828		dev_rp = mhi_to_virtual(ev_ring, ptr);
   829		local_rp = ev_ring->rp;
   830	
   831		while (dev_rp != local_rp) {
   832			enum mhi_pkt_type type = MHI_TRE_GET_EV_TYPE(local_rp);
   833	
 > 834			trace_mhi_process_ctrl_ev_ring(mhi_cntrl->mhi_dev->name, (u64)(local_rp),
 > 835						       local_rp->ptr, local_rp->dword[0],
 > 836						       local_rp->dword[1],
   837						       mhi_state_str(MHI_TRE_GET_EV_STATE(local_rp)));
   838	
   839			switch (type) {
   840			case MHI_PKT_TYPE_BW_REQ_EVENT:
   841			{
   842				struct mhi_link_info *link_info;
   843	
   844				link_info = &mhi_cntrl->mhi_link_info;
   845				write_lock_irq(&mhi_cntrl->pm_lock);
   846				link_info->target_link_speed =
   847					MHI_TRE_GET_EV_LINKSPEED(local_rp);
   848				link_info->target_link_width =
   849					MHI_TRE_GET_EV_LINKWIDTH(local_rp);
   850				write_unlock_irq(&mhi_cntrl->pm_lock);
   851				dev_dbg(dev, "Received BW_REQ event\n");
   852				mhi_cntrl->status_cb(mhi_cntrl, MHI_CB_BW_REQ);
   853				break;
   854			}
   855			case MHI_PKT_TYPE_STATE_CHANGE_EVENT:
   856			{
   857				enum mhi_state new_state;
   858	
   859				new_state = MHI_TRE_GET_EV_STATE(local_rp);
   860	
   861				dev_dbg(dev, "State change event to state: %s\n",
   862					mhi_state_str(new_state));
   863	
   864				switch (new_state) {
   865				case MHI_STATE_M0:
   866					mhi_pm_m0_transition(mhi_cntrl);
   867					break;
   868				case MHI_STATE_M1:
   869					mhi_pm_m1_transition(mhi_cntrl);
   870					break;
   871				case MHI_STATE_M3:
   872					mhi_pm_m3_transition(mhi_cntrl);
   873					break;
   874				case MHI_STATE_SYS_ERR:
   875				{
   876					enum mhi_pm_state pm_state;
   877	
   878					dev_dbg(dev, "System error detected\n");
   879					write_lock_irq(&mhi_cntrl->pm_lock);
   880					pm_state = mhi_tryset_pm_state(mhi_cntrl,
   881								MHI_PM_SYS_ERR_DETECT);
   882					write_unlock_irq(&mhi_cntrl->pm_lock);
   883					if (pm_state == MHI_PM_SYS_ERR_DETECT)
   884						mhi_pm_sys_err_handler(mhi_cntrl);
   885					break;
   886				}
   887				default:
   888					dev_err(dev, "Invalid state: %s\n",
   889						mhi_state_str(new_state));
   890				}
   891	
   892				break;
   893			}
   894			case MHI_PKT_TYPE_CMD_COMPLETION_EVENT:
   895				mhi_process_cmd_completion(mhi_cntrl, local_rp);
   896				break;
   897			case MHI_PKT_TYPE_EE_EVENT:
   898			{
   899				enum dev_st_transition st = DEV_ST_TRANSITION_MAX;
   900				enum mhi_ee_type event = MHI_TRE_GET_EV_EXECENV(local_rp);
   901	
   902				dev_dbg(dev, "Received EE event: %s\n",
   903					TO_MHI_EXEC_STR(event));
   904				switch (event) {
   905				case MHI_EE_SBL:
   906					st = DEV_ST_TRANSITION_SBL;
   907					break;
   908				case MHI_EE_WFW:
   909				case MHI_EE_AMSS:
   910					st = DEV_ST_TRANSITION_MISSION_MODE;
   911					break;
   912				case MHI_EE_FP:
   913					st = DEV_ST_TRANSITION_FP;
   914					break;
   915				case MHI_EE_RDDM:
   916					mhi_cntrl->status_cb(mhi_cntrl, MHI_CB_EE_RDDM);
   917					write_lock_irq(&mhi_cntrl->pm_lock);
   918					mhi_cntrl->ee = event;
   919					write_unlock_irq(&mhi_cntrl->pm_lock);
   920					wake_up_all(&mhi_cntrl->state_event);
   921					break;
   922				default:
   923					dev_err(dev,
   924						"Unhandled EE event: 0x%x\n", type);
   925				}
   926				if (st != DEV_ST_TRANSITION_MAX)
   927					mhi_queue_state_transition(mhi_cntrl, st);
   928	
   929				break;
   930			}
   931			case MHI_PKT_TYPE_TX_EVENT:
   932				chan = MHI_TRE_GET_EV_CHID(local_rp);
   933	
   934				WARN_ON(chan >= mhi_cntrl->max_chan);
   935	
   936				/*
   937				 * Only process the event ring elements whose channel
   938				 * ID is within the maximum supported range.
   939				 */
   940				if (chan < mhi_cntrl->max_chan) {
   941					mhi_chan = &mhi_cntrl->mhi_chan[chan];
   942					if (!mhi_chan->configured)
   943						break;
   944					parse_xfer_event(mhi_cntrl, local_rp, mhi_chan);
   945				}
   946				break;
   947			default:
   948				dev_err(dev, "Unhandled event type: %d\n", type);
   949				break;
   950			}
   951	
   952			mhi_recycle_ev_ring_element(mhi_cntrl, ev_ring);
   953			local_rp = ev_ring->rp;
   954	
   955			ptr = le64_to_cpu(er_ctxt->rp);
   956			if (!is_valid_ring_ptr(ev_ring, ptr)) {
   957				dev_err(&mhi_cntrl->mhi_dev->dev,
   958					"Event ring rp points outside of the event ring\n");
   959				return -EIO;
   960			}
   961	
   962			dev_rp = mhi_to_virtual(ev_ring, ptr);
   963			count++;
   964		}
   965	
   966		read_lock_bh(&mhi_cntrl->pm_lock);
   967	
   968		/* Ring EV DB only if there is any pending element to process */
   969		if (likely(MHI_DB_ACCESS_VALID(mhi_cntrl)) && count)
   970			mhi_ring_er_db(mhi_event);
   971		read_unlock_bh(&mhi_cntrl->pm_lock);
   972	
   973		return count;
   974	}
   975	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux