引用:
作者NEAL
那和你使用的Composite Manager也有關係,我自己的經驗是GNOME+Xorg蠻常出這種問題,把Xorg換成Wayland就好很多。
你可以考慮改用Intel釋出的Driver看看:
https://01.org/linuxgraphics/downloads/stack
我自己是用Ubuntu,之前也有用過一陣子Arch,但覺得它要安裝新套件時,最好要連帶整個系統的套件都upgrade過,不然會掛掉,這點讓我很煩,所以還是回到Debian族系使用。
|
事實上我有參考過網路上的 Haswell GPU Hang Patch 分析過他的原始碼 新版的說已經修復,但裝起來還是一樣。
GPU Hang 補釘是補在 Linux 核心的原始碼 DRM 部份
我也有參考 Intel 手冊 追蹤起來 會不會是跟 GPU 的 GraphicsEngine 有關
從 CPU Hang 的系統訊息追蹤 問題好像來自這一段
代碼:
static enum intel_engine_hangcheck_action
engine_stuck(struct intel_engine_cs *engine, u64 acthd)
{
struct drm_i915_private *dev_priv = engine->i915;
enum intel_engine_hangcheck_action ha;
u32 tmp;
ha = head_stuck(engine, acthd);
if (ha != HANGCHECK_HUNG)
return ha;
if (IS_GEN2(dev_priv))
return HANGCHECK_HUNG;
/* Is the chip hanging on a WAIT_FOR_EVENT?
* If so we can simply poke the RB_WAIT bit
* and break the hang. This should work on
* all but the second generation chipsets.
*/
tmp = I915_READ_CTL(engine);
if (tmp & RING_WAIT) {
i915_handle_error(dev_priv, 0,
"Kicking stuck wait on %s",
engine->name);
I915_WRITE_CTL(engine, tmp);
return HANGCHECK_KICK;
}
if (INTEL_GEN(dev_priv) >= 6 && tmp & RING_WAIT_SEMAPHORE) {
switch (semaphore_passed(engine)) {
default:
return HANGCHECK_HUNG;
case 1:
i915_handle_error(dev_priv, 0,
"Kicking stuck semaphore on %s",
engine->name);
I915_WRITE_CTL(engine, tmp);
return HANGCHECK_KICK;
case 0:
return HANGCHECK_WAIT;
}
}
return HANGCHECK_HUNG;
}
RING_WAIT RING 到底在等什麼 實在是搞不清楚
Google 也沒有一個詳細的說明。
跟我同系列的 有人用GT3 就沒問題 GT1 就有問題
我的是筆電想換也只能整台換
頓時覺的 Intel Pentium 跟 Celeron 真的是爛貨
