Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
4d8b3d34
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看板
提交
4d8b3d34
编写于
5月 23, 2016
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nouveau: size is u64 everywhere
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
605f9ccd
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
21 addition
and
19 deletion
+21
-19
drivers/gpu/drm/nouveau/nouveau_bo.c
drivers/gpu/drm/nouveau/nouveau_bo.c
+18
-16
drivers/gpu/drm/nouveau/nouveau_bo.h
drivers/gpu/drm/nouveau/nouveau_bo.h
+1
-1
drivers/gpu/drm/nouveau/nouveau_gem.c
drivers/gpu/drm/nouveau/nouveau_gem.c
+1
-1
drivers/gpu/drm/nouveau/nouveau_gem.h
drivers/gpu/drm/nouveau/nouveau_gem.h
+1
-1
未找到文件。
drivers/gpu/drm/nouveau/nouveau_bo.c
浏览文件 @
4d8b3d34
...
...
@@ -139,9 +139,17 @@ nouveau_bo_del_ttm(struct ttm_buffer_object *bo)
kfree
(
nvbo
);
}
static
inline
u64
roundup_64
(
u64
x
,
u32
y
)
{
x
+=
y
-
1
;
do_div
(
x
,
y
);
return
x
*
y
;
}
static
void
nouveau_bo_fixup_align
(
struct
nouveau_bo
*
nvbo
,
u32
flags
,
int
*
align
,
int
*
size
)
int
*
align
,
u64
*
size
)
{
struct
nouveau_drm
*
drm
=
nouveau_bdev
(
nvbo
->
bo
.
bdev
);
struct
nvif_device
*
device
=
&
drm
->
client
.
device
;
...
...
@@ -150,31 +158,31 @@ nouveau_bo_fixup_align(struct nouveau_bo *nvbo, u32 flags,
if
(
nvbo
->
tile_mode
)
{
if
(
device
->
info
.
chipset
>=
0x40
)
{
*
align
=
65536
;
*
size
=
roundup
(
*
size
,
64
*
nvbo
->
tile_mode
);
*
size
=
roundup
_64
(
*
size
,
64
*
nvbo
->
tile_mode
);
}
else
if
(
device
->
info
.
chipset
>=
0x30
)
{
*
align
=
32768
;
*
size
=
roundup
(
*
size
,
64
*
nvbo
->
tile_mode
);
*
size
=
roundup
_64
(
*
size
,
64
*
nvbo
->
tile_mode
);
}
else
if
(
device
->
info
.
chipset
>=
0x20
)
{
*
align
=
16384
;
*
size
=
roundup
(
*
size
,
64
*
nvbo
->
tile_mode
);
*
size
=
roundup
_64
(
*
size
,
64
*
nvbo
->
tile_mode
);
}
else
if
(
device
->
info
.
chipset
>=
0x10
)
{
*
align
=
16384
;
*
size
=
roundup
(
*
size
,
32
*
nvbo
->
tile_mode
);
*
size
=
roundup
_64
(
*
size
,
32
*
nvbo
->
tile_mode
);
}
}
}
else
{
*
size
=
roundup
(
*
size
,
(
1
<<
nvbo
->
page_shift
));
*
size
=
roundup
_64
(
*
size
,
(
1
<<
nvbo
->
page_shift
));
*
align
=
max
((
1
<<
nvbo
->
page_shift
),
*
align
);
}
*
size
=
roundup
(
*
size
,
PAGE_SIZE
);
*
size
=
roundup
_64
(
*
size
,
PAGE_SIZE
);
}
int
nouveau_bo_new
(
struct
nouveau_cli
*
cli
,
int
size
,
int
align
,
nouveau_bo_new
(
struct
nouveau_cli
*
cli
,
u64
size
,
int
align
,
uint32_t
flags
,
uint32_t
tile_mode
,
uint32_t
tile_flags
,
struct
sg_table
*
sg
,
struct
reservation_object
*
robj
,
struct
nouveau_bo
**
pnvbo
)
...
...
@@ -184,15 +192,9 @@ nouveau_bo_new(struct nouveau_cli *cli, int size, int align,
size_t
acc_size
;
int
ret
;
int
type
=
ttm_bo_type_device
;
int
lpg_shift
=
12
;
int
max_size
;
if
(
drm
->
client
.
vm
)
lpg_shift
=
drm
->
client
.
vm
->
mmu
->
lpg_shift
;
max_size
=
INT_MAX
&
~
((
1
<<
lpg_shift
)
-
1
);
if
(
size
<=
0
||
size
>
max_
size
)
{
NV_WARN
(
drm
,
"skipped size %
x
\n
"
,
(
u32
)
size
);
if
(
!
size
)
{
NV_WARN
(
drm
,
"skipped size %
016llx
\n
"
,
size
);
return
-
EINVAL
;
}
...
...
drivers/gpu/drm/nouveau/nouveau_bo.h
浏览文件 @
4d8b3d34
...
...
@@ -71,7 +71,7 @@ nouveau_bo_ref(struct nouveau_bo *ref, struct nouveau_bo **pnvbo)
extern
struct
ttm_bo_driver
nouveau_bo_driver
;
void
nouveau_bo_move_init
(
struct
nouveau_drm
*
);
int
nouveau_bo_new
(
struct
nouveau_cli
*
,
int
size
,
int
align
,
u32
flags
,
int
nouveau_bo_new
(
struct
nouveau_cli
*
,
u64
size
,
int
align
,
u32
flags
,
u32
tile_mode
,
u32
tile_flags
,
struct
sg_table
*
sg
,
struct
reservation_object
*
robj
,
struct
nouveau_bo
**
);
...
...
drivers/gpu/drm/nouveau/nouveau_gem.c
浏览文件 @
4d8b3d34
...
...
@@ -175,7 +175,7 @@ nouveau_gem_object_close(struct drm_gem_object *gem, struct drm_file *file_priv)
}
int
nouveau_gem_new
(
struct
nouveau_cli
*
cli
,
int
size
,
int
align
,
uint32_t
domain
,
nouveau_gem_new
(
struct
nouveau_cli
*
cli
,
u64
size
,
int
align
,
uint32_t
domain
,
uint32_t
tile_mode
,
uint32_t
tile_flags
,
struct
nouveau_bo
**
pnvbo
)
{
...
...
drivers/gpu/drm/nouveau/nouveau_gem.h
浏览文件 @
4d8b3d34
...
...
@@ -16,7 +16,7 @@ nouveau_gem_object(struct drm_gem_object *gem)
}
/* nouveau_gem.c */
extern
int
nouveau_gem_new
(
struct
nouveau_cli
*
,
int
size
,
int
align
,
extern
int
nouveau_gem_new
(
struct
nouveau_cli
*
,
u64
size
,
int
align
,
uint32_t
domain
,
uint32_t
tile_mode
,
uint32_t
tile_flags
,
struct
nouveau_bo
**
);
extern
void
nouveau_gem_object_del
(
struct
drm_gem_object
*
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录