Hi Andrew,
FYI, the error/warning still remains.
tree:
git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git ti-rt-linux-5.4.y
head: 0b80a9e05fcfe5b40af3002e8464aede98fe2571
commit: 481b3c3bfdc83b10aedb9819d7c9f1dbc122a5da [4426/6821] misc: sram: Add
dma-heap-export reserved SRAM area type
config: powerpc64-randconfig-r004-20200512 (attached as .config)
compiler: powerpc64-linux-gcc (GCC) 9.3.0
reproduce:
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 481b3c3bfdc83b10aedb9819d7c9f1dbc122a5da
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=powerpc64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
powerpc64-linux-ld: warning: orphan section `.gnu.hash' from `linker stubs' being
placed in section `.gnu.hash'
powerpc64-linux-ld: drivers/misc/sram-dma-heap.o: in function
`sram_dma_heap_allocate':
> drivers/misc/sram-dma-heap.c:157: undefined reference to
`.dma_heap_get_drvdata'
powerpc64-linux-ld: drivers/misc/sram-dma-heap.o: in
function `sram_dma_heap_export':
> drivers/misc/sram-dma-heap.c:234: undefined reference to
`.dma_heap_add'
git remote add ti
git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git
git remote update ti
git checkout 481b3c3bfdc83b10aedb9819d7c9f1dbc122a5da
vim +157 drivers/misc/sram-dma-heap.c
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 151
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 152 static int sram_dma_heap_allocate(struct
dma_heap *heap,
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 153 unsigned long len,
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 154 unsigned long fd_flags,
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 155 unsigned long heap_flags)
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 156 {
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 @157 struct sram_dma_heap *sram_dma_heap =
dma_heap_get_drvdata(heap);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 158 struct sram_dma_heap_buffer *buffer;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 159
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 160 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 161 struct dma_buf *dmabuf;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 162 int ret;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 163
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 164 buffer = kzalloc(sizeof(*buffer),
GFP_KERNEL);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 165 if (!buffer)
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 166 return -ENOMEM;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 167 buffer->pool =
sram_dma_heap->pool;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 168
INIT_LIST_HEAD(&buffer->attachments);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 169
mutex_init(&buffer->attachments_lock);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 170 buffer->len = len;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 171
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 172 buffer->vaddr = (void
*)gen_pool_alloc(buffer->pool, buffer->len);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 173 if (!buffer->vaddr) {
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 174 ret = -ENOMEM;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 175 goto free_buffer;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 176 }
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 177
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 178 buffer->paddr =
gen_pool_virt_to_phys(buffer->pool, (unsigned long)buffer->vaddr);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 179 if (buffer->paddr == -1) {
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 180 ret = -ENOMEM;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 181 goto free_pool;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 182 }
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 183
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 184 /* create the dmabuf */
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 185 exp_info.ops =
&sram_dma_heap_buf_ops;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 186 exp_info.size = buffer->len;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 187 exp_info.flags = fd_flags;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 188 exp_info.priv = buffer;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 189 dmabuf = dma_buf_export(&exp_info);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 190 if (IS_ERR(dmabuf)) {
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 191 ret = PTR_ERR(dmabuf);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 192 goto free_pool;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 193 }
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 194
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 195 ret = dma_buf_fd(dmabuf, fd_flags);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 196 if (ret < 0) {
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 197 dma_buf_put(dmabuf);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 198 /* just return, as put will call
release and that will free */
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 199 return ret;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 200 }
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 201
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 202 return ret;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 203
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 204 free_pool:
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 205 gen_pool_free(buffer->pool, (unsigned
long)buffer->vaddr, buffer->len);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 206 free_buffer:
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 207 kfree(buffer);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 208
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 209 return ret;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 210 }
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 211
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 212 static struct dma_heap_ops
sram_dma_heap_ops = {
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 213 .allocate = sram_dma_heap_allocate,
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 214 };
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 215
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 216 int sram_dma_heap_export(struct sram_dev
*sram,
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 217 struct sram_reserve *block,
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 218 phys_addr_t start,
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 219 struct sram_partition *part)
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 220 {
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 221 struct sram_dma_heap *sram_dma_heap;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 222 struct dma_heap_export_info exp_info;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 223
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 224 dev_info(sram->dev, "Exporting
SRAM pool '%s'\n", block->label);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 225
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 226 sram_dma_heap =
kzalloc(sizeof(*sram_dma_heap), GFP_KERNEL);
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 227 if (!sram_dma_heap)
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 228 return -ENOMEM;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 229 sram_dma_heap->pool = part->pool;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 230
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 231 exp_info.name = block->label;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 232 exp_info.ops = &sram_dma_heap_ops;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 233 exp_info.priv = sram_dma_heap;
481b3c3bfdc83b1 Andrew F. Davis 2020-02-19 @234 sram_dma_heap->heap =
dma_heap_add(&exp_info);
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
_______________________________________________
kbuild mailing list -- kbuild(a)lists.01.org
To unsubscribe send an email to kbuild-leave(a)lists.01.org