Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
e04abfa2
K
Kernel
项目概览
openeuler
/
Kernel
11 个月 前同步成功
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e04abfa2
编写于
7月 11, 2013
作者:
R
Roland Dreier
浏览文件
操作
浏览文件
下载
差异文件
Merge branches 'mlx5', 'qib' and 'srp' into for-next
上级
0eba5511
5e631a03
0b3ddf38
80d5e8a2
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
191 addition
and
26 deletion
+191
-26
drivers/infiniband/hw/mlx5/mr.c
drivers/infiniband/hw/mlx5/mr.c
+4
-4
drivers/infiniband/hw/qib/qib.h
drivers/infiniband/hw/qib/qib.h
+1
-1
drivers/infiniband/hw/qib/qib_iba7322.c
drivers/infiniband/hw/qib/qib_iba7322.c
+114
-0
drivers/infiniband/hw/qib/qib_init.c
drivers/infiniband/hw/qib/qib_init.c
+3
-3
drivers/infiniband/hw/qib/qib_sdma.c
drivers/infiniband/hw/qib/qib_sdma.c
+56
-0
drivers/infiniband/ulp/srp/ib_srp.c
drivers/infiniband/ulp/srp/ib_srp.c
+1
-2
drivers/net/ethernet/mellanox/mlx5/core/cmd.c
drivers/net/ethernet/mellanox/mlx5/core/cmd.c
+5
-5
drivers/net/ethernet/mellanox/mlx5/core/debugfs.c
drivers/net/ethernet/mellanox/mlx5/core/debugfs.c
+4
-8
drivers/net/ethernet/mellanox/mlx5/core/main.c
drivers/net/ethernet/mellanox/mlx5/core/main.c
+1
-1
include/linux/mlx5/device.h
include/linux/mlx5/device.h
+2
-2
未找到文件。
drivers/infiniband/hw/mlx5/mr.c
浏览文件 @
e04abfa2
...
@@ -171,7 +171,7 @@ static ssize_t size_write(struct file *filp, const char __user *buf,
...
@@ -171,7 +171,7 @@ static ssize_t size_write(struct file *filp, const char __user *buf,
int
c
;
int
c
;
if
(
copy_from_user
(
lbuf
,
buf
,
sizeof
(
lbuf
)))
if
(
copy_from_user
(
lbuf
,
buf
,
sizeof
(
lbuf
)))
return
-
E
PERM
;
return
-
E
FAULT
;
c
=
order2idx
(
dev
,
ent
->
order
);
c
=
order2idx
(
dev
,
ent
->
order
);
lbuf
[
sizeof
(
lbuf
)
-
1
]
=
0
;
lbuf
[
sizeof
(
lbuf
)
-
1
]
=
0
;
...
@@ -208,7 +208,7 @@ static ssize_t size_read(struct file *filp, char __user *buf, size_t count,
...
@@ -208,7 +208,7 @@ static ssize_t size_read(struct file *filp, char __user *buf, size_t count,
return
err
;
return
err
;
if
(
copy_to_user
(
buf
,
lbuf
,
err
))
if
(
copy_to_user
(
buf
,
lbuf
,
err
))
return
-
E
PERM
;
return
-
E
FAULT
;
*
pos
+=
err
;
*
pos
+=
err
;
...
@@ -233,7 +233,7 @@ static ssize_t limit_write(struct file *filp, const char __user *buf,
...
@@ -233,7 +233,7 @@ static ssize_t limit_write(struct file *filp, const char __user *buf,
int
c
;
int
c
;
if
(
copy_from_user
(
lbuf
,
buf
,
sizeof
(
lbuf
)))
if
(
copy_from_user
(
lbuf
,
buf
,
sizeof
(
lbuf
)))
return
-
E
PERM
;
return
-
E
FAULT
;
c
=
order2idx
(
dev
,
ent
->
order
);
c
=
order2idx
(
dev
,
ent
->
order
);
lbuf
[
sizeof
(
lbuf
)
-
1
]
=
0
;
lbuf
[
sizeof
(
lbuf
)
-
1
]
=
0
;
...
@@ -270,7 +270,7 @@ static ssize_t limit_read(struct file *filp, char __user *buf, size_t count,
...
@@ -270,7 +270,7 @@ static ssize_t limit_read(struct file *filp, char __user *buf, size_t count,
return
err
;
return
err
;
if
(
copy_to_user
(
buf
,
lbuf
,
err
))
if
(
copy_to_user
(
buf
,
lbuf
,
err
))
return
-
E
PERM
;
return
-
E
FAULT
;
*
pos
+=
err
;
*
pos
+=
err
;
...
...
drivers/infiniband/hw/qib/qib.h
浏览文件 @
e04abfa2
...
@@ -1348,7 +1348,7 @@ static inline int __qib_sdma_running(struct qib_pportdata *ppd)
...
@@ -1348,7 +1348,7 @@ static inline int __qib_sdma_running(struct qib_pportdata *ppd)
return
ppd
->
sdma_state
.
current_state
==
qib_sdma_state_s99_running
;
return
ppd
->
sdma_state
.
current_state
==
qib_sdma_state_s99_running
;
}
}
int
qib_sdma_running
(
struct
qib_pportdata
*
);
int
qib_sdma_running
(
struct
qib_pportdata
*
);
void
dump_sdma_state
(
struct
qib_pportdata
*
ppd
);
void
__qib_sdma_process_event
(
struct
qib_pportdata
*
,
enum
qib_sdma_events
);
void
__qib_sdma_process_event
(
struct
qib_pportdata
*
,
enum
qib_sdma_events
);
void
qib_sdma_process_event
(
struct
qib_pportdata
*
,
enum
qib_sdma_events
);
void
qib_sdma_process_event
(
struct
qib_pportdata
*
,
enum
qib_sdma_events
);
...
...
drivers/infiniband/hw/qib/qib_iba7322.c
浏览文件 @
e04abfa2
...
@@ -83,6 +83,7 @@ static void ibsd_wr_allchans(struct qib_pportdata *, int, unsigned, unsigned);
...
@@ -83,6 +83,7 @@ static void ibsd_wr_allchans(struct qib_pportdata *, int, unsigned, unsigned);
static
void
serdes_7322_los_enable
(
struct
qib_pportdata
*
,
int
);
static
void
serdes_7322_los_enable
(
struct
qib_pportdata
*
,
int
);
static
int
serdes_7322_init_old
(
struct
qib_pportdata
*
);
static
int
serdes_7322_init_old
(
struct
qib_pportdata
*
);
static
int
serdes_7322_init_new
(
struct
qib_pportdata
*
);
static
int
serdes_7322_init_new
(
struct
qib_pportdata
*
);
static
void
dump_sdma_7322_state
(
struct
qib_pportdata
*
);
#define BMASK(msb, lsb) (((1 << ((msb) + 1 - (lsb))) - 1) << (lsb))
#define BMASK(msb, lsb) (((1 << ((msb) + 1 - (lsb))) - 1) << (lsb))
...
@@ -652,6 +653,7 @@ struct qib_chippport_specific {
...
@@ -652,6 +653,7 @@ struct qib_chippport_specific {
u8
ibmalfusesnap
;
u8
ibmalfusesnap
;
struct
qib_qsfp_data
qsfp_data
;
struct
qib_qsfp_data
qsfp_data
;
char
epmsgbuf
[
192
];
/* for port error interrupt msg buffer */
char
epmsgbuf
[
192
];
/* for port error interrupt msg buffer */
char
sdmamsgbuf
[
192
];
/* for per-port sdma error messages */
};
};
static
struct
{
static
struct
{
...
@@ -1601,6 +1603,15 @@ static void sdma_7322_p_errors(struct qib_pportdata *ppd, u64 errs)
...
@@ -1601,6 +1603,15 @@ static void sdma_7322_p_errors(struct qib_pportdata *ppd, u64 errs)
spin_lock_irqsave
(
&
ppd
->
sdma_lock
,
flags
);
spin_lock_irqsave
(
&
ppd
->
sdma_lock
,
flags
);
if
(
errs
!=
QIB_E_P_SDMAHALT
)
{
/* SDMA errors have QIB_E_P_SDMAHALT and another bit set */
qib_dev_porterr
(
dd
,
ppd
->
port
,
"SDMA %s 0x%016llx %s
\n
"
,
qib_sdma_state_names
[
ppd
->
sdma_state
.
current_state
],
errs
,
ppd
->
cpspec
->
sdmamsgbuf
);
dump_sdma_7322_state
(
ppd
);
}
switch
(
ppd
->
sdma_state
.
current_state
)
{
switch
(
ppd
->
sdma_state
.
current_state
)
{
case
qib_sdma_state_s00_hw_down
:
case
qib_sdma_state_s00_hw_down
:
break
;
break
;
...
@@ -2156,6 +2167,29 @@ static void qib_7322_handle_hwerrors(struct qib_devdata *dd, char *msg,
...
@@ -2156,6 +2167,29 @@ static void qib_7322_handle_hwerrors(struct qib_devdata *dd, char *msg,
qib_dev_err
(
dd
,
"%s hardware error
\n
"
,
msg
);
qib_dev_err
(
dd
,
"%s hardware error
\n
"
,
msg
);
if
(
hwerrs
&
(
SYM_MASK
(
HwErrMask
,
SDmaMemReadErrMask_0
)
|
SYM_MASK
(
HwErrMask
,
SDmaMemReadErrMask_1
)))
{
int
pidx
=
0
;
int
err
;
unsigned
long
flags
;
struct
qib_pportdata
*
ppd
=
dd
->
pport
;
for
(;
pidx
<
dd
->
num_pports
;
++
pidx
,
ppd
++
)
{
err
=
0
;
if
(
pidx
==
0
&&
(
hwerrs
&
SYM_MASK
(
HwErrMask
,
SDmaMemReadErrMask_0
)))
err
++
;
if
(
pidx
==
1
&&
(
hwerrs
&
SYM_MASK
(
HwErrMask
,
SDmaMemReadErrMask_1
)))
err
++
;
if
(
err
)
{
spin_lock_irqsave
(
&
ppd
->
sdma_lock
,
flags
);
dump_sdma_7322_state
(
ppd
);
spin_unlock_irqrestore
(
&
ppd
->
sdma_lock
,
flags
);
}
}
}
if
(
isfatal
&&
!
dd
->
diag_client
)
{
if
(
isfatal
&&
!
dd
->
diag_client
)
{
qib_dev_err
(
dd
,
qib_dev_err
(
dd
,
"Fatal Hardware Error, no longer usable, SN %.16s
\n
"
,
"Fatal Hardware Error, no longer usable, SN %.16s
\n
"
,
...
@@ -6753,6 +6787,86 @@ static void qib_sdma_set_7322_desc_cnt(struct qib_pportdata *ppd, unsigned cnt)
...
@@ -6753,6 +6787,86 @@ static void qib_sdma_set_7322_desc_cnt(struct qib_pportdata *ppd, unsigned cnt)
qib_write_kreg_port
(
ppd
,
krp_senddmadesccnt
,
cnt
);
qib_write_kreg_port
(
ppd
,
krp_senddmadesccnt
,
cnt
);
}
}
/*
* sdma_lock should be acquired before calling this routine
*/
static
void
dump_sdma_7322_state
(
struct
qib_pportdata
*
ppd
)
{
u64
reg
,
reg1
,
reg2
;
reg
=
qib_read_kreg_port
(
ppd
,
krp_senddmastatus
);
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA senddmastatus: 0x%016llx
\n
"
,
reg
);
reg
=
qib_read_kreg_port
(
ppd
,
krp_sendctrl
);
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA sendctrl: 0x%016llx
\n
"
,
reg
);
reg
=
qib_read_kreg_port
(
ppd
,
krp_senddmabase
);
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA senddmabase: 0x%016llx
\n
"
,
reg
);
reg
=
qib_read_kreg_port
(
ppd
,
krp_senddmabufmask0
);
reg1
=
qib_read_kreg_port
(
ppd
,
krp_senddmabufmask1
);
reg2
=
qib_read_kreg_port
(
ppd
,
krp_senddmabufmask2
);
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA senddmabufmask 0:%llx 1:%llx 2:%llx
\n
"
,
reg
,
reg1
,
reg2
);
/* get bufuse bits, clear them, and print them again if non-zero */
reg
=
qib_read_kreg_port
(
ppd
,
krp_senddmabuf_use0
);
qib_write_kreg_port
(
ppd
,
krp_senddmabuf_use0
,
reg
);
reg1
=
qib_read_kreg_port
(
ppd
,
krp_senddmabuf_use1
);
qib_write_kreg_port
(
ppd
,
krp_senddmabuf_use0
,
reg1
);
reg2
=
qib_read_kreg_port
(
ppd
,
krp_senddmabuf_use2
);
qib_write_kreg_port
(
ppd
,
krp_senddmabuf_use0
,
reg2
);
/* 0 and 1 should always be zero, so print as short form */
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA current senddmabuf_use 0:%llx 1:%llx 2:%llx
\n
"
,
reg
,
reg1
,
reg2
);
reg
=
qib_read_kreg_port
(
ppd
,
krp_senddmabuf_use0
);
reg1
=
qib_read_kreg_port
(
ppd
,
krp_senddmabuf_use1
);
reg2
=
qib_read_kreg_port
(
ppd
,
krp_senddmabuf_use2
);
/* 0 and 1 should always be zero, so print as short form */
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA cleared senddmabuf_use 0:%llx 1:%llx 2:%llx
\n
"
,
reg
,
reg1
,
reg2
);
reg
=
qib_read_kreg_port
(
ppd
,
krp_senddmatail
);
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA senddmatail: 0x%016llx
\n
"
,
reg
);
reg
=
qib_read_kreg_port
(
ppd
,
krp_senddmahead
);
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA senddmahead: 0x%016llx
\n
"
,
reg
);
reg
=
qib_read_kreg_port
(
ppd
,
krp_senddmaheadaddr
);
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA senddmaheadaddr: 0x%016llx
\n
"
,
reg
);
reg
=
qib_read_kreg_port
(
ppd
,
krp_senddmalengen
);
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA senddmalengen: 0x%016llx
\n
"
,
reg
);
reg
=
qib_read_kreg_port
(
ppd
,
krp_senddmadesccnt
);
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA senddmadesccnt: 0x%016llx
\n
"
,
reg
);
reg
=
qib_read_kreg_port
(
ppd
,
krp_senddmaidlecnt
);
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA senddmaidlecnt: 0x%016llx
\n
"
,
reg
);
reg
=
qib_read_kreg_port
(
ppd
,
krp_senddmaprioritythld
);
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA senddmapriorityhld: 0x%016llx
\n
"
,
reg
);
reg
=
qib_read_kreg_port
(
ppd
,
krp_senddmareloadcnt
);
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA senddmareloadcnt: 0x%016llx
\n
"
,
reg
);
dump_sdma_state
(
ppd
);
}
static
struct
sdma_set_state_action
sdma_7322_action_table
[]
=
{
static
struct
sdma_set_state_action
sdma_7322_action_table
[]
=
{
[
qib_sdma_state_s00_hw_down
]
=
{
[
qib_sdma_state_s00_hw_down
]
=
{
.
go_s99_running_tofalse
=
1
,
.
go_s99_running_tofalse
=
1
,
...
...
drivers/infiniband/hw/qib/qib_init.c
浏览文件 @
e04abfa2
...
@@ -1350,7 +1350,7 @@ static void cleanup_device_data(struct qib_devdata *dd)
...
@@ -1350,7 +1350,7 @@ static void cleanup_device_data(struct qib_devdata *dd)
if
(
dd
->
pageshadow
)
{
if
(
dd
->
pageshadow
)
{
struct
page
**
tmpp
=
dd
->
pageshadow
;
struct
page
**
tmpp
=
dd
->
pageshadow
;
dma_addr_t
*
tmpd
=
dd
->
physshadow
;
dma_addr_t
*
tmpd
=
dd
->
physshadow
;
int
i
,
cnt
=
0
;
int
i
;
for
(
ctxt
=
0
;
ctxt
<
dd
->
cfgctxts
;
ctxt
++
)
{
for
(
ctxt
=
0
;
ctxt
<
dd
->
cfgctxts
;
ctxt
++
)
{
int
ctxt_tidbase
=
ctxt
*
dd
->
rcvtidcnt
;
int
ctxt_tidbase
=
ctxt
*
dd
->
rcvtidcnt
;
...
@@ -1363,13 +1363,13 @@ static void cleanup_device_data(struct qib_devdata *dd)
...
@@ -1363,13 +1363,13 @@ static void cleanup_device_data(struct qib_devdata *dd)
PAGE_SIZE
,
PCI_DMA_FROMDEVICE
);
PAGE_SIZE
,
PCI_DMA_FROMDEVICE
);
qib_release_user_pages
(
&
tmpp
[
i
],
1
);
qib_release_user_pages
(
&
tmpp
[
i
],
1
);
tmpp
[
i
]
=
NULL
;
tmpp
[
i
]
=
NULL
;
cnt
++
;
}
}
}
}
tmpp
=
dd
->
pageshadow
;
dd
->
pageshadow
=
NULL
;
dd
->
pageshadow
=
NULL
;
vfree
(
tmpp
);
vfree
(
tmpp
);
dd
->
physshadow
=
NULL
;
vfree
(
tmpd
);
}
}
/*
/*
...
...
drivers/infiniband/hw/qib/qib_sdma.c
浏览文件 @
e04abfa2
...
@@ -708,6 +708,62 @@ int qib_sdma_verbs_send(struct qib_pportdata *ppd,
...
@@ -708,6 +708,62 @@ int qib_sdma_verbs_send(struct qib_pportdata *ppd,
return
ret
;
return
ret
;
}
}
/*
* sdma_lock should be acquired before calling this routine
*/
void
dump_sdma_state
(
struct
qib_pportdata
*
ppd
)
{
struct
qib_sdma_desc
*
descq
;
struct
qib_sdma_txreq
*
txp
,
*
txpnext
;
__le64
*
descqp
;
u64
desc
[
2
];
dma_addr_t
addr
;
u16
gen
,
dwlen
,
dwoffset
;
u16
head
,
tail
,
cnt
;
head
=
ppd
->
sdma_descq_head
;
tail
=
ppd
->
sdma_descq_tail
;
cnt
=
qib_sdma_descq_freecnt
(
ppd
);
descq
=
ppd
->
sdma_descq
;
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA ppd->sdma_descq_head: %u
\n
"
,
head
);
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA ppd->sdma_descq_tail: %u
\n
"
,
tail
);
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA sdma_descq_freecnt: %u
\n
"
,
cnt
);
/* print info for each entry in the descriptor queue */
while
(
head
!=
tail
)
{
char
flags
[
6
]
=
{
'x'
,
'x'
,
'x'
,
'x'
,
'x'
,
0
};
descqp
=
&
descq
[
head
].
qw
[
0
];
desc
[
0
]
=
le64_to_cpu
(
descqp
[
0
]);
desc
[
1
]
=
le64_to_cpu
(
descqp
[
1
]);
flags
[
0
]
=
(
desc
[
0
]
&
1
<<
15
)
?
'I'
:
'-'
;
flags
[
1
]
=
(
desc
[
0
]
&
1
<<
14
)
?
'L'
:
'S'
;
flags
[
2
]
=
(
desc
[
0
]
&
1
<<
13
)
?
'H'
:
'-'
;
flags
[
3
]
=
(
desc
[
0
]
&
1
<<
12
)
?
'F'
:
'-'
;
flags
[
4
]
=
(
desc
[
0
]
&
1
<<
11
)
?
'L'
:
'-'
;
addr
=
(
desc
[
1
]
<<
32
)
|
((
desc
[
0
]
>>
32
)
&
0xfffffffcULL
);
gen
=
(
desc
[
0
]
>>
30
)
&
3ULL
;
dwlen
=
(
desc
[
0
]
>>
14
)
&
(
0x7ffULL
<<
2
);
dwoffset
=
(
desc
[
0
]
&
0x7ffULL
)
<<
2
;
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA sdmadesc[%u]: flags:%s addr:0x%016llx gen:%u len:%u bytes offset:%u bytes
\n
"
,
head
,
flags
,
addr
,
gen
,
dwlen
,
dwoffset
);
if
(
++
head
==
ppd
->
sdma_descq_cnt
)
head
=
0
;
}
/* print dma descriptor indices from the TX requests */
list_for_each_entry_safe
(
txp
,
txpnext
,
&
ppd
->
sdma_activelist
,
list
)
qib_dev_porterr
(
ppd
->
dd
,
ppd
->
port
,
"SDMA txp->start_idx: %u txp->next_descq_idx: %u
\n
"
,
txp
->
start_idx
,
txp
->
next_descq_idx
);
}
void
qib_sdma_process_event
(
struct
qib_pportdata
*
ppd
,
void
qib_sdma_process_event
(
struct
qib_pportdata
*
ppd
,
enum
qib_sdma_events
event
)
enum
qib_sdma_events
event
)
{
{
...
...
drivers/infiniband/ulp/srp/ib_srp.c
浏览文件 @
e04abfa2
...
@@ -1753,8 +1753,7 @@ static int srp_abort(struct scsi_cmnd *scmnd)
...
@@ -1753,8 +1753,7 @@ static int srp_abort(struct scsi_cmnd *scmnd)
if
(
!
req
||
!
srp_claim_req
(
target
,
req
,
scmnd
))
if
(
!
req
||
!
srp_claim_req
(
target
,
req
,
scmnd
))
return
FAILED
;
return
FAILED
;
if
(
srp_send_tsk_mgmt
(
target
,
req
->
index
,
scmnd
->
device
->
lun
,
if
(
srp_send_tsk_mgmt
(
target
,
req
->
index
,
scmnd
->
device
->
lun
,
SRP_TSK_ABORT_TASK
)
==
0
||
SRP_TSK_ABORT_TASK
)
==
0
)
target
->
transport_offline
)
ret
=
SUCCESS
;
ret
=
SUCCESS
;
else
if
(
target
->
transport_offline
)
else
if
(
target
->
transport_offline
)
ret
=
FAST_IO_FAIL
;
ret
=
FAST_IO_FAIL
;
...
...
drivers/net/ethernet/mellanox/mlx5/core/cmd.c
浏览文件 @
e04abfa2
...
@@ -693,7 +693,7 @@ static ssize_t dbg_write(struct file *filp, const char __user *buf,
...
@@ -693,7 +693,7 @@ static ssize_t dbg_write(struct file *filp, const char __user *buf,
return
-
ENOMEM
;
return
-
ENOMEM
;
if
(
copy_from_user
(
lbuf
,
buf
,
sizeof
(
lbuf
)))
if
(
copy_from_user
(
lbuf
,
buf
,
sizeof
(
lbuf
)))
return
-
E
PERM
;
return
-
E
FAULT
;
lbuf
[
sizeof
(
lbuf
)
-
1
]
=
0
;
lbuf
[
sizeof
(
lbuf
)
-
1
]
=
0
;
...
@@ -889,7 +889,7 @@ static ssize_t data_write(struct file *filp, const char __user *buf,
...
@@ -889,7 +889,7 @@ static ssize_t data_write(struct file *filp, const char __user *buf,
return
-
ENOMEM
;
return
-
ENOMEM
;
if
(
copy_from_user
(
ptr
,
buf
,
count
))
{
if
(
copy_from_user
(
ptr
,
buf
,
count
))
{
err
=
-
E
PERM
;
err
=
-
E
FAULT
;
goto
out
;
goto
out
;
}
}
dbg
->
in_msg
=
ptr
;
dbg
->
in_msg
=
ptr
;
...
@@ -919,7 +919,7 @@ static ssize_t data_read(struct file *filp, char __user *buf, size_t count,
...
@@ -919,7 +919,7 @@ static ssize_t data_read(struct file *filp, char __user *buf, size_t count,
copy
=
min_t
(
int
,
count
,
dbg
->
outlen
);
copy
=
min_t
(
int
,
count
,
dbg
->
outlen
);
if
(
copy_to_user
(
buf
,
dbg
->
out_msg
,
copy
))
if
(
copy_to_user
(
buf
,
dbg
->
out_msg
,
copy
))
return
-
E
PERM
;
return
-
E
FAULT
;
*
pos
+=
copy
;
*
pos
+=
copy
;
...
@@ -949,7 +949,7 @@ static ssize_t outlen_read(struct file *filp, char __user *buf, size_t count,
...
@@ -949,7 +949,7 @@ static ssize_t outlen_read(struct file *filp, char __user *buf, size_t count,
return
err
;
return
err
;
if
(
copy_to_user
(
buf
,
&
outlen
,
err
))
if
(
copy_to_user
(
buf
,
&
outlen
,
err
))
return
-
E
PERM
;
return
-
E
FAULT
;
*
pos
+=
err
;
*
pos
+=
err
;
...
@@ -974,7 +974,7 @@ static ssize_t outlen_write(struct file *filp, const char __user *buf,
...
@@ -974,7 +974,7 @@ static ssize_t outlen_write(struct file *filp, const char __user *buf,
dbg
->
outlen
=
0
;
dbg
->
outlen
=
0
;
if
(
copy_from_user
(
outlen_str
,
buf
,
count
))
if
(
copy_from_user
(
outlen_str
,
buf
,
count
))
return
-
E
PERM
;
return
-
E
FAULT
;
outlen_str
[
7
]
=
0
;
outlen_str
[
7
]
=
0
;
...
...
drivers/net/ethernet/mellanox/mlx5/core/debugfs.c
浏览文件 @
e04abfa2
...
@@ -148,7 +148,6 @@ static ssize_t average_read(struct file *filp, char __user *buf, size_t count,
...
@@ -148,7 +148,6 @@ static ssize_t average_read(struct file *filp, char __user *buf, size_t count,
struct
mlx5_cmd_stats
*
stats
;
struct
mlx5_cmd_stats
*
stats
;
u64
field
=
0
;
u64
field
=
0
;
int
ret
;
int
ret
;
int
err
;
char
tbuf
[
22
];
char
tbuf
[
22
];
if
(
*
pos
)
if
(
*
pos
)
...
@@ -161,9 +160,8 @@ static ssize_t average_read(struct file *filp, char __user *buf, size_t count,
...
@@ -161,9 +160,8 @@ static ssize_t average_read(struct file *filp, char __user *buf, size_t count,
spin_unlock
(
&
stats
->
lock
);
spin_unlock
(
&
stats
->
lock
);
ret
=
snprintf
(
tbuf
,
sizeof
(
tbuf
),
"%llu
\n
"
,
field
);
ret
=
snprintf
(
tbuf
,
sizeof
(
tbuf
),
"%llu
\n
"
,
field
);
if
(
ret
>
0
)
{
if
(
ret
>
0
)
{
err
=
copy_to_user
(
buf
,
tbuf
,
ret
);
if
(
copy_to_user
(
buf
,
tbuf
,
ret
))
if
(
err
)
return
-
EFAULT
;
return
err
;
}
}
*
pos
+=
ret
;
*
pos
+=
ret
;
...
@@ -418,7 +416,6 @@ static ssize_t dbg_read(struct file *filp, char __user *buf, size_t count,
...
@@ -418,7 +416,6 @@ static ssize_t dbg_read(struct file *filp, char __user *buf, size_t count,
char
tbuf
[
18
];
char
tbuf
[
18
];
u64
field
;
u64
field
;
int
ret
;
int
ret
;
int
err
;
if
(
*
pos
)
if
(
*
pos
)
return
0
;
return
0
;
...
@@ -445,9 +442,8 @@ static ssize_t dbg_read(struct file *filp, char __user *buf, size_t count,
...
@@ -445,9 +442,8 @@ static ssize_t dbg_read(struct file *filp, char __user *buf, size_t count,
ret
=
snprintf
(
tbuf
,
sizeof
(
tbuf
),
"0x%llx
\n
"
,
field
);
ret
=
snprintf
(
tbuf
,
sizeof
(
tbuf
),
"0x%llx
\n
"
,
field
);
if
(
ret
>
0
)
{
if
(
ret
>
0
)
{
err
=
copy_to_user
(
buf
,
tbuf
,
ret
);
if
(
copy_to_user
(
buf
,
tbuf
,
ret
))
if
(
err
)
return
-
EFAULT
;
return
err
;
}
}
*
pos
+=
ret
;
*
pos
+=
ret
;
...
...
drivers/net/ethernet/mellanox/mlx5/core/main.c
浏览文件 @
e04abfa2
...
@@ -212,7 +212,7 @@ static int handle_hca_cap(struct mlx5_core_dev *dev)
...
@@ -212,7 +212,7 @@ static int handle_hca_cap(struct mlx5_core_dev *dev)
set_ctx
->
hca_cap
.
log_max_qp
=
dev
->
profile
->
log_max_qp
;
set_ctx
->
hca_cap
.
log_max_qp
=
dev
->
profile
->
log_max_qp
;
memset
(
&
set_out
,
0
,
sizeof
(
set_out
));
memset
(
&
set_out
,
0
,
sizeof
(
set_out
));
set_ctx
->
hca_cap
.
uar_page_sz
=
cpu_to_be16
(
PAGE_SHIFT
-
12
);
set_ctx
->
hca_cap
.
log_
uar_page_sz
=
cpu_to_be16
(
PAGE_SHIFT
-
12
);
set_ctx
->
hdr
.
opcode
=
cpu_to_be16
(
MLX5_CMD_OP_SET_HCA_CAP
);
set_ctx
->
hdr
.
opcode
=
cpu_to_be16
(
MLX5_CMD_OP_SET_HCA_CAP
);
err
=
mlx5_cmd_exec
(
dev
,
set_ctx
,
sizeof
(
*
set_ctx
),
err
=
mlx5_cmd_exec
(
dev
,
set_ctx
,
sizeof
(
*
set_ctx
),
&
set_out
,
sizeof
(
set_out
));
&
set_out
,
sizeof
(
set_out
));
...
...
include/linux/mlx5/device.h
浏览文件 @
e04abfa2
...
@@ -317,8 +317,8 @@ struct mlx5_hca_cap {
...
@@ -317,8 +317,8 @@ struct mlx5_hca_cap {
u8
log_max_pd
;
u8
log_max_pd
;
u8
rsvd25
;
u8
rsvd25
;
u8
log_max_xrcd
;
u8
log_max_xrcd
;
u8
rsvd26
[
4
0
];
u8
rsvd26
[
4
2
];
__be
32
uar_page_sz
;
__be
16
log_
uar_page_sz
;
u8
rsvd27
[
28
];
u8
rsvd27
[
28
];
u8
log_msx_atomic_size_qp
;
u8
log_msx_atomic_size_qp
;
u8
rsvd28
[
2
];
u8
rsvd28
[
2
];
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录