From: kernel test robot <lkp@intel.com>
To: Dave Stevenson <dave.stevenson@raspberrypi.com>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Umang Jain <umang.jain@ideasonboard.com>
Subject: [pinchartl:rpi/v6.5/isp/v2 9/24] drivers/staging/vc04_services/vc-sm-cma/vc_sm.c:517:17: warning: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1
Date: Tue, 29 Aug 2023 10:12:28 +0800 [thread overview]
Message-ID: <202308291030.dfFJKL96-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/pinchartl/linux.git rpi/v6.5/isp/v2
head: f21e9808068119a1ea8f1ddb5677c982b79ac10d
commit: e67ba2c176b1030aeaa370a3979e178eb71a775d [9/24] staging: vc04_services: Add new vc-sm-cma driver
config: arm-randconfig-001-20230829 (https://download.01.org/0day-ci/archive/20230829/202308291030.dfFJKL96-lkp@intel.com/config)
compiler: clang version 16.0.4 (https://github.com/llvm/llvm-project.git ae42196bc493ffe877a7e3dff8be32035dea4d07)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230829/202308291030.dfFJKL96-lkp@intel.com/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 <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202308291030.dfFJKL96-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/staging/vc04_services/vc-sm-cma/vc_sm.c:517:17: warning: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1 [-Wsingle-bit-bitfield-constant-conversion]
buffer->in_use = 1;
^ ~
drivers/staging/vc04_services/vc-sm-cma/vc_sm.c:416:1: warning: no previous prototype for function 'vc_sm_cma_import_dmabuf_internal' [-Wmissing-prototypes]
vc_sm_cma_import_dmabuf_internal(struct sm_state_t *state,
^
drivers/staging/vc04_services/vc-sm-cma/vc_sm.c:415:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int
^
static
2 warnings generated.
vim +/int +517 drivers/staging/vc04_services/vc-sm-cma/vc_sm.c
413
414 /* Import a dma_buf to be shared with VC. */
415 int
416 vc_sm_cma_import_dmabuf_internal(struct sm_state_t *state,
417 struct dma_buf *dma_buf,
418 int fd,
419 struct dma_buf **imported_buf)
420 {
421 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
422 struct vc_sm_buffer *buffer = NULL;
423 struct vc_sm_import import = { };
424 struct vc_sm_import_result result = { };
425 struct dma_buf_attachment *attach = NULL;
426 struct sg_table *sgt = NULL;
427 dma_addr_t dma_addr;
428 int ret = 0;
429 int status;
430
431 /* Setup our allocation parameters */
432 pr_debug("%s: importing dma_buf %p/fd %d\n", __func__, dma_buf, fd);
433
434 if (fd < 0)
435 get_dma_buf(dma_buf);
436 else
437 dma_buf = dma_buf_get(fd);
438
439 if (!dma_buf)
440 return -EINVAL;
441
442 attach = dma_buf_attach(dma_buf, &sm_state->pdev->dev);
443 if (IS_ERR(attach)) {
444 ret = PTR_ERR(attach);
445 goto error;
446 }
447
448 sgt = dma_buf_map_attachment_unlocked(attach, DMA_BIDIRECTIONAL);
449 if (IS_ERR(sgt)) {
450 ret = PTR_ERR(sgt);
451 goto error;
452 }
453
454 /* Verify that the address block is contiguous */
455 if (sgt->nents != 1) {
456 ret = -ENOMEM;
457 goto error;
458 }
459
460 /* Allocate local buffer to track this allocation. */
461 buffer = kzalloc(sizeof(*buffer), GFP_KERNEL);
462 if (!buffer) {
463 ret = -ENOMEM;
464 goto error;
465 }
466
467 import.type = VC_SM_ALLOC_NON_CACHED;
468 dma_addr = sg_dma_address(sgt->sgl);
469 import.addr = (u32)dma_addr;
470 if ((import.addr & 0xC0000000) != 0xC0000000) {
471 pr_err("%s: Expecting an uncached alias for dma_addr %pad\n",
472 __func__, &dma_addr);
473 import.addr |= 0xC0000000;
474 }
475 import.size = sg_dma_len(sgt->sgl);
476 import.allocator = current->tgid;
477 import.kernel_id = get_kernel_id(buffer);
478
479 memcpy(import.name, VC_SM_RESOURCE_NAME_DEFAULT,
480 sizeof(VC_SM_RESOURCE_NAME_DEFAULT));
481
482 pr_debug("[%s]: attempt to import \"%s\" data - type %u, addr %pad, size %u.\n",
483 __func__, import.name, import.type, &dma_addr, import.size);
484
485 /* Allocate the videocore buffer. */
486 status = vc_sm_cma_vchi_import(sm_state->sm_handle, &import, &result,
487 &sm_state->int_trans_id);
488 if (status == -EINTR) {
489 pr_debug("[%s]: requesting import memory action restart (trans_id: %u)\n",
490 __func__, sm_state->int_trans_id);
491 ret = -ERESTARTSYS;
492 sm_state->restart_sys = -EINTR;
493 sm_state->int_action = VC_SM_MSG_TYPE_IMPORT;
494 goto error;
495 } else if (status || !result.res_handle) {
496 pr_debug("[%s]: failed to import memory on videocore (status: %u, trans_id: %u)\n",
497 __func__, status, sm_state->int_trans_id);
498 ret = -ENOMEM;
499 goto error;
500 }
501
502 mutex_init(&buffer->lock);
503 INIT_LIST_HEAD(&buffer->attachments);
504 memcpy(buffer->name, import.name,
505 min(sizeof(buffer->name), sizeof(import.name) - 1));
506
507 /* Keep track of the buffer we created. */
508 buffer->vc_handle = result.res_handle;
509 buffer->size = import.size;
510 buffer->vpu_state = VPU_MAPPED;
511
512 buffer->imported_dma_buf = dma_buf;
513
514 buffer->attach = attach;
515 buffer->sgt = sgt;
516 buffer->dma_addr = dma_addr;
> 517 buffer->in_use = 1;
518 buffer->kernel_id = import.kernel_id;
519
520 /*
521 * We're done - we need to export a new dmabuf chaining through most
522 * functions, but enabling us to release our own internal references
523 * here.
524 */
525 exp_info.ops = &dma_buf_import_ops;
526 exp_info.size = import.size;
527 exp_info.flags = O_RDWR;
528 exp_info.priv = buffer;
529
530 buffer->dma_buf = dma_buf_export(&exp_info);
531 if (IS_ERR(buffer->dma_buf)) {
532 ret = PTR_ERR(buffer->dma_buf);
533 goto error;
534 }
535
536 vc_sm_add_resource(buffer);
537
538 *imported_buf = buffer->dma_buf;
539
540 return 0;
541
542 error:
543 if (result.res_handle) {
544 struct vc_sm_free_t free = { result.res_handle, 0 };
545
546 vc_sm_cma_vchi_free(sm_state->sm_handle, &free,
547 &sm_state->int_trans_id);
548 }
549 free_kernel_id(import.kernel_id);
550 kfree(buffer);
551 if (sgt)
552 dma_buf_unmap_attachment_unlocked(attach, sgt, DMA_BIDIRECTIONAL);
553 if (attach)
554 dma_buf_detach(dma_buf, attach);
555 dma_buf_put(dma_buf);
556 return ret;
557 }
558
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2023-08-29 2:12 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202308291030.dfFJKL96-lkp@intel.com \
--to=lkp@intel.com \
--cc=dave.stevenson@raspberrypi.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=llvm@lists.linux.dev \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=umang.jain@ideasonboard.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.