ThinkPad T14 Gen3 のサスペンド問題
[2022-09-23 追記] BIOS アップデート(n3buj05w)で解決した! https://support.lenovo.com/jp/ja/downloads/ds557163-bios-update-utility-bootable-cd-for-windows-11-10-64-bit-thinkpad-t14-gen-3-p14s-gen-3-t16-gen-1-p16s-gen-1
前回の続き
ThinkPad T14 Gen3 の Ubuntu がサスペンドすると正常に復帰しない。
画面が消えたまま。10秒くらい待ってると点灯するけど数秒でまた消える…というのを繰り返し。
X が起動してると何もわからないので、コンソールでサスペンドを試すとこんなメッセージが出てた。
i915 0000:00:02.0: [drm] *ERROR* Failed to write source OUI
i915 0000:00:02.0: [drm] *ERROR* [ENCODER:235:DDI A/PHY A][DPRX] Failed to enable link training
i915 0000:00:02.0: [drm] *ERROR* Failed to read DPCD register 0x92
i915 0000:00:02.0: [drm] *ERROR* Failed to write source OUI
i915 0000:00:02.0: [drm] *ERROR* [ENCODER:235:DDI A/PHY A][DPRX] Failed to enable link training
i915 0000:00:02.0: [drm] *ERROR* Failed to read DPCD register 0x92
i915 0000:00:02.0: [drm] *ERROR* Failed to read DPCD register 0x92
i915 0000:00:02.0: [drm] *ERROR* Failed to write source OUI
〜以下繰り返し〜
一応、Alt + PrtSc + [R] [E] [I] [S] [U] [B]
のアレは効くので電源ボタンを長押ししなくても再起動は可能。
Ubuntu をセットアップしたのが 7/10 で、それ以降時間のあるときにググってみたり、Ubuntu mainlineに新しいカーネルが出てれば試してみたりしたんだけど、解決しなかった。
今日またいつものようにググってたら新しい情報をみつけた。
Ubuntu じゃなくて Arch Linux だけど、ThinkPad T14 Gen3 Intel版でサスペンドが正常に働かずに画面がついたり消えたりする…というようなことが書かれてる。
ThinkPad T シリーズの BIOS にはバグがあって、HDMI ポートが存在しない eDP と共有しているとかなんとか(よくわかってない)。
i915 カーネルモジュールにパッチを当てて作り直せばいいっぽい。これは期待!
カーネルのバージョンが違うんで、パッチはそのままは適用できないけど、似たような処理を探してテキトーに。
i915.ko は linux-modules-extra-5.15.0-43-generic に含まれてる:
~% dpkg -S i915.ko
linux-modules-extra-5.15.0-43-generic: /lib/modules/5.15.0-43-generic/kernel/drivers/gpu/drm/i915/i915.ko
カーネルのソースをもってきて、該当ソースを改変:
~% mkdir /tmp/x
~% cd /tmp/x
/tmp/x% apt source linux-modules-extra-5.15.0-43-generic
...
/tmp/x% cd linux-5.15.0
/tmp/x/linux-5.15.0% vim ./drivers/gpu/drm/i915/display/intel_bios.c
差分。return;
をコメントアウトしただけ:
/tmp/x/linux-5.15.0% diff -u ./drivers/gpu/drm/i915/display/intel_bios.c.orig ./drivers/gpu/drm/i915/display/intel_bios.c
--- ./drivers/gpu/drm/i915/display/intel_bios.c.orig 2022-07-24 17:09:36.000000000 +0900
+++ ./drivers/gpu/drm/i915/display/intel_bios.c 2022-07-24 17:11:26.940061516 +0900
@@ -1950,7 +1950,7 @@
drm_dbg_kms(&i915->drm,
"More than one child device for port %c in VBT, using the first.\n",
port_name(port));
- return;
+// return;
}
sanitize_device_type(devdata, port);
パッケージバージョンを指定する。debian.master/changelog
の先頭にテキトーに追加:
linux (5.15.0-43.99tmtms) jammy; urgency=medium
* i915 patch
ABI check でエラーになるので無視するように設定:
/tmp/x/linux-5.15.0% touch debian.master/abi/amd64/ignore
deb パッケージを作成:
/tmp/x/linux-5.15.0% debuild --no-lintian -uc -us -b
...
/tmp/x/linux-5.15.0% cd ..
/tmp/x% ls *.deb
linux-buildinfo-5.15.0-43-generic_5.15.0-43.99tmtms_amd64.deb
linux-cloud-tools-5.15.0-43-generic_5.15.0-43.99tmtms_amd64.deb
linux-cloud-tools-5.15.0-43_5.15.0-43.99tmtms_amd64.deb
linux-cloud-tools-common_5.15.0-43.99tmtms_all.deb
linux-doc_5.15.0-43.99tmtms_all.deb
linux-headers-5.15.0-43-generic_5.15.0-43.99tmtms_amd64.deb
linux-headers-5.15.0-43_5.15.0-43.99tmtms_all.deb
linux-image-unsigned-5.15.0-43-generic_5.15.0-43.99tmtms_amd64.deb
linux-libc-dev_5.15.0-43.99tmtms_amd64.deb
linux-modules-5.15.0-43-generic_5.15.0-43.99tmtms_amd64.deb
linux-modules-extra-5.15.0-43-generic_5.15.0-43.99tmtms_amd64.deb
linux-modules-iwlwifi-5.15.0-43-generic_5.15.0-43.99tmtms_amd64.deb
linux-source-5.15.0_5.15.0-43.99tmtms_all.deb
linux-tools-5.15.0-43-generic_5.15.0-43.99tmtms_amd64.deb
linux-tools-5.15.0-43_5.15.0-43.99tmtms_amd64.deb
linux-tools-common_5.15.0-43.99tmtms_all.deb
linux-tools-host_5.15.0-43.99tmtms_all.deb
一時間くらい掛かる。このうち必要なのは linux-modules-extra-5.15.0-43-generic_5.15.0-43.99tmtms_amd64.deb
だけなので、これだけ作る方法はないんかな…。
インストール:
/tmp/x% sudo dpkg -i linux-modules-extra-5.15.0-43-generic_5.15.0-43.99tmtms_amd64.deb
...
Linux を再起動。
無事サスペンドできるようになった。わーい 🎉🎉🎉
本体の HDMI が使えなかったのも同じ原因だったらしく、HDMI もちゃんと使えるようになった。わーい 👏👏👏
カーネルアップデートのたびにこれをやるのは面倒だし忘れそうだから、Lenovo さんは早く BIOS を修正して欲しい…。
[2022-09-23 追記] BIOS アップデート(n3buj05w)で解決した! https://support.lenovo.com/jp/ja/downloads/ds557163-bios-update-utility-bootable-cd-for-windows-11-10-64-bit-thinkpad-t14-gen-3-p14s-gen-3-t16-gen-1-p16s-gen-1
Discussion
こちら先のBIOS Updateで症状改善したように思うのですが、いかがでしょうか?久々に Windows で起動して BIOS Update を適用してみたんですが、改善しませんでした…。
ホントですね、、すいません。再発しました。