1. 12 10月, 2010 1 次提交
    • J
      drm/radeon/kms: avoid corner case issue with unmappable vram V2 · c919b371
      Jerome Glisse 提交于
      We should not allocate any object into unmappable vram if we
      have no means to access them which on all GPU means having the
      CP running and on newer GPU having the blit utility working.
      
      This patch limit the vram allocation to visible vram until
      we have acceleration up and running.
      
      Note that it's more than unlikely that we run into any issue
      related to that as when acceleration is not woring userspace
      should allocate any object in vram beside front buffer which
      should fit in visible vram.
      
      V2 use real_vram_size as mc_vram_size could be bigger than
         the actual amount of vram
      
      [airlied: fixup r700_cp_stop case]
      Signed-off-by: NJerome Glisse <jglisse@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      c919b371
  2. 13 9月, 2010 2 次提交
    • M
      drm/radeon/kms: fix the colorbuffer CS checker for r300-r500 · a41ceb1c
      Marek Olšák 提交于
      This commit fixes bogus CS rejection if it contains a sequence
      of the following operations:
      
      - Set the color buffer 0. track->cb[i].robj becomes non-NULL.
      - Render.
      - Set a larger zbuffer than the previously-set color buffer.
      - Set a larger scissor area as well.
      - Set the color channel mask to 0 to do depth-only rendering.
      - Render. --> rejected, because track->cb[i].robj remained non-NULL,
        therefore the conditional checking for the color channel mask and
        friends is not performed, and the larger scissor area causes
        the rejection.
      
      This fixes bugs:
      - https://bugs.freedesktop.org/show_bug.cgi?id=29762
      - https://bugs.freedesktop.org/show_bug.cgi?id=28869
      And maybe some others which seem to look the same.
      
      If possible, this commit should go to stable as well.
      Signed-off-by: NMarek Olšák <maraeo@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      a41ceb1c
    • M
      drm/radeon/kms: increase lockup detection interval to 10 sec for r100-r500 · ec00efb7
      Marek Olšák 提交于
      One subtest of mesa/demos/gltestperf takes 9 seconds to complete,
      so to prevent an unnecessary gpu reset followed by a hardlock, I am
      increasing the interval to 10 seconds after which a GPU is considered
      in a locked-up state. This is on RV530. However, with a little slower GPU,
      we would surpass the interval easily, so this is not a good fix
      for gltestperf.
      
      Nevertheless, this commit also fixes hardlocks in the applications which
      render at speed of less than 1 frame per second, where the whole frame
      consists of only one command stream. The game Tiny & Big is an example.
      This bar is now lowered to 0.1 fps.
      
      Now the question comes down to whether we should (often unsuccessfully)
      reset the GPU at all? Once we have stable enough drivers, we won't have to.
      Has the time come already?
      
      If possible, this commit should go to stable as well.
      Signed-off-by: NMarek Olšák <maraeo@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      ec00efb7
  3. 02 8月, 2010 4 次提交
  4. 22 7月, 2010 1 次提交
    • D
      drm/radeon/kms: drop taking lock around crtc lookup. · 29508eb6
      Dave Airlie 提交于
      We only add/remove crtcs at driver load, you cannot remove when
      the GPU is running a CS packet since the fd is open, when
      GPU hotplugging on radeons actually is needed all this locking
      needs a review and I've started re-working kms core locking to deal
      with this better. But for now avoid long delays in CS processing when
      hotplug detect is happening in a different thread.
      
      this fixes a regression introduced with hotplug detection.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      29508eb6
  5. 16 7月, 2010 1 次提交
    • A
      drm/radeon/kms: fix gtt MC base alignment on rs4xx/rs690/rs740 asics · 8d369bb1
      Alex Deucher 提交于
      The asics in question have the following requirements with regard to
      their gart setups:
      
      1. The GART aperture size has to be in the form of 2^X bytes, where X is from 25 to 31
      2. The GART aperture MC base has to be aligned to a boundary equal to the size of the
      aperture.
      3. The GART page table has to be aligned to the boundary equal to the size of the table.
      4. The GART page table size is: table_entry_size * (aperture_size / page_size)
      5. The GART page table has to be allocated in non-paged, non-cached, contiguous system
      memory.
      
      This patch takes care 2.  The rest should already be handled properly.
      
      This fixes a regression noticed by: Torsten Kaiser <just.for.lkml@googlemail.com>
      Tested-by: NTorsten Kaiser <just.for.lkml@googlemail.com>
      Signed-off-by: NAlex Deucher <alexdeucher@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      8d369bb1
  6. 01 7月, 2010 2 次提交
  7. 15 6月, 2010 1 次提交
    • D
      radeon/kms: fix powerpc/rn50 untiled behaviour. · f5c5f040
      Dave Airlie 提交于
      Installing 2.6.34 on a Power5/rn50 combo machine, X showed buggy sw rendering,
      enabling tiling in the DDX fixed it. Investigation showed that a further /16
      was needed in the untiled case on this chipset. Need further investigations
      on what other chips this could affect, possibly rv100->rv280.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      f5c5f040
  8. 08 6月, 2010 1 次提交
    • A
      drm/radeon/kms/pm: add mid profile · c9e75b21
      Alex Deucher 提交于
      This adds an additional profile, mid, to the pm profile
      code which takes the place of the old low profile.  The default
      behavior remains the same, e.g., auto profile now selects between
      mid and high profiles based on power source, however, you can now
      manually force the low profile which was previously only available
      as a dpms off state.  Enabling the low profile when the displays
      are on has been known to cause display corruption in some cases.
      Signed-off-by: NAlex Deucher <alexdeucher@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      c9e75b21
  9. 01 6月, 2010 1 次提交
  10. 18 5月, 2010 15 次提交
  11. 28 4月, 2010 1 次提交
  12. 20 4月, 2010 1 次提交
  13. 19 4月, 2010 1 次提交
  14. 12 4月, 2010 1 次提交
  15. 06 4月, 2010 3 次提交
    • J
      drm/radeon/kms: simplify & improve GPU reset V2 · 90aca4d2
      Jerome Glisse 提交于
      This simplify and improve GPU reset for R1XX-R6XX hw, it's
      not 100% reliable here are result:
      - R1XX/R2XX works bunch of time in a row, sometimes it
        seems it can work indifinitly
      - R3XX/R3XX the most unreliable one, sometimes you will be
        able to reset few times, sometimes not even once
      - R5XX more reliable than previous hw, seems to work most
        of the times but once in a while it fails for no obvious
        reasons (same status than previous reset just no same
        happy ending)
      - R6XX/R7XX are lot more reliable with this patch, still
        it seems that it can fail after a bunch (reset every
        2sec for 3hour bring down the GPU & computer)
      
      This have been tested on various hw, for some odd reasons
      i wasn't able to lockup RS480/RS690 (while they use to
      love locking up).
      
      Note that on R1XX-R5XX the cursor will disapear after
      lockup haven't checked why, switch to console and back
      to X will restore cursor.
      
      Next step is to record the bogus command that leaded to
      the lockup.
      
      V2 Fix r6xx resume path to avoid reinitializing blit
      module, use the gpu_lockup boolean to avoid entering
      inifinite waiting loop on fence while reiniting the GPU
      Signed-off-by: NJerome Glisse <jglisse@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      90aca4d2
    • J
      drm/radeon/kms: rename gpu_reset to asic_reset · a2d07b74
      Jerome Glisse 提交于
      Patch rename gpu_reset to asic_reset in prevision of having
      gpu_reset doing more stuff than just basic asic reset.
      Signed-off-by: NJerome Glisse <jglisse@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      a2d07b74
    • J
      drm/radeon/kms: fence cleanup + more reliable GPU lockup detection V4 · 225758d8
      Jerome Glisse 提交于
      This patch cleanup the fence code, it drops the timeout field of
      fence as the time to complete each IB is unpredictable and shouldn't
      be bound.
      
      The fence cleanup lead to GPU lockup detection improvement, this
      patch introduce a callback, allowing to do asic specific test for
      lockup detection. In this patch the CP is use as a first indicator
      of GPU lockup. If CP doesn't make progress during 1second we assume
      we are facing a GPU lockup.
      
      To avoid overhead of testing GPU lockup frequently due to fence
      taking time to be signaled we query the lockup callback every
      500msec. There is plenty code comment explaining the design & choise
      inside the code.
      
      This have been tested mostly on R3XX/R5XX hw, in normal running
      destkop (compiz firefox, quake3 running) the lockup callback wasn't
      call once (1 hour session). Also tested with forcing GPU lockup and
      lockup was reported after the 1s CP activity timeout.
      
      V2 switch to 500ms timeout so GPU lockup get call at least 2 times
         in less than 2sec.
      V3 store last jiffies in fence struct so on ERESTART, EBUSY we keep
         track of how long we already wait for a given fence
      V4 make sure we got up to date cp read pointer so we don't have
         false positive
      Signed-off-by: NJerome Glisse <jglisse@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      225758d8
  16. 01 4月, 2010 2 次提交
  17. 31 3月, 2010 2 次提交