* [linux-next:master 3010/7050] drivers/soc/fsl/dpio/qbman-portal.c:755:42: sparse: sparse: incorrect type in argument 1 (different address spaces)
@ 2020-03-07 18:06 kbuild test robot
0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2020-03-07 18:06 UTC (permalink / raw)
To: Andrew Morton; +Cc: kbuild-all, Linux Memory Management List
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
commit: 3b2abda7d28c69f564c1157b9b9c21ef40092ee9 [3010/7050] soc: fsl: dpio: Replace QMAN array mode with ring mode enqueue
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-174-g094d5a94-dirty
git checkout 3b2abda7d28c69f564c1157b9b9c21ef40092ee9
make ARCH=x86_64 allmodconfig
make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/soc/fsl/dpio/qbman-portal.c:755:42: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] <asn:2> *addr @@ got d const volatile [noderef] <asn:2> *addr @@
drivers/soc/fsl/dpio/qbman-portal.c:755:42: sparse: expected void const volatile [noderef] <asn:2> *addr
drivers/soc/fsl/dpio/qbman-portal.c:755:42: sparse: got unsigned int [usertype] *[assigned] p
drivers/soc/fsl/dpio/qbman-portal.c:903:42: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] <asn:2> *addr @@ got d const volatile [noderef] <asn:2> *addr @@
drivers/soc/fsl/dpio/qbman-portal.c:903:42: sparse: expected void const volatile [noderef] <asn:2> *addr
drivers/soc/fsl/dpio/qbman-portal.c:903:42: sparse: got unsigned int [usertype] *[assigned] p
vim +755 drivers/soc/fsl/dpio/qbman-portal.c
722
723 /**
724 * qbman_swp_enqueue_multiple_mem_back() - Issue a multi enqueue command
725 * using one enqueue descriptor
726 * @s: the software portal used for enqueue
727 * @d: the enqueue descriptor
728 * @fd: table pointer of frame descriptor table to be enqueued
729 * @flags: table pointer of QBMAN_ENQUEUE_FLAG_DCA flags, not used if NULL
730 * @num_frames: number of fd to be enqueued
731 *
732 * Return the number of fd enqueued, or a negative error number.
733 */
734 static
735 int qbman_swp_enqueue_multiple_mem_back(struct qbman_swp *s,
736 const struct qbman_eq_desc *d,
737 const struct dpaa2_fd *fd,
738 uint32_t *flags,
739 int num_frames)
740 {
741 uint32_t *p = NULL;
742 const uint32_t *cl = (uint32_t *)(d);
743 uint32_t eqcr_ci, eqcr_pi, half_mask, full_mask;
744 int i, num_enqueued = 0;
745 unsigned long irq_flags;
746
747 spin_lock(&s->access_spinlock);
748 local_irq_save(irq_flags);
749
750 half_mask = (s->eqcr.pi_ci_mask>>1);
751 full_mask = s->eqcr.pi_ci_mask;
752 if (!s->eqcr.available) {
753 eqcr_ci = s->eqcr.ci;
754 p = s->addr_cena + QBMAN_CENA_SWP_EQCR_CI_MEMBACK;
> 755 s->eqcr.ci = __raw_readl(p) & full_mask;
756 s->eqcr.available = qm_cyc_diff(s->eqcr.pi_ring_size,
757 eqcr_ci, s->eqcr.ci);
758 if (!s->eqcr.available) {
759 local_irq_restore(irq_flags);
760 spin_unlock(&s->access_spinlock);
761 return 0;
762 }
763 }
764
765 eqcr_pi = s->eqcr.pi;
766 num_enqueued = (s->eqcr.available < num_frames) ?
767 s->eqcr.available : num_frames;
768 s->eqcr.available -= num_enqueued;
769 /* Fill in the EQCR ring */
770 for (i = 0; i < num_enqueued; i++) {
771 p = (s->addr_cena + QBMAN_CENA_SWP_EQCR(eqcr_pi & half_mask));
772 /* Skip copying the verb */
773 memcpy(&p[1], &cl[1], EQ_DESC_SIZE_WITHOUT_FD - 1);
774 memcpy(&p[EQ_DESC_SIZE_FD_START/sizeof(uint32_t)],
775 &fd[i], sizeof(*fd));
776 eqcr_pi++;
777 }
778
779 /* Set the verb byte, have to substitute in the valid-bit */
780 eqcr_pi = s->eqcr.pi;
781 for (i = 0; i < num_enqueued; i++) {
782 p = (s->addr_cena + QBMAN_CENA_SWP_EQCR(eqcr_pi & half_mask));
783 p[0] = cl[0] | s->eqcr.pi_vb;
784 if (flags && (flags[i] & QBMAN_ENQUEUE_FLAG_DCA)) {
785 struct qbman_eq_desc *d = (struct qbman_eq_desc *)p;
786
787 d->dca = (1 << QB_ENQUEUE_CMD_DCA_EN_SHIFT) |
788 ((flags[i]) & QBMAN_EQCR_DCA_IDXMASK);
789 }
790 eqcr_pi++;
791 if (!(eqcr_pi & half_mask))
792 s->eqcr.pi_vb ^= QB_VALID_BIT;
793 }
794 s->eqcr.pi = eqcr_pi & full_mask;
795
796 dma_wmb();
797 qbman_write_register(s, QBMAN_CINH_SWP_EQCR_PI,
798 (QB_RT_BIT)|(s->eqcr.pi)|s->eqcr.pi_vb);
799 local_irq_restore(irq_flags);
800 spin_unlock(&s->access_spinlock);
801
802 return num_enqueued;
803 }
804
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-03-07 18:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-07 18:06 [linux-next:master 3010/7050] drivers/soc/fsl/dpio/qbman-portal.c:755:42: sparse: sparse: incorrect type in argument 1 (different address spaces) kbuild test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).