[PATCH v6 6/8] mailbox: mediatek: Add CMDQ secure mailbox driver
kernel test robot
lkp at intel.com
Sat May 25 18:59:51 PDT 2024
Hi Jason-JH.Lin,
kernel test robot noticed the following build warnings:
[auto build test WARNING on linus/master]
[also build test WARNING on next-20240523]
[cannot apply to robh/for-next krzk-dt/for-next fujitsu-integration/mailbox-for-next v6.9]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Jason-JH-Lin/dt-bindings-gce-mt8195-Add-CMDQ_SYNC_TOKEN_SECURE_THR_EOF-event-id/20240526-071102
base: linus/master
patch link: https://lore.kernel.org/r/20240525230810.24623-7-jason-jh.lin%40mediatek.com
patch subject: [PATCH v6 6/8] mailbox: mediatek: Add CMDQ secure mailbox driver
config: m68k-allyesconfig (https://download.01.org/0day-ci/archive/20240526/202405260953.uzQ4Rwg2-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240526/202405260953.uzQ4Rwg2-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 at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405260953.uzQ4Rwg2-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/mailbox/mtk-cmdq-sec-mailbox.c: In function 'cmdq_sec_task_exec_work':
>> drivers/mailbox/mtk-cmdq-sec-mailbox.c:619:31: warning: variable 'data' set but not used [-Wunused-but-set-variable]
619 | struct cmdq_sec_data *data;
| ^~~~
vim +/data +619 drivers/mailbox/mtk-cmdq-sec-mailbox.c
611
612 static void cmdq_sec_task_exec_work(struct work_struct *work_item)
613 {
614 struct cmdq_sec_task *sec_task = container_of(work_item,
615 struct cmdq_sec_task, exec_work);
616 struct cmdq_sec_thread *sec_thread = container_of(sec_task->task.thread,
617 struct cmdq_sec_thread, thread);
618 struct cmdq_sec *cmdq = container_of(sec_thread->dev, struct cmdq_sec, dev);
> 619 struct cmdq_sec_data *data;
620 unsigned long flags;
621 int err;
622
623 dev_dbg(&cmdq->dev, "%s gce:%#lx sec_task:%p pkt:%p thread:%u",
624 __func__, (unsigned long)cmdq->base_pa,
625 sec_task, sec_task->task.pkt, sec_thread->idx);
626
627 if (!sec_task->task.pkt->sec_data) {
628 dev_err(&cmdq->dev, "pkt:%p without sec_data", sec_task->task.pkt);
629 return;
630 }
631 data = (struct cmdq_sec_data *)sec_task->task.pkt->sec_data;
632
633 mutex_lock(&cmdq->exec_lock);
634
635 spin_lock_irqsave(&sec_thread->thread.chan->lock, flags);
636 if (!sec_thread->task_cnt) {
637 mod_timer(&sec_thread->timeout, jiffies +
638 msecs_to_jiffies(sec_thread->timeout_ms));
639 sec_thread->wait_cookie = 1;
640 sec_thread->next_cookie = 1;
641 sec_thread->task_cnt = 0;
642 __raw_writel(0, (void __iomem *)cmdq->shared_mem->va +
643 CMDQ_SEC_SHARED_THR_CNT_OFFSET + sec_thread->idx * sizeof(u32));
644 }
645
646 sec_task->reset_exec = sec_thread->task_cnt ? false : true;
647 sec_task->wait_cookie = sec_thread->next_cookie;
648 sec_thread->next_cookie = (sec_thread->next_cookie + 1) % CMDQ_MAX_COOKIE_VALUE;
649 list_add_tail(&sec_task->task.list_entry, &sec_thread->thread.task_busy_list);
650 sec_thread->task_cnt += 1;
651 spin_unlock_irqrestore(&sec_thread->thread.chan->lock, flags);
652 sec_task->trigger = sched_clock();
653
654 if (!atomic_cmpxchg(&cmdq_path_res, 0, 1)) {
655 err = cmdq_sec_task_submit(cmdq, NULL, CMD_CMDQ_IWC_PATH_RES_ALLOCATE,
656 CMDQ_INVALID_THREAD);
657 if (err) {
658 atomic_set(&cmdq_path_res, 0);
659 goto task_end;
660 }
661 }
662
663 if (sec_thread->task_cnt > CMDQ_MAX_TASK_IN_SECURE_THREAD) {
664 dev_err(&cmdq->dev, "task_cnt:%u cannot more than %u sec_task:%p thread:%u",
665 sec_thread->task_cnt, CMDQ_MAX_TASK_IN_SECURE_THREAD,
666 sec_task, sec_thread->idx);
667 err = -EMSGSIZE;
668 goto task_end;
669 }
670
671 err = cmdq_sec_task_submit(cmdq, sec_task, CMD_CMDQ_IWC_SUBMIT_TASK,
672 sec_thread->idx);
673 if (err)
674 dev_err(&cmdq->dev, "cmdq_sec_task_submit err:%d sec_task:%p thread:%u",
675 err, sec_task, sec_thread->idx);
676
677 task_end:
678 if (err) {
679 struct cmdq_cb_data cb_data;
680
681 cb_data.sta = err;
682 cb_data.pkt = sec_task->task.pkt;
683 mbox_chan_received_data(sec_thread->thread.chan, &cb_data);
684
685 spin_lock_irqsave(&sec_thread->thread.chan->lock, flags);
686 if (!sec_thread->task_cnt)
687 dev_err(&cmdq->dev, "thread:%u task_cnt:%u cannot below zero",
688 sec_thread->idx, sec_thread->task_cnt);
689 else
690 sec_thread->task_cnt -= 1;
691
692 sec_thread->next_cookie = (sec_thread->next_cookie - 1 +
693 CMDQ_MAX_COOKIE_VALUE) % CMDQ_MAX_COOKIE_VALUE;
694 list_del(&sec_task->task.list_entry);
695 dev_dbg(&cmdq->dev, "gce:%#lx err:%d sec_task:%p pkt:%p",
696 (unsigned long)cmdq->base_pa, err, sec_task, sec_task->task.pkt);
697 dev_dbg(&cmdq->dev, "thread:%u task_cnt:%u wait_cookie:%u next_cookie:%u",
698 sec_thread->idx, sec_thread->task_cnt,
699 sec_thread->wait_cookie, sec_thread->next_cookie);
700 spin_unlock_irqrestore(&sec_thread->thread.chan->lock, flags);
701
702 kfree(sec_task);
703 }
704
705 mutex_unlock(&cmdq->exec_lock);
706 }
707
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
More information about the Linux-mediatek
mailing list