Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
5913c9bf
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
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看板
提交
5913c9bf
编写于
3月 09, 2014
作者:
D
David Woodhouse
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
iommu/vt-d: Make domain_add_dev_info() take struct device
Signed-off-by:
N
David Woodhouse
<
David.Woodhouse@intel.com
>
上级
bf9c9eda
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
9 deletion
+8
-9
drivers/iommu/intel-iommu.c
drivers/iommu/intel-iommu.c
+8
-9
未找到文件。
drivers/iommu/intel-iommu.c
浏览文件 @
5913c9bf
...
@@ -2470,25 +2470,24 @@ static int identity_mapping(struct device *dev)
...
@@ -2470,25 +2470,24 @@ static int identity_mapping(struct device *dev)
}
}
static
int
domain_add_dev_info
(
struct
dmar_domain
*
domain
,
static
int
domain_add_dev_info
(
struct
dmar_domain
*
domain
,
struct
pci_dev
*
pdev
,
struct
device
*
dev
,
int
translation
)
int
translation
)
{
{
struct
dmar_domain
*
ndomain
;
struct
dmar_domain
*
ndomain
;
struct
intel_iommu
*
iommu
;
struct
intel_iommu
*
iommu
;
u8
bus
,
devfn
;
u8
bus
,
devfn
;
int
ret
;
int
ret
;
iommu
=
device_to_iommu
(
&
pdev
->
dev
,
&
bus
,
&
devfn
);
iommu
=
device_to_iommu
(
dev
,
&
bus
,
&
devfn
);
if
(
!
iommu
)
if
(
!
iommu
)
return
-
ENODEV
;
return
-
ENODEV
;
ndomain
=
dmar_insert_dev_info
(
iommu
,
bus
,
devfn
,
&
pdev
->
dev
,
domain
);
ndomain
=
dmar_insert_dev_info
(
iommu
,
bus
,
devfn
,
dev
,
domain
);
if
(
ndomain
!=
domain
)
if
(
ndomain
!=
domain
)
return
-
EBUSY
;
return
-
EBUSY
;
ret
=
domain_context_mapping
(
domain
,
&
pdev
->
dev
,
translation
);
ret
=
domain_context_mapping
(
domain
,
dev
,
translation
);
if
(
ret
)
{
if
(
ret
)
{
domain_remove_one_dev_info
(
domain
,
&
pdev
->
dev
);
domain_remove_one_dev_info
(
domain
,
dev
);
return
ret
;
return
ret
;
}
}
...
@@ -2607,7 +2606,7 @@ static int __init iommu_prepare_static_identity_mapping(int hw)
...
@@ -2607,7 +2606,7 @@ static int __init iommu_prepare_static_identity_mapping(int hw)
for_each_pci_dev
(
pdev
)
{
for_each_pci_dev
(
pdev
)
{
if
(
iommu_should_identity_map
(
&
pdev
->
dev
,
1
))
{
if
(
iommu_should_identity_map
(
&
pdev
->
dev
,
1
))
{
ret
=
domain_add_dev_info
(
si_domain
,
p
dev
,
ret
=
domain_add_dev_info
(
si_domain
,
&
pdev
->
dev
,
hw
?
CONTEXT_TT_PASS_THROUGH
:
hw
?
CONTEXT_TT_PASS_THROUGH
:
CONTEXT_TT_MULTI_LEVEL
);
CONTEXT_TT_MULTI_LEVEL
);
if
(
ret
)
{
if
(
ret
)
{
...
@@ -2940,7 +2939,7 @@ static int iommu_no_mapping(struct device *dev)
...
@@ -2940,7 +2939,7 @@ static int iommu_no_mapping(struct device *dev)
*/
*/
if
(
iommu_should_identity_map
(
&
pdev
->
dev
,
0
))
{
if
(
iommu_should_identity_map
(
&
pdev
->
dev
,
0
))
{
int
ret
;
int
ret
;
ret
=
domain_add_dev_info
(
si_domain
,
p
dev
,
ret
=
domain_add_dev_info
(
si_domain
,
dev
,
hw_pass_through
?
hw_pass_through
?
CONTEXT_TT_PASS_THROUGH
:
CONTEXT_TT_PASS_THROUGH
:
CONTEXT_TT_MULTI_LEVEL
);
CONTEXT_TT_MULTI_LEVEL
);
...
@@ -4201,7 +4200,7 @@ static int intel_iommu_attach_device(struct iommu_domain *domain,
...
@@ -4201,7 +4200,7 @@ static int intel_iommu_attach_device(struct iommu_domain *domain,
dmar_domain
->
agaw
--
;
dmar_domain
->
agaw
--
;
}
}
return
domain_add_dev_info
(
dmar_domain
,
p
dev
,
CONTEXT_TT_MULTI_LEVEL
);
return
domain_add_dev_info
(
dmar_domain
,
dev
,
CONTEXT_TT_MULTI_LEVEL
);
}
}
static
void
intel_iommu_detach_device
(
struct
iommu_domain
*
domain
,
static
void
intel_iommu_detach_device
(
struct
iommu_domain
*
domain
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录