1. 11 Jun, 2014 36 commits
  2. 10 Jun, 2014 4 commits
    • Ilia Mirkin's avatar
      drm/gk208/gr: add missing registers to grctx init · 255b329c
      Ilia Mirkin authored
      This fixes hangs on GK208 which happen instantaneously on trying to use a
      geometry shader.
      Signed-off-by: default avatarIlia Mirkin <imirkin@alum.mit.edu>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      Cc: stable@vger.kernel.org # v3.14+
      255b329c
    • Mario Kleiner's avatar
      drm/nouveau/kms/nv04-nv40: fix pageflip events via special case. · af4870e4
      Mario Kleiner authored
      Cards with nv04 display engine can't reliably use vblank
      counts and timestamps computed via drm_handle_vblank(), as
      the function gets invoked after sending the pageflip events.
      
      Fix this by defaulting to the old crtcid = -1 fallback path
      on <= NV-50 cards, and only using the precise path on NV-50
      and later.
      Signed-off-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      Cc: <stable@vger.kernel.org> # 3.13+
      af4870e4
    • Mario Kleiner's avatar
      drm/nv50-/mc: fix kms pageflip events by reordering irq handling order. · dcfb1009
      Mario Kleiner authored
      Whenever a single nouveau_mc_intr() main gpu irq-handler invocation was
      responsible for calling both, the vblank-irq handler (display engine irq)
      and kms-pageflip completion handler (from fifo irq), the order of
      invocation was wrong. nouveau_finish_flip() was called before
      drm_handle_vblank() for the vblank of pageflip completion, so the
      emitted pageflip event contained stale vblank count and timestamp
      from previous vblank. This caused failure in userspace to timestamp
      properly.
      
      Reorder order of invocation of engine irq handlers: Put
      NVDEV_ENGINE_DISP always on top, and thereby before NVDEV_ENGINE_FIFO,
      so that drm_handle_vblank() gets called to update vblank timestamps
      and count before potential pageflip events make use of that
      information.
      
      This works on nv-50 and later, where kms-pageflip completion triggers
      an irq either after a separate vblank irq, or both pageflip and vblank
      trigger one common irq invocation, but never before vblank irqs.
      
      v2 (Ben):
      - removed mods for nv04-nv40, it doesn't help there anyway
      - this is considered a hack, and a better solution should be found
      Signed-off-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      Cc: <stable@vger.kernel.org> # 3.13+
      dcfb1009
    • Mario Kleiner's avatar
      drm/nouveau/disp/nv04-nv40: abort scanoutpos query on vga analog. · e291af3f
      Mario Kleiner authored
      nv04_disp_scanoutpos() must abort to trigger simple timestamping
      fallback if vtotal/htotal regs return zero. This happens if the
      output isn't a digital output, but a vga analog output, as the
      regs don't get initialized in that case.
      
      Fixes timestamping failure on nv-40 and earlier with vga output.
      Signed-off-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      Cc: <stable@vger.kernel.org> # 3.14+
      e291af3f