1. 26 3月, 2010 1 次提交
  2. 18 3月, 2010 1 次提交
  3. 01 3月, 2010 1 次提交
    • D
      vga_switcheroo: initial implementation (v15) · 6a9ee8af
      Dave Airlie 提交于
      Many new laptops now come with 2 gpus, one to be used for low power
      modes and one for gaming/on-ac applications. These GPUs are typically
      wired to the laptop panel and VGA ports via a multiplexer unit which
      is controlled via ACPI methods.
      
      4 combinations of systems typically exist - with 2 ACPI methods.
      Intel/ATI - Lenovo W500/T500 - use ATPX ACPI method
      ATI/ATI - some ASUS - use ATPX ACPI Method
      Intel/Nvidia - - use _DSM ACPI method
      Nvidia/Nvidia -  - use _DSM ACPI method.
      
      TODO:
      This patch adds support for the ATPX method and initial bits
      for the _DSM methods that need to written by someone with
      access to the hardware.
      Add a proper non-debugfs interface - need to get some proper
      testing first.
      
      v2: add power up/down support for both devices
      on W500 puts i915/radeon into D3 and cuts power to radeon.
      
      v3: redo probing methods, no DMI list, drm devices call to
      register with switcheroo, it tries to find an ATPX method on
      any device and once there is two devices + ATPX it inits the
      switcher.
      
      v4: ATPX msg handling using buffers - should work on more machines
      
      v5: rearchitect after more mjg59 discussion - move ATPX handling to
          radeon driver.
      
      v6: add file headers + initial nouveau bits (to be filled out).
      
      v7: merge delayed switcher code.
      
      v8: avoid suspend/resume of gpu that is off
      
      v9: rearchitect - mjg59 is always right. - move all ATPX code to
      radeon, should allow simpler DSM also proper ATRM handling
      
      v10: add ATRM support for radeon BIOS, add mutex to lock vgasr_priv
      
      v11: fix bug in resuming Intel for 2nd time.
      
      v12: start fixing up nvidia code blindly.
      
      v13: blindly guess at finishing nvidia code
      
      v14: remove radeon audio hacks - fix up intel resume more like upstream
      
      v15: clean up printks + remove unnecessary igd/dis pointers
      
      mount debugfs
      
      /sys/kernel/debug/vgaswitcheroo/switch - should exist if ATPX detected
       + 2 cards.
      
      DIS - immediate change to discrete
      IGD - immediate change to IGD
      DDIS - delayed change to discrete
      DIGD - delayed change to IGD
      ON - turn on not in use
      OFF - turn off not in use
      
      Tested on W500 (Intel/ATI) and T500 (Intel/ATI)
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      6a9ee8af
  4. 27 2月, 2010 1 次提交
  5. 23 2月, 2010 5 次提交
  6. 17 2月, 2010 1 次提交
  7. 11 2月, 2010 1 次提交
    • D
      drm/i915: Update write_domains on active list after flush. · 99fcb766
      Daniel Vetter 提交于
      Before changing the status of a buffer with a pending write we will await
      upon a new flush for that buffer. So we can take advantage of any flushes
      posted whilst the buffer is active and pending processing by the GPU, by
      clearing its write_domain and updating its last_rendering_seqno -- thus
      saving a potential flush in deep queues and improves flushing behaviour
      upon eviction for both GTT space and fences.
      
      In order to reduce the time spent searching the active list for matching
      write_domains, we move those to a separate list whose elements are
      the buffers belong to the active/flushing list with pending writes.
      
      Orignal patch by Chris Wilson <chris@chris-wilson.co.uk>, forward-ported
      by me.
      
      In addition to better performance, this also fixes a real bug. Before
      this changes, i915_gem_evict_everything didn't work as advertised. When
      the gpu was actually busy and processing request, the flush and subsequent
      wait would not move active and dirty buffers to the inactive list, but
      just to the flushing list. Which triggered the BUG_ON at the end of this
      function. With the more tight dirty buffer tracking, all currently busy and
      dirty buffers get moved to the inactive list by one i915_gem_flush operation.
      
      I've left the BUG_ON I've used to prove this in there.
      
      References:
        Bug 25911 - 2.10.0 causes kernel oops and system hangs
        http://bugs.freedesktop.org/show_bug.cgi?id=25911
      
        Bug 26101 - [i915] xf86-video-intel 2.10.0 (and git) triggers kernel oops
                    within seconds after login
        http://bugs.freedesktop.org/show_bug.cgi?id=26101Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Tested-by: NAdam Lantos <hege@playma.org>
      Cc: stable@kernel.org
      Signed-off-by: NEric Anholt <eric@anholt.net>
      99fcb766
  8. 28 1月, 2010 1 次提交
    • C
      drm/i915: Selectively enable self-reclaim · 4bdadb97
      Chris Wilson 提交于
      Having missed the ENOMEM return via i915_gem_fault(), there are probably
      other paths that I also missed. By not enabling NORETRY by default these
      paths can run the shrinker and take memory from the system (but not from
      our own inactive lists because our shrinker can not run whilst we hold
      the struct mutex) and this may allow the system to survive a little longer
      whilst our drivers consume all available memory.
      
      References:
        OOM killer unexpectedly called with kernel 2.6.32
        http://bugzilla.kernel.org/show_bug.cgi?id=14933
      
      v2: Pass gfp into page mapping.
      v3: Use new read_cache_page_gfp() instead of open-coding.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Hugh Dickins <hugh.dickins@tiscali.co.uk>
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Cc: Eric Anholt <eric@anholt.net>
      Cc: stable@kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      4bdadb97
  9. 16 1月, 2010 2 次提交
  10. 13 1月, 2010 1 次提交
  11. 07 1月, 2010 2 次提交
  12. 17 12月, 2009 3 次提交
    • K
    • K
      drm/i915: Implement IS_* macros using static tables · cfdf1fa2
      Kristian Høgsberg 提交于
      Instead of using the IS_I9XX etc macros that expand to a ton of
      comparisons, use new struct intel_device_info to capture the
      capabilities of the different chipsets.  The drm_i915_private struct
      will be initialized to point to the device info that correspond to
      the actual device and this way, testing for a specific capability is
      just a matter of checking a bit field.
      Signed-off-by: NKristian Høgsberg <krh@bitplanet.net>
      Signed-off-by: NEric Anholt <eric@anholt.net>
      cfdf1fa2
    • Z
      drm/i915: Update LVDS connector status when receiving ACPI LID event · a2565377
      Zhao Yakui 提交于
      Dirk reports that nothing is displayed on LVDS when using ubuntu 9.1 after
      close/reopen the LID. And I also reproduce this issue on another laptop.
      After some tests and debug, it seems that it is related with that the
      LVDS status is not updated in time in course of suspend/resume.
      
      Now the LID state is used to check whether the LVDS is connected or
      disconnected. And when the LID is closed, it means that the LVDS is
      disconnected. When it is reopened, it means that the LVDS is connected.
      At the same time on some distributions the LID event is also used to put
      the system into suspend state. When the LID is closed, the system will enter
      the suspend state. When the LID is reopened, the system will be resumed.
      
      In such case when the LID is closed, user-space script will receive the LID
      notification event and  detect the LVDS as disconnected. Then the system will
      enter the suspended state. When the LID is reopened, the system will be
      resumed. As the LVDS status is not updated in course of resume, it will cause
      that the LVDS connector is marked as unused and disabled. After the resume is
      finished,user-space script will try to configure the display mode for LVDS.
      But unfortunately as the LVDS status is not updated in time and it is still
      marked as disconnected, the LVDS and its corresponding CRTC will be disabled
      again in the function of drm_helper_disable_unused_functions after changing
      mode for LVDS.
      
      So we had better check and update the status of LVDS connector after receiving
      the LID notication event. Then after the system is resumed from suspended
      state, we can set the display mode for LVDS correctly.
      Signed-off-by: NZhao Yakui <yakui.zhao@intel.com>
      Reported-by: NDirk Hohndel <hohndel@infradead.org>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      CC: stable@kernel.org
      Signed-off-by: NEric Anholt <eric@anholt.net>
      a2565377
  13. 08 12月, 2009 2 次提交
  14. 02 12月, 2009 2 次提交
  15. 01 12月, 2009 2 次提交
  16. 26 11月, 2009 1 次提交
  17. 13 11月, 2009 1 次提交
  18. 06 11月, 2009 8 次提交
  19. 03 11月, 2009 1 次提交
    • L
      i915: fix intel graphics suspend breakage due to resume/lid event confusion · c9354c85
      Linus Torvalds 提交于
      In commit c1c7af60 ("drm/i915: force
      mode set at lid open time") the intel graphics driver was taught to
      restore the LVDS mode on lid open.
      
      That caused problems with interaction with the suspend/resume code,
      which commonly runs at the same time (suspend is often caused by the lid
      close event, while lid open is commonly a resume event), which was
      worked around with in commit 06891e27
      ("drm/i915: fix suspend/resume breakage in lid notifier").
      
      However, in the meantime the lid event code had also grown a user event
      notifier (commit 06324194: "drm/i915:
      generate a KMS uevent at lid open/close time"), and now _that_ causes
      problems with suspend/resume and some versions of Xorg reacting to those
      uevents by setting the mode.
      
      So this effectively reverts that commit 06324194, and makes the lid
      open protection logic against suspend/resume more explicit.  This fixes
      at least one laptop. See
      
      	http://bugzilla.kernel.org/show_bug.cgi?id=14484
      
      for more details.
      Acked-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Cc: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com>
      Cc: Eric Anholt <eric@anholt.net>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      c9354c85
  20. 24 10月, 2009 1 次提交
  21. 16 10月, 2009 1 次提交
  22. 14 10月, 2009 1 次提交