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>] [day] [month] [year] [list]
Date:   Thu, 5 Nov 2020 22:35:39 +0800
From:   kernel test robot <lkp@...el.com>
To:     Khalil Blaiech <kblaiech@...lanox.com>
Cc:     kbuild-all@...ts.01.org, clang-built-linux@...glegroups.com,
        linux-kernel@...r.kernel.org,
        Wolfram Sang <wsa-dev@...g-engineering.com>,
        Vadim Pasternak <vadimp@...lanox.com>
Subject: drivers/i2c/busses/i2c-mlxbf.c:1927:3: error: implicit declaration
 of function 'i2c_slave_event'

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   4ef8451b332662d004df269d4cdeb7d9f31419b5
commit: b5b5b32081cd206baa6e58cca7f112d9723785d6 i2c: mlxbf: I2C SMBus driver for Mellanox BlueField SoC
date:   6 weeks ago
config: arm64-randconfig-r011-20201105 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 09ec07827b1128504457a93dee80b2ceee1af600)
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
        # install arm64 cross compiling tool for clang build
        # apt-get install binutils-aarch64-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b5b5b32081cd206baa6e58cca7f112d9723785d6
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout b5b5b32081cd206baa6e58cca7f112d9723785d6
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>

All errors (new ones prefixed by >>):

>> drivers/i2c/busses/i2c-mlxbf.c:1927:3: error: implicit declaration of function 'i2c_slave_event' [-Werror,-Wimplicit-function-declaration]
                   i2c_slave_event(slave, I2C_SLAVE_WRITE_REQUESTED, &value);
                   ^
>> drivers/i2c/busses/i2c-mlxbf.c:1927:26: error: use of undeclared identifier 'I2C_SLAVE_WRITE_REQUESTED'
                   i2c_slave_event(slave, I2C_SLAVE_WRITE_REQUESTED, &value);
                                          ^
>> drivers/i2c/busses/i2c-mlxbf.c:1929:32: error: use of undeclared identifier 'I2C_SLAVE_WRITE_RECEIVED'
                   ret = i2c_slave_event(slave, I2C_SLAVE_WRITE_RECEIVED,
                                                ^
>> drivers/i2c/busses/i2c-mlxbf.c:1931:26: error: use of undeclared identifier 'I2C_SLAVE_STOP'
                   i2c_slave_event(slave, I2C_SLAVE_STOP, &value);
                                          ^
   drivers/i2c/busses/i2c-mlxbf.c:1943:2: error: implicit declaration of function 'i2c_slave_event' [-Werror,-Wimplicit-function-declaration]
           i2c_slave_event(slave, I2C_SLAVE_READ_REQUESTED, &value);
           ^
>> drivers/i2c/busses/i2c-mlxbf.c:1943:25: error: use of undeclared identifier 'I2C_SLAVE_READ_REQUESTED'
           i2c_slave_event(slave, I2C_SLAVE_READ_REQUESTED, &value);
                                  ^
>> drivers/i2c/busses/i2c-mlxbf.c:1947:26: error: use of undeclared identifier 'I2C_SLAVE_READ_PROCESSED'
                   i2c_slave_event(slave, I2C_SLAVE_READ_PROCESSED, &value);
                                          ^
   drivers/i2c/busses/i2c-mlxbf.c:1951:25: error: use of undeclared identifier 'I2C_SLAVE_STOP'
           i2c_slave_event(slave, I2C_SLAVE_STOP, &value);
                                  ^
   drivers/i2c/busses/i2c-mlxbf.c:2011:2: error: implicit declaration of function 'i2c_slave_event' [-Werror,-Wimplicit-function-declaration]
           i2c_slave_event(slave, I2C_SLAVE_WRITE_REQUESTED, &value);
           ^
   drivers/i2c/busses/i2c-mlxbf.c:2011:25: error: use of undeclared identifier 'I2C_SLAVE_WRITE_REQUESTED'
           i2c_slave_event(slave, I2C_SLAVE_WRITE_REQUESTED, &value);
                                  ^
   drivers/i2c/busses/i2c-mlxbf.c:2016:32: error: use of undeclared identifier 'I2C_SLAVE_WRITE_RECEIVED'
                   ret = i2c_slave_event(slave, I2C_SLAVE_WRITE_RECEIVED,
                                                ^
   drivers/i2c/busses/i2c-mlxbf.c:2023:25: error: use of undeclared identifier 'I2C_SLAVE_STOP'
           i2c_slave_event(slave, I2C_SLAVE_STOP, &value);
                                  ^
>> drivers/i2c/busses/i2c-mlxbf.c:2244:3: error: field designator 'reg_slave' does not refer to any field in type 'const struct i2c_algorithm'
           .reg_slave = mlxbf_i2c_reg_slave,
            ^
>> drivers/i2c/busses/i2c-mlxbf.c:2245:3: error: field designator 'unreg_slave' does not refer to any field in type 'const struct i2c_algorithm'
           .unreg_slave = mlxbf_i2c_unreg_slave,
            ^
   drivers/i2c/busses/i2c-mlxbf.c:2296:8: error: implicit declaration of function 'acpi_device_uid' [-Werror,-Wimplicit-function-declaration]
           uid = acpi_device_uid(adev);
                 ^
   drivers/i2c/busses/i2c-mlxbf.c:2296:8: note: did you mean 'cpu_device_up'?
   include/linux/cpu.h:93:5: note: 'cpu_device_up' declared here
   int cpu_device_up(struct device *dev);
       ^
   drivers/i2c/busses/i2c-mlxbf.c:2296:6: warning: incompatible integer to pointer conversion assigning to 'const char *' from 'int' [-Wint-conversion]
           uid = acpi_device_uid(adev);
               ^ ~~~~~~~~~~~~~~~~~~~~~
   1 warning and 15 errors generated.

vim +/i2c_slave_event +1927 drivers/i2c/busses/i2c-mlxbf.c

  1879	
  1880	/* Send byte to 'external' smbus master. */
  1881	static int mlxbf_smbus_irq_send(struct mlxbf_i2c_priv *priv, u8 recv_bytes)
  1882	{
  1883		u8 data_desc[MLXBF_I2C_SLAVE_DATA_DESC_SIZE] = { 0 };
  1884		u8 write_size, pec_en, addr, byte, value, byte_cnt, desc_size;
  1885		struct i2c_client *slave = priv->slave;
  1886		u32 control32, data32;
  1887		int ret;
  1888	
  1889		if (!slave)
  1890			return -EINVAL;
  1891	
  1892		addr = 0;
  1893		byte = 0;
  1894		desc_size = MLXBF_I2C_SLAVE_DATA_DESC_SIZE;
  1895	
  1896		/*
  1897		 * Read bytes received from the external master. These bytes should
  1898		 * be located in the first data descriptor register of the slave GW.
  1899		 * These bytes are the slave address byte and the internal register
  1900		 * address, if supplied.
  1901		 */
  1902		if (recv_bytes > 0) {
  1903			data32 = mlxbf_i2c_read_data(priv->smbus->io,
  1904						     MLXBF_I2C_SLAVE_DATA_DESC_ADDR);
  1905	
  1906			/* Parse the received bytes. */
  1907			switch (recv_bytes) {
  1908			case 2:
  1909				byte = (data32 >> 8) & GENMASK(7, 0);
  1910				fallthrough;
  1911			case 1:
  1912				addr = (data32 & GENMASK(7, 0)) >> 1;
  1913			}
  1914	
  1915			/* Check whether it's our slave address. */
  1916			if (slave->addr != addr)
  1917				return -EINVAL;
  1918		}
  1919	
  1920		/*
  1921		 * I2C read transactions may start by a WRITE followed by a READ.
  1922		 * Indeed, most slave devices would expect the internal address
  1923		 * following the slave address byte. So, write that byte first,
  1924		 * and then, send the requested data bytes to the master.
  1925		 */
  1926		if (recv_bytes > 1) {
> 1927			i2c_slave_event(slave, I2C_SLAVE_WRITE_REQUESTED, &value);
  1928			value = byte;
> 1929			ret = i2c_slave_event(slave, I2C_SLAVE_WRITE_RECEIVED,
  1930					      &value);
> 1931			i2c_slave_event(slave, I2C_SLAVE_STOP, &value);
  1932	
  1933			if (ret < 0)
  1934				return ret;
  1935		}
  1936	
  1937		/*
  1938		 * Now, send data to the master; currently, the driver supports
  1939		 * READ_BYTE, READ_WORD and BLOCK READ protocols. Note that the
  1940		 * hardware can send up to 128 bytes per transfer. That is the
  1941		 * size of its data registers.
  1942		 */
> 1943		i2c_slave_event(slave, I2C_SLAVE_READ_REQUESTED, &value);
  1944	
  1945		for (byte_cnt = 0; byte_cnt < desc_size; byte_cnt++) {
  1946			data_desc[byte_cnt] = value;
> 1947			i2c_slave_event(slave, I2C_SLAVE_READ_PROCESSED, &value);
  1948		}
  1949	
  1950		/* Send a stop condition to the backend. */
  1951		i2c_slave_event(slave, I2C_SLAVE_STOP, &value);
  1952	
  1953		/* Handle the actual transfer. */
  1954	
  1955		/* Set the number of bytes to write to master. */
  1956		write_size = (byte_cnt - 1) & 0x7f;
  1957	
  1958		/* Write data to Slave GW data descriptor. */
  1959		mlxbf_i2c_smbus_write_data(priv, data_desc, byte_cnt,
  1960					   MLXBF_I2C_SLAVE_DATA_DESC_ADDR);
  1961	
  1962		pec_en = 0; /* Disable PEC since it is not supported. */
  1963	
  1964		/* Prepare control word. */
  1965		control32 = MLXBF_I2C_SLAVE_ENABLE;
  1966		control32 |= rol32(write_size, MLXBF_I2C_SLAVE_WRITE_BYTES_SHIFT);
  1967		control32 |= rol32(pec_en, MLXBF_I2C_SLAVE_SEND_PEC_SHIFT);
  1968	
  1969		mlxbf_i2c_write(priv->smbus->io, MLXBF_I2C_SMBUS_SLAVE_GW, control32);
  1970	
  1971		/*
  1972		 * Wait until the transfer is completed; the driver will wait
  1973		 * until the GW is idle, a cause will rise on fall of GW busy.
  1974		 */
  1975		mlxbf_smbus_slave_wait_for_idle(priv, MLXBF_I2C_SMBUS_TIMEOUT);
  1976	
  1977		/* Release the Slave GW. */
  1978		mlxbf_i2c_write(priv->smbus->io,
  1979				MLXBF_I2C_SMBUS_SLAVE_RS_MASTER_BYTES, 0x0);
  1980		mlxbf_i2c_write(priv->smbus->io, MLXBF_I2C_SMBUS_SLAVE_PEC, 0x0);
  1981		mlxbf_i2c_write(priv->smbus->io, MLXBF_I2C_SMBUS_SLAVE_READY, 0x1);
  1982	
  1983		return 0;
  1984	}
  1985	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (38301 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ