Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
f122a892
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f122a892
编写于
6月 22, 2009
作者:
M
Mauro Carvalho Chehab
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
i7core_edac: Show read/write virtual/physical channel association
Signed-off-by:
N
Mauro Carvalho Chehab
<
mchehab@redhat.com
>
上级
8f331907
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
27 addition
and
6 deletion
+27
-6
drivers/edac/i7core_edac.c
drivers/edac/i7core_edac.c
+27
-6
未找到文件。
drivers/edac/i7core_edac.c
浏览文件 @
f122a892
...
...
@@ -68,6 +68,10 @@
#define QUAD_RANK_PRESENT (1 << 22)
#define REGISTERED_DIMM (1 << 15)
#define MC_CHANNEL_MAPPER 0x60
#define RDLCH(r, ch) ((((r) >> (3 + (ch * 6))) & 0x07) - 1)
#define WRLCH(r, ch) ((((r) >> (ch * 6)) & 0x07) - 1)
#define MC_CHANNEL_RANK_PRESENT 0x7c
#define RANK_PRESENT_MASK 0xffff
...
...
@@ -100,6 +104,8 @@
#define NUMCOL_MASK 3
#define NUMCOL(x) ((x) & NUMCOL_MASK)
#define MC_RANK_PRESENT 0x7c
#define MC_SAG_CH_0 0x80
#define MC_SAG_CH_1 0x84
#define MC_SAG_CH_2 0x88
...
...
@@ -135,6 +141,7 @@ struct i7core_info {
u32
mc_control
;
u32
mc_status
;
u32
max_dod
;
u32
ch_map
;
};
...
...
@@ -289,9 +296,19 @@ static int get_dimm_config(struct mem_ctl_info *mci)
if
(
!
pvt
->
pci_mcr
[
0
])
return
-
ENODEV
;
pci_read_config_dword
(
pvt
->
pci_mcr
[
0
],
MC_CONTROL
,
&
pvt
->
info
.
mc_control
);
pci_read_config_dword
(
pvt
->
pci_mcr
[
0
],
MC_STATUS
,
&
pvt
->
info
.
mc_status
);
pci_read_config_dword
(
pvt
->
pci_mcr
[
0
],
MC_MAX_DOD
,
&
pvt
->
info
.
max_dod
);
/* Device 3 function 0 reads */
pci_read_config_dword
(
pvt
->
pci_mcr
[
0
],
MC_CONTROL
,
&
pvt
->
info
.
mc_control
);
pci_read_config_dword
(
pvt
->
pci_mcr
[
0
],
MC_STATUS
,
&
pvt
->
info
.
mc_status
);
pci_read_config_dword
(
pvt
->
pci_mcr
[
0
],
MC_MAX_DOD
,
&
pvt
->
info
.
max_dod
);
pci_read_config_dword
(
pvt
->
pci_mcr
[
0
],
MC_CHANNEL_MAPPER
,
&
pvt
->
info
.
ch_map
);
debugf0
(
"MC control=0x%08x status=0x%08x dod=0x%08x map=0x%08x
\n
"
,
pvt
->
info
.
mc_control
,
pvt
->
info
.
mc_status
,
pvt
->
info
.
max_dod
,
pvt
->
info
.
ch_map
);
if
(
ECC_ENABLED
(
pvt
))
debugf0
(
"ECC enabled with x%d SDCC
\n
"
,
ECCx8
(
pvt
)
?
8
:
4
);
...
...
@@ -318,6 +335,7 @@ static int get_dimm_config(struct mem_ctl_info *mci)
continue
;
}
/* Devices 4-6 function 0 */
pci_read_config_dword
(
pvt
->
pci_ch
[
i
][
0
],
MC_CHANNEL_DIMM_INIT_PARAMS
,
&
data
);
...
...
@@ -330,10 +348,13 @@ static int get_dimm_config(struct mem_ctl_info *mci)
else
pvt
->
channel
[
i
].
dimms
=
2
;
debugf0
(
"Channel %d (0x%08x): %d ranks, %d dimms "
"(%sregistered)
\n
"
,
i
,
data
,
debugf0
(
"Ch%d (0x%08x): rd ch %d, wr ch %d, "
"%d ranks, %d %cDIMMs
\n
"
,
i
,
data
,
RDLCH
(
pvt
->
info
.
ch_map
,
i
),
WRLCH
(
pvt
->
info
.
ch_map
,
i
),
pvt
->
channel
[
i
].
ranks
,
pvt
->
channel
[
i
].
dimms
,
(
data
&
REGISTERED_DIMM
)
?
""
:
"un"
);
(
data
&
REGISTERED_DIMM
)
?
'R'
:
'U'
);
}
return
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录