最近になって(記憶が確かでないがLinuxカーネルのバージョンを3.19.3にしてから)、パソコンをシャットダウンしたりリブートしたりすると、画面がブラックアウトし、ウンともスンともいわなくなってしまうという状況がかなりの頻度で発生していた。
journalctl で確認してみると以下のようなログがあった。
Apr 05 01:04:10 Erika kernel: kernel BUG at drivers/gpu/drm/drm_crtc.c:536! Apr 05 01:04:10 Erika kernel: invalid opcode: 0000 [#1] PREEMPT SMP Apr 05 01:04:10 Erika kernel: Modules linked in: nls_iso8859_1 nls_cp437 vfat fat fuse ctr ccm ipt_REJECT nf_reject_ipv4 mousedev xt_tcpudp nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack iptable_filter ip_tables x_tables tp_smapi(O) thinkpad_ec(O) snd_hda_codec_hdmi ext4 snd_hda_codec_conexant msr snd_hda_codec_generic mbcache iTCO_wdt jbd2 iTCO_vendor_support arc4 iwldvm mac80211 coretemp intel_powerclamp crc32_pclmul btusb bluetooth aesni_intel crc16 aes_x86_64 glue_helper lrw gf128mul ablk_helper cryptd iwlwifi cfg80211 psmouse serio_raw i2c_i801 intel_ips thinkpad_acpi nvram lpc_ich mfd_core hwmon led_class rfkill snd_hda_intel thermal tpm_tis battery snd_hda_controller tpm ac snd_hda_codec snd_hwdep evdev snd_pcm acpi_cpufreq snd_timer snd e1000e mei_me soundcore mei shpchp processor ptp pps_core Apr 05 01:04:10 Erika kernel: sch_fq_codel usbip_host usbip_core overlay btrfs xor raid6_pq sd_mod ums_realtek uas usb_storage atkbd libps2 ahci libahci libata xhci_pci crc32c_intel ehci_pci xhci_hcd ehci_hcd scsi_mod usbcore usb_common i8042 serio Apr 05 01:04:10 Erika kernel: CPU: 3 PID: 1 Comm: systemd Tainted: G O 3.19.3-1-ck #1 Apr 05 01:04:10 Erika kernel: Hardware name: LENOVO 5397FUJ/5397FUJ, BIOS 6QET70WW (1.40 ) 10/11/2012 Apr 05 01:04:10 Erika kernel: task: ffff880232918000 ti: ffff880232930000 task.ti: ffff880232930000 Apr 05 01:04:10 Erika kernel: RIP: 0010:[<ffffffff812e94bc>] [<ffffffff812e94bc>] drm_framebuffer_free_bug+0x9/0xb Apr 05 01:04:10 Erika kernel: RSP: 0018:ffff8802329339c8 EFLAGS: 00010246 Apr 05 01:04:10 Erika kernel: RAX: 0000000000000000 RBX: ffff8802321cd000 RCX: 0000000000000004 Apr 05 01:04:10 Erika kernel: RDX: 0000000000000000 RSI: 0000000000000002 RDI: ffff880072666848 Apr 05 01:04:10 Erika kernel: RBP: ffff8802329339c8 R08: ffff880231110000 R09: 0000000000000004 Apr 05 01:04:10 Erika kernel: R10: 0000000000000002 R11: 0000000000000001 R12: ffff880072666840 Apr 05 01:04:10 Erika kernel: R13: ffff8802321c6000 R14: ffff8802321c6370 R15: ffff8802321ce800 Apr 05 01:04:10 Erika kernel: FS: 00007f565e3cf800(0000) GS:ffff88023bd80000(0000) knlGS:0000000000000000 Apr 05 01:04:10 Erika kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 Apr 05 01:04:10 Erika kernel: CR2: 00007f565d326e88 CR3: 000000023125a000 CR4: 00000000000007e0 Apr 05 01:04:10 Erika kernel: Stack: Apr 05 01:04:10 Erika kernel: ffff8802329339e8 ffffffff812ea7a4 ffff8802321cd000 ffff8800b65b1100 Apr 05 01:04:10 Erika kernel: ffff880232933a28 ffffffff812dadf7 0000000000000000 ffff8800b65b1100 Apr 05 01:04:10 Erika kernel: 0000000000000000 ffff8802321c6000 ffff880232933c60 ffff8802321ce800 Apr 05 01:04:10 Erika kernel: Call Trace: Apr 05 01:04:10 Erika kernel: [<ffffffff812ea7a4>] drm_plane_force_disable+0xb7/0xbc Apr 05 01:04:10 Erika kernel: [<ffffffff812dadf7>] restore_fbdev_mode+0x4e/0xd4 Apr 05 01:04:10 Erika kernel: [<ffffffff812dc7a8>] drm_fb_helper_restore_fbdev_mode_unlocked+0x27/0x5e Apr 05 01:04:10 Erika kernel: [<ffffffff812dc815>] drm_fb_helper_set_par+0x36/0x3a Apr 05 01:04:10 Erika kernel: [<ffffffff81361f80>] intel_fbdev_set_par+0x1a/0x5d Apr 05 01:04:10 Erika kernel: [<ffffffff812db4c4>] ? drm_fb_helper_sysrq+0x23/0x23 Apr 05 01:04:10 Erika kernel: [<ffffffff81258a56>] fb_set_var+0x2b3/0x3b4 Apr 05 01:04:10 Erika kernel: [<ffffffff81250387>] fbcon_blank+0x95/0x271 Apr 05 01:04:10 Erika kernel: [<ffffffff811445a1>] ? cdev_put+0x25/0x25 Apr 05 01:04:10 Erika kernel: [<ffffffff812afdb3>] do_unblank_screen+0xeb/0x164 Apr 05 01:04:10 Erika kernel: [<ffffffff812a7e7f>] vt_ioctl+0xc9d/0x11ab Apr 05 01:04:10 Erika kernel: [<ffffffff812a3399>] ? n_tty_ioctl_helper+0x123/0x132 Apr 05 01:04:10 Erika kernel: [<ffffffff8129de66>] tty_ioctl+0xa22/0xaac Apr 05 01:04:10 Erika kernel: [<ffffffff8114e046>] ? do_filp_open+0x49/0xad Apr 05 01:04:10 Erika kernel: [<ffffffff8115021a>] do_vfs_ioctl+0x375/0x43bi Apr 05 01:04:10 Erika kernel: [<ffffffff81158919>] ? __fget+0x70/0x7b Apr 05 01:04:10 Erika kernel: [<ffffffff8115033a>] SyS_ioctl+0x5a/0x7f Apr 05 01:04:10 Erika kernel: [<ffffffff814a8309>] system_call_fastpath+0x12/0x17 Apr 05 01:04:10 Erika kernel: Code: bb b8 02 00 00 e8 2b 82 f1 ff 4c 89 ef e8 48 cf 1b 00 4c 89 e7 e8 2b 4f e4 ff 5a 5b 41 5c 41 5d 5d c3 66 66 66 66 90 55 48 89 e5 <0f> 0b 66 66 66 66 90 55 48 89 e5 53 48 89 fb 50 e8 58 e8 ff ff Apr 05 01:04:10 Erika kernel: RIP [<ffffffff812e94bc>] drm_framebuffer_free_bug+0x9/0xb
適当に調べていると Re: Kernel panic every other reboot/poweroff since 3.19.3 ( commit 9a6f5130143 ) -- Linux Intel GFX というページが見つかった。
これは Re: Kernel panic every other reboot/poweroff since 3.19.3 ( commit 9a6f5130143 ) -- Linux Intel GFX で報告されている前述と同様の問題に対する解決策を案内するもので、それは ~airlied/linux - Official DRM kernel tree にあるパッチを drivers/gpu/drm/drm_crtc.c へあてるというものになる。
とりあえず当該パッチを当てたカーネルのコンパイルが今終わったところなのでこれからインストールして再起動させ様子をみることにする(再起動後追記:いい感じになった)。
いろいろやるのが面倒な場合は3.19.4の公開を待つと多分解決する。あるいはArch Linuxが配信するバイナリパッケージのカーネルをしばらく使うというのでもよい。2015年04月05日現在Arch Linuxのバイナリパッケージで提供されるLinuxカーネルは3.19.2であり、上記の問題が発生することは(少なくとも私の環境では今までに)なかった。