tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   47ec5303d73ea344e84f46660fff693c57641386
commit: bd69058f50d5ffa659423bcfa6fe6280ce9c760a net: ll_temac: Use 
devm_platform_ioremap_resource_byname()
date:   7 days ago
config: sparc64-randconfig-s032-20200806 (attached as .config)
compiler: sparc64-linux-gcc (GCC) 9.3.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.2-117-g8c7aee71-dirty
        git checkout bd69058f50d5ffa659423bcfa6fe6280ce9c760a
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=sparc64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


sparse warnings: (new ones prefixed by >>)

   drivers/net/ethernet/xilinx/ll_temac_main.c:356:37: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
int [usertype] next @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/xilinx/ll_temac_main.c:356:37: sparse:     expected 
unsigned int [usertype] next
   drivers/net/ethernet/xilinx/ll_temac_main.c:356:37: sparse:     got 
restricted __be32 [usertype]
   drivers/net/ethernet/xilinx/ll_temac_main.c:361:37: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
int [usertype] next @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/xilinx/ll_temac_main.c:361:37: sparse:     expected 
unsigned int [usertype] next
   drivers/net/ethernet/xilinx/ll_temac_main.c:361:37: sparse:     got 
restricted __be32 [usertype]
   drivers/net/ethernet/xilinx/ll_temac_main.c:376:37: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
int [usertype] phys @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/xilinx/ll_temac_main.c:376:37: sparse:     expected 
unsigned int [usertype] phys
   drivers/net/ethernet/xilinx/ll_temac_main.c:376:37: sparse:     got 
restricted __be32 [usertype]
   drivers/net/ethernet/xilinx/ll_temac_main.c:377:36: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
int [usertype] len @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/xilinx/ll_temac_main.c:377:36: sparse:     expected 
unsigned int [usertype] len
   drivers/net/ethernet/xilinx/ll_temac_main.c:377:36: sparse:     got 
restricted __be32 [usertype]
   drivers/net/ethernet/xilinx/ll_temac_main.c:378:37: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
int [usertype] app0 @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/xilinx/ll_temac_main.c:378:37: sparse:     expected 
unsigned int [usertype] app0
   drivers/net/ethernet/xilinx/ll_temac_main.c:378:37: sparse:     got 
restricted __be32 [usertype]
   drivers/net/ethernet/xilinx/ll_temac_main.c:774:16: sparse: sparse: cast to 
restricted __be32
   drivers/net/ethernet/xilinx/ll_temac_main.c:777:17: sparse: sparse: cast to 
restricted __be32
   drivers/net/ethernet/xilinx/ll_temac_main.c:777:17: sparse: sparse: cast to 
restricted __be32
   drivers/net/ethernet/xilinx/ll_temac_main.c:789:41: sparse: sparse: cast to 
restricted __be32
   drivers/net/ethernet/xilinx/ll_temac_main.c:796:24: sparse: sparse: cast to 
restricted __be32
   drivers/net/ethernet/xilinx/ll_temac_main.c:863:29: sparse: sparse: invalid 
assignment: |=
   drivers/net/ethernet/xilinx/ll_temac_main.c:863:29: sparse:    left side has 
type unsigned int
   drivers/net/ethernet/xilinx/ll_temac_main.c:863:29: sparse:    right side 
has type restricted __be32
   drivers/net/ethernet/xilinx/ll_temac_main.c:864:29: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
int [usertype] app1 @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/xilinx/ll_temac_main.c:864:29: sparse:     expected 
unsigned int [usertype] app1
   drivers/net/ethernet/xilinx/ll_temac_main.c:864:29: sparse:     got 
restricted __be32 [usertype]
   drivers/net/ethernet/xilinx/ll_temac_main.c:869:21: sparse: sparse: invalid 
assignment: |=
   drivers/net/ethernet/xilinx/ll_temac_main.c:869:21: sparse:    left side has 
type unsigned int
   drivers/net/ethernet/xilinx/ll_temac_main.c:869:21: sparse:    right side 
has type restricted __be32
   drivers/net/ethernet/xilinx/ll_temac_main.c:872:20: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
int [usertype] len @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/xilinx/ll_temac_main.c:872:20: sparse:     expected 
unsigned int [usertype] len
   drivers/net/ethernet/xilinx/ll_temac_main.c:872:20: sparse:     got 
restricted __be32 [usertype]
   drivers/net/ethernet/xilinx/ll_temac_main.c:878:21: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
int [usertype] phys @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/xilinx/ll_temac_main.c:878:21: sparse:     expected 
unsigned int [usertype] phys
   drivers/net/ethernet/xilinx/ll_temac_main.c:878:21: sparse:     got 
restricted __be32 [usertype]
   drivers/net/ethernet/xilinx/ll_temac_main.c:896:33: sparse: sparse: cast to 
restricted __be32
   drivers/net/ethernet/xilinx/ll_temac_main.c:904:25: sparse: sparse: cast to 
restricted __be32
   drivers/net/ethernet/xilinx/ll_temac_main.c:911:29: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
int [usertype] phys @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/xilinx/ll_temac_main.c:911:29: sparse:     expected 
unsigned int [usertype] phys
   drivers/net/ethernet/xilinx/ll_temac_main.c:911:29: sparse:     got 
restricted __be32 [usertype]
   drivers/net/ethernet/xilinx/ll_temac_main.c:912:28: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
int [usertype] len @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/xilinx/ll_temac_main.c:912:28: sparse:     expected 
unsigned int [usertype] len
   drivers/net/ethernet/xilinx/ll_temac_main.c:912:28: sparse:     got 
restricted __be32 [usertype]
   drivers/net/ethernet/xilinx/ll_temac_main.c:916:21: sparse: sparse: invalid 
assignment: |=
   drivers/net/ethernet/xilinx/ll_temac_main.c:916:21: sparse:    left side has 
type unsigned int
   drivers/net/ethernet/xilinx/ll_temac_main.c:916:21: sparse:    right side 
has type restricted __be32
   drivers/net/ethernet/xilinx/ll_temac_main.c:961:39: sparse: sparse: cast to 
restricted __be32
   drivers/net/ethernet/xilinx/ll_temac_main.c:975:17: sparse: sparse: cast to 
restricted __be32
   drivers/net/ethernet/xilinx/ll_temac_main.c:981:26: sparse: sparse: cast to 
restricted __be32
   drivers/net/ethernet/xilinx/ll_temac_main.c:996:37: sparse: sparse: cast to 
restricted __be32
   drivers/net/ethernet/xilinx/ll_temac_main.c:996:35: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected restricted 
__wsum [usertype] csum @@     got restricted __be16 [usertype] @@
   drivers/net/ethernet/xilinx/ll_temac_main.c:996:35: sparse:     expected 
restricted __wsum [usertype] csum
   drivers/net/ethernet/xilinx/ll_temac_main.c:996:35: sparse:     got 
restricted __be16 [usertype]
   drivers/net/ethernet/xilinx/ll_temac_main.c:1062:26: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
int [usertype] phys @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/xilinx/ll_temac_main.c:1062:26: sparse:     expected 
unsigned int [usertype] phys
   drivers/net/ethernet/xilinx/ll_temac_main.c:1062:26: sparse:     got 
restricted __be32 [usertype]
   drivers/net/ethernet/xilinx/ll_temac_main.c:1063:25: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
int [usertype] len @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/xilinx/ll_temac_main.c:1063:25: sparse:     expected 
unsigned int [usertype] len
   drivers/net/ethernet/xilinx/ll_temac_main.c:1063:25: sparse:     got 
restricted __be32 [usertype]
   drivers/net/ethernet/xilinx/ll_temac_main.c:1064:26: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
int [usertype] app0 @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/xilinx/ll_temac_main.c:1064:26: sparse:     expected 
unsigned int [usertype] app0
   drivers/net/ethernet/xilinx/ll_temac_main.c:1064:26: sparse:     got 
restricted __be32 [usertype]
>> drivers/net/ethernet/xilinx/ll_temac_main.c:1410:64: sparse: sparse: Using 
>> plain integer as NULL pointer

vim +1410 drivers/net/ethernet/xilinx/ll_temac_main.c

  1383  
  1384          /* setup temac private info structure */
  1385          lp = netdev_priv(ndev);
  1386          lp->ndev = ndev;
  1387          lp->dev = &pdev->dev;
  1388          lp->options = XTE_OPTION_DEFAULTS;
  1389          lp->rx_bd_num = RX_BD_NUM_DEFAULT;
  1390          lp->tx_bd_num = TX_BD_NUM_DEFAULT;
  1391          spin_lock_init(&lp->rx_lock);
  1392          INIT_DELAYED_WORK(&lp->restart_work, 
ll_temac_restart_work_func);
  1393  
  1394          /* Setup mutex for synchronization of indirect register access 
*/
  1395          if (pdata) {
  1396                  if (!pdata->indirect_lock) {
  1397                          dev_err(&pdev->dev,
  1398                                  "indirect_lock missing in 
platform_data\n");
  1399                          return -EINVAL;
  1400                  }
  1401                  lp->indirect_lock = pdata->indirect_lock;
  1402          } else {
  1403                  lp->indirect_lock = devm_kmalloc(&pdev->dev,
  1404                                                   
sizeof(*lp->indirect_lock),
  1405                                                   GFP_KERNEL);
  1406                  spin_lock_init(lp->indirect_lock);
  1407          }
  1408  
  1409          /* map device registers */
> 1410          lp->regs = devm_platform_ioremap_resource_byname(pdev, 0);
  1411          if (IS_ERR(lp->regs)) {
  1412                  dev_err(&pdev->dev, "could not map TEMAC registers\n");
  1413                  return -ENOMEM;
  1414          }
  1415  
  1416          /* Select register access functions with the specified
  1417           * endianness mode.  Default for OF devices is big-endian.
  1418           */
  1419          little_endian = false;
  1420          if (temac_np) {
  1421                  if (of_get_property(temac_np, "little-endian", NULL))
  1422                          little_endian = true;
  1423          } else if (pdata) {
  1424                  little_endian = pdata->reg_little_endian;
  1425          }
  1426          if (little_endian) {
  1427                  lp->temac_ior = _temac_ior_le;
  1428                  lp->temac_iow = _temac_iow_le;
  1429          } else {
  1430                  lp->temac_ior = _temac_ior_be;
  1431                  lp->temac_iow = _temac_iow_be;
  1432          }
  1433  
  1434          /* Setup checksum offload, but default to off if not specified 
*/
  1435          lp->temac_features = 0;
  1436          if (temac_np) {
  1437                  p = (__be32 *)of_get_property(temac_np, "xlnx,txcsum", 
NULL);
  1438                  if (p && be32_to_cpu(*p))
  1439                          lp->temac_features |= TEMAC_FEATURE_TX_CSUM;
  1440                  p = (__be32 *)of_get_property(temac_np, "xlnx,rxcsum", 
NULL);
  1441                  if (p && be32_to_cpu(*p))
  1442                          lp->temac_features |= TEMAC_FEATURE_RX_CSUM;
  1443          } else if (pdata) {
  1444                  if (pdata->txcsum)
  1445                          lp->temac_features |= TEMAC_FEATURE_TX_CSUM;
  1446                  if (pdata->rxcsum)
  1447                          lp->temac_features |= TEMAC_FEATURE_RX_CSUM;
  1448          }
  1449          if (lp->temac_features & TEMAC_FEATURE_TX_CSUM)
  1450                  /* Can checksum TCP/UDP over IPv4. */
  1451                  ndev->features |= NETIF_F_IP_CSUM;
  1452  
  1453          /* Defaults for IRQ delay/coalescing setup.  These are
  1454           * configuration values, so does not belong in device-tree.
  1455           */
  1456          lp->coalesce_delay_tx = 0x10;
  1457          lp->coalesce_count_tx = 0x22;
  1458          lp->coalesce_delay_rx = 0xff;
  1459          lp->coalesce_count_rx = 0x07;
  1460  
  1461          /* Setup LocalLink DMA */
  1462          if (temac_np) {
  1463                  /* Find the DMA node, map the DMA registers, and
  1464                   * decode the DMA IRQs.
  1465                   */
  1466                  dma_np = of_parse_phandle(temac_np, "llink-connected", 
0);
  1467                  if (!dma_np) {
  1468                          dev_err(&pdev->dev, "could not find DMA 
node\n");
  1469                          return -ENODEV;
  1470                  }
  1471  
  1472                  /* Setup the DMA register accesses, could be DCR or
  1473                   * memory mapped.
  1474                   */
  1475                  if (temac_dcr_setup(lp, pdev, dma_np)) {
  1476                          /* no DCR in the device tree, try non-DCR */
  1477                          lp->sdma_regs = devm_of_iomap(&pdev->dev, 
dma_np, 0,
  1478                                                        NULL);
  1479                          if (IS_ERR(lp->sdma_regs)) {
  1480                                  dev_err(&pdev->dev,
  1481                                          "unable to map DMA 
registers\n");
  1482                                  of_node_put(dma_np);
  1483                                  return PTR_ERR(lp->sdma_regs);
  1484                          }
  1485                          if (of_get_property(dma_np, "little-endian", 
NULL)) {
  1486                                  lp->dma_in = temac_dma_in32_le;
  1487                                  lp->dma_out = temac_dma_out32_le;
  1488                          } else {
  1489                                  lp->dma_in = temac_dma_in32_be;
  1490                                  lp->dma_out = temac_dma_out32_be;
  1491                          }
  1492                          dev_dbg(&pdev->dev, "MEM base: %p\n", 
lp->sdma_regs);
  1493                  }
  1494  
  1495                  /* Get DMA RX and TX interrupts */
  1496                  lp->rx_irq = irq_of_parse_and_map(dma_np, 0);
  1497                  lp->tx_irq = irq_of_parse_and_map(dma_np, 1);
  1498  
  1499                  /* Finished with the DMA node; drop the reference */
  1500                  of_node_put(dma_np);
  1501          } else if (pdata) {
  1502                  /* 2nd memory resource specifies DMA registers */
  1503                  res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
  1504                  lp->sdma_regs = devm_ioremap(&pdev->dev, res->start,
  1505                                                       
resource_size(res));
  1506                  if (!lp->sdma_regs) {
  1507                          dev_err(&pdev->dev,
  1508                                  "could not map DMA registers\n");
  1509                          return -ENOMEM;
  1510                  }
  1511                  if (pdata->dma_little_endian) {
  1512                          lp->dma_in = temac_dma_in32_le;
  1513                          lp->dma_out = temac_dma_out32_le;
  1514                  } else {
  1515                          lp->dma_in = temac_dma_in32_be;
  1516                          lp->dma_out = temac_dma_out32_be;
  1517                  }
  1518  
  1519                  /* Get DMA RX and TX interrupts */
  1520                  lp->rx_irq = platform_get_irq(pdev, 0);
  1521                  lp->tx_irq = platform_get_irq(pdev, 1);
  1522  
  1523                  /* IRQ delay/coalescing setup */
  1524                  if (pdata->tx_irq_timeout || pdata->tx_irq_count) {
  1525                          lp->coalesce_delay_tx = pdata->tx_irq_timeout;
  1526                          lp->coalesce_count_tx = pdata->tx_irq_count;
  1527                  }
  1528                  if (pdata->rx_irq_timeout || pdata->rx_irq_count) {
  1529                          lp->coalesce_delay_rx = pdata->rx_irq_timeout;
  1530                          lp->coalesce_count_rx = pdata->rx_irq_count;
  1531                  }
  1532          }
  1533  
  1534          /* Error handle returned DMA RX and TX interrupts */
  1535          if (lp->rx_irq < 0) {
  1536                  if (lp->rx_irq != -EPROBE_DEFER)
  1537                          dev_err(&pdev->dev, "could not get DMA RX 
irq\n");
  1538                  return lp->rx_irq;
  1539          }
  1540          if (lp->tx_irq < 0) {
  1541                  if (lp->tx_irq != -EPROBE_DEFER)
  1542                          dev_err(&pdev->dev, "could not get DMA TX 
irq\n");
  1543                  return lp->tx_irq;
  1544          }
  1545  
  1546          if (temac_np) {
  1547                  /* Retrieve the MAC address */
  1548                  addr = of_get_mac_address(temac_np);
  1549                  if (IS_ERR(addr)) {
  1550                          dev_err(&pdev->dev, "could not find MAC 
address\n");
  1551                          return -ENODEV;
  1552                  }
  1553                  temac_init_mac_address(ndev, addr);
  1554          } else if (pdata) {
  1555                  temac_init_mac_address(ndev, pdata->mac_addr);
  1556          }
  1557  
  1558          rc = temac_mdio_setup(lp, pdev);
  1559          if (rc)
  1560                  dev_warn(&pdev->dev, "error registering MDIO bus\n");
  1561  
  1562          if (temac_np) {
  1563                  lp->phy_node = of_parse_phandle(temac_np, "phy-handle", 
0);
  1564                  if (lp->phy_node)
  1565                          dev_dbg(lp->dev, "using PHY node %pOF\n", 
temac_np);
  1566          } else if (pdata) {
  1567                  snprintf(lp->phy_name, sizeof(lp->phy_name),
  1568                           PHY_ID_FMT, lp->mii_bus->id, pdata->phy_addr);
  1569                  lp->phy_interface = pdata->phy_interface;
  1570          }
  1571  
  1572          /* Add the device attributes */
  1573          rc = sysfs_create_group(&lp->dev->kobj, &temac_attr_group);
  1574          if (rc) {
  1575                  dev_err(lp->dev, "Error creating sysfs files\n");
  1576                  goto err_sysfs_create;
  1577          }
  1578  
  1579          rc = register_netdev(lp->ndev);
  1580          if (rc) {
  1581                  dev_err(lp->dev, "register_netdev() error (%i)\n", rc);
  1582                  goto err_register_ndev;
  1583          }
  1584  
  1585          return 0;
  1586  
  1587  err_register_ndev:
  1588          sysfs_remove_group(&lp->dev->kobj, &temac_attr_group);
  1589  err_sysfs_create:
  1590          if (lp->phy_node)
  1591                  of_node_put(lp->phy_node);
  1592          temac_mdio_teardown(lp);
  1593          return rc;
  1594  }
  1595  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

Reply via email to