On Mon, Nov 16, 2020 at 10:34 AM Tzung-Bi Shih <tzungbi(a)google.com> wrote:
On Sat, Nov 14, 2020 at 4:02 PM Nicolas Boichat
<drinkcat(a)google.com>
wrote:
> +Tzung-Bi Shih <tzungbi(a)google.com> +Pi-Hsun Shih <pihsun(a)google.com>
>
> On Sat, Nov 14, 2020, 14:34 kernel test robot <lkp(a)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 tree
>>
> I 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(a)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(a)googlegroups.com.
>> To view this discussion on the web visit
>>
https://groups.google.com/d/msgid/cros-kernel-buildreports/202011141426.b...
>> .
>>
>