Re: [PATCH v2 06/15] usb: misc: emi62: update to use usb_control_msg_send()

kernel test robot
2020-11-30T03:56:32Z

[-- Attachment #1: Type: text/plain, Size: 13522 bytes --]

Hi Anant,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on usb/usb-testing]
[also build test WARNING on balbi-usb/testing/next peter.chen-usb/ci-for-usb-next v5.10-rc6 next-20201127]
[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/Anant-Thazhemadam/drivers-usb-misc-update-to-use-usb_control_msg_-send-recv/20201130-093816
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
config: h8300-randconfig-s032-20201130 (attached as .config)
compiler: h8300-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.3-170-g3bc348f6-dirty
# https://github.com/0day-ci/linux/commit/a9e2333efa48de6856185ec35c82b659ff1c1215
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Anant-Thazhemadam/drivers-usb-misc-update-to-use-usb_control_msg_-send-recv/20201130-093816
git checkout a9e2333efa48de6856185ec35c82b659ff1c1215
# 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=h8300

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/usb/misc/emi62.c: In function 'emi62_load_firmware':
>> drivers/usb/misc/emi62.c:213:1: warning: the frame size of 1048 bytes is larger than 1024 bytes [-Wframe-larger-than=]
213 | }
| ^

vim +213 drivers/usb/misc/emi62.c

^1da177e4c3f415 Linus Torvalds 2005-04-16 68
^1da177e4c3f415 Linus Torvalds 2005-04-16 69 static int emi62_load_firmware (struct usb_device *dev)
^1da177e4c3f415 Linus Torvalds 2005-04-16 70 {
b8e24bfabb03527 David Woodhouse 2008-05-30 71 const struct firmware *loader_fw = NULL;
b8e24bfabb03527 David Woodhouse 2008-05-30 72 const struct firmware *bitstream_fw = NULL;
b8e24bfabb03527 David Woodhouse 2008-05-30 73 const struct firmware *firmware_fw = NULL;
b8e24bfabb03527 David Woodhouse 2008-05-30 74 const struct ihex_binrec *rec;
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 75 int err = -ENOMEM;
^1da177e4c3f415 Linus Torvalds 2005-04-16 76 int i;
^1da177e4c3f415 Linus Torvalds 2005-04-16 77 __u32 addr; /* Address to write */
a9e2333efa48de6 Anant Thazhemadam 2020-11-30 78 __u8 buf[FW_LOAD_SIZE];
^1da177e4c3f415 Linus Torvalds 2005-04-16 79
^1da177e4c3f415 Linus Torvalds 2005-04-16 80 dev_dbg(&dev->dev, "load_firmware\n");
^1da177e4c3f415 Linus Torvalds 2005-04-16 81
b8e24bfabb03527 David Woodhouse 2008-05-30 82 err = request_ihex_firmware(&loader_fw, "emi62/loader.fw", &dev->dev);
b8e24bfabb03527 David Woodhouse 2008-05-30 83 if (err)
b8e24bfabb03527 David Woodhouse 2008-05-30 84 goto nofw;
b8e24bfabb03527 David Woodhouse 2008-05-30 85
b8e24bfabb03527 David Woodhouse 2008-05-30 86 err = request_ihex_firmware(&bitstream_fw, "emi62/bitstream.fw",
b8e24bfabb03527 David Woodhouse 2008-05-30 87 &dev->dev);
b8e24bfabb03527 David Woodhouse 2008-05-30 88 if (err)
b8e24bfabb03527 David Woodhouse 2008-05-30 89 goto nofw;
b8e24bfabb03527 David Woodhouse 2008-05-30 90
b8e24bfabb03527 David Woodhouse 2008-05-30 91 err = request_ihex_firmware(&firmware_fw, FIRMWARE_FW, &dev->dev);
b8e24bfabb03527 David Woodhouse 2008-05-30 92 if (err) {
b8e24bfabb03527 David Woodhouse 2008-05-30 93 nofw:
b8e24bfabb03527 David Woodhouse 2008-05-30 94 goto wraperr;
b8e24bfabb03527 David Woodhouse 2008-05-30 95 }
b8e24bfabb03527 David Woodhouse 2008-05-30 96
^1da177e4c3f415 Linus Torvalds 2005-04-16 97 /* Assert reset (stop the CPU in the EMI) */
^1da177e4c3f415 Linus Torvalds 2005-04-16 98 err = emi62_set_reset(dev,1);
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 99 if (err < 0)
^1da177e4c3f415 Linus Torvalds 2005-04-16 100 goto wraperr;
^1da177e4c3f415 Linus Torvalds 2005-04-16 101
b8e24bfabb03527 David Woodhouse 2008-05-30 102 rec = (const struct ihex_binrec *)loader_fw->data;
b8e24bfabb03527 David Woodhouse 2008-05-30 103
^1da177e4c3f415 Linus Torvalds 2005-04-16 104 /* 1. We need to put the loader for the FPGA into the EZ-USB */
b8e24bfabb03527 David Woodhouse 2008-05-30 105 while (rec) {
b8e24bfabb03527 David Woodhouse 2008-05-30 106 err = emi62_writememory(dev, be32_to_cpu(rec->addr),
b8e24bfabb03527 David Woodhouse 2008-05-30 107 rec->data, be16_to_cpu(rec->len),
b8e24bfabb03527 David Woodhouse 2008-05-30 108 ANCHOR_LOAD_INTERNAL);
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 109 if (err < 0)
^1da177e4c3f415 Linus Torvalds 2005-04-16 110 goto wraperr;
b8e24bfabb03527 David Woodhouse 2008-05-30 111 rec = ihex_next_binrec(rec);
^1da177e4c3f415 Linus Torvalds 2005-04-16 112 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 113
^1da177e4c3f415 Linus Torvalds 2005-04-16 114 /* De-assert reset (let the CPU run) */
^1da177e4c3f415 Linus Torvalds 2005-04-16 115 err = emi62_set_reset(dev,0);
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 116 if (err < 0)
5919a43bbc649f4 Oliver Neukum 2007-10-25 117 goto wraperr;
16c23f7d88cbcce Monty 2006-05-09 118 msleep(250); /* let device settle */
^1da177e4c3f415 Linus Torvalds 2005-04-16 119
^1da177e4c3f415 Linus Torvalds 2005-04-16 120 /* 2. We upload the FPGA firmware into the EMI
^1da177e4c3f415 Linus Torvalds 2005-04-16 121 * Note: collect up to 1023 (yes!) bytes and send them with
^1da177e4c3f415 Linus Torvalds 2005-04-16 122 * a single request. This is _much_ faster! */
b8e24bfabb03527 David Woodhouse 2008-05-30 123 rec = (const struct ihex_binrec *)bitstream_fw->data;
^1da177e4c3f415 Linus Torvalds 2005-04-16 124 do {
^1da177e4c3f415 Linus Torvalds 2005-04-16 125 i = 0;
b8e24bfabb03527 David Woodhouse 2008-05-30 126 addr = be32_to_cpu(rec->addr);
^1da177e4c3f415 Linus Torvalds 2005-04-16 127
^1da177e4c3f415 Linus Torvalds 2005-04-16 128 /* intel hex records are terminated with type 0 element */
b8e24bfabb03527 David Woodhouse 2008-05-30 129 while (rec && (i + be16_to_cpu(rec->len) < FW_LOAD_SIZE)) {
a9e2333efa48de6 Anant Thazhemadam 2020-11-30 130 memcpy(&buf[i], rec->data, be16_to_cpu(rec->len));
b8e24bfabb03527 David Woodhouse 2008-05-30 131 i += be16_to_cpu(rec->len);
b8e24bfabb03527 David Woodhouse 2008-05-30 132 rec = ihex_next_binrec(rec);
^1da177e4c3f415 Linus Torvalds 2005-04-16 133 }
a9e2333efa48de6 Anant Thazhemadam 2020-11-30 134 err = emi62_writememory(dev, addr, &buf, i, ANCHOR_LOAD_FPGA);
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 135 if (err < 0)
^1da177e4c3f415 Linus Torvalds 2005-04-16 136 goto wraperr;
ac06c06770bb876 Clemens Ladisch 2009-12-21 137 } while (rec);
^1da177e4c3f415 Linus Torvalds 2005-04-16 138
^1da177e4c3f415 Linus Torvalds 2005-04-16 139 /* Assert reset (stop the CPU in the EMI) */
^1da177e4c3f415 Linus Torvalds 2005-04-16 140 err = emi62_set_reset(dev,1);
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 141 if (err < 0)
^1da177e4c3f415 Linus Torvalds 2005-04-16 142 goto wraperr;
^1da177e4c3f415 Linus Torvalds 2005-04-16 143
^1da177e4c3f415 Linus Torvalds 2005-04-16 144 /* 3. We need to put the loader for the firmware into the EZ-USB (again...) */
b8e24bfabb03527 David Woodhouse 2008-05-30 145 for (rec = (const struct ihex_binrec *)loader_fw->data;
b8e24bfabb03527 David Woodhouse 2008-05-30 146 rec; rec = ihex_next_binrec(rec)) {
b8e24bfabb03527 David Woodhouse 2008-05-30 147 err = emi62_writememory(dev, be32_to_cpu(rec->addr),
b8e24bfabb03527 David Woodhouse 2008-05-30 148 rec->data, be16_to_cpu(rec->len),
b8e24bfabb03527 David Woodhouse 2008-05-30 149 ANCHOR_LOAD_INTERNAL);
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 150 if (err < 0)
^1da177e4c3f415 Linus Torvalds 2005-04-16 151 goto wraperr;
^1da177e4c3f415 Linus Torvalds 2005-04-16 152 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 153
^1da177e4c3f415 Linus Torvalds 2005-04-16 154 /* De-assert reset (let the CPU run) */
^1da177e4c3f415 Linus Torvalds 2005-04-16 155 err = emi62_set_reset(dev,0);
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 156 if (err < 0)
^1da177e4c3f415 Linus Torvalds 2005-04-16 157 goto wraperr;
16c23f7d88cbcce Monty 2006-05-09 158 msleep(250); /* let device settle */
^1da177e4c3f415 Linus Torvalds 2005-04-16 159
^1da177e4c3f415 Linus Torvalds 2005-04-16 160 /* 4. We put the part of the firmware that lies in the external RAM into the EZ-USB */
^1da177e4c3f415 Linus Torvalds 2005-04-16 161
b8e24bfabb03527 David Woodhouse 2008-05-30 162 for (rec = (const struct ihex_binrec *)firmware_fw->data;
b8e24bfabb03527 David Woodhouse 2008-05-30 163 rec; rec = ihex_next_binrec(rec)) {
b8e24bfabb03527 David Woodhouse 2008-05-30 164 if (!INTERNAL_RAM(be32_to_cpu(rec->addr))) {
b8e24bfabb03527 David Woodhouse 2008-05-30 165 err = emi62_writememory(dev, be32_to_cpu(rec->addr),
b8e24bfabb03527 David Woodhouse 2008-05-30 166 rec->data, be16_to_cpu(rec->len),
b8e24bfabb03527 David Woodhouse 2008-05-30 167 ANCHOR_LOAD_EXTERNAL);
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 168 if (err < 0)
^1da177e4c3f415 Linus Torvalds 2005-04-16 169 goto wraperr;
^1da177e4c3f415 Linus Torvalds 2005-04-16 170 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 171 }
b8e24bfabb03527 David Woodhouse 2008-05-30 172
^1da177e4c3f415 Linus Torvalds 2005-04-16 173 /* Assert reset (stop the CPU in the EMI) */
^1da177e4c3f415 Linus Torvalds 2005-04-16 174 err = emi62_set_reset(dev,1);
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 175 if (err < 0)
^1da177e4c3f415 Linus Torvalds 2005-04-16 176 goto wraperr;
^1da177e4c3f415 Linus Torvalds 2005-04-16 177
b8e24bfabb03527 David Woodhouse 2008-05-30 178 for (rec = (const struct ihex_binrec *)firmware_fw->data;
b8e24bfabb03527 David Woodhouse 2008-05-30 179 rec; rec = ihex_next_binrec(rec)) {
b8e24bfabb03527 David Woodhouse 2008-05-30 180 if (INTERNAL_RAM(be32_to_cpu(rec->addr))) {
b8e24bfabb03527 David Woodhouse 2008-05-30 181 err = emi62_writememory(dev, be32_to_cpu(rec->addr),
b8e24bfabb03527 David Woodhouse 2008-05-30 182 rec->data, be16_to_cpu(rec->len),
b8e24bfabb03527 David Woodhouse 2008-05-30 183 ANCHOR_LOAD_EXTERNAL);
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 184 if (err < 0)
^1da177e4c3f415 Linus Torvalds 2005-04-16 185 goto wraperr;
^1da177e4c3f415 Linus Torvalds 2005-04-16 186 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 187 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 188
^1da177e4c3f415 Linus Torvalds 2005-04-16 189 /* De-assert reset (let the CPU run) */
^1da177e4c3f415 Linus Torvalds 2005-04-16 190 err = emi62_set_reset(dev,0);
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 191 if (err < 0)
^1da177e4c3f415 Linus Torvalds 2005-04-16 192 goto wraperr;
16c23f7d88cbcce Monty 2006-05-09 193 msleep(250); /* let device settle */
^1da177e4c3f415 Linus Torvalds 2005-04-16 194
b8e24bfabb03527 David Woodhouse 2008-05-30 195 release_firmware(loader_fw);
b8e24bfabb03527 David Woodhouse 2008-05-30 196 release_firmware(bitstream_fw);
b8e24bfabb03527 David Woodhouse 2008-05-30 197 release_firmware(firmware_fw);
b8e24bfabb03527 David Woodhouse 2008-05-30 198
^1da177e4c3f415 Linus Torvalds 2005-04-16 199 /* return 1 to fail the driver inialization
^1da177e4c3f415 Linus Torvalds 2005-04-16 200 * and give real driver change to load */
^1da177e4c3f415 Linus Torvalds 2005-04-16 201 return 1;
^1da177e4c3f415 Linus Torvalds 2005-04-16 202
^1da177e4c3f415 Linus Torvalds 2005-04-16 203 wraperr:
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 204 if (err < 0)
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 205 dev_err(&dev->dev,"%s - error loading firmware: error = %d\n",
e9a527dae346c0a Greg Kroah-Hartman 2012-04-20 206 __func__, err);
b8e24bfabb03527 David Woodhouse 2008-05-30 207 release_firmware(loader_fw);
b8e24bfabb03527 David Woodhouse 2008-05-30 208 release_firmware(bitstream_fw);
b8e24bfabb03527 David Woodhouse 2008-05-30 209 release_firmware(firmware_fw);
b8e24bfabb03527 David Woodhouse 2008-05-30 210
^1da177e4c3f415 Linus Torvalds 2005-04-16 211 dev_err(&dev->dev, "Error\n");
^1da177e4c3f415 Linus Torvalds 2005-04-16 212 return err;
^1da177e4c3f415 Linus Torvalds 2005-04-16 @213 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 214

---
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: 30287 bytes --]