Merge branch 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux...
authorDave Airlie <airlied@redhat.com>
Wed, 20 Feb 2013 07:46:25 +0000 (17:46 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 20 Feb 2013 07:54:13 +0000 (17:54 +1000)
Nothing terribly exciting in here probably:
- reworked thermal stuff from mupuf/I, has a chance of possibly working
well enough when we get to being able to reclock..
- driver will report mmio access faults on chipsets where it's supported
- will now sleep waiting on fences on nv84+ rather than polling
- some cleanup of the internal fencing, looking towards sli/dmabuf sync
- initial support for anx9805 dp/tmds encoder
- nv50+ display fixes related to the above, and also might fix a few
other issues
- nicer error reporting (will log process names with channel errors)
- various other random fixes

* 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux-2.6: (87 commits)
  nouveau: ACPI support depends on X86 and X86_PLATFORM_DEVICES
  drm/nouveau/i2c: add support for ddc/aux, and dp link training on anx9805
  drm/nv50: initial kms support for off-chip TMDS/DP encoders
  drm/nv50-/disp: initial supervisor support for off-chip encoders
  drm/nv50-/disp: initial work towards supporting external encoders
  drm/nv50-/kms: remove unnecessary wait-for-completion points
  drm/nv50-/disp: move DP link training to core and train from supervisor
  drm/nv50-/disp: handle supervisor tasks from workqueue
  drm/nouveau/i2c: create proper chipset-specific class implementations
  drm/nv50-/disp: 0x0000 is a valid udisp config value
  drm/nv50/devinit: reverse the logic for running encoder init scripts
  drm/nouveau/bios: store a type/mask hash in parsed dcb data
  drm/nouveau/i2c: extend type to 16-bits, add lookup-by-type function
  drm/nouveau/i2c: aux channels not necessarily on nvio
  drm/nouveau/i2c: fix a bit of a thinko in nv_wri2cr helper functions
  drm/nouveau/bios: parse external transmitter type if off-chip
  drm/nouveau: store i2c port pointer directly in nouveau_encoder
  drm/nouveau/i2c: handle i2c/aux mux outside of port lookup function
  drm/nv50/graph: avoid touching 400724, it doesn't exist
  drm/nouveau: Fix DPMS 1 on G4 Snowball, from snow white to coal black.
  ...

1  2 
drivers/gpu/drm/nouveau/Kconfig
drivers/gpu/drm/nouveau/nouveau_bo.c
drivers/gpu/drm/nouveau/nouveau_display.c
drivers/gpu/drm/nouveau/nouveau_drm.c
drivers/gpu/drm/nouveau/nouveau_gem.c
drivers/gpu/drm/nouveau/nv04_display.c
drivers/gpu/drm/nouveau/nv50_display.c

Simple merge
Simple merge
Simple merge
index d98bee012cab9ef84ae5835b383583af97c73ed1,6c45ddb9ebe93da45e1ac7f3b280c5feee8b2190..b4b4d0c1f4aff944f2a260fe9ba2754b4ac58723
@@@ -339,14 -342,9 +341,14 @@@ retry
                        return -ENOENT;
                }
                nvbo = gem->driver_private;
 +              if (nvbo == res_bo) {
 +                      res_bo = NULL;
 +                      drm_gem_object_unreference_unlocked(gem);
 +                      continue;
 +              }
  
                if (nvbo->reserved_by && nvbo->reserved_by == file_priv) {
-                       NV_ERROR(drm, "multiple instances of buffer %d on "
+                       NV_ERROR(cli, "multiple instances of buffer %d on "
                                      "validation list\n", b->handle);
                        drm_gem_object_unreference_unlocked(gem);
                        validate_fini(op, NULL);
                ret = ttm_bo_reserve(&nvbo->bo, true, false, true, sequence);
                if (ret) {
                        validate_fini(op, NULL);
 -                      if (unlikely(ret == -EAGAIN))
 -                              ret = ttm_bo_wait_unreserved(&nvbo->bo, true);
 -                      drm_gem_object_unreference_unlocked(gem);
 +                      if (unlikely(ret == -EAGAIN)) {
 +                              sequence = atomic_add_return(1, &drm->ttm.validate_sequence);
 +                              ret = ttm_bo_reserve_slowpath(&nvbo->bo, true,
 +                                                            sequence);
 +                              if (!ret)
 +                                      res_bo = nvbo;
 +                      }
                        if (unlikely(ret)) {
 +                              drm_gem_object_unreference_unlocked(gem);
                                if (ret != -ERESTARTSYS)
-                                       NV_ERROR(drm, "fail reserve\n");
+                                       NV_ERROR(cli, "fail reserve\n");
                                return ret;
                        }
 -                      goto retry;
                }
  
                b->user_priv = (uint64_t)(unsigned long)nvbo;