Massive performance hit after disabling VGA with -intel

Bug #494461 reported by Alberto Milone
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Fix Released
Alberto Milone
Fix Released

Bug Description

This is a tracking bug for an SRU proposal for Karmic.

This problem was reported in a private OEM bug report for Dell and has been solved by upstream.


drm/i915: Fix sync to vblank when VGA output is turned off

In current vblank-wait implementation, if we turn off VGA output,
drm_wait_vblank will still wait on the disabled pipe until timeout,
because vblank on the pipe is assumed be enabled. This would cause
slow system response on some system such as moblin.

Steps to reproduce:

The problem can be reproduced with modern Intel gpus such as i945, i965, etc. and affects only VGA connectors. Typing the following commands will enable and disable an external screen through VGA thus triggering the bug and causing a massive slowdown:

xrandr --output VGA1 --auto
xrandr --output VGA1 --off

The bug is a regression in the drm code.

The patch is in the drm-intel branch and in the linux-next branch. Here's a link to the commit in drm-intel:;a=commit;h=778c902640530371a169ad1c03566e7c51b09874

I have applied (and slightly adapted, as it didn't apply cleanly) and tested the attached patch successfully.

I deem it very important for both OEM projects and for the Ubuntu desktop that we include this patch in Karmic and Lucid ASAP.

Revision history for this message
Alberto Milone (albertomilone) wrote :
Changed in linux (Ubuntu):
status: New → Confirmed
importance: Undecided → High
Changed in linux (Ubuntu):
assignee: nobody → Alberto Milone (albertomilone)
description: updated
description: updated
Andy Whitcroft (apw)
tags: added: kernel-series-unknown
tags: added: 2.6.32 karmic lucid
removed: kernel-series-unknown
Revision history for this message
Stefan Bader (smb) wrote :

The patch is applied to Karmic and sent to stable (as Lucid will require it as well). We need to check whether it arrives with some of the future stable updates to 2.6.32 before Lucid release.

Changed in linux (Ubuntu Karmic):
importance: Undecided → High
status: New → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (3.4 KiB)

This bug was fixed in the package linux - 2.6.32-9.13

linux (2.6.32-9.13) lucid; urgency=low

  [ Andy Whitcroft ]

  * [Config] enable CONFIG_B43_PHY_LP
    - LP: #493059
  * include modules.builtin in the binary debs
  * config-check -- add a configuration enforcer
  * config-check -- add a unit-test suite to the checker
  * [Config] Enable CONFIG_SYN_COOKIES for versatile
  * [Config] Enable CONFIG_SECURITY_SMACK for ports
  * [Config] Disable CONFIG_COMPAT_BRK for ports
  * getabis -- add armel versatile to the list

  [ Brad Figg ]

  * SAUCE: Increase the default prealloc buffer for HDA audio devices

  [ Manoj Iyer ]

  * ubuntu: onmibook -- Added missing BOM file

  [ Tim Gardner ]

  * ubuntu: fsam7400 -- Cleanup Makefile

  [ Upstream Kernel Changes ]

  * Revert "ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT"
  * signal: Fix alternate signal stack check
  * SCSI: scsi_lib_dma: fix bug with dma maps on nested scsi objects
  * SCSI: osd_protocol.h: Add missing #include
  * SCSI: megaraid_sas: fix 64 bit sense pointer truncation
  * ext4: fix potential buffer head leak when add_dirent_to_buf() returns
  * ext4: avoid divide by zero when trying to mount a corrupted file system
  * ext4: fix the returned block count if EXT4_IOC_MOVE_EXT fails
  * ext4: fix lock order problem in ext4_move_extents()
  * ext4: fix possible recursive locking warning in EXT4_IOC_MOVE_EXT
  * ext4: plug a buffer_head leak in an error path of ext4_iget()
  * ext4: make sure directory and symlink blocks are revoked
  * ext4: fix i_flags access in ext4_da_writepages_trans_blocks()
  * ext4: journal all modifications in ext4_xattr_set_handle
  * ext4: don't update the superblock in ext4_statfs()
  * ext4: fix uninit block bitmap initialization when s_meta_first_bg is
  * ext4: fix block validity checks so they work correctly with meta_bg
  * ext4: avoid issuing unnecessary barriers
  * ext4: fix error handling in ext4_ind_get_blocks()
  * ext4: make trim/discard optional (and off by default)
  * ext4: make "norecovery" an alias for "noload"
  * ext4: Fix double-free of blocks with EXT4_IOC_MOVE_EXT
  * ext4: initialize moved_len before calling ext4_move_extents()
  * ext4: move_extent_per_page() cleanup
  * jbd2: Add ENOMEM checking in and for
  * ext4: Return the PTR_ERR of the correct pointer in
  * ext4: Avoid data / filesystem corruption when write fails to copy data
  * ext4: wait for log to commit when umounting
  * ext4: remove blocks from inode prealloc list on failure
  * ext4: ext4_get_reserved_space() must return bytes instead of blocks
  * ext4: quota macros cleanup
  * ext4: fix incorrect block reservation on quota transfer.
  * ext4: Wait for proper transaction commit on fsync
  * ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT
  * ext4: Fix potential fiemap deadlock (mmap_sem vs. i_data_sem)
  * Linux
  * kbuild: generate modules.builtin
  * (pre-stable) drm/i915: Fix sync to vblank when VGA output is turned off
    - LP: #494461
  * (pre-stabl...


Changed in linux (Ubuntu):
status: Confirmed → Fix Released
Revision history for this message
Martin Pitt (pitti) wrote : Please test proposed package

Accepted linux into karmic-proposed, the package will build now and be available in a few hours. Please test and give feedback here. See for documentation how to enable and use -proposed. Thank you in advance!

tags: added: verification-needed
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (24.5 KiB)

This bug was fixed in the package linux - 2.6.31-20.57

linux (2.6.31-20.57) karmic-proposed; urgency=low

  [ Kees Cook ]

  * SAUCE: x86: brk away from exec rand area
    - LP: #452175

  [ Keng-Yu Lin ]

  * SAUCE: (drop after 2.6.31) input: Add hotkey quirk for Samsung
    Q210/P210 laptops
    - LP: #385683

  [ Pascal Bach ]

  * SAUCE: (drop after 2.6.31) input: Add hotkey quirk for Fujitsu Amilo
    - LP: #458503

  [ Stefan Bader ]

  * Revert "[Upstream] (drop after 2.6.31) acerhdf: fix fan control for
    AOA150 model"
    - LP: #494633
  * [Config] Disable CONFIG_USB_DEVICEFS
    - LP: #488274

  [ Upstream Kernel Changes ]

  * Revert "ext4: Don't update superblock write time when filesystem is
    - LP: #496816
  * Revert "ide: try to use PIO Mode 0 during probe if possible"
    - LP: #503430
  * Revert "isdn: isdn_ppp: Use SKB list facilities instead of home-grown
    - LP: #503430
  * nilfs2: fix kernel oops in error case of nilfs_ioctl_move_blocks
    - LP: #494633
  * cifs: don't use CIFSGetSrvInodeNumber in is_path_accessible
    - LP: #494633
  * cifs: clean up handling when server doesn't consistently support inode
    - LP: #494633
  * cifs: clear server inode number flag while autodisabling
    - LP: #494633
  * CIFS: fix oops in cifs_lookup during net boot
    - LP: #494633
  * CIFS: Duplicate data on appending to some Samba servers
    - LP: #494633
  * rtl8187: Fix kernel oops when device is removed when LEDS enabled
    - LP: #494633
  * md: don't clear endpoint for resync when resync is interrupted.
    - LP: #494633
  * md/raid5: make sure curr_sync_completes is uptodate when reshape starts
    - LP: #494633
  * md/raid1/raid10: add a cond_resched
    - LP: #494633
  * ALSA: usb-audio: fix combine_word problem
    - LP: #494633
  * ALSA: hda - Dell Studio 1557 hd-audio quirk
    - LP: #494633
  * ALSA: AACI: fix AC97 multiple-open bug
    - LP: #494633
  * ALSA: AACI: fix recording bug
    - LP: #494633
  * jffs2: Fix memory corruption in jffs2_read_inode_range()
    - LP: #494633
  * sound: rawmidi: disable active-sensing-on-close by default
    - LP: #494633
  * sound: rawmidi: fix checking of O_APPEND when opening MIDI device
    - LP: #494633
  * sound: rawmidi: fix double init when opening MIDI device with O_APPEND
    - LP: #494633
  * sound: rawmidi: fix MIDI device O_APPEND error handling
    - LP: #494633
  * highmem: Fix race in debug_kmap_atomic() which could cause warn_count
    to underflow
    - LP: #494633
  * highmem: Fix debug_kmap_atomic() to also handle KM_IRQ_PTE, KM_NMI, and
    - LP: #494633
  * powerpc: Fix DEBUG_HIGHMEM build break from d4515646699
    - LP: #494633
  * kmap: fix build errors with DEBUG_HIGHMEM enabled
    - LP: #494633
  * V4L/DVB (13169): bttv: Fix potential out-of-order field processing
    - LP: #494633
  * V4L/DVB (13170): bttv: Fix reversed polarity error when switching video
    - LP: #494633
  * V4L/DVB (13109): tda18271: fix signedness issue in
    - LP: #494633
  * V4L/DVB (13107): tda18271: fix overflow in FM radio frequency...

Changed in linux (Ubuntu Karmic):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers