From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: drivers/net/ethernet/xilinx/xilinx_emaclite.c:417:24: sparse: sparse: cast to restricted __be32
Date: Thu, 11 Nov 2021 03:39:02 +0800 [thread overview]
Message-ID: <202111110342.nII9NlUT-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 14294 bytes --]
Hi Andrew,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: cb690f5238d71f543f4ce874aa59237cf53a877c
commit: 03dfd157670bd715306dce1507b8998cabd38539 drivers: net: xilinx_emaclite: Add COMPILE_TEST support
date: 12 months ago
config: sparc-randconfig-s032-20211109 (attached as .config)
compiler: sparc64-linux-gcc (GCC) 11.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=03dfd157670bd715306dce1507b8998cabd38539
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 03dfd157670bd715306dce1507b8998cabd38539
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=sparc SHELL=/bin/bash arch/sparc/vdso/ drivers/gpu/drm/ drivers/net/ethernet/xilinx/ drivers/net/wireguard/ fs/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/net/ethernet/xilinx/xilinx_emaclite.c:417:24: sparse: sparse: cast to restricted __be32
drivers/net/ethernet/xilinx/xilinx_emaclite.c:427:36: sparse: sparse: cast to restricted __be32
vim +417 drivers/net/ethernet/xilinx/xilinx_emaclite.c
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 368
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 369 /**
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 370 * xemaclite_recv_data - Receive a frame
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 371 * @drvdata: Pointer to the Emaclite device private data
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 372 * @data: Address where the data is to be received
f713d50f33c1fbd drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 373 * @maxlen: Maximum supported ethernet packet length
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 374 *
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 375 * This function is intended to be called from the interrupt context or
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 376 * with a wrapper which waits for the receive frame to be available.
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 377 *
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 378 * Return: Total number of bytes received
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 379 */
cd224553641848d drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 380 static u16 xemaclite_recv_data(struct net_local *drvdata, u8 *data, int maxlen)
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 381 {
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 382 void __iomem *addr;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 383 u16 length, proto_type;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 384 u32 reg_data;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 385
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 386 /* Determine the expected buffer address */
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 387 addr = (drvdata->base_addr + drvdata->next_rx_buf_to_use);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 388
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 389 /* Verify which buffer has valid data */
acf138f1b00bdd1 drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 390 reg_data = xemaclite_readl(addr + XEL_RSR_OFFSET);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 391
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 392 if ((reg_data & XEL_RSR_RECV_DONE_MASK) == XEL_RSR_RECV_DONE_MASK) {
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 393 if (drvdata->rx_ping_pong != 0)
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 394 drvdata->next_rx_buf_to_use ^= XEL_BUFFER_OFFSET;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 395 } else {
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 396 /* The instance is out of sync, try other buffer if other
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 397 * buffer is configured, return 0 otherwise. If the instance is
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 398 * out of sync, do not update the 'next_rx_buf_to_use' since it
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 399 * will correct on subsequent calls
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 400 */
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 401 if (drvdata->rx_ping_pong != 0)
eccd5403814b4e7 drivers/net/ethernet/xilinx/xilinx_emaclite.c Andrew Lunn 2020-11-10 402 addr = (void __iomem __force *)
eccd5403814b4e7 drivers/net/ethernet/xilinx/xilinx_emaclite.c Andrew Lunn 2020-11-10 403 ((uintptr_t __force)addr ^
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 404 XEL_BUFFER_OFFSET);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 405 else
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 406 return 0; /* No data was available */
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 407
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 408 /* Verify that buffer has valid data */
acf138f1b00bdd1 drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 409 reg_data = xemaclite_readl(addr + XEL_RSR_OFFSET);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 410 if ((reg_data & XEL_RSR_RECV_DONE_MASK) !=
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 411 XEL_RSR_RECV_DONE_MASK)
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 412 return 0; /* No data was available */
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 413 }
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 414
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 415 /* Get the protocol type of the ethernet frame that arrived
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 416 */
acf138f1b00bdd1 drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 @417 proto_type = ((ntohl(xemaclite_readl(addr + XEL_HEADER_OFFSET +
44180a573ec936c drivers/net/xilinx_emaclite.c Michal Simek 2010-09-10 418 XEL_RXBUFF_OFFSET)) >> XEL_HEADER_SHIFT) &
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 419 XEL_RPLR_LENGTH_MASK);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 420
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 421 /* Check if received ethernet frame is a raw ethernet frame
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 422 * or an IP packet or an ARP packet
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 423 */
cd224553641848d drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 424 if (proto_type > ETH_DATA_LEN) {
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 425
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 426 if (proto_type == ETH_P_IP) {
acf138f1b00bdd1 drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 427 length = ((ntohl(xemaclite_readl(addr +
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 428 XEL_HEADER_IP_LENGTH_OFFSET +
44180a573ec936c drivers/net/xilinx_emaclite.c Michal Simek 2010-09-10 429 XEL_RXBUFF_OFFSET)) >>
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 430 XEL_HEADER_SHIFT) &
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 431 XEL_RPLR_LENGTH_MASK);
cd224553641848d drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 432 length = min_t(u16, length, ETH_DATA_LEN);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 433 length += ETH_HLEN + ETH_FCS_LEN;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 434
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 435 } else if (proto_type == ETH_P_ARP)
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 436 length = XEL_ARP_PACKET_SIZE + ETH_HLEN + ETH_FCS_LEN;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 437 else
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 438 /* Field contains type other than IP or ARP, use max
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 439 * frame size and let user parse it
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 440 */
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 441 length = ETH_FRAME_LEN + ETH_FCS_LEN;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 442 } else
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 443 /* Use the length in the frame, plus the header and trailer */
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 444 length = proto_type + ETH_HLEN + ETH_FCS_LEN;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 445
cd224553641848d drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 446 if (WARN_ON(length > maxlen))
cd224553641848d drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 447 length = maxlen;
cd224553641848d drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 448
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 449 /* Read from the EmacLite device */
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 450 xemaclite_aligned_read((u32 __force *)(addr + XEL_RXBUFF_OFFSET),
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 451 data, length);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 452
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 453 /* Acknowledge the frame */
acf138f1b00bdd1 drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 454 reg_data = xemaclite_readl(addr + XEL_RSR_OFFSET);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 455 reg_data &= ~XEL_RSR_RECV_DONE_MASK;
acf138f1b00bdd1 drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 456 xemaclite_writel(reg_data, addr + XEL_RSR_OFFSET);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 457
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 458 return length;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 459 }
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 460
:::::: The code at line 417 was first introduced by commit
:::::: acf138f1b00bdd1b7cd9894562ed0c2a1670888e net: xilinx_emaclite: fix freezes due to unordered I/O
:::::: TO: Anssi Hannula <anssi.hannula@bitwise.fi>
:::::: CC: David S. Miller <davem@davemloft.net>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 32346 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
Jakub Kicinski <kuba@kernel.org>
Subject: drivers/net/ethernet/xilinx/xilinx_emaclite.c:417:24: sparse: sparse: cast to restricted __be32
Date: Thu, 11 Nov 2021 03:39:02 +0800 [thread overview]
Message-ID: <202111110342.nII9NlUT-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 14157 bytes --]
Hi Andrew,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: cb690f5238d71f543f4ce874aa59237cf53a877c
commit: 03dfd157670bd715306dce1507b8998cabd38539 drivers: net: xilinx_emaclite: Add COMPILE_TEST support
date: 12 months ago
config: sparc-randconfig-s032-20211109 (attached as .config)
compiler: sparc64-linux-gcc (GCC) 11.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=03dfd157670bd715306dce1507b8998cabd38539
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 03dfd157670bd715306dce1507b8998cabd38539
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=sparc SHELL=/bin/bash arch/sparc/vdso/ drivers/gpu/drm/ drivers/net/ethernet/xilinx/ drivers/net/wireguard/ fs/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/net/ethernet/xilinx/xilinx_emaclite.c:417:24: sparse: sparse: cast to restricted __be32
drivers/net/ethernet/xilinx/xilinx_emaclite.c:427:36: sparse: sparse: cast to restricted __be32
vim +417 drivers/net/ethernet/xilinx/xilinx_emaclite.c
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 368
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 369 /**
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 370 * xemaclite_recv_data - Receive a frame
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 371 * @drvdata: Pointer to the Emaclite device private data
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 372 * @data: Address where the data is to be received
f713d50f33c1fbd drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 373 * @maxlen: Maximum supported ethernet packet length
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 374 *
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 375 * This function is intended to be called from the interrupt context or
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 376 * with a wrapper which waits for the receive frame to be available.
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 377 *
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 378 * Return: Total number of bytes received
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 379 */
cd224553641848d drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 380 static u16 xemaclite_recv_data(struct net_local *drvdata, u8 *data, int maxlen)
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 381 {
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 382 void __iomem *addr;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 383 u16 length, proto_type;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 384 u32 reg_data;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 385
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 386 /* Determine the expected buffer address */
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 387 addr = (drvdata->base_addr + drvdata->next_rx_buf_to_use);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 388
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 389 /* Verify which buffer has valid data */
acf138f1b00bdd1 drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 390 reg_data = xemaclite_readl(addr + XEL_RSR_OFFSET);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 391
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 392 if ((reg_data & XEL_RSR_RECV_DONE_MASK) == XEL_RSR_RECV_DONE_MASK) {
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 393 if (drvdata->rx_ping_pong != 0)
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 394 drvdata->next_rx_buf_to_use ^= XEL_BUFFER_OFFSET;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 395 } else {
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 396 /* The instance is out of sync, try other buffer if other
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 397 * buffer is configured, return 0 otherwise. If the instance is
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 398 * out of sync, do not update the 'next_rx_buf_to_use' since it
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 399 * will correct on subsequent calls
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 400 */
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 401 if (drvdata->rx_ping_pong != 0)
eccd5403814b4e7 drivers/net/ethernet/xilinx/xilinx_emaclite.c Andrew Lunn 2020-11-10 402 addr = (void __iomem __force *)
eccd5403814b4e7 drivers/net/ethernet/xilinx/xilinx_emaclite.c Andrew Lunn 2020-11-10 403 ((uintptr_t __force)addr ^
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 404 XEL_BUFFER_OFFSET);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 405 else
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 406 return 0; /* No data was available */
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 407
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 408 /* Verify that buffer has valid data */
acf138f1b00bdd1 drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 409 reg_data = xemaclite_readl(addr + XEL_RSR_OFFSET);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 410 if ((reg_data & XEL_RSR_RECV_DONE_MASK) !=
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 411 XEL_RSR_RECV_DONE_MASK)
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 412 return 0; /* No data was available */
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 413 }
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 414
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 415 /* Get the protocol type of the ethernet frame that arrived
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 416 */
acf138f1b00bdd1 drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 @417 proto_type = ((ntohl(xemaclite_readl(addr + XEL_HEADER_OFFSET +
44180a573ec936c drivers/net/xilinx_emaclite.c Michal Simek 2010-09-10 418 XEL_RXBUFF_OFFSET)) >> XEL_HEADER_SHIFT) &
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 419 XEL_RPLR_LENGTH_MASK);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 420
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 421 /* Check if received ethernet frame is a raw ethernet frame
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 422 * or an IP packet or an ARP packet
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 423 */
cd224553641848d drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 424 if (proto_type > ETH_DATA_LEN) {
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 425
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 426 if (proto_type == ETH_P_IP) {
acf138f1b00bdd1 drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 427 length = ((ntohl(xemaclite_readl(addr +
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 428 XEL_HEADER_IP_LENGTH_OFFSET +
44180a573ec936c drivers/net/xilinx_emaclite.c Michal Simek 2010-09-10 429 XEL_RXBUFF_OFFSET)) >>
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 430 XEL_HEADER_SHIFT) &
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 431 XEL_RPLR_LENGTH_MASK);
cd224553641848d drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 432 length = min_t(u16, length, ETH_DATA_LEN);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 433 length += ETH_HLEN + ETH_FCS_LEN;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 434
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 435 } else if (proto_type == ETH_P_ARP)
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 436 length = XEL_ARP_PACKET_SIZE + ETH_HLEN + ETH_FCS_LEN;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 437 else
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 438 /* Field contains type other than IP or ARP, use max
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 439 * frame size and let user parse it
49a83f002731dbf drivers/net/ethernet/xilinx/xilinx_emaclite.c Radhey Shyam Pandey 2018-06-28 440 */
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 441 length = ETH_FRAME_LEN + ETH_FCS_LEN;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 442 } else
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 443 /* Use the length in the frame, plus the header and trailer */
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 444 length = proto_type + ETH_HLEN + ETH_FCS_LEN;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 445
cd224553641848d drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 446 if (WARN_ON(length > maxlen))
cd224553641848d drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 447 length = maxlen;
cd224553641848d drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 448
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 449 /* Read from the EmacLite device */
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 450 xemaclite_aligned_read((u32 __force *)(addr + XEL_RXBUFF_OFFSET),
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 451 data, length);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 452
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 453 /* Acknowledge the frame */
acf138f1b00bdd1 drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 454 reg_data = xemaclite_readl(addr + XEL_RSR_OFFSET);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 455 reg_data &= ~XEL_RSR_RECV_DONE_MASK;
acf138f1b00bdd1 drivers/net/ethernet/xilinx/xilinx_emaclite.c Anssi Hannula 2017-02-14 456 xemaclite_writel(reg_data, addr + XEL_RSR_OFFSET);
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 457
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 458 return length;
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 459 }
bb81b2ddfa194b6 drivers/net/xilinx_emaclite.c John Linn 2009-08-20 460
:::::: The code at line 417 was first introduced by commit
:::::: acf138f1b00bdd1b7cd9894562ed0c2a1670888e net: xilinx_emaclite: fix freezes due to unordered I/O
:::::: TO: Anssi Hannula <anssi.hannula@bitwise.fi>
:::::: CC: David S. Miller <davem@davemloft.net>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 32346 bytes --]
next reply other threads:[~2021-11-10 19:39 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-10 19:39 kernel test robot [this message]
2021-11-10 19:39 ` drivers/net/ethernet/xilinx/xilinx_emaclite.c:417:24: sparse: sparse: cast to restricted __be32 kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2021-11-12 18:48 kernel test robot
2021-11-12 18:48 ` kernel test robot
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=202111110342.nII9NlUT-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.