1. 01 Mar, 2010 13 commits
    • Dave Airlie's avatar
      Merge branch 'gpu-switcher' of /ssd/git//linux-2.6 into drm-next-stage · 1c622335
      Dave Airlie authored
      * 'gpu-switcher' of /ssd/git//linux-2.6:
        vga_switcheroo: initial implementation (v15)
        fb: for framebuffer handover don't exit the loop early.
      
      Conflicts:
      	drivers/gpu/drm/i915/i915_dma.c
      	drivers/gpu/drm/radeon/Makefile
      	drivers/gpu/drm/radeon/radeon.h
      1c622335
    • Dave Airlie's avatar
      vga_switcheroo: initial implementation (v15) · 6a9ee8af
      Dave Airlie authored
      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: default avatarDave Airlie <airlied@redhat.com>
      6a9ee8af
    • Rafał Miłecki's avatar
      6d9c1351
    • Rafał Miłecki's avatar
      Revert "drm/radeon/kms: disable HDMI audio for now on rv710/rv730" · 3464f114
      Rafał Miłecki authored
      This commit "disabled" audio on RV710 and RV740 only, leaving RV770 and RV730.
      The order is: CHIP_RV770 < CHIP_RV730 < CHIP_RV710 < CHIP_RV740.
      
      It is not needed anway, as we do not even try to enable audio on RV770 and
      newer. We call initializing function in r600.c only, not in rv770.c.
      
      If there is something causing green tinges, it's HDMI mode setting for encoder
      and I will try to debug that.
      Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      3464f114
    • Rafał Miłecki's avatar
    • Dave Airlie's avatar
      Merge branch 'drm-radeon-testing' of /ssd/git/drm-radeon-next into drm-next-stage · 68de7745
      Dave Airlie authored
      * 'drm-radeon-testing' of /ssd/git/drm-radeon-next:
        drm/radeon: r100/r200 ums: block ability for userspace app to trash 0 page and beyond
        drm/ttm: fix function prototype to match implementation
        drm/radeon: use ALIGN instead of open coding it
        drm/radeon/kms: initialize set_surface_reg reg for rs600 asic
      68de7745
    • Dave Airlie's avatar
      drm/radeon: r100/r200 ums: block ability for userspace app to trash 0 page and beyond · 566d84d1
      Dave Airlie authored
      radeon's have a special ability to passthrough writes in their internal
      memory space directly to PCI, this ability means that if some of the internal
      surfaces like the depth buffer point at 0x0, any writes to these will
      go directly to RAM at 0x0 via PCI busmastering.
      
      Now mesa used to always emit clears after emitting state, since the
      radeon mesa driver was refactored a year or more ago, it was found it
      could generate a clear request without ever sending any setup state to the
      card. So the clear would attempt to clear the depth buffer at 0x0, which
      would overwrite main memory at this point. fs corruption ensues.
      
      Also once one app did this correctly, it would never get set back to 0
      making this messy to reproduce.
      
      The kernel should block this from happening as mesa runs without privs,
      though it does require the user be connected to the current running X session.
      
      This patch implements a check to make sure the depth offset has been set
      before a depth clear occurs and if it finds one it prints a warning and
      ignores the depth clear request. There is also a mesa fix to avoid sending
      the badness going into mesa.
      
      This only affects r100/r200 GPUs in user modesetting mode.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      566d84d1
    • Randy Dunlap's avatar
      drm/ttm: fix function prototype to match implementation · a55e8d45
      Randy Dunlap authored
      Fix function prototype to match its actual usage and implementation.
      
      drivers/gpu/drm/ttm/ttm_bo_util.c:341:10: error: symbol 'ttm_io_prot' redeclared with different type (originally declared at include/drm/ttm/ttm_bo_driver.h:911) - incompatible argument 1 (different signedness)
      Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Cc:	David Airlie <airlied@linux.ie>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      a55e8d45
    • Matt Turner's avatar
      drm/radeon: use ALIGN instead of open coding it · d964fc54
      Matt Turner authored
      Cc: Jerome Glisse <jglisse@redhat.com>
      Cc: Alex Deucher <alexdeucher@gmail.com>
      Signed-off-by: default avatarMatt Turner <mattst88@gmail.com>
      Reviewed-by: default avatarCorbin Simpson <MostAwesomeDude@gmail.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      d964fc54
    • Jerome Glisse's avatar
      drm/radeon/kms: initialize set_surface_reg reg for rs600 asic · 32b3c2ab
      Jerome Glisse authored
      rs600 asic was missing set_surface_reg callback leading to
      oops.
      Signed-off-by: default avatarJerome Glisse <jglisse@redhat.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      32b3c2ab
    • Dave Airlie's avatar
      Merge remote branch 'anholt/drm-intel-next' into drm-next-stage · cf7934a2
      Dave Airlie authored
      * anholt/drm-intel-next: (103 commits)
        drm/i915: Use a dmi quirk to skip a broken SDVO TV output.
        drm/i915: enable/disable LVDS port at DPMS time
        drm/i915: check for multiple write domains in pin_and_relocate
        drm/i915: clean-up i915_gem_flush_gpu_write_domain
        drm/i915: reuse i915_gpu_idle helper
        drm/i915: ensure lru ordering of fence_list
        drm/i915: extract fence stealing code
        drm/i915: fixup active list locking in object_unbind
        drm/i915: reuse i915_gem_object_put_fence_reg for fence stealing code
        drm/i915: Add dependency on the intel agp module
        drm/i915: More s/IS_IRONLAKE/HAS_PCH_SPLIT for Sandybridge.
        drm/i915: Correct the Sandybridge chipset info structs.
        drm/i915: Disable the hangcheck reset on Sandybridge until we add support.
        drm/i915: Add a new mobile Sandybridge PCI ID.
        agp/intel: Add a new Sandybridge HB/IG PCI ID combo.
        drm/i915, agp/intel: Fix stolen memory size on Sandybridge
        drm/i915: Correct locking in the modesetting failure path, fixing a BUG_ON.
        drm/i915: Disable the surface tile swizzling on Sandybridge.
        agp/intel: Use a non-reserved value for the cache field of the PTEs.
        drm/i915: Fix sandybridge status page setup.
        ...
      cf7934a2
    • Dave Airlie's avatar
      Merge remote branch 'nouveau/for-airlied' into drm-next-stage · aa71fa3c
      Dave Airlie authored
      * nouveau/for-airlied: (25 commits)
        drm/nouveau: use ALIGN instead of open coding it
        drm/nouveau: report unknown connector state if lid closed
        drm/nouveau: support version 0x20 displayport tables
        drm/nouveau: Fix noaccel/nofbaccel option descriptions.
        drm/nv50: Implement ctxprog/state generation.
        drm/nouveau: use dcb connector types throughout the driver
        drm/nv50: enable hpd on any connector we know the gpio line for
        drm/nouveau: use dcb connector table for creating drm connectors
        drm/nouveau: construct a connector table for cards that lack a real one
        drm/nouveau: check for known dcb connector types
        drm/nouveau: parse dcb gpio/connector tables after encoders
        drm/nouveau: reorganise bios header, add dcb connector type enums
        drm/nouveau: merge nvbios and nouveau_bios_info
        drm/nouveau: merge parsed_dcb and bios_parsed_dcb into dcb_table
        drm/nouveau: rename parsed_dcb_gpio to dcb_gpio_table
        drm/nouveau: allow retrieval of vbios image from debugfs
        drm/nouveau: fix missing spin_unlock in failure path
        drm/nouveau: fix i2ctable bounds checking
        drm/nouveau: fix nouveau_i2c_find bounds checking
        drm/nouveau: fix pramdac_table range checking
        ...
      
      Conflicts:
      	drivers/gpu/drm/nouveau/nouveau_gem.c
      aa71fa3c
    • Dave Airlie's avatar
      Merge remote branch 'korg/drm-core-next' into drm-next-stage · 79fa9eb7
      Dave Airlie authored
      * korg/drm-core-next:
        drm/ttm: handle OOM in ttm_tt_swapout
        drm/radeon/kms/atom: fix shr/shl ops
        drm/kms: fix spelling of "CLOCK"
        drm/kms: fix fb_changed = true else statement
        drivers/gpu/drm/drm_fb_helper.c: don't use private implementation of atoi()
        drm: switch all GEM/KMS ioctls to unlocked ioctl status.
        Use drm_gem_object_[handle_]unreference_unlocked where possible
        drm: introduce drm_gem_object_[handle_]unreference_unlocked
      79fa9eb7
  2. 26 Feb, 2010 24 commits
  3. 25 Feb, 2010 3 commits