Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
bfd83aca
K
Kernel
项目概览
openeuler
/
Kernel
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
bfd83aca
编写于
11月 12, 2010
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nv50: enable 4KiB pages for small vram allocations
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
4c136142
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
25 addition
and
19 deletion
+25
-19
drivers/gpu/drm/nouveau/nouveau_bo.c
drivers/gpu/drm/nouveau/nouveau_bo.c
+23
-18
drivers/gpu/drm/nouveau/nouveau_mem.c
drivers/gpu/drm/nouveau/nouveau_mem.c
+2
-1
未找到文件。
drivers/gpu/drm/nouveau/nouveau_bo.c
浏览文件 @
bfd83aca
...
...
@@ -54,39 +54,45 @@ nouveau_bo_del_ttm(struct ttm_buffer_object *bo)
}
static
void
nouveau_bo_fixup_align
(
struct
drm_device
*
dev
,
uint32_t
tile_mode
,
uint32_t
tile_flags
,
int
*
align
,
int
*
size
)
nouveau_bo_fixup_align
(
struct
nouveau_bo
*
nvbo
,
int
*
align
,
int
*
size
,
int
*
page_shift
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
drm_nouveau_private
*
dev_priv
=
nouveau_bdev
(
nvbo
->
bo
.
bdev
)
;
if
(
dev_priv
->
card_type
<
NV_50
)
{
if
(
tile_mode
)
{
if
(
nvbo
->
tile_mode
)
{
if
(
dev_priv
->
chipset
>=
0x40
)
{
*
align
=
65536
;
*
size
=
roundup
(
*
size
,
64
*
tile_mode
);
*
size
=
roundup
(
*
size
,
64
*
nvbo
->
tile_mode
);
}
else
if
(
dev_priv
->
chipset
>=
0x30
)
{
*
align
=
32768
;
*
size
=
roundup
(
*
size
,
64
*
tile_mode
);
*
size
=
roundup
(
*
size
,
64
*
nvbo
->
tile_mode
);
}
else
if
(
dev_priv
->
chipset
>=
0x20
)
{
*
align
=
16384
;
*
size
=
roundup
(
*
size
,
64
*
tile_mode
);
*
size
=
roundup
(
*
size
,
64
*
nvbo
->
tile_mode
);
}
else
if
(
dev_priv
->
chipset
>=
0x10
)
{
*
align
=
16384
;
*
size
=
roundup
(
*
size
,
32
*
tile_mode
);
*
size
=
roundup
(
*
size
,
32
*
nvbo
->
tile_mode
);
}
}
}
else
{
if
(
likely
(
dev_priv
->
chan_vm
))
{
if
(
*
size
>
256
*
1024
)
*
page_shift
=
dev_priv
->
chan_vm
->
lpg_shift
;
else
*
page_shift
=
dev_priv
->
chan_vm
->
spg_shift
;
}
else
{
*
page_shift
=
12
;
}
*
size
=
roundup
(
*
size
,
(
1
<<
*
page_shift
));
*
align
=
max
((
1
<<
*
page_shift
),
*
align
);
}
/* ALIGN works only on powers of two. */
*
size
=
roundup
(
*
size
,
PAGE_SIZE
);
if
(
dev_priv
->
card_type
==
NV_50
)
{
*
size
=
roundup
(
*
size
,
65536
);
*
align
=
max
(
65536
,
*
align
);
}
}
int
...
...
@@ -97,7 +103,7 @@ nouveau_bo_new(struct drm_device *dev, struct nouveau_channel *chan,
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nouveau_bo
*
nvbo
;
int
ret
=
0
;
int
ret
=
0
,
page_shift
=
0
;
nvbo
=
kzalloc
(
sizeof
(
struct
nouveau_bo
),
GFP_KERNEL
);
if
(
!
nvbo
)
...
...
@@ -110,12 +116,11 @@ nouveau_bo_new(struct drm_device *dev, struct nouveau_channel *chan,
nvbo
->
tile_flags
=
tile_flags
;
nvbo
->
bo
.
bdev
=
&
dev_priv
->
ttm
.
bdev
;
nouveau_bo_fixup_align
(
dev
,
tile_mode
,
nouveau_bo_tile_layout
(
nvbo
),
&
align
,
&
size
);
nouveau_bo_fixup_align
(
nvbo
,
&
align
,
&
size
,
&
page_shift
);
align
>>=
PAGE_SHIFT
;
if
(
!
nvbo
->
no_vm
&&
dev_priv
->
chan_vm
)
{
ret
=
nouveau_vm_get
(
dev_priv
->
chan_vm
,
size
,
16
,
ret
=
nouveau_vm_get
(
dev_priv
->
chan_vm
,
size
,
page_shift
,
NV_MEM_ACCESS_RW
,
&
nvbo
->
vma
);
if
(
ret
)
{
kfree
(
nvbo
);
...
...
drivers/gpu/drm/nouveau/nouveau_mem.c
浏览文件 @
bfd83aca
...
...
@@ -715,7 +715,8 @@ nouveau_vram_manager_new(struct ttm_mem_type_manager *man,
struct
nouveau_vram
*
vram
;
int
ret
;
ret
=
nv50_vram_new
(
dev
,
mem
->
num_pages
<<
PAGE_SHIFT
,
65536
,
0
,
ret
=
nv50_vram_new
(
dev
,
mem
->
num_pages
<<
PAGE_SHIFT
,
mem
->
page_alignment
<<
PAGE_SHIFT
,
0
,
(
nvbo
->
tile_flags
>>
8
)
&
0x7f
,
&
vram
);
if
(
ret
)
return
ret
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录