public inbox for llvm@lists.linux.dev
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Sam Edwards <cfsworks@gmail.com>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: Re: [RESEND v2 RFC 3/5] i2c: mv64xxx: Refactor FSM
Date: Thu, 21 Mar 2024 11:56:17 +0800	[thread overview]
Message-ID: <202403211142.qpQXb5FQ-lkp@intel.com> (raw)
In-Reply-To: <65fa759e.5d0a0220.fe5f7.1fa2@mx.google.com>

Hi Sam,

[This is a private test report for your RFC patch.]
kernel test robot noticed the following build errors:

[auto build test ERROR on andi-shyti/i2c/i2c-host]
[also build test ERROR on linus/master v6.8 next-20240320]
[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#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Sam-Edwards/i2c-mv64xxx-Clear-bus-errors-before-transfer/20240320-133733
base:   git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux.git i2c/i2c-host
patch link:    https://lore.kernel.org/r/65fa759e.5d0a0220.fe5f7.1fa2%40mx.google.com
patch subject: [RESEND v2 RFC 3/5] i2c: mv64xxx: Refactor FSM
config: arm-defconfig (https://download.01.org/0day-ci/archive/20240321/202403211142.qpQXb5FQ-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240321/202403211142.qpQXb5FQ-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202403211142.qpQXb5FQ-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/i2c/busses/i2c-mv64xxx.c:439:10: error: label at end of compound statement: expected statement
           default:
                   ^
                    ;
   1 error generated.


vim +439 drivers/i2c/busses/i2c-mv64xxx.c

1873c8bc09771f Sam Edwards    2024-03-19  306  
^1da177e4c3f41 Linus Torvalds 2005-04-16  307  static void
^1da177e4c3f41 Linus Torvalds 2005-04-16  308  mv64xxx_i2c_fsm(struct mv64xxx_i2c_data *drv_data, u32 status)
^1da177e4c3f41 Linus Torvalds 2005-04-16  309  {
1873c8bc09771f Sam Edwards    2024-03-19  310  	enum mv64xxx_i2c_event event;
1873c8bc09771f Sam Edwards    2024-03-19  311  	enum mv64xxx_i2c_state prev_state = drv_data->state;
1873c8bc09771f Sam Edwards    2024-03-19  312  
1873c8bc09771f Sam Edwards    2024-03-19  313  	drv_data->action = MV64XXX_I2C_ACTION_INVALID;
1873c8bc09771f Sam Edwards    2024-03-19  314  
^1da177e4c3f41 Linus Torvalds 2005-04-16  315  	/*
^1da177e4c3f41 Linus Torvalds 2005-04-16  316  	 * If state is idle, then this is likely the remnants of an old
^1da177e4c3f41 Linus Torvalds 2005-04-16  317  	 * operation that driver has given up on or the user has killed.
^1da177e4c3f41 Linus Torvalds 2005-04-16  318  	 * If so, issue the stop condition and go to idle.
^1da177e4c3f41 Linus Torvalds 2005-04-16  319  	 */
^1da177e4c3f41 Linus Torvalds 2005-04-16  320  	if (drv_data->state == MV64XXX_I2C_STATE_IDLE) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  321  		drv_data->action = MV64XXX_I2C_ACTION_SEND_STOP;
^1da177e4c3f41 Linus Torvalds 2005-04-16  322  		return;
^1da177e4c3f41 Linus Torvalds 2005-04-16  323  	}
^1da177e4c3f41 Linus Torvalds 2005-04-16  324  
1873c8bc09771f Sam Edwards    2024-03-19  325  	/*
1873c8bc09771f Sam Edwards    2024-03-19  326  	 * The FSM is broken into 3 parts:
1873c8bc09771f Sam Edwards    2024-03-19  327  	 * 1) Decode `status` to determine the underlying hardware event
1873c8bc09771f Sam Edwards    2024-03-19  328  	 * 2) Handle hardware event driven state transitions
1873c8bc09771f Sam Edwards    2024-03-19  329  	 * 3) Perform internal state transitions and action emission
1873c8bc09771f Sam Edwards    2024-03-19  330  	 */
1873c8bc09771f Sam Edwards    2024-03-19  331  	event = mv64xxx_i2c_decode_status(drv_data, status);
1873c8bc09771f Sam Edwards    2024-03-19  332  
1873c8bc09771f Sam Edwards    2024-03-19  333  	/* Handle event; determine state transition */
1873c8bc09771f Sam Edwards    2024-03-19  334  	switch (event) {
1873c8bc09771f Sam Edwards    2024-03-19  335  	case MV64XXX_I2C_EVENT_STARTED:
1873c8bc09771f Sam Edwards    2024-03-19  336  		drv_data->state = MV64XXX_I2C_STATE_SEND_ADDR_1;
^1da177e4c3f41 Linus Torvalds 2005-04-16  337  		break;
^1da177e4c3f41 Linus Torvalds 2005-04-16  338  
1873c8bc09771f Sam Edwards    2024-03-19  339  	case MV64XXX_I2C_EVENT_ADDR_ACK:
1873c8bc09771f Sam Edwards    2024-03-19  340  		if ((drv_data->state == MV64XXX_I2C_STATE_SEND_ADDR_1)
1873c8bc09771f Sam Edwards    2024-03-19  341  		    && (drv_data->msg->flags & I2C_M_TEN))
1873c8bc09771f Sam Edwards    2024-03-19  342  			drv_data->state = MV64XXX_I2C_STATE_SEND_ADDR_2;
1873c8bc09771f Sam Edwards    2024-03-19  343  		else if (drv_data->msg->flags & I2C_M_RD)
1873c8bc09771f Sam Edwards    2024-03-19  344  			drv_data->state = MV64XXX_I2C_STATE_READ;
1873c8bc09771f Sam Edwards    2024-03-19  345  		else
1873c8bc09771f Sam Edwards    2024-03-19  346  			drv_data->state = MV64XXX_I2C_STATE_WRITE;
^1da177e4c3f41 Linus Torvalds 2005-04-16  347  		break;
1873c8bc09771f Sam Edwards    2024-03-19  348  
1873c8bc09771f Sam Edwards    2024-03-19  349  	case MV64XXX_I2C_EVENT_ADDR_NO_ACK:
1873c8bc09771f Sam Edwards    2024-03-19  350  	case MV64XXX_I2C_EVENT_WR_NO_ACK:
1873c8bc09771f Sam Edwards    2024-03-19  351  		/* Doesn't seem to be a device at other end */
e91c021c487110 Mark A. Greer  2005-12-18  352  		drv_data->state = MV64XXX_I2C_STATE_IDLE;
1873c8bc09771f Sam Edwards    2024-03-19  353  		break;
1873c8bc09771f Sam Edwards    2024-03-19  354  
1873c8bc09771f Sam Edwards    2024-03-19  355  	case MV64XXX_I2C_EVENT_WR_ACK:
1873c8bc09771f Sam Edwards    2024-03-19  356  		break;
1873c8bc09771f Sam Edwards    2024-03-19  357  
1873c8bc09771f Sam Edwards    2024-03-19  358  	case MV64XXX_I2C_EVENT_RD_ACKED:
1873c8bc09771f Sam Edwards    2024-03-19  359  		BUG_ON(drv_data->bytes_left == 0);
1873c8bc09771f Sam Edwards    2024-03-19  360  		break;
1873c8bc09771f Sam Edwards    2024-03-19  361  
1873c8bc09771f Sam Edwards    2024-03-19  362  	case MV64XXX_I2C_EVENT_RD_UNACKED:
1873c8bc09771f Sam Edwards    2024-03-19  363  		BUG_ON(drv_data->bytes_left != 0);
1873c8bc09771f Sam Edwards    2024-03-19  364  		break;
1873c8bc09771f Sam Edwards    2024-03-19  365  
1873c8bc09771f Sam Edwards    2024-03-19  366  	case MV64XXX_I2C_EVENT_INVALID:
1873c8bc09771f Sam Edwards    2024-03-19  367  	default:
1873c8bc09771f Sam Edwards    2024-03-19  368  		dev_err(&drv_data->adapter.dev,
1873c8bc09771f Sam Edwards    2024-03-19  369  			"mv64xxx_i2c_fsm: Ctlr Error -- state: 0x%x, "
1873c8bc09771f Sam Edwards    2024-03-19  370  			"status: 0x%x, event: 0x%x, addr: 0x%x, flags: 0x%x\n",
1873c8bc09771f Sam Edwards    2024-03-19  371  			 drv_data->state, status, event, drv_data->msg->addr,
1873c8bc09771f Sam Edwards    2024-03-19  372  			 drv_data->msg->flags);
1873c8bc09771f Sam Edwards    2024-03-19  373  		drv_data->action = MV64XXX_I2C_ACTION_SEND_STOP;
1873c8bc09771f Sam Edwards    2024-03-19  374  		mv64xxx_i2c_hw_init(drv_data);
1873c8bc09771f Sam Edwards    2024-03-19  375  		i2c_recover_bus(&drv_data->adapter);
1873c8bc09771f Sam Edwards    2024-03-19  376  		drv_data->rc = -EAGAIN;
1873c8bc09771f Sam Edwards    2024-03-19  377  		return;
^1da177e4c3f41 Linus Torvalds 2005-04-16  378  	}
1873c8bc09771f Sam Edwards    2024-03-19  379  
1873c8bc09771f Sam Edwards    2024-03-19  380  	/* Internal FSM transitions and action emission */
1873c8bc09771f Sam Edwards    2024-03-19  381  	switch (drv_data->state) {
1873c8bc09771f Sam Edwards    2024-03-19  382  	case MV64XXX_I2C_STATE_IDLE:
1873c8bc09771f Sam Edwards    2024-03-19  383  		drv_data->action = MV64XXX_I2C_ACTION_SEND_STOP;
1873c8bc09771f Sam Edwards    2024-03-19  384  		drv_data->rc = -ENXIO;
1873c8bc09771f Sam Edwards    2024-03-19  385  		break;
1873c8bc09771f Sam Edwards    2024-03-19  386  
1873c8bc09771f Sam Edwards    2024-03-19  387  	case MV64XXX_I2C_STATE_SEND_ADDR_1:
1873c8bc09771f Sam Edwards    2024-03-19  388  		drv_data->action = MV64XXX_I2C_ACTION_SEND_ADDR_1;
^1da177e4c3f41 Linus Torvalds 2005-04-16  389  		break;
^1da177e4c3f41 Linus Torvalds 2005-04-16  390  
1873c8bc09771f Sam Edwards    2024-03-19  391  	case MV64XXX_I2C_STATE_SEND_ADDR_2:
^1da177e4c3f41 Linus Torvalds 2005-04-16  392  		drv_data->action = MV64XXX_I2C_ACTION_SEND_ADDR_2;
^1da177e4c3f41 Linus Torvalds 2005-04-16  393  		break;
1873c8bc09771f Sam Edwards    2024-03-19  394  
1873c8bc09771f Sam Edwards    2024-03-19  395  	case MV64XXX_I2C_STATE_READ:
^1da177e4c3f41 Linus Torvalds 2005-04-16  396  		if (drv_data->bytes_left == 0) {
1873c8bc09771f Sam Edwards    2024-03-19  397  			if (prev_state == MV64XXX_I2C_STATE_READ)
1873c8bc09771f Sam Edwards    2024-03-19  398  				drv_data->action = MV64XXX_I2C_ACTION_RCV_DATA_STOP;
1873c8bc09771f Sam Edwards    2024-03-19  399  			else
^1da177e4c3f41 Linus Torvalds 2005-04-16  400  				drv_data->action = MV64XXX_I2C_ACTION_SEND_STOP;
^1da177e4c3f41 Linus Torvalds 2005-04-16  401  			drv_data->state = MV64XXX_I2C_STATE_IDLE;
1873c8bc09771f Sam Edwards    2024-03-19  402  		} else {
1873c8bc09771f Sam Edwards    2024-03-19  403  			if (prev_state == MV64XXX_I2C_STATE_READ)
^1da177e4c3f41 Linus Torvalds 2005-04-16  404  				drv_data->action = MV64XXX_I2C_ACTION_RCV_DATA;
1873c8bc09771f Sam Edwards    2024-03-19  405  			else
1873c8bc09771f Sam Edwards    2024-03-19  406  				drv_data->action = MV64XXX_I2C_ACTION_CONTINUE;
1873c8bc09771f Sam Edwards    2024-03-19  407  
1873c8bc09771f Sam Edwards    2024-03-19  408  			/*
1873c8bc09771f Sam Edwards    2024-03-19  409  			 * bytes_left counts the remaining read actions to send
1873c8bc09771f Sam Edwards    2024-03-19  410  			 * to the hardware, not the remaining bytes to be
1873c8bc09771f Sam Edwards    2024-03-19  411  			 * retrieved from the data register
1873c8bc09771f Sam Edwards    2024-03-19  412  			 */
1873c8bc09771f Sam Edwards    2024-03-19  413  			if (drv_data->aborting)
1873c8bc09771f Sam Edwards    2024-03-19  414  				drv_data->bytes_left = 0;
1873c8bc09771f Sam Edwards    2024-03-19  415  			else
^1da177e4c3f41 Linus Torvalds 2005-04-16  416  				drv_data->bytes_left--;
^1da177e4c3f41 Linus Torvalds 2005-04-16  417  
1873c8bc09771f Sam Edwards    2024-03-19  418  			if (drv_data->bytes_left == 0)
^1da177e4c3f41 Linus Torvalds 2005-04-16  419  				drv_data->cntl_bits &= ~MV64XXX_I2C_REG_CONTROL_ACK;
1873c8bc09771f Sam Edwards    2024-03-19  420  		}
^1da177e4c3f41 Linus Torvalds 2005-04-16  421  		break;
^1da177e4c3f41 Linus Torvalds 2005-04-16  422  
1873c8bc09771f Sam Edwards    2024-03-19  423  	case MV64XXX_I2C_STATE_WRITE:
1873c8bc09771f Sam Edwards    2024-03-19  424  		if ((drv_data->bytes_left == 0)
1873c8bc09771f Sam Edwards    2024-03-19  425  		    || (drv_data->aborting && (drv_data->byte_posn != 0))) {
1873c8bc09771f Sam Edwards    2024-03-19  426  			if (drv_data->send_stop || drv_data->aborting) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  427  				drv_data->action = MV64XXX_I2C_ACTION_SEND_STOP;
^1da177e4c3f41 Linus Torvalds 2005-04-16  428  				drv_data->state = MV64XXX_I2C_STATE_IDLE;
1873c8bc09771f Sam Edwards    2024-03-19  429  			} else {
1873c8bc09771f Sam Edwards    2024-03-19  430  				drv_data->action = MV64XXX_I2C_ACTION_SEND_RESTART;
1873c8bc09771f Sam Edwards    2024-03-19  431  				drv_data->state = MV64XXX_I2C_STATE_RESTART;
1873c8bc09771f Sam Edwards    2024-03-19  432  			}
1873c8bc09771f Sam Edwards    2024-03-19  433  		} else {
1873c8bc09771f Sam Edwards    2024-03-19  434  			drv_data->action = MV64XXX_I2C_ACTION_SEND_DATA;
1873c8bc09771f Sam Edwards    2024-03-19  435  			drv_data->bytes_left--;
1873c8bc09771f Sam Edwards    2024-03-19  436  		}
^1da177e4c3f41 Linus Torvalds 2005-04-16  437  		break;
^1da177e4c3f41 Linus Torvalds 2005-04-16  438  
^1da177e4c3f41 Linus Torvalds 2005-04-16 @439  	default:
^1da177e4c3f41 Linus Torvalds 2005-04-16  440  	}
^1da177e4c3f41 Linus Torvalds 2005-04-16  441  }
^1da177e4c3f41 Linus Torvalds 2005-04-16  442  

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

      parent reply	other threads:[~2024-03-21  3:56 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <65fa759e.5d0a0220.fe5f7.1fa2@mx.google.com>
2024-03-20 20:10 ` [RESEND v2 RFC 3/5] i2c: mv64xxx: Refactor FSM kernel test robot
2024-03-21  3:56 ` kernel test robot [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202403211142.qpQXb5FQ-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=cfsworks@gmail.com \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox