On 08-04-24, 11:06, Lizhi Hou wrote: > > > +static void *qdma_get_metadata_ptr(struct dma_async_tx_descriptor *tx, > > > + size_t *payload_len, size_t *max_len) > > > +{ > > > + struct qdma_mm_vdesc *vdesc; > > > + > > > + vdesc = container_of(tx, typeof(*vdesc), vdesc.tx); > > > + if (payload_len) > > > + *payload_len = sizeof(vdesc->dev_addr); > > > + if (max_len) > > > + *max_len = sizeof(vdesc->dev_addr); > > > + > > > + return &vdesc->dev_addr; > > Can you describe what metadata is being used here for? > > The metadata is the device address the dma request will transfer > > data to / from. Please see the example usage here: > > https://github.com/houlz0507/XRT-1/blob/qdma_v1_usage/src/runtime_src/core/pcie/driver/linux/xocl/subdev/qdma.c#L311 > > Before dmaengine_submit(), it specifies the device address. Hmmm, why is the vaddr passed like this, why not use slave_config for this -- ~Vinod