Commit fdb09ed1 authored by Boshi Yu's avatar Boshi Yu Committed by Leon Romanovsky
Browse files

RDMA/erdma: Unify the names related to doorbell records



There exist two different names for the doorbell records: db_info and
db_record. We use dbrec for cpu address of the doorbell record and
dbrec_dma for dma address of the doorbell recordi uniformly.

Reviewed-by: default avatarCheng Xu <chengyou@linux.alibaba.com>
Signed-off-by: default avatarBoshi Yu <boshiyu@linux.alibaba.com>
Link: https://lore.kernel.org/r/20240311113821.22482-3-boshiyu@alibaba-inc.com


Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
parent f0697bf0
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -33,8 +33,8 @@ struct erdma_eq {
	atomic64_t notify_num;

	void __iomem *db;
	u64 *db_record;
	dma_addr_t db_record_dma_addr;
	u64 *dbrec;
	dma_addr_t dbrec_dma;
};

struct erdma_cmdq_sq {
@@ -49,8 +49,8 @@ struct erdma_cmdq_sq {

	u16 wqebb_cnt;

	u64 *db_record;
	dma_addr_t db_record_dma_addr;
	u64 *dbrec;
	dma_addr_t dbrec_dma;
};

struct erdma_cmdq_cq {
@@ -63,8 +63,8 @@ struct erdma_cmdq_cq {
	u32 ci;
	u32 cmdsn;

	u64 *db_record;
	dma_addr_t db_record_dma_addr;
	u64 *dbrec;
	dma_addr_t dbrec_dma;

	atomic64_t armed_num;
};
+16 −27
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@ static void arm_cmdq_cq(struct erdma_cmdq *cmdq)
		      FIELD_PREP(ERDMA_CQDB_CMDSN_MASK, cmdq->cq.cmdsn) |
		      FIELD_PREP(ERDMA_CQDB_IDX_MASK, cmdq->cq.cmdsn);

	*cmdq->cq.db_record = db_data;
	*cmdq->cq.dbrec = db_data;
	writeq(db_data, dev->func_bar + ERDMA_CMDQ_CQDB_REG);

	atomic64_inc(&cmdq->cq.armed_num);
@@ -25,7 +25,7 @@ static void kick_cmdq_db(struct erdma_cmdq *cmdq)
	struct erdma_dev *dev = container_of(cmdq, struct erdma_dev, cmdq);
	u64 db_data = FIELD_PREP(ERDMA_CMD_HDR_WQEBB_INDEX_MASK, cmdq->sq.pi);

	*cmdq->sq.db_record = db_data;
	*cmdq->sq.dbrec = db_data;
	writeq(db_data, dev->func_bar + ERDMA_CMDQ_SQDB_REG);
}

@@ -98,9 +98,8 @@ static int erdma_cmdq_sq_init(struct erdma_dev *dev)
	if (!sq->qbuf)
		return -ENOMEM;

	sq->db_record = dma_pool_zalloc(dev->db_pool, GFP_KERNEL,
					&sq->db_record_dma_addr);
	if (!sq->db_record)
	sq->dbrec = dma_pool_zalloc(dev->db_pool, GFP_KERNEL, &sq->dbrec_dma);
	if (!sq->dbrec)
		goto err_out;

	spin_lock_init(&sq->lock);
@@ -110,8 +109,7 @@ static int erdma_cmdq_sq_init(struct erdma_dev *dev)
	erdma_reg_write32(dev, ERDMA_REGS_CMDQ_SQ_ADDR_L_REG,
			  lower_32_bits(sq->qbuf_dma_addr));
	erdma_reg_write32(dev, ERDMA_REGS_CMDQ_DEPTH_REG, sq->depth);
	erdma_reg_write64(dev, ERDMA_CMDQ_SQ_DB_HOST_ADDR_REG,
			  sq->db_record_dma_addr);
	erdma_reg_write64(dev, ERDMA_CMDQ_SQ_DB_HOST_ADDR_REG, sq->dbrec_dma);

	return 0;

@@ -136,9 +134,8 @@ static int erdma_cmdq_cq_init(struct erdma_dev *dev)

	spin_lock_init(&cq->lock);

	cq->db_record = dma_pool_zalloc(dev->db_pool, GFP_KERNEL,
					&cq->db_record_dma_addr);
	if (!cq->db_record)
	cq->dbrec = dma_pool_zalloc(dev->db_pool, GFP_KERNEL, &cq->dbrec_dma);
	if (!cq->dbrec)
		goto err_out;

	atomic64_set(&cq->armed_num, 0);
@@ -147,8 +144,7 @@ static int erdma_cmdq_cq_init(struct erdma_dev *dev)
			  upper_32_bits(cq->qbuf_dma_addr));
	erdma_reg_write32(dev, ERDMA_REGS_CMDQ_CQ_ADDR_L_REG,
			  lower_32_bits(cq->qbuf_dma_addr));
	erdma_reg_write64(dev, ERDMA_CMDQ_CQ_DB_HOST_ADDR_REG,
			  cq->db_record_dma_addr);
	erdma_reg_write64(dev, ERDMA_CMDQ_CQ_DB_HOST_ADDR_REG, cq->dbrec_dma);

	return 0;

@@ -175,9 +171,8 @@ static int erdma_cmdq_eq_init(struct erdma_dev *dev)
	atomic64_set(&eq->event_num, 0);

	eq->db = dev->func_bar + ERDMA_REGS_CEQ_DB_BASE_REG;
	eq->db_record = dma_pool_zalloc(dev->db_pool, GFP_KERNEL,
					&eq->db_record_dma_addr);
	if (!eq->db_record)
	eq->dbrec = dma_pool_zalloc(dev->db_pool, GFP_KERNEL, &eq->dbrec_dma);
	if (!eq->dbrec)
		goto err_out;

	erdma_reg_write32(dev, ERDMA_REGS_CMDQ_EQ_ADDR_H_REG,
@@ -185,8 +180,7 @@ static int erdma_cmdq_eq_init(struct erdma_dev *dev)
	erdma_reg_write32(dev, ERDMA_REGS_CMDQ_EQ_ADDR_L_REG,
			  lower_32_bits(eq->qbuf_dma_addr));
	erdma_reg_write32(dev, ERDMA_REGS_CMDQ_EQ_DEPTH_REG, eq->depth);
	erdma_reg_write64(dev, ERDMA_CMDQ_EQ_DB_HOST_ADDR_REG,
			  eq->db_record_dma_addr);
	erdma_reg_write64(dev, ERDMA_CMDQ_EQ_DB_HOST_ADDR_REG, eq->dbrec_dma);

	return 0;

@@ -231,15 +225,13 @@ int erdma_cmdq_init(struct erdma_dev *dev)
	dma_free_coherent(&dev->pdev->dev, cmdq->cq.depth << CQE_SHIFT,
			  cmdq->cq.qbuf, cmdq->cq.qbuf_dma_addr);

	dma_pool_free(dev->db_pool, cmdq->cq.db_record,
		      cmdq->cq.db_record_dma_addr);
	dma_pool_free(dev->db_pool, cmdq->cq.dbrec, cmdq->cq.dbrec_dma);

err_destroy_sq:
	dma_free_coherent(&dev->pdev->dev, cmdq->sq.depth << SQEBB_SHIFT,
			  cmdq->sq.qbuf, cmdq->sq.qbuf_dma_addr);

	dma_pool_free(dev->db_pool, cmdq->sq.db_record,
		      cmdq->sq.db_record_dma_addr);
	dma_pool_free(dev->db_pool, cmdq->sq.dbrec, cmdq->sq.dbrec_dma);

	return err;
}
@@ -260,20 +252,17 @@ void erdma_cmdq_destroy(struct erdma_dev *dev)
	dma_free_coherent(&dev->pdev->dev, cmdq->eq.depth << EQE_SHIFT,
			  cmdq->eq.qbuf, cmdq->eq.qbuf_dma_addr);

	dma_pool_free(dev->db_pool, cmdq->eq.db_record,
		      cmdq->eq.db_record_dma_addr);
	dma_pool_free(dev->db_pool, cmdq->eq.dbrec, cmdq->eq.dbrec_dma);

	dma_free_coherent(&dev->pdev->dev, cmdq->sq.depth << SQEBB_SHIFT,
			  cmdq->sq.qbuf, cmdq->sq.qbuf_dma_addr);

	dma_pool_free(dev->db_pool, cmdq->sq.db_record,
		      cmdq->sq.db_record_dma_addr);
	dma_pool_free(dev->db_pool, cmdq->sq.dbrec, cmdq->sq.dbrec_dma);

	dma_free_coherent(&dev->pdev->dev, cmdq->cq.depth << CQE_SHIFT,
			  cmdq->cq.qbuf, cmdq->cq.qbuf_dma_addr);

	dma_pool_free(dev->db_pool, cmdq->cq.db_record,
		      cmdq->cq.db_record_dma_addr);
	dma_pool_free(dev->db_pool, cmdq->cq.dbrec, cmdq->cq.dbrec_dma);
}

static void *get_next_valid_cmdq_cqe(struct erdma_cmdq *cmdq)
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ static void notify_cq(struct erdma_cq *cq, u8 solcitied)
		FIELD_PREP(ERDMA_CQDB_CMDSN_MASK, cq->kern_cq.cmdsn) |
		FIELD_PREP(ERDMA_CQDB_CI_MASK, cq->kern_cq.ci);

	*cq->kern_cq.db_record = db_data;
	*cq->kern_cq.dbrec = db_data;
	writeq(db_data, cq->kern_cq.db);
}

+10 −13
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ void notify_eq(struct erdma_eq *eq)
	u64 db_data = FIELD_PREP(ERDMA_EQDB_CI_MASK, eq->ci) |
		      FIELD_PREP(ERDMA_EQDB_ARM_MASK, 1);

	*eq->db_record = db_data;
	*eq->dbrec = db_data;
	writeq(db_data, eq->db);

	atomic64_inc(&eq->notify_num);
@@ -97,9 +97,8 @@ int erdma_aeq_init(struct erdma_dev *dev)
	atomic64_set(&eq->notify_num, 0);

	eq->db = dev->func_bar + ERDMA_REGS_AEQ_DB_REG;
	eq->db_record = dma_pool_zalloc(dev->db_pool, GFP_KERNEL,
					&eq->db_record_dma_addr);
	if (!eq->db_record)
	eq->dbrec = dma_pool_zalloc(dev->db_pool, GFP_KERNEL, &eq->dbrec_dma);
	if (!eq->dbrec)
		goto err_out;

	erdma_reg_write32(dev, ERDMA_REGS_AEQ_ADDR_H_REG,
@@ -107,8 +106,7 @@ int erdma_aeq_init(struct erdma_dev *dev)
	erdma_reg_write32(dev, ERDMA_REGS_AEQ_ADDR_L_REG,
			  lower_32_bits(eq->qbuf_dma_addr));
	erdma_reg_write32(dev, ERDMA_REGS_AEQ_DEPTH_REG, eq->depth);
	erdma_reg_write64(dev, ERDMA_AEQ_DB_HOST_ADDR_REG,
			  eq->db_record_dma_addr);
	erdma_reg_write64(dev, ERDMA_AEQ_DB_HOST_ADDR_REG, eq->dbrec_dma);

	return 0;

@@ -126,7 +124,7 @@ void erdma_aeq_destroy(struct erdma_dev *dev)
	dma_free_coherent(&dev->pdev->dev, eq->depth << EQE_SHIFT, eq->qbuf,
			  eq->qbuf_dma_addr);

	dma_pool_free(dev->db_pool, eq->db_record, eq->db_record_dma_addr);
	dma_pool_free(dev->db_pool, eq->dbrec, eq->dbrec_dma);
}

void erdma_ceq_completion_handler(struct erdma_eq_cb *ceq_cb)
@@ -226,8 +224,8 @@ static int create_eq_cmd(struct erdma_dev *dev, u32 eqn, struct erdma_eq *eq)
	req.qtype = ERDMA_EQ_TYPE_CEQ;
	/* Vector index is the same as EQN. */
	req.vector_idx = eqn;
	req.db_dma_addr_l = lower_32_bits(eq->db_record_dma_addr);
	req.db_dma_addr_h = upper_32_bits(eq->db_record_dma_addr);
	req.db_dma_addr_l = lower_32_bits(eq->dbrec_dma);
	req.db_dma_addr_h = upper_32_bits(eq->dbrec_dma);

	return erdma_post_cmd_wait(&dev->cmdq, &req, sizeof(req), NULL, NULL);
}
@@ -251,9 +249,8 @@ static int erdma_ceq_init_one(struct erdma_dev *dev, u16 ceqn)
	eq->db = dev->func_bar + ERDMA_REGS_CEQ_DB_BASE_REG +
		 (ceqn + 1) * ERDMA_DB_SIZE;

	eq->db_record = dma_pool_zalloc(dev->db_pool, GFP_KERNEL,
					&eq->db_record_dma_addr);
	if (!eq->db_record) {
	eq->dbrec = dma_pool_zalloc(dev->db_pool, GFP_KERNEL, &eq->dbrec_dma);
	if (!eq->dbrec) {
		dma_free_coherent(&dev->pdev->dev, eq->depth << EQE_SHIFT,
				  eq->qbuf, eq->qbuf_dma_addr);
		return -ENOMEM;
@@ -290,7 +287,7 @@ static void erdma_ceq_uninit_one(struct erdma_dev *dev, u16 ceqn)

	dma_free_coherent(&dev->pdev->dev, eq->depth << EQE_SHIFT, eq->qbuf,
			  eq->qbuf_dma_addr);
	dma_pool_free(dev->db_pool, eq->db_record, eq->db_record_dma_addr);
	dma_pool_free(dev->db_pool, eq->dbrec, eq->dbrec_dma);
}

int erdma_ceqs_init(struct erdma_dev *dev)
+3 −3
Original line number Diff line number Diff line
@@ -240,7 +240,7 @@ struct erdma_cmdq_create_cq_req {
	u32 qbuf_addr_l;
	u32 qbuf_addr_h;
	u32 cfg1;
	u64 cq_db_info_addr;
	u64 cq_dbrec_dma;
	u32 first_page_offset;
	u32 cfg2;
};
@@ -335,8 +335,8 @@ struct erdma_cmdq_create_qp_req {
	u64 rq_buf_addr;
	u32 sq_mtt_cfg;
	u32 rq_mtt_cfg;
	u64 sq_db_info_dma_addr;
	u64 rq_db_info_dma_addr;
	u64 sq_dbrec_dma;
	u64 rq_dbrec_dma;

	u64 sq_mtt_entry[3];
	u64 rq_mtt_entry[3];
Loading