Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
0ab36de2
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
0ab36de2
编写于
6月 28, 2009
作者:
D
David Woodhouse
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
intel-iommu: Use domain_pfn_mapping() in __intel_map_single()
Signed-off-by:
N
David Woodhouse
<
David.Woodhouse@intel.com
>
上级
61df7443
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
10 deletion
+8
-10
drivers/pci/intel-iommu.c
drivers/pci/intel-iommu.c
+8
-10
未找到文件。
drivers/pci/intel-iommu.c
浏览文件 @
0ab36de2
...
...
@@ -2477,14 +2477,12 @@ static dma_addr_t __intel_map_single(struct device *hwdev, phys_addr_t paddr,
return
0
;
iommu
=
domain_get_iommu
(
domain
);
size
=
aligned_size
(
(
u64
)
paddr
,
size
)
;
size
=
aligned_size
(
paddr
,
size
)
>>
VTD_PAGE_SHIFT
;
iova
=
__intel_alloc_iova
(
hwdev
,
domain
,
size
,
pdev
->
dma_mask
);
iova
=
__intel_alloc_iova
(
hwdev
,
domain
,
size
<<
VTD_PAGE_SHIFT
,
pdev
->
dma_mask
);
if
(
!
iova
)
goto
error
;
start_paddr
=
(
phys_addr_t
)
iova
->
pfn_lo
<<
PAGE_SHIFT
;
/*
* Check if DMAR supports zero-length reads on write only
* mappings..
...
...
@@ -2500,20 +2498,20 @@ static dma_addr_t __intel_map_single(struct device *hwdev, phys_addr_t paddr,
* might have two guest_addr mapping to the same host paddr, but this
* is not a big problem
*/
ret
=
domain_page_mapping
(
domain
,
start_paddr
,
((
u64
)
paddr
)
&
PHYSICAL_PAGE_MASK
,
size
,
prot
);
ret
=
domain_pfn_mapping
(
domain
,
mm_to_dma_pfn
(
iova
->
pfn_lo
),
paddr
>>
VTD_PAGE_SHIFT
,
size
,
prot
);
if
(
ret
)
goto
error
;
start_paddr
=
(
phys_addr_t
)
iova
->
pfn_lo
<<
PAGE_SHIFT
;
/* it's a non-present to present mapping. Only flush if caching mode */
if
(
cap_caching_mode
(
iommu
->
cap
))
iommu_flush_iotlb_psi
(
iommu
,
0
,
start_paddr
,
size
>>
VTD_PAGE_SHIFT
);
iommu_flush_iotlb_psi
(
iommu
,
0
,
start_paddr
,
size
);
else
iommu_flush_write_buffer
(
iommu
);
return
start_paddr
+
(
(
u64
)
paddr
&
(
~
PAGE_MASK
));
return
start_paddr
+
(
paddr
&
(
~
PAGE_MASK
));
error:
if
(
iova
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录