2024-05-20 05:07:43

by kernel test robot

[permalink] [raw]
Subject: drivers/hid/intel-ish-hid/ishtp/loader.c:172:8: error: incompatible pointer types passing '__le64 *' (aka 'unsigned long long *') to parameter of type 'dma_addr_t *' (aka 'unsigned int *')

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: eb6a9339efeb6f3d2b5c86fdf2382cdc293eca2c
commit: 579a267e4617d705f6c795e5e755b01f1f87eff3 HID: intel-ish-hid: Implement loading firmware from host feature
date: 13 days ago
config: i386-buildonly-randconfig-005-20240520 (https://download.01.org/0day-ci/archive/20240520/[email protected]/config)
compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240520/[email protected]/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 <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

All errors (new ones prefixed by >>):

>> drivers/hid/intel-ish-hid/ishtp/loader.c:172:8: error: incompatible pointer types passing '__le64 *' (aka 'unsigned long long *') to parameter of type 'dma_addr_t *' (aka 'unsigned int *') [-Werror,-Wincompatible-pointer-types]
172 | &fragment->fragment_tbl[i].ddr_adrs, GFP_KERNEL);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dma-mapping.h:429:15: note: passing argument to parameter 'dma_handle' here
429 | dma_addr_t *dma_handle, gfp_t gfp)
| ^
drivers/hid/intel-ish-hid/ishtp/loader.c:207:2: error: call to undeclared function 'DEFINE_RAW_FLEX'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
207 | DEFINE_RAW_FLEX(struct loader_xfer_dma_fragment, fragment, fragment_tbl, FRAGMENT_MAX_NUM);
| ^
drivers/hid/intel-ish-hid/ishtp/loader.c:207:18: error: expected expression
207 | DEFINE_RAW_FLEX(struct loader_xfer_dma_fragment, fragment, fragment_tbl, FRAGMENT_MAX_NUM);
| ^
drivers/hid/intel-ish-hid/ishtp/loader.c:207:51: error: use of undeclared identifier 'fragment'
207 | DEFINE_RAW_FLEX(struct loader_xfer_dma_fragment, fragment, fragment_tbl, FRAGMENT_MAX_NUM);
| ^
drivers/hid/intel-ish-hid/ishtp/loader.c:207:61: error: use of undeclared identifier 'fragment_tbl'
207 | DEFINE_RAW_FLEX(struct loader_xfer_dma_fragment, fragment, fragment_tbl, FRAGMENT_MAX_NUM);
| ^
drivers/hid/intel-ish-hid/ishtp/loader.c:229:2: error: use of undeclared identifier 'fragment'
229 | fragment->fragment.header.command = LOADER_CMD_XFER_FRAGMENT;
| ^
drivers/hid/intel-ish-hid/ishtp/loader.c:230:2: error: use of undeclared identifier 'fragment'
230 | fragment->fragment.xfer_mode = LOADER_XFER_MODE_DMA;
| ^
drivers/hid/intel-ish-hid/ishtp/loader.c:231:2: error: use of undeclared identifier 'fragment'
231 | fragment->fragment.is_last = 1;
| ^
drivers/hid/intel-ish-hid/ishtp/loader.c:232:2: error: use of undeclared identifier 'fragment'
232 | fragment->fragment.size = ish_fw->size;
| ^
drivers/hid/intel-ish-hid/ishtp/loader.c:236:2: error: use of undeclared identifier 'fragment'
236 | fragment->fragment_cnt = DIV_ROUND_UP(ish_fw->size, fragment_size);
| ^
drivers/hid/intel-ish-hid/ishtp/loader.c:238:37: error: use of undeclared identifier 'fragment'
238 | rv = prepare_dma_bufs(dev, ish_fw, fragment, dma_bufs, fragment_size);
| ^
drivers/hid/intel-ish-hid/ishtp/loader.c:258:46: error: use of undeclared identifier 'fragment'
258 | struct_size(fragment, fragment_tbl, fragment->fragment_cnt),
| ^
drivers/hid/intel-ish-hid/ishtp/loader.c:257:29: error: use of undeclared identifier 'fragment'
257 | rv = loader_xfer_cmd(dev, fragment,
| ^
drivers/hid/intel-ish-hid/ishtp/loader.c:273:24: error: use of undeclared identifier 'fragment'
273 | release_dma_bufs(dev, fragment, dma_bufs, fragment_size);
| ^
14 errors generated.


vim +172 drivers/hid/intel-ish-hid/ishtp/loader.c

151
152 /**
153 * prepare_dma_bufs() - Prepare the DMA buffer for transferring firmware fragments
154 * @dev: The ISHTP device
155 * @ish_fw: The ISH firmware
156 * @fragment: The ISHTP firmware fragment descriptor
157 * @dma_bufs: The array of DMA fragment buffers
158 * @fragment_size: The size of a single DMA fragment
159 *
160 * Return: 0 on success, negative error code on failure
161 */
162 static int prepare_dma_bufs(struct ishtp_device *dev,
163 const struct firmware *ish_fw,
164 struct loader_xfer_dma_fragment *fragment,
165 void **dma_bufs, u32 fragment_size)
166 {
167 u32 offset = 0;
168 int i;
169
170 for (i = 0; i < fragment->fragment_cnt && offset < ish_fw->size; i++) {
171 dma_bufs[i] = dma_alloc_coherent(dev->devc, fragment_size,
> 172 &fragment->fragment_tbl[i].ddr_adrs, GFP_KERNEL);
173 if (!dma_bufs[i])
174 return -ENOMEM;
175
176 fragment->fragment_tbl[i].length = clamp(ish_fw->size - offset, 0, fragment_size);
177 fragment->fragment_tbl[i].fw_off = offset;
178 memcpy(dma_bufs[i], ish_fw->data + offset, fragment->fragment_tbl[i].length);
179 clflush_cache_range(dma_bufs[i], fragment_size);
180
181 offset += fragment->fragment_tbl[i].length;
182 }
183
184 return 0;
185 }
186

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


2024-06-10 05:55:52

by Borislav Petkov

[permalink] [raw]
Subject: Re: drivers/hid/intel-ish-hid/ishtp/loader.c:172:8: error: incompatible pointer types passing '__le64 *' (aka 'unsigned long long *') to parameter of type 'dma_addr_t *' (aka 'unsigned int *')

On Mon, May 20, 2024 at 01:07:18PM +0800, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: eb6a9339efeb6f3d2b5c86fdf2382cdc293eca2c
> commit: 579a267e4617d705f6c795e5e755b01f1f87eff3 HID: intel-ish-hid: Implement loading firmware from host feature
> date: 13 days ago
> config: i386-buildonly-randconfig-005-20240520 (https://download.01.org/0day-ci/archive/20240520/[email protected]/config)
> compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240520/[email protected]/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 <[email protected]>
> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
>
> All errors (new ones prefixed by >>):
>
> >> drivers/hid/intel-ish-hid/ishtp/loader.c:172:8: error: incompatible pointer types passing '__le64 *' (aka 'unsigned long long *') to parameter of type 'dma_addr_t *' (aka 'unsigned int *') [-Werror,-Wincompatible-pointer-types]
> 172 | &fragment->fragment_tbl[i].ddr_adrs, GFP_KERNEL);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

I see this too in i386 randconfig builds with clang.

.config attached.

Thx.

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette


Attachments:
(No filename) (1.65 kB)
03-19-42-randconfig-i386-21568.cfg (198.97 kB)
Download all attachments

2024-06-10 06:00:17

by Jiri Kosina

[permalink] [raw]
Subject: Re: drivers/hid/intel-ish-hid/ishtp/loader.c:172:8: error: incompatible pointer types passing '__le64 *' (aka 'unsigned long long *') to parameter of type 'dma_addr_t *' (aka 'unsigned int *')

On Mon, 10 Jun 2024, Borislav Petkov wrote:

> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head: eb6a9339efeb6f3d2b5c86fdf2382cdc293eca2c
> > commit: 579a267e4617d705f6c795e5e755b01f1f87eff3 HID: intel-ish-hid: Implement loading firmware from host feature
> > date: 13 days ago
> > config: i386-buildonly-randconfig-005-20240520 (https://download.01.org/0day-ci/archive/20240520/[email protected]/config)
> > compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
> > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240520/[email protected]/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 <[email protected]>
> > | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
> >
> > All errors (new ones prefixed by >>):
> >
> > >> drivers/hid/intel-ish-hid/ishtp/loader.c:172:8: error: incompatible pointer types passing '__le64 *' (aka 'unsigned long long *') to parameter of type 'dma_addr_t *' (aka 'unsigned int *') [-Werror,-Wincompatible-pointer-types]
> > 172 | &fragment->fragment_tbl[i].ddr_adrs, GFP_KERNEL);
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> I see this too in i386 randconfig builds with clang.

Should be fixed in Linus' tree as of yesterday by 2360497238261f17d4
("HID: intel-ish-hid: Fix build error for COMPILE_TEST")

--
Jiri Kosina
SUSE Labs


2024-06-10 06:19:08

by Borislav Petkov

[permalink] [raw]
Subject: Re: drivers/hid/intel-ish-hid/ishtp/loader.c:172:8: error: incompatible pointer types passing '__le64 *' (aka 'unsigned long long *') to parameter of type 'dma_addr_t *' (aka 'unsigned int *')

Hey jikos,

On Mon, Jun 10, 2024 at 07:56:48AM +0200, Jiri Kosina wrote:
> Should be fixed in Linus' tree as of yesterday by 2360497238261f17d4
> ("HID: intel-ish-hid: Fix build error for COMPILE_TEST")

Yap, I can confirm - thanks!

:-)

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette