Bug 30132
Summary: | BUG_ON just after resume from s2ram | ||
---|---|---|---|
Product: | Drivers | Reporter: | Dmitry Nezhevenko (dion) |
Component: | Video(DRI - Intel) | Assignee: | drivers_video-dri-intel (drivers_video-dri-intel) |
Status: | RESOLVED CODE_FIX | ||
Severity: | normal | CC: | akpm, chris, rjw |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 2.6.37.1 | Subsystem: | |
Regression: | Yes | Bisected commit-id: | |
Bug Depends on: | |||
Bug Blocks: | 7216 | ||
Attachments: | dmesg from clean boot |
Description
Dmitry Nezhevenko
2011-03-01 04:56:32 UTC
Is this a regression? Was any earlier kernel version OK? If so, which version? Thanks. I'm not sure.. Actually .36 also has this issue. Probably it's not a regression. Created attachment 49712 [details]
dmesg from clean boot
I was able to get stacktrace for crash on suspend (not resume): [41504.484027] kernel BUG at drivers/gpu/drm/i915/i915_gem.c:4238! [41504.484029] invalid opcode: 0000 [#1] PREEMPT SMP [41504.484032] last sysfs file: /sys/devices/virtual/sound/timer/uevent [41504.484035] Modules linked in: tun xt_recent ipt_LOG ipt_REJECT xt_tcpudp xt_state iptable_filter iptable_nat nf_nat nf_conntrack_ipv4 nf_conntrack nf_defrag_ipv4 ip_tables x_tables acpi_cpufreq mperf fuse coretemp loop snd_hda_codec_hdmi arc4 snd_hda_codec_realtek ecb snd_hda_intel snd_hda_codec snd_hwdep snd_pcm snd_seq snd_timer iwlagn snd_seq_device iwlcore mac80211 snd soundcore uvcvideo videodev snd_page_alloc tpm_tis tpm v4l1_compat cfg80211 psmouse joydev asus_laptop tpm_bios serio_raw pcspkr battery ac processor sparse_keymap evdev rfkill hid_microsoft usbhid hid sha256_generic aes_i586 aes_generic cbc dm_crypt dm_mod btrfs zlib_deflate crc32c libcrc32c reiserfs lzo ext3 jbd mbcache i915 drm_kms_helper drm i2c_algo_bit i2c_core sg sr_mod sd_mod crc_t10dif cdrom usb_storage uas ahci libahci libata uhci_hcd r8169 thermal scsi_mod mii video thermal_sys output ehci_hcd usbcore button nls_base [last unloaded: scsi_wait_scan] [41504.484091] [41504.484094] Pid: 4519, comm: Xorg Not tainted 2.6.37.1+ #5 ASUSTeK Computer Inc. F6A /F6A [41504.484099] EIP: 0060:[<f87b6e9d>] EFLAGS: 00213246 CPU: 1 [41504.484119] EIP is at i915_gem_object_unpin+0x30/0x7d [i915] [41504.484122] EAX: f4fc2900 EBX: 0003c000 ECX: 0003c07c EDX: f4ca4000 [41504.484124] ESI: f684bc14 EDI: f684beb0 EBP: f6c45b28 ESP: f6c45b20 [41504.484127] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [41504.484130] Process Xorg (pid: 4519, ti=f6c44000 task=f6a88000 task.ti=f6c44000) [41504.484132] Stack: [41504.484133] f6881000 f684bc14 f6c45b38 f87bef9b f6881000 f87e3f5c f6c45b50 f8746e8f [41504.484139] f684be98 f686d1e4 00000000 f684bd40 f6c45bc0 f8748154 c1025665 f6cb4b40 [41504.484145] 00000004 f6cb4b40 f684beb0 f684bea4 f684beb0 f87e3f5c f684be98 ec6e1000 [41504.484150] Call Trace: [41504.484173] [<f87bef9b>] ? intel_crtc_disable+0x31/0x3c [i915] [41504.484186] [<f8746e8f>] ? drm_helper_disable_unused_functions+0xeb/0x129 [drm_kms_helper] [41504.484193] [<f8748154>] ? drm_crtc_helper_set_config+0x5d8/0x72c [drm_kms_helper] [41504.484199] [<c1025665>] ? check_preempt_curr+0x39/0x6b [41504.484205] [<c1030d00>] ? try_to_wake_up+0x12a/0x224 [41504.484212] [<f8746535>] ? drm_fb_helper_set_par+0x5c/0x97 [drm_kms_helper] [41504.484218] [<c116f8d5>] ? fb_set_var+0x208/0x2ff [41504.484223] [<c102fe57>] ? load_balance+0x9a/0x5d1 [41504.484228] [<c10a3ba2>] ? shmem_truncate_range+0x24/0x606 [41504.484232] [<c1008855>] ? __switch_to_xtra+0x129/0x148 [41504.484237] [<c102adaf>] ? get_parent_ip+0xb/0x31 [41504.484241] [<c12a529f>] ? sub_preempt_count+0x7c/0x89 [41504.484245] [<c11777b9>] ? fbcon_blank+0x7e/0x27b [41504.484251] [<c11bbc46>] ? do_unblank_screen+0xcc/0x12f [41504.484256] [<c11b4a43>] ? vt_ioctl+0x49e/0x1643 [41504.484261] [<c12a25e5>] ? _raw_spin_unlock+0x1b/0x26 [41504.484264] [<c1096365>] ? find_get_page+0x66/0x6f [41504.484268] [<c102adaf>] ? get_parent_ip+0xb/0x31 [41504.484271] [<c102adaf>] ? get_parent_ip+0xb/0x31 [41504.484274] [<c12a529f>] ? sub_preempt_count+0x7c/0x89 [41504.484278] [<c11b45a5>] ? vt_ioctl+0x0/0x1643 [41504.484283] [<c11acb59>] ? tty_ioctl+0x7d0/0x832 [41504.484287] [<c10acd46>] ? handle_mm_fault+0x3a4/0x875 [41504.484291] [<c11ac389>] ? tty_ioctl+0x0/0x832 [41504.484295] [<c10ce2a7>] ? do_vfs_ioctl+0x44d/0x492 [41504.484299] [<c12a51f5>] ? do_page_fault+0x2ec/0x31a [41504.484303] [<c10c4372>] ? fput+0x151/0x159 [41504.484306] [<c10ce32d>] ? sys_ioctl+0x41/0x61 [41504.484309] [<c10c188f>] ? sys_close+0x6c/0xa0 [41504.484314] [<c10031df>] ? sysenter_do_call+0x12/0x28 [41504.484316] Code: 8b 48 78 8b 50 08 89 cb 81 e1 ff 3f fc ff c1 eb 0e 8b 92 1c 02 00 00 83 c3 0f 83 e3 0f c1 e3 0e 09 d9 83 78 54 00 89 48 78 75 04 <0f> 0b eb fe 81 e1 00 c0 03 00 75 3d f6 40 78 01 75 28 8b 70 60 [41504.484341] EIP: [<f87b6e9d>] i915_gem_object_unpin+0x30/0x7d [i915] SS:ESP 0068:f6c45b20 [41504.485029] ---[ end trace 39adb58f3e75513b ]--- Do you use the s2ram binary? If you do, have you tried to disable it (eg. by making in non-executable)? I use pm-utils to suspend/resume. I'm not sure how it works internally. Maybe it calls s2ram. However I've just tried to suspend without any userspace stuff using "echo mem > /sys/power/state". I've tested it two times and both of them were lucky. So probably this laptop do not require any userspace hacks/quirks. I can't say that this "fixes" issues because it is not always reproduceable. So I can continue to use /sys/power/state directly for some time and then post here results. Anything else I can try? These are two different bugs both fixed. Oops on resume: commit 01a03331e5fe91861937f8b8e72c259f5e9eae67 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 4 22:22:56 2011 +0000 drm/i915/ringbuffer: Simplify the ring irq refcounting ... and move it under the spinlock to gain the appropriate memory barriers. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=32752 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Oops on suspend: commit 9334ef755f060e251f3f395caeda1a58b6834ea3 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 28 11:53:03 2011 +0000 drm: Don't switch fb when disabling an output In drm_crtc_helper_set_config, we call drm_crtc_helper_set_mode which may return early and do no operation if the crtc is to be disabled. In this case we merrily swap to the new fb, discarding the old_fb believing that it has been cleaned up. However, due to the early return, the old_fb was not presented to the backend for correct reaping, and nor was the new one - which is about to be reaped via the drm_helper_disable_unused_functions(), leading to incorrect refcounting of the pinned objects. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=27722 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29857 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29230 Tested-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> |