Re: [PATCH 3/5] mpi3mr: Increase maximum number of PHYs to 64 from 32

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Sumit,

kernel test robot noticed the following build warnings:

[auto build test WARNING on mkp-scsi/for-next]
[also build test WARNING on jejb-scsi/for-next linus/master v6.7-rc2 next-20231124]
[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/Sumit-Saxena/mpi3mr-Add-support-for-SAS5116-PCI-IDs/20231124-004432
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
patch link:    https://lore.kernel.org/r/20231123160132.4155-4-sumit.saxena%40broadcom.com
patch subject: [PATCH 3/5] mpi3mr: Increase maximum number of PHYs to 64 from 32
config: i386-allmodconfig (https://download.01.org/0day-ci/archive/20231124/202311241311.O66vDF3e-lkp@xxxxxxxxx/config)
compiler: clang version 16.0.4 (https://github.com/llvm/llvm-project.git ae42196bc493ffe877a7e3dff8be32035dea4d07)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231124/202311241311.O66vDF3e-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202311241311.O66vDF3e-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> drivers/scsi/mpi3mr/mpi3mr_transport.c:1672:1: warning: stack frame size (1656) exceeds limit (1024) in 'mpi3mr_refresh_sas_ports' [-Wframe-larger-than]
   mpi3mr_refresh_sas_ports(struct mpi3mr_ioc *mrioc)
   ^
   40/1656 (2.42%) spills, 1616/1656 (97.58%) variables
   1 warning generated.


vim +/mpi3mr_refresh_sas_ports +1672 drivers/scsi/mpi3mr/mpi3mr_transport.c

2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1659  
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1660  /**
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1661   * mpi3mr_refresh_sas_ports - update host's sas ports during reset
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1662   * @mrioc: Adapter instance reference
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1663   *
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1664   * Update the host's sas ports during reset by checking whether
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1665   * sas ports are still intact or not. Add/remove phys if any hba
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1666   * phys are (moved in)/(moved out) of sas port. Also update
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1667   * io_unit_port if it got changed during reset.
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1668   *
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1669   * Return: Nothing.
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1670   */
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1671  void
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04 @1672  mpi3mr_refresh_sas_ports(struct mpi3mr_ioc *mrioc)
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1673  {
6c7de6be82cd88 Sumit Saxena    2023-11-23  1674  	struct host_port h_port[64];
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1675  	int i, j, found, host_port_count = 0, port_idx;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1676  	u16 sz, attached_handle, ioc_status;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1677  	struct mpi3_sas_io_unit_page0 *sas_io_unit_pg0 = NULL;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1678  	struct mpi3_device_page0 dev_pg0;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1679  	struct mpi3_device0_sas_sata_format *sasinf;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1680  	struct mpi3mr_sas_port *mr_sas_port;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1681  
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1682  	sz = offsetof(struct mpi3_sas_io_unit_page0, phy_data) +
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1683  		(mrioc->sas_hba.num_phys *
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1684  		 sizeof(struct mpi3_sas_io_unit0_phy_data));
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1685  	sas_io_unit_pg0 = kzalloc(sz, GFP_KERNEL);
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1686  	if (!sas_io_unit_pg0)
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1687  		return;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1688  	if (mpi3mr_cfg_get_sas_io_unit_pg0(mrioc, sas_io_unit_pg0, sz)) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1689  		ioc_err(mrioc, "failure at %s:%d/%s()!\n",
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1690  		    __FILE__, __LINE__, __func__);
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1691  		goto out;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1692  	}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1693  
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1694  	/* Create a new expander port table */
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1695  	for (i = 0; i < mrioc->sas_hba.num_phys; i++) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1696  		attached_handle = le16_to_cpu(
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1697  		    sas_io_unit_pg0->phy_data[i].attached_dev_handle);
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1698  		if (!attached_handle)
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1699  			continue;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1700  		found = 0;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1701  		for (j = 0; j < host_port_count; j++) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1702  			if (h_port[j].handle == attached_handle) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1703  				h_port[j].phy_mask |= (1 << i);
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1704  				found = 1;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1705  				break;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1706  			}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1707  		}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1708  		if (found)
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1709  			continue;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1710  		if ((mpi3mr_cfg_get_dev_pg0(mrioc, &ioc_status, &dev_pg0,
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1711  		    sizeof(dev_pg0), MPI3_DEVICE_PGAD_FORM_HANDLE,
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1712  		    attached_handle))) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1713  			dprint_reset(mrioc,
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1714  			    "failed to read dev_pg0 for handle(0x%04x) at %s:%d/%s()!\n",
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1715  			    attached_handle, __FILE__, __LINE__, __func__);
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1716  			continue;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1717  		}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1718  		if (ioc_status != MPI3_IOCSTATUS_SUCCESS) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1719  			dprint_reset(mrioc,
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1720  			    "ioc_status(0x%x) while reading dev_pg0 for handle(0x%04x) at %s:%d/%s()!\n",
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1721  			    ioc_status, attached_handle,
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1722  			    __FILE__, __LINE__, __func__);
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1723  			continue;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1724  		}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1725  		sasinf = &dev_pg0.device_specific.sas_sata_format;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1726  
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1727  		port_idx = host_port_count;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1728  		h_port[port_idx].sas_address = le64_to_cpu(sasinf->sas_address);
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1729  		h_port[port_idx].handle = attached_handle;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1730  		h_port[port_idx].phy_mask = (1 << i);
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1731  		h_port[port_idx].iounit_port_id = sas_io_unit_pg0->phy_data[i].io_unit_port;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1732  		h_port[port_idx].lowest_phy = sasinf->phy_num;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1733  		h_port[port_idx].used = 0;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1734  		host_port_count++;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1735  	}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1736  
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1737  	if (!host_port_count)
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1738  		goto out;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1739  
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1740  	if (mrioc->logging_level & MPI3_DEBUG_RESET) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1741  		ioc_info(mrioc, "Host port details before reset\n");
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1742  		list_for_each_entry(mr_sas_port, &mrioc->sas_hba.sas_port_list,
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1743  		    port_list) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1744  			ioc_info(mrioc,
6c7de6be82cd88 Sumit Saxena    2023-11-23  1745  			    "port_id:%d, sas_address:(0x%016llx), phy_mask:(0x%llx), lowest phy id:%d\n",
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1746  			    mr_sas_port->hba_port->port_id,
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1747  			    mr_sas_port->remote_identify.sas_address,
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1748  			    mr_sas_port->phy_mask, mr_sas_port->lowest_phy);
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1749  		}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1750  		mr_sas_port = NULL;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1751  		ioc_info(mrioc, "Host port details after reset\n");
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1752  		for (i = 0; i < host_port_count; i++) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1753  			ioc_info(mrioc,
6c7de6be82cd88 Sumit Saxena    2023-11-23  1754  			    "port_id:%d, sas_address:(0x%016llx), phy_mask:(0x%llx), lowest phy id:%d\n",
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1755  			    h_port[i].iounit_port_id, h_port[i].sas_address,
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1756  			    h_port[i].phy_mask, h_port[i].lowest_phy);
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1757  		}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1758  	}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1759  
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1760  	/* mark all host sas port entries as dirty */
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1761  	list_for_each_entry(mr_sas_port, &mrioc->sas_hba.sas_port_list,
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1762  	    port_list) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1763  		mr_sas_port->marked_responding = 0;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1764  		mr_sas_port->hba_port->flags |= MPI3MR_HBA_PORT_FLAG_DIRTY;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1765  	}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1766  
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1767  	/* First check for matching lowest phy */
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1768  	for (i = 0; i < host_port_count; i++) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1769  		mr_sas_port = NULL;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1770  		list_for_each_entry(mr_sas_port, &mrioc->sas_hba.sas_port_list,
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1771  		    port_list) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1772  			if (mr_sas_port->marked_responding)
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1773  				continue;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1774  			if (h_port[i].sas_address != mr_sas_port->remote_identify.sas_address)
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1775  				continue;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1776  			if (h_port[i].lowest_phy == mr_sas_port->lowest_phy) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1777  				mpi3mr_update_mr_sas_port(mrioc, &h_port[i], mr_sas_port);
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1778  				break;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1779  			}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1780  		}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1781  	}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1782  
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1783  	/* In case if lowest phy is got enabled or disabled during reset */
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1784  	for (i = 0; i < host_port_count; i++) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1785  		if (h_port[i].used)
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1786  			continue;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1787  		mr_sas_port = NULL;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1788  		list_for_each_entry(mr_sas_port, &mrioc->sas_hba.sas_port_list,
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1789  		    port_list) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1790  			if (mr_sas_port->marked_responding)
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1791  				continue;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1792  			if (h_port[i].sas_address != mr_sas_port->remote_identify.sas_address)
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1793  				continue;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1794  			if (h_port[i].phy_mask & mr_sas_port->phy_mask) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1795  				mpi3mr_update_mr_sas_port(mrioc, &h_port[i], mr_sas_port);
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1796  				break;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1797  			}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1798  		}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1799  	}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1800  
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1801  	/* In case if expander cable is removed & connected to another HBA port during reset */
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1802  	for (i = 0; i < host_port_count; i++) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1803  		if (h_port[i].used)
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1804  			continue;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1805  		mr_sas_port = NULL;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1806  		list_for_each_entry(mr_sas_port, &mrioc->sas_hba.sas_port_list,
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1807  		    port_list) {
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1808  			if (mr_sas_port->marked_responding)
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1809  				continue;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1810  			if (h_port[i].sas_address != mr_sas_port->remote_identify.sas_address)
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1811  				continue;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1812  			mpi3mr_update_mr_sas_port(mrioc, &h_port[i], mr_sas_port);
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1813  			break;
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1814  		}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1815  	}
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1816  out:
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1817  	kfree(sas_io_unit_pg0);
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1818  }
2745ce0e6d30e6 Sreekanth Reddy 2022-08-04  1819  

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




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux