Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
7986f813
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
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看板
提交
7986f813
编写于
12月 11, 2018
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nouveau/mmu/tu104: initial support
New flush method. Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
01e09306
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
129 addition
and
0 deletion
+129
-0
drivers/gpu/drm/nouveau/include/nvkm/subdev/mmu.h
drivers/gpu/drm/nouveau/include/nvkm/subdev/mmu.h
+1
-0
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
+1
-0
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/Kbuild
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/Kbuild
+2
-0
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/tu104.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/tu104.c
+43
-0
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h
+5
-0
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmtu104.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmtu104.c
+77
-0
未找到文件。
drivers/gpu/drm/nouveau/include/nvkm/subdev/mmu.h
浏览文件 @
7986f813
...
...
@@ -130,4 +130,5 @@ int gm20b_mmu_new(struct nvkm_device *, int, struct nvkm_mmu **);
int
gp100_mmu_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_mmu
**
);
int
gp10b_mmu_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_mmu
**
);
int
gv100_mmu_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_mmu
**
);
int
tu104_mmu_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_mmu
**
);
#endif
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
浏览文件 @
7986f813
...
...
@@ -2448,6 +2448,7 @@ nv164_chipset = {
.
imem
=
nv50_instmem_new
,
.
ltc
=
gp102_ltc_new
,
.
mc
=
tu104_mc_new
,
.
mmu
=
tu104_mmu_new
,
.
pci
=
gp100_pci_new
,
.
timer
=
gk20a_timer_new
,
.
top
=
gk104_top_new
,
...
...
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/Kbuild
浏览文件 @
7986f813
...
...
@@ -13,6 +13,7 @@ nvkm-y += nvkm/subdev/mmu/gm20b.o
nvkm-y += nvkm/subdev/mmu/gp100.o
nvkm-y += nvkm/subdev/mmu/gp10b.o
nvkm-y += nvkm/subdev/mmu/gv100.o
nvkm-y += nvkm/subdev/mmu/tu104.o
nvkm-y += nvkm/subdev/mmu/mem.o
nvkm-y += nvkm/subdev/mmu/memnv04.o
...
...
@@ -33,6 +34,7 @@ nvkm-y += nvkm/subdev/mmu/vmmgm20b.o
nvkm-y += nvkm/subdev/mmu/vmmgp100.o
nvkm-y += nvkm/subdev/mmu/vmmgp10b.o
nvkm-y += nvkm/subdev/mmu/vmmgv100.o
nvkm-y += nvkm/subdev/mmu/vmmtu104.o
nvkm-y += nvkm/subdev/mmu/umem.o
nvkm-y += nvkm/subdev/mmu/ummu.o
...
...
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/tu104.c
0 → 100644
浏览文件 @
7986f813
/*
* Copyright 2018 Red Hat Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#include "mem.h"
#include "vmm.h"
#include <core/option.h>
#include <nvif/class.h>
static
const
struct
nvkm_mmu_func
tu104_mmu
=
{
.
dma_bits
=
47
,
.
mmu
=
{{
-
1
,
-
1
,
NVIF_CLASS_MMU_GF100
}},
.
mem
=
{{
-
1
,
0
,
NVIF_CLASS_MEM_GF100
},
gf100_mem_new
,
gf100_mem_map
},
.
vmm
=
{{
-
1
,
0
,
NVIF_CLASS_VMM_GP100
},
tu104_vmm_new
},
.
kind
=
gm200_mmu_kind
,
.
kind_sys
=
true
,
};
int
tu104_mmu_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_mmu
**
pmmu
)
{
return
nvkm_mmu_new_
(
&
tu104_mmu
,
device
,
index
,
pmmu
);
}
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h
浏览文件 @
7986f813
...
...
@@ -201,6 +201,8 @@ int gp100_vmm_join(struct nvkm_vmm *, struct nvkm_memory *);
int
gp100_vmm_valid
(
struct
nvkm_vmm
*
,
void
*
,
u32
,
struct
nvkm_vmm_map
*
);
void
gp100_vmm_flush
(
struct
nvkm_vmm
*
,
int
);
int
gv100_vmm_join
(
struct
nvkm_vmm
*
,
struct
nvkm_memory
*
);
int
nv04_vmm_new
(
struct
nvkm_mmu
*
,
u64
,
u64
,
void
*
,
u32
,
struct
lock_class_key
*
,
const
char
*
,
struct
nvkm_vmm
**
);
int
nv41_vmm_new
(
struct
nvkm_mmu
*
,
u64
,
u64
,
void
*
,
u32
,
...
...
@@ -240,6 +242,9 @@ int gp10b_vmm_new(struct nvkm_mmu *, u64, u64, void *, u32,
int
gv100_vmm_new
(
struct
nvkm_mmu
*
,
u64
,
u64
,
void
*
,
u32
,
struct
lock_class_key
*
,
const
char
*
,
struct
nvkm_vmm
**
);
int
tu104_vmm_new
(
struct
nvkm_mmu
*
,
u64
,
u64
,
void
*
,
u32
,
struct
lock_class_key
*
,
const
char
*
,
struct
nvkm_vmm
**
);
#define VMM_PRINT(l,v,p,f,a...) do { \
struct nvkm_vmm *_vmm = (v); \
...
...
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmtu104.c
0 → 100644
浏览文件 @
7986f813
/*
* Copyright 2018 Red Hat Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#include "vmm.h"
#include <subdev/timer.h>
static
void
tu104_vmm_flush
(
struct
nvkm_vmm
*
vmm
,
int
depth
)
{
struct
nvkm_subdev
*
subdev
=
&
vmm
->
mmu
->
subdev
;
struct
nvkm_device
*
device
=
subdev
->
device
;
u32
type
=
depth
<<
24
;
/*XXX: not confirmed */
type
=
0x00000001
;
/* PAGE_ALL */
if
(
atomic_read
(
&
vmm
->
engref
[
NVKM_SUBDEV_BAR
]))
type
|=
0x00000004
;
/* HUB_ONLY */
mutex_lock
(
&
subdev
->
mutex
);
nvkm_wr32
(
device
,
0xb830a0
,
vmm
->
pd
->
pt
[
0
]
->
addr
>>
8
);
nvkm_wr32
(
device
,
0xb830a4
,
0x00000000
);
nvkm_wr32
(
device
,
0x100e68
,
0x00000000
);
nvkm_wr32
(
device
,
0xb830b0
,
0x80000000
|
type
);
nvkm_msec
(
device
,
2000
,
if
(
!
(
nvkm_rd32
(
device
,
0xb830b0
)
&
0x80000000
))
break
;
);
mutex_unlock
(
&
subdev
->
mutex
);
}
static
const
struct
nvkm_vmm_func
tu104_vmm
=
{
.
join
=
gv100_vmm_join
,
.
part
=
gf100_vmm_part
,
.
aper
=
gf100_vmm_aper
,
.
valid
=
gp100_vmm_valid
,
.
flush
=
tu104_vmm_flush
,
.
page
=
{
{
47
,
&
gp100_vmm_desc_16
[
4
],
NVKM_VMM_PAGE_Sxxx
},
{
38
,
&
gp100_vmm_desc_16
[
3
],
NVKM_VMM_PAGE_Sxxx
},
{
29
,
&
gp100_vmm_desc_16
[
2
],
NVKM_VMM_PAGE_Sxxx
},
{
21
,
&
gp100_vmm_desc_16
[
1
],
NVKM_VMM_PAGE_SVxC
},
{
16
,
&
gp100_vmm_desc_16
[
0
],
NVKM_VMM_PAGE_SVxC
},
{
12
,
&
gp100_vmm_desc_12
[
0
],
NVKM_VMM_PAGE_SVHx
},
{}
}
};
int
tu104_vmm_new
(
struct
nvkm_mmu
*
mmu
,
u64
addr
,
u64
size
,
void
*
argv
,
u32
argc
,
struct
lock_class_key
*
key
,
const
char
*
name
,
struct
nvkm_vmm
**
pvmm
)
{
return
nv04_vmm_new_
(
&
tu104_vmm
,
mmu
,
0
,
addr
,
size
,
argv
,
argc
,
key
,
name
,
pvmm
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录