Skip to content

Commit 13ca970

Browse files
xavierhwdledford
authored andcommitted
RDMA/hns: Modify assignment device variable to support both PCI device and platform device
In order to support the scalability of the hardware version, the features irrelevant to the hardware will be located in the hns-roce.ko, and the hardware relevant operations will be located in hns_roce_hw_v1.ko or hns_roce_hw_v2.ko based on the series chips. The hip08 RoCE engine is a PCI device, hip06 RoCE engine is a platform device. In order to support both platform device and PCI device, We replace &hr_dev->pdev->dev with hr_dev->dev in hns-roce.ko as belows: Before modification: struct device *dev = hr_dev->dev; After modification: struct device *dev = &hr_dev->pdev->dev; The related structure: struct hns_roce_dev { ... struct platform_device *pdev; struct pci_dev *pci_dev; struct device *dev; ... } Signed-off-by: Lijun Ou <oulijun@huawei.com> Signed-off-by: Shaobo Xu <xushaobo2@huawei.com> Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
1 parent dd74282 commit 13ca970

File tree

10 files changed

+41
-40
lines changed

10 files changed

+41
-40
lines changed

drivers/infiniband/hw/hns/hns_roce_ah.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ struct ib_ah *hns_roce_create_ah(struct ib_pd *ibpd,
4444
struct ib_udata *udata)
4545
{
4646
struct hns_roce_dev *hr_dev = to_hr_dev(ibpd->device);
47-
struct device *dev = &hr_dev->pdev->dev;
47+
struct device *dev = hr_dev->dev;
4848
struct ib_gid_attr gid_attr;
4949
struct hns_roce_ah *ah;
5050
u16 vlan_tag = 0xffff;

drivers/infiniband/hw/hns/hns_roce_alloc.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ void hns_roce_buf_free(struct hns_roce_dev *hr_dev, u32 size,
161161
struct hns_roce_buf *buf)
162162
{
163163
int i;
164-
struct device *dev = &hr_dev->pdev->dev;
164+
struct device *dev = hr_dev->dev;
165165
u32 bits_per_long = BITS_PER_LONG;
166166

167167
if (buf->nbufs == 1) {
@@ -172,7 +172,7 @@ void hns_roce_buf_free(struct hns_roce_dev *hr_dev, u32 size,
172172

173173
for (i = 0; i < buf->nbufs; ++i)
174174
if (buf->page_list[i].buf)
175-
dma_free_coherent(&hr_dev->pdev->dev, PAGE_SIZE,
175+
dma_free_coherent(dev, PAGE_SIZE,
176176
buf->page_list[i].buf,
177177
buf->page_list[i].map);
178178
kfree(buf->page_list);
@@ -186,7 +186,7 @@ int hns_roce_buf_alloc(struct hns_roce_dev *hr_dev, u32 size, u32 max_direct,
186186
int i = 0;
187187
dma_addr_t t;
188188
struct page **pages;
189-
struct device *dev = &hr_dev->pdev->dev;
189+
struct device *dev = hr_dev->dev;
190190
u32 bits_per_long = BITS_PER_LONG;
191191

192192
/* SQ/RQ buf lease than one page, SQ + RQ = 8K */

drivers/infiniband/hw/hns/hns_roce_cmd.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ static int __hns_roce_cmd_mbox_poll(struct hns_roce_dev *hr_dev, u64 in_param,
125125
u8 op_modifier, u16 op,
126126
unsigned long timeout)
127127
{
128-
struct device *dev = &hr_dev->pdev->dev;
128+
struct device *dev = hr_dev->dev;
129129
u8 __iomem *hcr = hr_dev->cmd.hcr;
130130
unsigned long end = 0;
131131
u32 status = 0;
@@ -196,8 +196,8 @@ static int __hns_roce_cmd_mbox_wait(struct hns_roce_dev *hr_dev, u64 in_param,
196196
unsigned long timeout)
197197
{
198198
struct hns_roce_cmdq *cmd = &hr_dev->cmd;
199-
struct device *dev = &hr_dev->pdev->dev;
200199
struct hns_roce_cmd_context *context;
200+
struct device *dev = hr_dev->dev;
201201
int ret = 0;
202202

203203
spin_lock(&cmd->context_lock);
@@ -273,7 +273,7 @@ EXPORT_SYMBOL_GPL(hns_roce_cmd_mbox);
273273

274274
int hns_roce_cmd_init(struct hns_roce_dev *hr_dev)
275275
{
276-
struct device *dev = &hr_dev->pdev->dev;
276+
struct device *dev = hr_dev->dev;
277277

278278
mutex_init(&hr_dev->cmd.hcr_mutex);
279279
sema_init(&hr_dev->cmd.poll_sem, 1);

drivers/infiniband/hw/hns/hns_roce_cq.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ static void hns_roce_ib_cq_event(struct hns_roce_cq *hr_cq,
5858
if (event_type != HNS_ROCE_EVENT_TYPE_CQ_ID_INVALID &&
5959
event_type != HNS_ROCE_EVENT_TYPE_CQ_ACCESS_ERROR &&
6060
event_type != HNS_ROCE_EVENT_TYPE_CQ_OVERFLOW) {
61-
dev_err(&hr_dev->pdev->dev,
61+
dev_err(hr_dev->dev,
6262
"hns_roce_ib: Unexpected event type 0x%x on CQ %06lx\n",
6363
event_type, hr_cq->cqn);
6464
return;
@@ -87,7 +87,7 @@ static int hns_roce_cq_alloc(struct hns_roce_dev *hr_dev, int nent,
8787
{
8888
struct hns_roce_cmd_mailbox *mailbox = NULL;
8989
struct hns_roce_cq_table *cq_table = NULL;
90-
struct device *dev = &hr_dev->pdev->dev;
90+
struct device *dev = hr_dev->dev;
9191
dma_addr_t dma_handle;
9292
u64 *mtts = NULL;
9393
int ret = 0;
@@ -182,7 +182,7 @@ static int hns_roce_hw2sw_cq(struct hns_roce_dev *dev,
182182
void hns_roce_free_cq(struct hns_roce_dev *hr_dev, struct hns_roce_cq *hr_cq)
183183
{
184184
struct hns_roce_cq_table *cq_table = &hr_dev->cq_table;
185-
struct device *dev = &hr_dev->pdev->dev;
185+
struct device *dev = hr_dev->dev;
186186
int ret;
187187

188188
ret = hns_roce_hw2sw_cq(hr_dev, NULL, hr_cq->cqn);
@@ -282,7 +282,7 @@ struct ib_cq *hns_roce_ib_create_cq(struct ib_device *ib_dev,
282282
struct ib_udata *udata)
283283
{
284284
struct hns_roce_dev *hr_dev = to_hr_dev(ib_dev);
285-
struct device *dev = &hr_dev->pdev->dev;
285+
struct device *dev = hr_dev->dev;
286286
struct hns_roce_ib_create_cq ucmd;
287287
struct hns_roce_cq *hr_cq = NULL;
288288
struct hns_roce_uar *uar = NULL;
@@ -416,7 +416,7 @@ EXPORT_SYMBOL_GPL(hns_roce_ib_destroy_cq);
416416

417417
void hns_roce_cq_completion(struct hns_roce_dev *hr_dev, u32 cqn)
418418
{
419-
struct device *dev = &hr_dev->pdev->dev;
419+
struct device *dev = hr_dev->dev;
420420
struct hns_roce_cq *cq;
421421

422422
cq = radix_tree_lookup(&hr_dev->cq_table.tree,
@@ -432,7 +432,7 @@ void hns_roce_cq_completion(struct hns_roce_dev *hr_dev, u32 cqn)
432432
void hns_roce_cq_event(struct hns_roce_dev *hr_dev, u32 cqn, int event_type)
433433
{
434434
struct hns_roce_cq_table *cq_table = &hr_dev->cq_table;
435-
struct device *dev = &hr_dev->pdev->dev;
435+
struct device *dev = hr_dev->dev;
436436
struct hns_roce_cq *cq;
437437

438438
cq = radix_tree_lookup(&cq_table->tree,

drivers/infiniband/hw/hns/hns_roce_hem.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ struct hns_roce_hem *hns_roce_alloc_hem(struct hns_roce_dev *hr_dev, int npages,
8484
* memory, directly return fail.
8585
*/
8686
mem = &chunk->mem[chunk->npages];
87-
buf = dma_alloc_coherent(&hr_dev->pdev->dev, PAGE_SIZE << order,
87+
buf = dma_alloc_coherent(hr_dev->dev, PAGE_SIZE << order,
8888
&sg_dma_address(mem), gfp_mask);
8989
if (!buf)
9090
goto fail;
@@ -115,7 +115,7 @@ void hns_roce_free_hem(struct hns_roce_dev *hr_dev, struct hns_roce_hem *hem)
115115

116116
list_for_each_entry_safe(chunk, tmp, &hem->chunk_list, list) {
117117
for (i = 0; i < chunk->npages; ++i)
118-
dma_free_coherent(&hr_dev->pdev->dev,
118+
dma_free_coherent(hr_dev->dev,
119119
chunk->mem[i].length,
120120
lowmem_page_address(sg_page(&chunk->mem[i])),
121121
sg_dma_address(&chunk->mem[i]));
@@ -128,8 +128,8 @@ void hns_roce_free_hem(struct hns_roce_dev *hr_dev, struct hns_roce_hem *hem)
128128
static int hns_roce_set_hem(struct hns_roce_dev *hr_dev,
129129
struct hns_roce_hem_table *table, unsigned long obj)
130130
{
131-
struct device *dev = &hr_dev->pdev->dev;
132131
spinlock_t *lock = &hr_dev->bt_cmd_lock;
132+
struct device *dev = hr_dev->dev;
133133
unsigned long end = 0;
134134
unsigned long flags;
135135
struct hns_roce_hem_iter iter;
@@ -212,7 +212,7 @@ static int hns_roce_set_hem(struct hns_roce_dev *hr_dev,
212212
int hns_roce_table_get(struct hns_roce_dev *hr_dev,
213213
struct hns_roce_hem_table *table, unsigned long obj)
214214
{
215-
struct device *dev = &hr_dev->pdev->dev;
215+
struct device *dev = hr_dev->dev;
216216
int ret = 0;
217217
unsigned long i;
218218

@@ -251,7 +251,7 @@ int hns_roce_table_get(struct hns_roce_dev *hr_dev,
251251
void hns_roce_table_put(struct hns_roce_dev *hr_dev,
252252
struct hns_roce_hem_table *table, unsigned long obj)
253253
{
254-
struct device *dev = &hr_dev->pdev->dev;
254+
struct device *dev = hr_dev->dev;
255255
unsigned long i;
256256

257257
i = (obj & (table->num_obj - 1)) /
@@ -380,7 +380,7 @@ int hns_roce_init_hem_table(struct hns_roce_dev *hr_dev,
380380
void hns_roce_cleanup_hem_table(struct hns_roce_dev *hr_dev,
381381
struct hns_roce_hem_table *table)
382382
{
383-
struct device *dev = &hr_dev->pdev->dev;
383+
struct device *dev = hr_dev->dev;
384384
unsigned long i;
385385

386386
for (i = 0; i < table->num_hem; ++i)

drivers/infiniband/hw/hns/hns_roce_hw_v1.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4050,6 +4050,7 @@ static int hns_roce_probe(struct platform_device *pdev)
40504050
}
40514051

40524052
hr_dev->pdev = pdev;
4053+
hr_dev->dev = dev;
40534054
platform_set_drvdata(pdev, hr_dev);
40544055

40554056
if (dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64ULL)) &&

drivers/infiniband/hw/hns/hns_roce_main.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ static int hns_roce_del_gid(struct ib_device *device, u8 port_num,
117117
static int handle_en_event(struct hns_roce_dev *hr_dev, u8 port,
118118
unsigned long event)
119119
{
120-
struct device *dev = &hr_dev->pdev->dev;
120+
struct device *dev = hr_dev->dev;
121121
struct net_device *netdev;
122122

123123
netdev = hr_dev->iboe.netdevs[port];
@@ -240,7 +240,7 @@ static int hns_roce_query_port(struct ib_device *ib_dev, u8 port_num,
240240
struct ib_port_attr *props)
241241
{
242242
struct hns_roce_dev *hr_dev = to_hr_dev(ib_dev);
243-
struct device *dev = &hr_dev->pdev->dev;
243+
struct device *dev = hr_dev->dev;
244244
struct net_device *net_dev;
245245
unsigned long flags;
246246
enum ib_mtu mtu;
@@ -428,7 +428,7 @@ static int hns_roce_register_device(struct hns_roce_dev *hr_dev)
428428
int ret;
429429
struct hns_roce_ib_iboe *iboe = NULL;
430430
struct ib_device *ib_dev = NULL;
431-
struct device *dev = &hr_dev->pdev->dev;
431+
struct device *dev = hr_dev->dev;
432432

433433
iboe = &hr_dev->iboe;
434434
spin_lock_init(&iboe->lock);
@@ -536,7 +536,7 @@ static int hns_roce_register_device(struct hns_roce_dev *hr_dev)
536536
static int hns_roce_init_hem(struct hns_roce_dev *hr_dev)
537537
{
538538
int ret;
539-
struct device *dev = &hr_dev->pdev->dev;
539+
struct device *dev = hr_dev->dev;
540540

541541
ret = hns_roce_init_hem_table(hr_dev, &hr_dev->mr_table.mtt_table,
542542
HEM_TYPE_MTT, hr_dev->caps.mtt_entry_sz,
@@ -605,7 +605,7 @@ static int hns_roce_init_hem(struct hns_roce_dev *hr_dev)
605605
static int hns_roce_setup_hca(struct hns_roce_dev *hr_dev)
606606
{
607607
int ret;
608-
struct device *dev = &hr_dev->pdev->dev;
608+
struct device *dev = hr_dev->dev;
609609

610610
spin_lock_init(&hr_dev->sm_lock);
611611
spin_lock_init(&hr_dev->bt_cmd_lock);
@@ -668,7 +668,7 @@ static int hns_roce_setup_hca(struct hns_roce_dev *hr_dev)
668668
int hns_roce_init(struct hns_roce_dev *hr_dev)
669669
{
670670
int ret;
671-
struct device *dev = &hr_dev->pdev->dev;
671+
struct device *dev = hr_dev->dev;
672672

673673
if (hr_dev->hw->reset) {
674674
ret = hr_dev->hw->reset(hr_dev, true);

drivers/infiniband/hw/hns/hns_roce_mr.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -241,9 +241,9 @@ static int hns_roce_mr_alloc(struct hns_roce_dev *hr_dev, u32 pd, u64 iova,
241241
u64 size, u32 access, int npages,
242242
struct hns_roce_mr *mr)
243243
{
244+
struct device *dev = hr_dev->dev;
244245
unsigned long index = 0;
245246
int ret = 0;
246-
struct device *dev = &hr_dev->pdev->dev;
247247

248248
/* Allocate a key for mr from mr_table */
249249
ret = hns_roce_bitmap_alloc(&hr_dev->mr_table.mtpt_bitmap, &index);
@@ -276,7 +276,7 @@ static int hns_roce_mr_alloc(struct hns_roce_dev *hr_dev, u32 pd, u64 iova,
276276
static void hns_roce_mr_free(struct hns_roce_dev *hr_dev,
277277
struct hns_roce_mr *mr)
278278
{
279-
struct device *dev = &hr_dev->pdev->dev;
279+
struct device *dev = hr_dev->dev;
280280
int npages = 0;
281281
int ret;
282282

@@ -302,7 +302,7 @@ static int hns_roce_mr_enable(struct hns_roce_dev *hr_dev,
302302
{
303303
int ret;
304304
unsigned long mtpt_idx = key_to_hw_index(mr->key);
305-
struct device *dev = &hr_dev->pdev->dev;
305+
struct device *dev = hr_dev->dev;
306306
struct hns_roce_cmd_mailbox *mailbox;
307307
struct hns_roce_mr_table *mr_table = &hr_dev->mr_table;
308308

@@ -552,7 +552,7 @@ struct ib_mr *hns_roce_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
552552
struct ib_udata *udata)
553553
{
554554
struct hns_roce_dev *hr_dev = to_hr_dev(pd->device);
555-
struct device *dev = &hr_dev->pdev->dev;
555+
struct device *dev = hr_dev->dev;
556556
struct hns_roce_mr *mr = NULL;
557557
int ret = 0;
558558
int n = 0;

drivers/infiniband/hw/hns/hns_roce_pd.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ struct ib_pd *hns_roce_alloc_pd(struct ib_device *ib_dev,
6060
struct ib_udata *udata)
6161
{
6262
struct hns_roce_dev *hr_dev = to_hr_dev(ib_dev);
63-
struct device *dev = &hr_dev->pdev->dev;
63+
struct device *dev = hr_dev->dev;
6464
struct hns_roce_pd *pd;
6565
int ret;
6666

drivers/infiniband/hw/hns/hns_roce_qp.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
void hns_roce_qp_event(struct hns_roce_dev *hr_dev, u32 qpn, int event_type)
4545
{
4646
struct hns_roce_qp_table *qp_table = &hr_dev->qp_table;
47-
struct device *dev = &hr_dev->pdev->dev;
47+
struct device *dev = hr_dev->dev;
4848
struct hns_roce_qp *qp;
4949

5050
spin_lock(&qp_table->lock);
@@ -154,7 +154,7 @@ static int hns_roce_gsi_qp_alloc(struct hns_roce_dev *hr_dev, unsigned long qpn,
154154
hr_qp->qpn & (hr_dev->caps.num_qps - 1), hr_qp);
155155
spin_unlock_irq(&qp_table->lock);
156156
if (ret) {
157-
dev_err(&hr_dev->pdev->dev, "QPC radix_tree_insert failed\n");
157+
dev_err(hr_dev->dev, "QPC radix_tree_insert failed\n");
158158
goto err_put_irrl;
159159
}
160160

@@ -172,7 +172,7 @@ static int hns_roce_qp_alloc(struct hns_roce_dev *hr_dev, unsigned long qpn,
172172
struct hns_roce_qp *hr_qp)
173173
{
174174
struct hns_roce_qp_table *qp_table = &hr_dev->qp_table;
175-
struct device *dev = &hr_dev->pdev->dev;
175+
struct device *dev = hr_dev->dev;
176176
int ret;
177177

178178
if (!qpn)
@@ -261,8 +261,8 @@ static int hns_roce_set_rq_size(struct hns_roce_dev *hr_dev,
261261
struct ib_qp_cap *cap, int is_user, int has_srq,
262262
struct hns_roce_qp *hr_qp)
263263
{
264+
struct device *dev = hr_dev->dev;
264265
u32 max_cnt;
265-
struct device *dev = &hr_dev->pdev->dev;
266266

267267
/* Check the validity of QP support capacity */
268268
if (cap->max_recv_wr > hr_dev->caps.max_wqes ||
@@ -319,7 +319,7 @@ static int hns_roce_set_user_sq_size(struct hns_roce_dev *hr_dev,
319319
if ((u32)(1 << ucmd->log_sq_bb_count) > hr_dev->caps.max_wqes ||
320320
ucmd->log_sq_stride > max_sq_stride ||
321321
ucmd->log_sq_stride < HNS_ROCE_IB_MIN_SQ_STRIDE) {
322-
dev_err(&hr_dev->pdev->dev, "check SQ size error!\n");
322+
dev_err(hr_dev->dev, "check SQ size error!\n");
323323
return -EINVAL;
324324
}
325325

@@ -343,7 +343,7 @@ static int hns_roce_set_kernel_sq_size(struct hns_roce_dev *hr_dev,
343343
struct ib_qp_cap *cap,
344344
struct hns_roce_qp *hr_qp)
345345
{
346-
struct device *dev = &hr_dev->pdev->dev;
346+
struct device *dev = hr_dev->dev;
347347
u32 max_cnt;
348348

349349
if (cap->max_send_wr > hr_dev->caps.max_wqes ||
@@ -395,7 +395,7 @@ static int hns_roce_create_qp_common(struct hns_roce_dev *hr_dev,
395395
struct ib_udata *udata, unsigned long sqpn,
396396
struct hns_roce_qp *hr_qp)
397397
{
398-
struct device *dev = &hr_dev->pdev->dev;
398+
struct device *dev = hr_dev->dev;
399399
struct hns_roce_ib_create_qp ucmd;
400400
unsigned long qpn = 0;
401401
int ret = 0;
@@ -575,7 +575,7 @@ struct ib_qp *hns_roce_create_qp(struct ib_pd *pd,
575575
struct ib_udata *udata)
576576
{
577577
struct hns_roce_dev *hr_dev = to_hr_dev(pd->device);
578-
struct device *dev = &hr_dev->pdev->dev;
578+
struct device *dev = hr_dev->dev;
579579
struct hns_roce_sqp *hr_sqp;
580580
struct hns_roce_qp *hr_qp;
581581
int ret;
@@ -660,7 +660,7 @@ int hns_roce_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
660660
struct hns_roce_dev *hr_dev = to_hr_dev(ibqp->device);
661661
struct hns_roce_qp *hr_qp = to_hr_qp(ibqp);
662662
enum ib_qp_state cur_state, new_state;
663-
struct device *dev = &hr_dev->pdev->dev;
663+
struct device *dev = hr_dev->dev;
664664
int ret = -EINVAL;
665665
int p;
666666
enum ib_mtu active_mtu;
@@ -835,7 +835,7 @@ int hns_roce_init_qp_table(struct hns_roce_dev *hr_dev)
835835
hr_dev->caps.num_qps - 1, SQP_NUM,
836836
reserved_from_top);
837837
if (ret) {
838-
dev_err(&hr_dev->pdev->dev, "qp bitmap init failed!error=%d\n",
838+
dev_err(hr_dev->dev, "qp bitmap init failed!error=%d\n",
839839
ret);
840840
return ret;
841841
}

0 commit comments

Comments
 (0)