On Sat, Nov 14, 2020 at 4:02 PM Nicolas Boichat <drinkcat@google.com> wrote:+Tzung-Bi Shih +Pi-Hsun ShihOn Sat, Nov 14, 2020, 14:34 kernel test robot <lkp@intel.com> wrote:tree: https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-5.4
head: 4e186ff60c11535b22b7f81c85606260e363989f
commit: 0b60154e37d6ff2e12c8fb52d7c715d61fd96a6a [39/76] FROMGIT: remoteproc/mediatek: Add support for mt8192 SCP
config: riscv-randconfig-s031-20201113 (attached as .config)
compiler: riscv64-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-107-gaf3512a6-dirty
git remote add chrome-os https://chromium.googlesource.com/chromiumos/third_party/kernel
git fetch --no-tags chrome-os chromeos-5.4
git checkout 0b60154e37d6ff2e12c8fb52d7c715d61fd96a6a
# save the attached .config to linux build treeI didn't find "attached .config" (which shouldn't matter to the issue). Will try to fix all sparse errors in mtk_scp.c.
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=riscv
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
"sparse warnings: (new ones prefixed by >>)"
>> drivers/remoteproc/mtk_scp.c:306:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] <asn:2> *addr @@ got void *addr @@
>> drivers/remoteproc/mtk_scp.c:306:17: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/remoteproc/mtk_scp.c:306:17: sparse: got void *addr
drivers/remoteproc/mtk_scp.c:307:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] <asn:2> *addr @@ got void *addr @@
drivers/remoteproc/mtk_scp.c:307:9: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/remoteproc/mtk_scp.c:307:9: sparse: got void *addr
drivers/remoteproc/mtk_scp.c:314:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] <asn:2> *addr @@ got void *addr @@
drivers/remoteproc/mtk_scp.c:314:9: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/remoteproc/mtk_scp.c:314:9: sparse: got void *addr
drivers/remoteproc/mtk_scp.c:316:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] <asn:2> *addr @@ got void *addr @@
drivers/remoteproc/mtk_scp.c:316:17: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/remoteproc/mtk_scp.c:316:17: sparse: got void *addr
drivers/remoteproc/mtk_scp.c:326:9: sparse: sparse: undefined identifier 'dsb'
>> drivers/remoteproc/mtk_scp.c:435:45: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *addr @@ got void [noderef] <asn:2> * @@
drivers/remoteproc/mtk_scp.c:436:45: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *addr @@ got void [noderef] <asn:2> * @@
drivers/remoteproc/mtk_scp.c:437:45: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *addr @@ got void [noderef] <asn:2> * @@
drivers/remoteproc/mtk_scp.c:438:45: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *addr @@ got void [noderef] <asn:2> * @@
drivers/remoteproc/mtk_scp.c:439:45: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *addr @@ got void [noderef] <asn:2> * @@
drivers/remoteproc/mtk_scp.c:563:23: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] <asn:2> *cpu_addr @@ got void * @@
drivers/remoteproc/mtk_scp.c:576:56: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void *cpu_addr @@ got void [noderef] <asn:2> *cpu_addr @@
vim +306 drivers/remoteproc/mtk_scp.c
300
301 static void mt8192_power_on_sram(void *addr)
302 {
303 int i;
304
305 for (i = 31; i >= 0; i--)
> 306 writel(GENMASK(i, 0), addr);
> 307 writel(0, addr);
308 }
309
310 static void mt8192_power_off_sram(void *addr)
311 {
312 int i;
313
314 writel(0, addr);
315 for (i = 0; i < 32; i++)
316 writel(GENMASK(i, 0), addr);
317 }
318
319 static int mt8192_scp_before_load(struct mtk_scp *scp)
320 {
321 /* clear SPM interrupt, SCP2SPM_IPC_CLR */
322 writel(0xff, scp->reg_base + MT8192_SCP2SPM_IPC_CLR);
323
324 writel(1, scp->reg_base + MT8192_CORE0_SW_RSTN_SET);
325
326 dsb(sy);
327
328 readl(scp->reg_base + MT8192_CORE0_SW_RSTN_SET);
329
330 /* enable SRAM clock */
331 mt8192_power_on_sram(scp->reg_base + MT8192_L2TCM_SRAM_PD_0);
332 mt8192_power_on_sram(scp->reg_base + MT8192_L2TCM_SRAM_PD_1);
333 mt8192_power_on_sram(scp->reg_base + MT8192_L2TCM_SRAM_PD_2);
334 mt8192_power_on_sram(scp->reg_base + MT8192_L1TCM_SRAM_PDN);
335 mt8192_power_on_sram(scp->reg_base + MT8192_CPU0_SRAM_PD);
336
337 return 0;
338 }
339
340 static int scp_load(struct rproc *rproc, const struct firmware *fw)
341 {
342 struct mtk_scp *scp = rproc->priv;
343 struct device *dev = scp->dev;
344 int ret;
345
346 ret = clk_prepare_enable(scp->clk);
347 if (ret) {
348 dev_err(dev, "failed to enable clocks\n");
349 return ret;
350 }
351
352 /* Hold SCP in reset while loading FW. */
353 scp->data->scp_reset_assert(scp);
354
355 ret = scp->data->scp_before_load(scp);
356 if (ret < 0)
357 return ret;
358
359 ret = scp_elf_load_segments(rproc, fw);
360 clk_disable_unprepare(scp->clk);
361
362 return ret;
363 }
364
365 static int scp_start(struct rproc *rproc)
366 {
367 struct mtk_scp *scp = (struct mtk_scp *)rproc->priv;
368 struct device *dev = scp->dev;
369 struct scp_run *run = &scp->run;
370 int ret;
371
372 ret = clk_prepare_enable(scp->clk);
373 if (ret) {
374 dev_err(dev, "failed to enable clocks\n");
375 return ret;
376 }
377
378 run->signaled = false;
379
380 scp->data->scp_reset_deassert(scp);
381
382 ret = wait_event_interruptible_timeout(
383 run->wq,
384 run->signaled,
385 msecs_to_jiffies(2000));
386
387 if (ret == 0) {
388 dev_err(dev, "wait SCP initialization timeout!\n");
389 ret = -ETIME;
390 goto stop;
391 }
392 if (ret == -ERESTARTSYS) {
393 dev_err(dev, "wait SCP interrupted by a signal!\n");
394 goto stop;
395 }
396
397 clk_disable_unprepare(scp->clk);
398 dev_info(dev, "SCP is ready. FW version %s\n", run->fw_ver);
399
400 return 0;
401
402 stop:
403 scp->data->scp_reset_assert(scp);
404 clk_disable_unprepare(scp->clk);
405 return ret;
406 }
407
408 static void *scp_da_to_va(struct rproc *rproc, u64 da, size_t len)
409 {
410 struct mtk_scp *scp = (struct mtk_scp *)rproc->priv;
411 int offset;
412
413 if (da < scp->sram_size) {
414 offset = da;
415 if (offset >= 0 && (offset + len) < scp->sram_size)
416 return (void __force *)scp->sram_base + offset;
417 } else if (scp->dram_size) {
418 offset = da - scp->dma_addr;
419 if (offset >= 0 && (offset + len) < scp->dram_size)
420 return (void __force *)scp->cpu_addr + offset;
421 }
422
423 return NULL;
424 }
425
426 static void mt8183_scp_stop(struct mtk_scp *scp)
427 {
428 /* Disable SCP watchdog */
429 writel(0, scp->reg_base + MT8183_WDT_CFG);
430 }
431
432 static void mt8192_scp_stop(struct mtk_scp *scp)
433 {
434 /* Disable SRAM clock */
> 435 mt8192_power_off_sram(scp->reg_base + MT8192_L2TCM_SRAM_PD_0);
436 mt8192_power_off_sram(scp->reg_base + MT8192_L2TCM_SRAM_PD_1);
437 mt8192_power_off_sram(scp->reg_base + MT8192_L2TCM_SRAM_PD_2);
438 mt8192_power_off_sram(scp->reg_base + MT8192_L1TCM_SRAM_PDN);
439 mt8192_power_off_sram(scp->reg_base + MT8192_CPU0_SRAM_PD);
440
441 /* Disable SCP watchdog */
442 writel(0, scp->reg_base + MT8192_CORE0_WDT_CFG);
443 }
444
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
--
You received this message because you are subscribed to the Google Groups "cros-kernel-buildreports" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cros-kernel-buildreports+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/cros-kernel-buildreports/202011141426.bXwTnVOF-lkp%40intel.com.