• Chris Wilson's avatar
    drm: Restore the old_fb upon modeset failure · 0ba41e44
    Chris Wilson authored
    ... or else we may end up disabling the wrong framebuffer, leading to an
    OOPS, e.g:
    
    [ 6033.229012] kernel BUG at drivers/gpu/drm/i915/i915_gem.c:3271!
    [ 6033.229012] invalid opcode: 0000 [#1] SMP
    [ 6033.229012] last sysfs file:
    /sys/devices/virtual/backlight/acpi_video0/uevent
    [ 6033.229012] Modules linked in: sunrpc cpufreq_ondemand acpi_cpufreq
    mperf snd_hda_codec_analog snd_hda_intel snd_hda_codec snd_hwdep snd_seq
    snd_seq_device snd_pcm snd_timer thinkpad_acpi ppdev snd r852 sm_common
    iTCO_wdt uvcvideo i2c_i801 iTCO_vendor_support microcode wmi nand
    videodev nand_ids nand_ecc snd_page_alloc parport_pc parport mtd
    soundcore joydev v4l1_compat pcspkr uinput ipv6 sdhci_pci sdhci mmc_core
    yenta_socket i915 drm_kms_helper drm i2c_algo_bit i2c_core video output
    [last unloaded: scsi_wait_scan]
    [ 6033.229012]
    [ 6033.229012] Pid: 4834, comm: Xorg Not tainted 2.6.37-rc8+ #25 7661BL5/7661BL5
    [ 6033.229012] EIP: 0060:[<f86fda5e>] EFLAGS: 00013246 CPU: 0
    [ 6033.229012] EIP is at i915_gem_object_unpin+0x23/0x76 [i915]
    [ 6033.229012] EAX: f68a4000 EBX: f6831f00 ECX: 000600fa EDX: f68a8000
    [ 6033.229012] ESI: f68a4014 EDI: f68a42b8 EBP: f2169c44 ESP: f2169c3c
    [ 6033.229012]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
    [ 6033.229012] Process Xorg (pid: 4834, ti=f2168000 task=f21c8000 task.ti=f2168000)
    [ 6033.229012] Stack:
    [ 6033.229012]  f3a84800 f68a4014 f2169c54 f87045d8 f3a84800 f872d9a8 f2169c68 f7fd8091
    [ 6033.229012]  f3b952a4 00000000 f68a414c f2169cf0 f7fd9377 00000000 00000000 f7fd98b0
    [ 6033.229012]  f7fd9f4e 0000000f f7f328a0 00000000 00000000 00000000 f2169ca4 f68a414c
    [ 6033.229012] Call Trace:
    [ 6033.229012]  [<f87045d8>] ? intel_crtc_disable+0x36/0x41 [i915]
    [ 6033.229012]  [<f7fd8091>] ?  drm_helper_disable_unused_functions+0xcd/0xf9 [drm_kms_helper]
    [ 6033.229012]  [<f7fd9377>] ? drm_crtc_helper_set_config+0x62a/0x7f7 [drm_kms_helper]
    [ 6033.229012]  [<c04daa10>] ? __slab_free+0x1b/0xa4
    [ 6033.229012]  [<f7fd7e62>] ? drm_fb_helper_initial_config+0x466/0x497 [drm_kms_helper]
    [ 6033.229012]  [<f7fd7ea3>] ? drm_fb_helper_restore+0x10/0x2a [drm_kms_helper]
    [ 6033.229012]  [<f86f2577>] ? i915_driver_lastclose+0x2a/0x57 [i915]
    [ 6033.229012]  [<f7f1989f>] ? drm_lastclose+0x45/0x23e [drm]
    [ 6033.229012]  [<f7f1a0b4>] ? drm_release+0x462/0x4d7 [drm]
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: stable@kernel.org
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    0ba41e44
drm_crtc_helper.c 26.5 KB