Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
b2223497
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看板
提交
b2223497
编写于
10月 27, 2010
作者:
C
Chris Wilson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/i915: Remove the confusing global waiting/irq seqno
Signed-off-by:
N
Chris Wilson
<
chris@chris-wilson.co.uk
>
上级
c2c347a9
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
26 addition
and
42 deletion
+26
-42
drivers/gpu/drm/i915/i915_debugfs.c
drivers/gpu/drm/i915/i915_debugfs.c
+19
-25
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_drv.h
+0
-10
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_gem.c
+2
-2
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/i915_irq.c
+3
-3
drivers/gpu/drm/i915/intel_ringbuffer.h
drivers/gpu/drm/i915/intel_ringbuffer.h
+2
-2
未找到文件。
drivers/gpu/drm/i915/i915_debugfs.c
浏览文件 @
b2223497
...
...
@@ -319,6 +319,19 @@ static int i915_gem_request_info(struct seq_file *m, void *data)
return
0
;
}
static
void
i915_ring_seqno_info
(
struct
seq_file
*
m
,
struct
intel_ring_buffer
*
ring
)
{
if
(
ring
->
get_seqno
)
{
seq_printf
(
m
,
"Current sequence (%s): %d
\n
"
,
ring
->
name
,
ring
->
get_seqno
(
ring
));
seq_printf
(
m
,
"Waiter sequence (%s): %d
\n
"
,
ring
->
name
,
ring
->
waiting_seqno
);
seq_printf
(
m
,
"IRQ sequence (%s): %d
\n
"
,
ring
->
name
,
ring
->
irq_seqno
);
}
}
static
int
i915_gem_seqno_info
(
struct
seq_file
*
m
,
void
*
data
)
{
struct
drm_info_node
*
node
=
(
struct
drm_info_node
*
)
m
->
private
;
...
...
@@ -330,15 +343,9 @@ static int i915_gem_seqno_info(struct seq_file *m, void *data)
if
(
ret
)
return
ret
;
if
(
dev_priv
->
render_ring
.
status_page
.
page_addr
!=
NULL
)
{
seq_printf
(
m
,
"Current sequence: %d
\n
"
,
dev_priv
->
render_ring
.
get_seqno
(
&
dev_priv
->
render_ring
));
}
else
{
seq_printf
(
m
,
"Current sequence: hws uninitialized
\n
"
);
}
seq_printf
(
m
,
"Waiter sequence: %d
\n
"
,
dev_priv
->
mm
.
waiting_gem_seqno
);
seq_printf
(
m
,
"IRQ sequence: %d
\n
"
,
dev_priv
->
mm
.
irq_gem_seqno
);
i915_ring_seqno_info
(
m
,
&
dev_priv
->
render_ring
);
i915_ring_seqno_info
(
m
,
&
dev_priv
->
bsd_ring
);
i915_ring_seqno_info
(
m
,
&
dev_priv
->
blt_ring
);
mutex_unlock
(
&
dev
->
struct_mutex
);
...
...
@@ -390,22 +397,9 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
}
seq_printf
(
m
,
"Interrupts received: %d
\n
"
,
atomic_read
(
&
dev_priv
->
irq_received
));
if
(
dev_priv
->
render_ring
.
get_seqno
)
{
seq_printf
(
m
,
"Current sequence (render): %d
\n
"
,
dev_priv
->
render_ring
.
get_seqno
(
&
dev_priv
->
render_ring
));
}
if
(
dev_priv
->
bsd_ring
.
get_seqno
)
{
seq_printf
(
m
,
"Current sequence (BSD): %d
\n
"
,
dev_priv
->
bsd_ring
.
get_seqno
(
&
dev_priv
->
bsd_ring
));
}
if
(
dev_priv
->
blt_ring
.
get_seqno
)
{
seq_printf
(
m
,
"Current sequence (BLT): %d
\n
"
,
dev_priv
->
blt_ring
.
get_seqno
(
&
dev_priv
->
blt_ring
));
}
seq_printf
(
m
,
"Waiter sequence: %d
\n
"
,
dev_priv
->
mm
.
waiting_gem_seqno
);
seq_printf
(
m
,
"IRQ sequence: %d
\n
"
,
dev_priv
->
mm
.
irq_gem_seqno
);
i915_ring_seqno_info
(
m
,
&
dev_priv
->
render_ring
);
i915_ring_seqno_info
(
m
,
&
dev_priv
->
bsd_ring
);
i915_ring_seqno_info
(
m
,
&
dev_priv
->
blt_ring
);
mutex_unlock
(
&
dev
->
struct_mutex
);
return
0
;
...
...
drivers/gpu/drm/i915/i915_drv.h
浏览文件 @
b2223497
...
...
@@ -608,16 +608,6 @@ typedef struct drm_i915_private {
*/
struct
delayed_work
retire_work
;
/**
* Waiting sequence number, if any
*/
uint32_t
waiting_gem_seqno
;
/**
* Last seq seen at irq time
*/
uint32_t
irq_gem_seqno
;
/**
* Flag if the X Server, and thus DRM, is not currently in
* control of the device.
...
...
drivers/gpu/drm/i915/i915_gem.c
浏览文件 @
b2223497
...
...
@@ -1984,7 +1984,7 @@ i915_do_wait_request(struct drm_device *dev, uint32_t seqno,
trace_i915_gem_request_wait_begin
(
dev
,
seqno
);
ring
->
waiting_
gem_
seqno
=
seqno
;
ring
->
waiting_seqno
=
seqno
;
ring
->
user_irq_get
(
ring
);
if
(
interruptible
)
ret
=
wait_event_interruptible
(
ring
->
irq_queue
,
...
...
@@ -1996,7 +1996,7 @@ i915_do_wait_request(struct drm_device *dev, uint32_t seqno,
||
atomic_read
(
&
dev_priv
->
mm
.
wedged
));
ring
->
user_irq_put
(
ring
);
ring
->
waiting_
gem_
seqno
=
0
;
ring
->
waiting_seqno
=
0
;
trace_i915_gem_request_wait_end
(
dev
,
seqno
);
}
...
...
drivers/gpu/drm/i915/i915_irq.c
浏览文件 @
b2223497
...
...
@@ -298,7 +298,7 @@ static void notify_ring(struct drm_device *dev,
{
struct
drm_i915_private
*
dev_priv
=
dev
->
dev_private
;
u32
seqno
=
ring
->
get_seqno
(
ring
);
ring
->
irq_
gem_
seqno
=
seqno
;
ring
->
irq_seqno
=
seqno
;
trace_i915_gem_request_complete
(
dev
,
seqno
);
wake_up_all
(
&
ring
->
irq_queue
);
dev_priv
->
hangcheck_count
=
0
;
...
...
@@ -1319,10 +1319,10 @@ static bool i915_hangcheck_ring_idle(struct intel_ring_buffer *ring, bool *err)
if
(
list_empty
(
&
ring
->
request_list
)
||
i915_seqno_passed
(
ring
->
get_seqno
(
ring
),
ring_last_seqno
(
ring
)))
{
/* Issue a wake-up to catch stuck h/w. */
if
(
ring
->
waiting_
gem_
seqno
&&
waitqueue_active
(
&
ring
->
irq_queue
))
{
if
(
ring
->
waiting_seqno
&&
waitqueue_active
(
&
ring
->
irq_queue
))
{
DRM_ERROR
(
"Hangcheck timer elapsed... %s idle [waiting on %d, at %d], missed IRQ?
\n
"
,
ring
->
name
,
ring
->
waiting_
gem_
seqno
,
ring
->
waiting_seqno
,
ring
->
get_seqno
(
ring
));
wake_up_all
(
&
ring
->
irq_queue
);
*
err
=
true
;
...
...
drivers/gpu/drm/i915/intel_ringbuffer.h
浏览文件 @
b2223497
...
...
@@ -35,8 +35,8 @@ struct intel_ring_buffer {
int
size
;
struct
intel_hw_status_page
status_page
;
u32
irq_
gem_
seqno
;
/* last seq seem at irq time */
u32
waiting_
gem_
seqno
;
u32
irq_seqno
;
/* last seq seem at irq time */
u32
waiting_seqno
;
int
user_irq_refcount
;
void
(
*
user_irq_get
)(
struct
intel_ring_buffer
*
ring
);
void
(
*
user_irq_put
)(
struct
intel_ring_buffer
*
ring
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录