Hi Suganath, I love your patch! Perhaps something to improve: [auto build test WARNING on scsi/for-next] [also build test WARNING on mkp-scsi/for-next v5.10-rc5 next-20201123] [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] url: https://github.com/0day-ci/linux/commits/Suganath-Prabu-S/mpt3sas-Features-to-enhance-driver-debugging/20201124-115842 base: https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next config: x86_64-rhel (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/9d619bffb390470be629fa99370eb823d64d796e git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Suganath-Prabu-S/mpt3sas-Features-to-enhance-driver-debugging/20201124-115842 git checkout 9d619bffb390470be629fa99370eb823d64d796e # save the attached .config to linux build tree make W=1 ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): drivers/scsi/mpt3sas/mpt3sas_config.c:1793:1: warning: no previous prototype for '_config_set_driver_trigger_pg0' [-Wmissing-prototypes] 1793 | _config_set_driver_trigger_pg0(struct MPT3SAS_ADAPTER *ioc, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/mpt3sas/mpt3sas_config.c:1835:1: warning: no previous prototype for 'mpt3sas_config_update_driver_trigger_pg0' [-Wmissing-prototypes] 1835 | mpt3sas_config_update_driver_trigger_pg0(struct MPT3SAS_ADAPTER *ioc, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/scsi/mpt3sas/mpt3sas_config.c:1927:1: warning: no previous prototype for '_config_set_driver_trigger_pg1' [-Wmissing-prototypes] 1927 | _config_set_driver_trigger_pg1(struct MPT3SAS_ADAPTER *ioc, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/mpt3sas/mpt3sas_config.c:1969:1: warning: no previous prototype for 'mpt3sas_config_update_driver_trigger_pg1' [-Wmissing-prototypes] 1969 | mpt3sas_config_update_driver_trigger_pg1(struct MPT3SAS_ADAPTER *ioc, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim +/_config_set_driver_trigger_pg1 +1927 drivers/scsi/mpt3sas/mpt3sas_config.c 1782 1783 /** 1784 * mpt3sas_config_set_driver_trigger_pg0 - write driver trigger page 0 1785 * @ioc: per adapter object 1786 * @mpi_reply: reply mf payload returned from firmware 1787 * @config_page: contents of the config page 1788 * Context: sleep. 1789 * 1790 * Returns 0 for success, non-zero for failure. 1791 */ 1792 int > 1793 _config_set_driver_trigger_pg0(struct MPT3SAS_ADAPTER *ioc, 1794 Mpi2ConfigReply_t *mpi_reply, Mpi26DriverTriggerPage0_t *config_page) 1795 { 1796 Mpi2ConfigRequest_t mpi_request; 1797 int r; 1798 1799 memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t)); 1800 mpi_request.Function = MPI2_FUNCTION_CONFIG; 1801 mpi_request.Action = MPI2_CONFIG_ACTION_PAGE_HEADER; 1802 mpi_request.Header.PageType = MPI2_CONFIG_PAGETYPE_EXTENDED; 1803 mpi_request.ExtPageType = 1804 MPI2_CONFIG_EXTPAGETYPE_DRIVER_PERSISTENT_TRIGGER; 1805 mpi_request.Header.PageNumber = 0; 1806 mpi_request.Header.PageVersion = MPI26_DRIVER_TRIGGER_PAGE0_PAGEVERSION; 1807 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); 1808 r = _config_request(ioc, &mpi_request, mpi_reply, 1809 MPT3_CONFIG_PAGE_DEFAULT_TIMEOUT, NULL, 0); 1810 if (r) 1811 goto out; 1812 1813 mpi_request.Action = MPI2_CONFIG_ACTION_PAGE_WRITE_CURRENT; 1814 _config_request(ioc, &mpi_request, mpi_reply, 1815 MPT3_CONFIG_PAGE_DEFAULT_TIMEOUT, config_page, 1816 sizeof(*config_page)); 1817 mpi_request.Action = MPI2_CONFIG_ACTION_PAGE_WRITE_NVRAM; 1818 r = _config_request(ioc, &mpi_request, mpi_reply, 1819 MPT3_CONFIG_PAGE_DEFAULT_TIMEOUT, config_page, 1820 sizeof(*config_page)); 1821 out: 1822 return r; 1823 } 1824 1825 /** 1826 * mpt3sas_config_update_driver_trigger_pg0 - update driver trigger page 0 1827 * @ioc: per adapter object 1828 * @trigger_flags: trigger type bit map 1829 * @set: set ot clear trigger values 1830 * Context: sleep. 1831 * 1832 * Returns 0 for success, non-zero for failure. 1833 */ 1834 int 1835 mpt3sas_config_update_driver_trigger_pg0(struct MPT3SAS_ADAPTER *ioc, 1836 u16 trigger_flag, bool set) 1837 { 1838 Mpi26DriverTriggerPage0_t tg_pg0; 1839 Mpi2ConfigReply_t mpi_reply; 1840 int rc; 1841 u16 flags, ioc_status; 1842 1843 rc = mpt3sas_config_get_driver_trigger_pg0(ioc, &mpi_reply, &tg_pg0); 1844 if (rc) 1845 return rc; 1846 ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & 1847 MPI2_IOCSTATUS_MASK; 1848 if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { 1849 dcprintk(ioc, 1850 ioc_err(ioc, 1851 "%s: Failed to get trigger pg0, ioc_status(0x%04x)\n", 1852 __func__, ioc_status)); 1853 return -EFAULT; 1854 } 1855 1856 if (set) 1857 flags = le16_to_cpu(tg_pg0.TriggerFlags) | trigger_flag; 1858 else 1859 flags = le16_to_cpu(tg_pg0.TriggerFlags) & ~trigger_flag; 1860 1861 tg_pg0.TriggerFlags = cpu_to_le16(flags); 1862 1863 rc = _config_set_driver_trigger_pg0(ioc, &mpi_reply, &tg_pg0); 1864 if (rc) 1865 return rc; 1866 ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & 1867 MPI2_IOCSTATUS_MASK; 1868 if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { 1869 dcprintk(ioc, 1870 ioc_err(ioc, 1871 "%s: Failed to update trigger pg0, ioc_status(0x%04x)\n", 1872 __func__, ioc_status)); 1873 return -EFAULT; 1874 } 1875 1876 return 0; 1877 } 1878 1879 /** 1880 * mpt3sas_config_get_driver_trigger_pg1 - obtain driver trigger page 1 1881 * @ioc: per adapter object 1882 * @mpi_reply: reply mf payload returned from firmware 1883 * @config_page: contents of the config page 1884 * Context: sleep. 1885 * 1886 * Returns 0 for success, non-zero for failure. 1887 */ 1888 int 1889 mpt3sas_config_get_driver_trigger_pg1(struct MPT3SAS_ADAPTER *ioc, 1890 Mpi2ConfigReply_t *mpi_reply, Mpi26DriverTriggerPage1_t *config_page) 1891 { 1892 Mpi2ConfigRequest_t mpi_request; 1893 int r; 1894 1895 memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t)); 1896 mpi_request.Function = MPI2_FUNCTION_CONFIG; 1897 mpi_request.Action = MPI2_CONFIG_ACTION_PAGE_HEADER; 1898 mpi_request.Header.PageType = MPI2_CONFIG_PAGETYPE_EXTENDED; 1899 mpi_request.ExtPageType = 1900 MPI2_CONFIG_EXTPAGETYPE_DRIVER_PERSISTENT_TRIGGER; 1901 mpi_request.Header.PageNumber = 1; 1902 mpi_request.Header.PageVersion = MPI26_DRIVER_TRIGGER_PAGE1_PAGEVERSION; 1903 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); 1904 r = _config_request(ioc, &mpi_request, mpi_reply, 1905 MPT3_CONFIG_PAGE_DEFAULT_TIMEOUT, NULL, 0); 1906 if (r) 1907 goto out; 1908 1909 mpi_request.Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; 1910 r = _config_request(ioc, &mpi_request, mpi_reply, 1911 MPT3_CONFIG_PAGE_DEFAULT_TIMEOUT, config_page, 1912 sizeof(*config_page)); 1913 out: 1914 return r; 1915 } 1916 1917 /** 1918 * mpt3sas_config_set_driver_trigger_pg1 - write driver trigger page 1 1919 * @ioc: per adapter object 1920 * @mpi_reply: reply mf payload returned from firmware 1921 * @config_page: contents of the config page 1922 * Context: sleep. 1923 * 1924 * Returns 0 for success, non-zero for failure. 1925 */ 1926 int > 1927 _config_set_driver_trigger_pg1(struct MPT3SAS_ADAPTER *ioc, 1928 Mpi2ConfigReply_t *mpi_reply, Mpi26DriverTriggerPage1_t *config_page) 1929 { 1930 Mpi2ConfigRequest_t mpi_request; 1931 int r; 1932 1933 memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t)); 1934 mpi_request.Function = MPI2_FUNCTION_CONFIG; 1935 mpi_request.Action = MPI2_CONFIG_ACTION_PAGE_HEADER; 1936 mpi_request.Header.PageType = MPI2_CONFIG_PAGETYPE_EXTENDED; 1937 mpi_request.ExtPageType = 1938 MPI2_CONFIG_EXTPAGETYPE_DRIVER_PERSISTENT_TRIGGER; 1939 mpi_request.Header.PageNumber = 1; 1940 mpi_request.Header.PageVersion = MPI26_DRIVER_TRIGGER_PAGE1_PAGEVERSION; 1941 ioc->build_zero_len_sge_mpi(ioc, &mpi_request.PageBufferSGE); 1942 r = _config_request(ioc, &mpi_request, mpi_reply, 1943 MPT3_CONFIG_PAGE_DEFAULT_TIMEOUT, NULL, 0); 1944 if (r) 1945 goto out; 1946 1947 mpi_request.Action = MPI2_CONFIG_ACTION_PAGE_WRITE_CURRENT; 1948 _config_request(ioc, &mpi_request, mpi_reply, 1949 MPT3_CONFIG_PAGE_DEFAULT_TIMEOUT, config_page, 1950 sizeof(*config_page)); 1951 mpi_request.Action = MPI2_CONFIG_ACTION_PAGE_WRITE_NVRAM; 1952 r = _config_request(ioc, &mpi_request, mpi_reply, 1953 MPT3_CONFIG_PAGE_DEFAULT_TIMEOUT, config_page, 1954 sizeof(*config_page)); 1955 out: 1956 return r; 1957 } 1958 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org