* [linux-next:master 3846/10661] drivers/ntb/hw/idt/ntb_hw_idt.c:1116:1: warning: the frame size of 1288 bytes is larger than 1280 bytes
@ 2022-05-11 3:11 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-05-11 3:11 UTC (permalink / raw)
To: Wang Haojun; +Cc: kbuild-all, Linux Memory Management List, Jon Mason
Hi Wang,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 3bf222d317a20170ee17f082626c1e0f83537e13
commit: e9d0fa5e2482d08f079861a03c9f40a47dacfcb0 [3846/10661] IDT: Fix Build warnings on some 32bit architectures.
config: s390-randconfig-r013-20220510 (https://download.01.org/0day-ci/archive/20220511/202205111109.PiKTruEj-lkp@intel.com/config)
compiler: s390-linux-gcc (GCC) 11.3.0
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
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=e9d0fa5e2482d08f079861a03c9f40a47dacfcb0
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout e9d0fa5e2482d08f079861a03c9f40a47dacfcb0
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=s390 SHELL=/bin/bash drivers/ntb/hw/idt/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/ntb/hw/idt/ntb_hw_idt.c: In function 'idt_scan_mws':
>> drivers/ntb/hw/idt/ntb_hw_idt.c:1116:1: warning: the frame size of 1288 bytes is larger than 1280 bytes [-Wframe-larger-than=]
1116 | }
| ^
vim +1116 drivers/ntb/hw/idt/ntb_hw_idt.c
bf2a952d31d2cd Serge Semin 2017-04-12 1029
bf2a952d31d2cd Serge Semin 2017-04-12 1030 /*
bf2a952d31d2cd Serge Semin 2017-04-12 1031 * idt_scan_mws() - scan memory windows of the port
bf2a952d31d2cd Serge Semin 2017-04-12 1032 * @ndev: IDT NTB hardware driver descriptor
bf2a952d31d2cd Serge Semin 2017-04-12 1033 * @port: Port to get number of memory windows for
bf2a952d31d2cd Serge Semin 2017-04-12 1034 * @mw_cnt: Out - number of memory windows
bf2a952d31d2cd Serge Semin 2017-04-12 1035 *
bf2a952d31d2cd Serge Semin 2017-04-12 1036 * It walks over BAR setup registers of the specified port and determines
bf2a952d31d2cd Serge Semin 2017-04-12 1037 * the memory windows parameters if any activated.
bf2a952d31d2cd Serge Semin 2017-04-12 1038 *
bf2a952d31d2cd Serge Semin 2017-04-12 1039 * Return: array of memory windows
bf2a952d31d2cd Serge Semin 2017-04-12 1040 */
bf2a952d31d2cd Serge Semin 2017-04-12 1041 static struct idt_mw_cfg *idt_scan_mws(struct idt_ntb_dev *ndev, int port,
bf2a952d31d2cd Serge Semin 2017-04-12 1042 unsigned char *mw_cnt)
bf2a952d31d2cd Serge Semin 2017-04-12 1043 {
bf2a952d31d2cd Serge Semin 2017-04-12 1044 struct idt_mw_cfg mws[IDT_MAX_NR_MWS], *ret_mws;
bf2a952d31d2cd Serge Semin 2017-04-12 1045 const struct idt_ntb_bar *bars;
bf2a952d31d2cd Serge Semin 2017-04-12 1046 enum idt_mw_type mw_type;
bf2a952d31d2cd Serge Semin 2017-04-12 1047 unsigned char widx, bidx, en_cnt;
bf2a952d31d2cd Serge Semin 2017-04-12 1048 bool bar_64bit = false;
bf2a952d31d2cd Serge Semin 2017-04-12 1049 int aprt_size;
bf2a952d31d2cd Serge Semin 2017-04-12 1050 u32 data;
bf2a952d31d2cd Serge Semin 2017-04-12 1051
bf2a952d31d2cd Serge Semin 2017-04-12 1052 /* Retrieve the array of the BARs registers */
bf2a952d31d2cd Serge Semin 2017-04-12 1053 bars = portdata_tbl[port].bars;
bf2a952d31d2cd Serge Semin 2017-04-12 1054
bf2a952d31d2cd Serge Semin 2017-04-12 1055 /* Scan all the BARs belonging to the port */
bf2a952d31d2cd Serge Semin 2017-04-12 1056 *mw_cnt = 0;
bf2a952d31d2cd Serge Semin 2017-04-12 1057 for (bidx = 0; bidx < IDT_BAR_CNT; bidx += 1 + bar_64bit) {
bf2a952d31d2cd Serge Semin 2017-04-12 1058 /* Read BARSETUP register value */
bf2a952d31d2cd Serge Semin 2017-04-12 1059 data = idt_sw_read(ndev, bars[bidx].setup);
bf2a952d31d2cd Serge Semin 2017-04-12 1060
bf2a952d31d2cd Serge Semin 2017-04-12 1061 /* Skip disabled BARs */
bf2a952d31d2cd Serge Semin 2017-04-12 1062 if (!(data & IDT_BARSETUP_EN)) {
bf2a952d31d2cd Serge Semin 2017-04-12 1063 bar_64bit = false;
bf2a952d31d2cd Serge Semin 2017-04-12 1064 continue;
bf2a952d31d2cd Serge Semin 2017-04-12 1065 }
bf2a952d31d2cd Serge Semin 2017-04-12 1066
bf2a952d31d2cd Serge Semin 2017-04-12 1067 /* Skip next BARSETUP if current one has 64bit addressing */
bf2a952d31d2cd Serge Semin 2017-04-12 1068 bar_64bit = IS_FLD_SET(BARSETUP_TYPE, data, 64);
bf2a952d31d2cd Serge Semin 2017-04-12 1069
bf2a952d31d2cd Serge Semin 2017-04-12 1070 /* Skip configuration space mapping BARs */
bf2a952d31d2cd Serge Semin 2017-04-12 1071 if (data & IDT_BARSETUP_MODE_CFG)
bf2a952d31d2cd Serge Semin 2017-04-12 1072 continue;
bf2a952d31d2cd Serge Semin 2017-04-12 1073
bf2a952d31d2cd Serge Semin 2017-04-12 1074 /* Retrieve MW type/entries count and aperture size */
bf2a952d31d2cd Serge Semin 2017-04-12 1075 mw_type = GET_FIELD(BARSETUP_ATRAN, data);
bf2a952d31d2cd Serge Semin 2017-04-12 1076 en_cnt = idt_get_mw_count(mw_type);
bf2a952d31d2cd Serge Semin 2017-04-12 1077 aprt_size = (u64)1 << GET_FIELD(BARSETUP_SIZE, data);
bf2a952d31d2cd Serge Semin 2017-04-12 1078
bf2a952d31d2cd Serge Semin 2017-04-12 1079 /* Save configurations of all available memory windows */
bf2a952d31d2cd Serge Semin 2017-04-12 1080 for (widx = 0; widx < en_cnt; widx++, (*mw_cnt)++) {
bf2a952d31d2cd Serge Semin 2017-04-12 1081 /*
bf2a952d31d2cd Serge Semin 2017-04-12 1082 * IDT can expose a limited number of MWs, so it's bug
bf2a952d31d2cd Serge Semin 2017-04-12 1083 * to have more than the driver expects
bf2a952d31d2cd Serge Semin 2017-04-12 1084 */
bf2a952d31d2cd Serge Semin 2017-04-12 1085 if (*mw_cnt >= IDT_MAX_NR_MWS)
bf2a952d31d2cd Serge Semin 2017-04-12 1086 return ERR_PTR(-EINVAL);
bf2a952d31d2cd Serge Semin 2017-04-12 1087
bf2a952d31d2cd Serge Semin 2017-04-12 1088 /* Save basic MW info */
bf2a952d31d2cd Serge Semin 2017-04-12 1089 mws[*mw_cnt].type = mw_type;
bf2a952d31d2cd Serge Semin 2017-04-12 1090 mws[*mw_cnt].bar = bidx;
bf2a952d31d2cd Serge Semin 2017-04-12 1091 mws[*mw_cnt].idx = widx;
bf2a952d31d2cd Serge Semin 2017-04-12 1092 /* It's always DWORD aligned */
bf2a952d31d2cd Serge Semin 2017-04-12 1093 mws[*mw_cnt].addr_align = IDT_TRANS_ALIGN;
bf2a952d31d2cd Serge Semin 2017-04-12 1094 /* DIR and LUT approachs differently configure MWs */
bf2a952d31d2cd Serge Semin 2017-04-12 1095 if (mw_type == IDT_MW_DIR)
bf2a952d31d2cd Serge Semin 2017-04-12 1096 mws[*mw_cnt].size_max = aprt_size;
bf2a952d31d2cd Serge Semin 2017-04-12 1097 else if (mw_type == IDT_MW_LUT12)
bf2a952d31d2cd Serge Semin 2017-04-12 1098 mws[*mw_cnt].size_max = aprt_size / 16;
bf2a952d31d2cd Serge Semin 2017-04-12 1099 else
bf2a952d31d2cd Serge Semin 2017-04-12 1100 mws[*mw_cnt].size_max = aprt_size / 32;
bf2a952d31d2cd Serge Semin 2017-04-12 1101 mws[*mw_cnt].size_align = (mw_type == IDT_MW_DIR) ?
bf2a952d31d2cd Serge Semin 2017-04-12 1102 IDT_DIR_SIZE_ALIGN : mws[*mw_cnt].size_max;
bf2a952d31d2cd Serge Semin 2017-04-12 1103 }
bf2a952d31d2cd Serge Semin 2017-04-12 1104 }
bf2a952d31d2cd Serge Semin 2017-04-12 1105
bf2a952d31d2cd Serge Semin 2017-04-12 1106 /* Allocate memory for memory window descriptors */
1b7619828d0c34 Gustavo A. R. Silva 2018-08-27 1107 ret_mws = devm_kcalloc(&ndev->ntb.pdev->dev, *mw_cnt, sizeof(*ret_mws),
1b7619828d0c34 Gustavo A. R. Silva 2018-08-27 1108 GFP_KERNEL);
1b7619828d0c34 Gustavo A. R. Silva 2018-08-27 1109 if (!ret_mws)
bf2a952d31d2cd Serge Semin 2017-04-12 1110 return ERR_PTR(-ENOMEM);
bf2a952d31d2cd Serge Semin 2017-04-12 1111
bf2a952d31d2cd Serge Semin 2017-04-12 1112 /* Copy the info of detected memory windows */
bf2a952d31d2cd Serge Semin 2017-04-12 1113 memcpy(ret_mws, mws, (*mw_cnt)*sizeof(*ret_mws));
bf2a952d31d2cd Serge Semin 2017-04-12 1114
bf2a952d31d2cd Serge Semin 2017-04-12 1115 return ret_mws;
bf2a952d31d2cd Serge Semin 2017-04-12 @1116 }
bf2a952d31d2cd Serge Semin 2017-04-12 1117
:::::: The code at line 1116 was first introduced by commit
:::::: bf2a952d31d2cd28bb3454f15645a76fda70addd NTB: Add IDT 89HPESxNTx PCIe-switches support
:::::: TO: Serge Semin <fancer.lancer@gmail.com>
:::::: CC: Jon Mason <jdmason@kudzu.us>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-05-11 3:11 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-05-11 3:11 [linux-next:master 3846/10661] drivers/ntb/hw/idt/ntb_hw_idt.c:1116:1: warning: the frame size of 1288 bytes is larger than 1280 bytes kernel test robot
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.