* [vireshk:virtio/msg-amp 20/22] drivers/virtio/virtio_msg_amp_sapphire.c:147:28: sparse: sparse: dereference of noderef expression
@ 2026-04-08 3:28 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-04-08 3:28 UTC (permalink / raw)
To: Viresh Kumar; +Cc: oe-kbuild-all
tree: https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux.git virtio/msg-amp
head: b382c54fa38099ef72901ecdd4e3edd3e3998d5a
commit: 9611632e8db76949a73dd21597ccefd2fafb1b49 [20/22] virtio: msg: Add Sapphire PCI transport driver for virtio-msg AMP
config: sparc64-randconfig-r123-20260408 (https://download.01.org/0day-ci/archive/20260408/202604081135.MWgsqagH-lkp@intel.com/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project c80443cd37b2e2788cba67ffa180a6331e5f0791)
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260408/202604081135.MWgsqagH-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/202604081135.MWgsqagH-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/virtio/virtio_msg_amp.c:299:55: sparse: sparse: cast to restricted __le16
>> drivers/virtio/virtio_msg_amp.c:299:55: sparse: sparse: cast from restricted __le32
>> drivers/virtio/virtio_msg_amp.c:299:55: sparse: sparse: cast to restricted __le16
>> drivers/virtio/virtio_msg_amp.c:299:55: sparse: sparse: cast from restricted __le32
>> drivers/virtio/virtio_msg_amp.c:299:55: sparse: sparse: cast to restricted __le16
>> drivers/virtio/virtio_msg_amp.c:299:55: sparse: sparse: cast from restricted __le32
>> drivers/virtio/virtio_msg_amp.c:299:55: sparse: sparse: cast to restricted __le16
>> drivers/virtio/virtio_msg_amp.c:299:55: sparse: sparse: cast from restricted __le32
--
>> drivers/virtio/virtio_msg_amp_sapphire.c:147:28: sparse: sparse: dereference of noderef expression
drivers/virtio/virtio_msg_amp_sapphire.c:148:28: sparse: sparse: dereference of noderef expression
drivers/virtio/virtio_msg_amp_sapphire.c:150:28: sparse: sparse: dereference of noderef expression
vim +147 drivers/virtio/virtio_msg_amp_sapphire.c
59
60 static int vmamp_sap_probe(struct pci_dev *pdev, const struct pci_device_id *id)
61 {
62 struct vmamp_sap *vmamp_sap;
63 resource_size_t size;
64 void __iomem * const *bar;
65 phys_addr_t addr;
66 int ret, i;
67
68 vmamp_sap = devm_kzalloc(&pdev->dev, sizeof(struct vmamp_sap),
69 GFP_KERNEL);
70 if (!vmamp_sap) {
71 ret = -ENOMEM;
72 goto error;
73 }
74
75 ret = pcim_enable_device(pdev);
76 if (ret)
77 goto error;
78
79 ret = pcim_iomap_regions(pdev, BIT(0) | BIT(1), dev_name(&pdev->dev));
80 if (ret)
81 goto error;
82
83 for (i = 0; i < 2; i++) {
84 addr = pci_resource_start(pdev, i);
85 size = pci_resource_len(pdev, i);
86 dev_dbg(&pdev->dev, "msix (BAR%d) at %pa, size %pr\n", i, &addr,
87 &size);
88 }
89
90 bar = pcim_iomap_table(pdev);
91 if (!bar) {
92 ret = -ENOMEM;
93 goto error;
94 }
95
96 vmamp_sap->cfg_bram = bar[1];
97 vmamp_sap->regs = (void __iomem *)((u8 __iomem *)bar[1] + 0x50000);
98
99 /*
100 * Grab all vectors although we can only coalesce them into a single
101 * notifier. This avoids missing any event.
102 */
103 vmamp_sap->vectors = pci_msix_vec_count(pdev);
104 if (vmamp_sap->vectors < 0)
105 vmamp_sap->vectors = 1;
106
107 ret = pci_alloc_irq_vectors(pdev, vmamp_sap->vectors,
108 vmamp_sap->vectors,
109 PCI_IRQ_INTX | PCI_IRQ_MSIX);
110 if (ret < 0)
111 goto error;
112
113 for (i = 0; i < vmamp_sap->vectors; i++) {
114 ret = request_irq(pci_irq_vector(pdev, i), irq_handler,
115 IRQF_SHARED, dev_name(&pdev->dev), vmamp_sap);
116 if (ret)
117 goto free_irq;
118 }
119
120 vmamp_sap->vmamp.dev = &pdev->dev;
121 vmamp_sap->vmamp.ops = &vmamp_sap_ops;
122 pci_set_drvdata(pdev, vmamp_sap);
123 pci_set_master(pdev);
124
125 vmamp_sap->vmamp.shmem_size = 8 * 1024;
126 vmamp_sap->vmamp.shmem = dma_alloc_coherent(&pdev->dev,
127 vmamp_sap->vmamp.shmem_size,
128 &vmamp_sap->shmem_dma,
129 GFP_KERNEL);
130 if (!vmamp_sap->vmamp.shmem) {
131 ret = -ENOMEM;
132 goto clear_master;
133 }
134
135 memset(vmamp_sap->vmamp.shmem, 0, vmamp_sap->vmamp.shmem_size);
136
137 hrtimer_setup(&vmamp_sap->poll, &poll_timer_expired, CLOCK_MONOTONIC,
138 HRTIMER_MODE_REL);
139 // hrtimer_start(&vmamp_sap->poll, ms_to_ktime(50), HRTIMER_MODE_REL);
140
141 ret = virtio_msg_amp_register(&vmamp_sap->vmamp);
142 if (ret)
143 goto free_shmem;
144
145 // hrtimer_cancel(&vmamp_sap->poll);
146
> 147 vmamp_sap->cfg_bram[0x4000 / 4 + 1] = vmamp_sap->shmem_dma;
148 vmamp_sap->cfg_bram[0x4000 / 4 + 2] = vmamp_sap->shmem_dma >> 32;
149 smp_wmb();
150 vmamp_sap->cfg_bram[0x4000 / 4 + 0] = 1;
151
152 return 0;
153
154 free_shmem:
155 dma_free_coherent(&pdev->dev, vmamp_sap->vmamp.shmem_size,
156 vmamp_sap->vmamp.shmem, vmamp_sap->shmem_dma);
157 clear_master:
158 pci_clear_master(pdev);
159 free_irq:
160 while (--i >= 0)
161 free_irq(pci_irq_vector(pdev, i), vmamp_sap);
162 pci_free_irq_vectors(pdev);
163
164 error:
165 dev_info(&pdev->dev, "probe failed: %d\n", ret);
166 return ret;
167 }
168
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-04-08 3:28 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-08 3:28 [vireshk:virtio/msg-amp 20/22] drivers/virtio/virtio_msg_amp_sapphire.c:147:28: sparse: sparse: dereference of noderef expression kernel test robot
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.