aidaw
u64 aidaw;
aidaw = (u64)dma64_to_virt(msb->data_addr);
if ((msb->flags & MSB_FLAG_IDA) && aidaw &&
IS_ALIGNED(aidaw, PAGE_SIZE))
mempool_free(virt_to_page((void *)aidaw), aidaw_pool);
static inline struct aidaw *scm_aidaw_alloc(void)
static inline unsigned long scm_aidaw_bytes(struct aidaw *aidaw)
unsigned long _aidaw = (unsigned long) aidaw;
return (bytes / sizeof(*aidaw)) * PAGE_SIZE;
struct aidaw *scm_aidaw_fetch(struct scm_request *scmrq, unsigned int bytes)
struct aidaw *aidaw;
aidaw = scm_aidaw_alloc();
if (aidaw)
memset(aidaw, 0, PAGE_SIZE);
return aidaw;
struct aidaw *aidaw;
aidaw = scm_aidaw_fetch(scmrq, blk_rq_bytes(req));
if (!aidaw)
msb->data_addr = virt_to_dma64(aidaw);
aidaw->data_addr = virt_to_dma64(page_address(bv.bv_page));
aidaw++;
scmrq->next_aidaw = aidaw;
(unsigned int) (PAGE_SIZE / sizeof(struct aidaw)));
struct aidaw *next_aidaw;
struct aidaw *scm_aidaw_fetch(struct scm_request *scmrq, unsigned int bytes);