[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <201812102211.osl1qK4q%fengguang.wu@intel.com>
Date: Mon, 10 Dec 2018 22:55:15 +0800
From: kbuild test robot <lkp@...el.com>
To: Srinivas Kandagatla <srinivas.kandagatla@...aro.org>
Cc: kbuild-all@...org, robh+dt@...nel.org, gregkh@...uxfoundation.org,
arnd@...db.de, mark.rutland@....com, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, bjorn.andersson@...aro.org,
linux-arm-msm@...r.kernel.org, bkumar@....qualcomm.com,
thierry.escande@...aro.org,
Srinivas Kandagatla <srinivas.kandagatla@...aro.org>
Subject: Re: [PATCH v2 3/6] misc: fastrpc: Add support for context Invoke
method
Hi Srinivas,
I love your patch! Perhaps something to improve:
[auto build test WARNING on char-misc/char-misc-testing]
[also build test WARNING on v4.20-rc6 next-20181207]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Srinivas-Kandagatla/misc-Add-support-to-Qualcomm-FastRPC-driver/20181210-093054
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.2.0 make.cross ARCH=arm
All warnings (new ones prefixed by >>):
drivers//misc/fastrpc.c: In function 'fastrpc_get_args':
>> drivers//misc/fastrpc.c:528:17: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
rpra[i].pv = (uint64_t) ctx->args[i].ptr;
^
>> drivers//misc/fastrpc.c:545:26: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
err = copy_from_user((void *)rpra[i].pv,
^
drivers//misc/fastrpc.c:551:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
memcpy((void *)rpra[i].pv, ctx->args[i].ptr,
^
drivers//misc/fastrpc.c:558:16: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
rpra[i].pv = (uint64_t) ctx->args[i].ptr;
^
drivers//misc/fastrpc.c: In function 'fastrpc_put_args':
drivers//misc/fastrpc.c:591:8: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
(void *)rpra[i].pv, rpra[i].len);
^
drivers//misc/fastrpc.c:597:29: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
memcpy(ctx->args[i].ptr, (void *)rpra[i].pv,
^
vim +528 drivers//misc/fastrpc.c
485
486 static int fastrpc_get_args(uint32_t kernel, struct fastrpc_invoke_ctx *ctx)
487 {
488 struct device *dev = ctx->fl->sctx->dev;
489 struct fastrpc_remote_arg *rpra;
490 struct fastrpc_invoke_buf *list;
491 struct fastrpc_phy_page *pages;
492 uintptr_t args;
493 size_t rlen = 0, pkt_size = 0, metalen = 0;
494 int inbufs, i, err = 0;
495
496 inbufs = REMOTE_SCALARS_INBUFS(ctx->sc);
497 metalen = fastrpc_get_meta_size(ctx);
498 pkt_size = fastrpc_get_payload_size(ctx, metalen);
499 fastrpc_create_maps(ctx);
500 ctx->used_sz = pkt_size;
501
502 err = fastrpc_buf_alloc(ctx->fl, dev, pkt_size, &ctx->buf);
503 if (err)
504 goto bail;
505
506 rpra = ctx->buf->virt;
507 list = ctx->buf->virt + ctx->nscalars * sizeof(*rpra);
508 pages = ctx->buf->virt + ctx->nscalars * (sizeof(*list) +
509 sizeof(*rpra));
510 args = (uintptr_t)ctx->buf->virt + metalen;
511 rlen = pkt_size - metalen;
512 ctx->rpra = rpra;
513
514 for (i = 0; i < ctx->nbufs; ++i) {
515 size_t len = ctx->args[i].length;
516
517 rpra[i].pv = 0;
518 rpra[i].len = len;
519 list[i].num = len ? 1 : 0;
520 list[i].pgidx = i;
521
522 if (!len)
523 continue;
524
525 pages[i].size = roundup(len, PAGE_SIZE);
526
527 if (ctx->maps[i]) {
> 528 rpra[i].pv = (uint64_t) ctx->args[i].ptr;
529 pages[i].addr = ctx->maps[i]->phys;
530 } else {
531 rlen -= ALIGN(args, FASTRPC_ALIGN) - args;
532 args = ALIGN(args, FASTRPC_ALIGN);
533 if (rlen < len)
534 goto bail;
535
536 rpra[i].pv = (args);
537 pages[i].addr = ctx->buf->phys + (pkt_size - rlen);
538 pages[i].addr = pages[i].addr & PAGE_MASK;
539 args = args + len;
540 rlen -= len;
541 }
542
543 if (i < inbufs && !ctx->maps[i]) {
544 if (!kernel) {
> 545 err = copy_from_user((void *)rpra[i].pv,
546 (void __user *)ctx->args[i].ptr,
547 ctx->args[i].length);
548 if (err)
549 goto bail;
550 } else {
551 memcpy((void *)rpra[i].pv, ctx->args[i].ptr,
552 ctx->args[i].length);
553 }
554 }
555 }
556
557 for (i = ctx->nbufs; i < ctx->nscalars; ++i) {
558 rpra[i].pv = (uint64_t) ctx->args[i].ptr;
559 rpra[i].len = ctx->args[i].length;
560 list[i].num = ctx->args[i].length ? 1 : 0;
561 list[i].pgidx = i;
562 pages[i].addr = ctx->maps[i]->phys;
563 pages[i].size = ctx->maps[i]->size;
564 }
565
566 bail:
567 if (err)
568 dev_err(dev, "Error: get invoke args failed:%d\n", err);
569
570 return err;
571 }
572
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Download attachment ".config.gz" of type "application/gzip" (67837 bytes)
Powered by blists - more mailing lists