lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 09 Jun 2017 11:53:52 +0300
From:   Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
To:     kbuild test robot <lkp@...el.com>,
        Luis Oliveira <Luis.Oliveira@...opsys.com>
Cc:     kbuild-all@...org, wsa@...-dreams.de, robh+dt@...nel.org,
        mark.rutland@....com, jarkko.nikula@...ux.intel.com,
        mika.westerberg@...ux.intel.com, linux-i2c@...r.kernel.org,
        devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
        Ramiro.Oliveira@...opsys.com, Joao.Pinto@...opsys.com,
        CARLOS.PALMINHA@...opsys.com
Subject: Re: [PATCH v10 5/6] i2c: designware: add SLAVE mode functions

On Fri, 2017-06-09 at 14:57 +0800, kbuild test robot wrote:
> Hi Luis,
> 

Luis, it seems you didn't rebase your patches against Wolfram's i2c-next 
tree.

Please, rebase and retest.

> [auto build test ERROR on wsa/i2c/for-next]
> [also build test ERROR on v4.12-rc4 next-20170608]
> [if your patch is applied to the wrong git tree, please drop us a note
> to help improve the system]
> 
> url:    https://github.com/0day-ci/linux/commits/Luis-Oliveira/i2c-des
> ignware-add-I2C-SLAVE-support/20170609-143533
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git
> i2c/for-next
> config: x86_64-randconfig-x012-201723 (attached as .config)
> compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
> reproduce:
>         # save the attached .config to linux build tree
>         make ARCH=x86_64 
> 
> All error/warnings (new ones prefixed by >>):
> 
>    drivers/i2c/busses/i2c-designware-slave.c: In function
> 'i2c_dw_irq_handler_slave':
> > > drivers/i2c/busses/i2c-designware-slave.c:285:3: error: implicit
> > > declaration of function 'i2c_slave_event' [-Werror=implicit-
> > > function-declaration]
> 
>       i2c_slave_event(dev->slave, I2C_SLAVE_WRITE_REQUESTED, &val);
>       ^~~~~~~~~~~~~~~
> > > drivers/i2c/busses/i2c-designware-slave.c:285:31: error:
> > > 'I2C_SLAVE_WRITE_REQUESTED' undeclared (first use in this
> > > function)
> 
>       i2c_slave_event(dev->slave, I2C_SLAVE_WRITE_REQUESTED, &val);
>                                   ^~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/i2c/busses/i2c-designware-slave.c:285:31: note: each
> undeclared identifier is reported only once for each function it
> appears in
> > > drivers/i2c/busses/i2c-designware-slave.c:293:9: error:
> > > 'I2C_SLAVE_WRITE_RECEIVED' undeclared (first use in this function)
> 
>             I2C_SLAVE_WRITE_RECEIVED, &val)) {
>             ^~~~~~~~~~~~~~~~~~~~~~~~
> > > drivers/i2c/busses/i2c-designware-slave.c:305:8: error:
> > > 'I2C_SLAVE_READ_REQUESTED' undeclared (first use in this function)
> 
>            I2C_SLAVE_READ_REQUESTED, &val))
>            ^~~~~~~~~~~~~~~~~~~~~~~~
> > > drivers/i2c/busses/i2c-designware-slave.c:311:36: error:
> > > 'I2C_SLAVE_READ_PROCESSED' undeclared (first use in this function)
> 
>       if (!i2c_slave_event(dev->slave, I2C_SLAVE_READ_PROCESSED,
>                                        ^~~~~~~~~~~~~~~~~~~~~~~~
> > > drivers/i2c/busses/i2c-designware-slave.c:315:31: error:
> > > 'I2C_SLAVE_STOP' undeclared (first use in this function)
> 
>       i2c_slave_event(dev->slave, I2C_SLAVE_STOP, &val);
>                                   ^~~~~~~~~~~~~~
>    drivers/i2c/busses/i2c-designware-slave.c: At top level:
> > > drivers/i2c/busses/i2c-designware-slave.c:351:2: error: unknown
> > > field 'reg_slave' specified in initializer
> 
>      .reg_slave = i2c_dw_reg_slave,
>      ^
> > > drivers/i2c/busses/i2c-designware-slave.c:351:15: warning: excess
> > > elements in struct initializer
> 
>      .reg_slave = i2c_dw_reg_slave,
>                   ^~~~~~~~~~~~~~~~
>    drivers/i2c/busses/i2c-designware-slave.c:351:15: note: (near
> initialization for 'i2c_dw_algo')
> > > drivers/i2c/busses/i2c-designware-slave.c:352:2: error: unknown
> > > field 'unreg_slave' specified in initializer
> 
>      .unreg_slave = i2c_dw_unreg_slave,
>      ^
>    drivers/i2c/busses/i2c-designware-slave.c:352:17: warning: excess
> elements in struct initializer
>      .unreg_slave = i2c_dw_unreg_slave,
>                     ^~~~~~~~~~~~~~~~~~
>    drivers/i2c/busses/i2c-designware-slave.c:352:17: note: (near
> initialization for 'i2c_dw_algo')
>    cc1: some warnings being treated as errors
> 
> vim +/i2c_slave_event +285 drivers/i2c/busses/i2c-designware-slave.c
> 
>    279		dev_dbg(dev->dev,
>    280			"%#x STAUTS SLAVE_ACTTVITY=%#x :
> RAW_INTR_STAT=%#x"
>    281			" : INTR_STAT=%#x\n",
>    282			enabled, slave_activity, raw_stat,
> stat);
>    283	
>    284		if ((stat & DW_IC_INTR_RX_FULL) && (stat &
> DW_IC_INTR_STOP_DET))
>  > 285			i2c_slave_event(dev->slave,
> I2C_SLAVE_WRITE_REQUESTED, &val);
>    286	
>    287		if (stat & DW_IC_INTR_RD_REQ) {
>    288			if (slave_activity) {
>    289				if (stat & DW_IC_INTR_RX_FULL) {
>    290				    val = dw_readl(dev,
> DW_IC_DATA_CMD);
>    291	
>    292					if
> (!i2c_slave_event(dev->slave,
>  > 293					    I2C_SLAVE_WRITE_RECE
> IVED, &val)) {
>    294						dev_vdbg(dev-
> >dev, "Byte %X acked!",
>    295						val);
>    296						}
>    297					dw_readl(dev,
> DW_IC_CLR_RD_REQ);
>    298					stat =
> i2c_dw_read_clear_intrbits_slave(dev);
>    299				} else {
>    300					dw_readl(dev,
> DW_IC_CLR_RD_REQ);
>    301					dw_readl(dev,
> DW_IC_CLR_RX_UNDER);
>    302					stat =
> i2c_dw_read_clear_intrbits_slave(dev);
>    303				}
>    304				if (!i2c_slave_event(dev->slave,
>  > 305				    I2C_SLAVE_READ_REQUESTED,
> &val))
>    306					dw_writel(dev, val,
> DW_IC_DATA_CMD);
>    307			}
>    308		}
>    309	
>    310		if (stat & DW_IC_INTR_RX_DONE) {
>  > 311			if (!i2c_slave_event(dev->slave,
> I2C_SLAVE_READ_PROCESSED,
>    312			    &val))
>    313				dw_readl(dev,
> DW_IC_CLR_RX_DONE);
>    314	
>  > 315			i2c_slave_event(dev->slave,
> I2C_SLAVE_STOP, &val);
>    316			stat =
> i2c_dw_read_clear_intrbits_slave(dev);
>    317			return 1;
>    318		}
>    319	
>    320		if (stat & DW_IC_INTR_RX_FULL) {
>    321			val = dw_readl(dev, DW_IC_DATA_CMD);
>    322			if (!i2c_slave_event(dev->slave,
> I2C_SLAVE_WRITE_RECEIVED,
>    323				&val))
>    324				dev_vdbg(dev->dev, "Byte %X
> acked!", val);
>    325		} else {
>    326			i2c_slave_event(dev->slave,
> I2C_SLAVE_STOP, &val);
>    327			stat =
> i2c_dw_read_clear_intrbits_slave(dev);
>    328		}
>    329	
>    330		//~ if (stat & DW_IC_INTR_TX_OVER)
>    331			//~ dw_readl(dev, DW_IC_CLR_TX_OVER);
>    332	
>    333		return 1;
>    334	}
>    335	
>    336	static irqreturn_t i2c_dw_isr_slave(int this_irq, void
> *dev_id)
>    337	{
>    338		struct dw_i2c_dev *dev = dev_id;
>    339		int ret;
>    340	
>    341		i2c_dw_read_clear_intrbits_slave(dev);
>    342		ret = i2c_dw_irq_handler_slave(dev);
>    343		if (ret > 0)
>    344			complete(&dev->cmd_complete);
>    345	
>    346		return IRQ_RETVAL(ret);
>    347	}
>    348	
>    349	static struct i2c_algorithm i2c_dw_algo = {
>    350		.functionality = i2c_dw_func,
>  > 351		.reg_slave = i2c_dw_reg_slave,
>  > 352		.unreg_slave = i2c_dw_unreg_slave,
>    353	};
>    354	
>    355	int i2c_dw_probe_slave(struct dw_i2c_dev *dev)
> 
> ---
> 0-DAY kernel test infrastructure                Open Source Technology
> Center
> https://lists.01.org/pipermail/kbuild-all                   Intel
> Corporation

-- 
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
Intel Finland Oy

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ