1. 01 3月, 2010 1 次提交
    • D
      drm/radeon: r100/r200 ums: block ability for userspace app to trash 0 page and beyond · 566d84d1
      Dave Airlie 提交于
      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: NDave Airlie <airlied@redhat.com>
      566d84d1
  2. 23 2月, 2010 1 次提交
  3. 20 2月, 2010 1 次提交
  4. 11 2月, 2010 1 次提交
    • J
      drm/radeon/kms: r600/r700 command stream checker · 961fb597
      Jerome Glisse 提交于
      This patch add cs checker to r600/r700 hw. Command stream checking
      will rewrite some of the cs value in order to restrict GPU access
      to BO size. This doesn't break old userspace but just enforce safe
      value. It should break any things that was using the r600/r700 cs
      ioctl to do forbidden things (malicious software), though we are
      not aware of such things.
      
      Here is the list of thing we check :
      - enforcing resource size
      - enforcing color buffer slice tile max, will restrict cb access
      - enforcing db buffer slice tile max, will restrict db access
      
      We don't check for shader bigger than the BO in which they are
      supposed to be, such use would lead to GPU lockup and is harmless
      from security POV, as far as we can tell (note that even checking
      for this wouldn't prevent someone to write bogus shader that lead
      to lockup).
      
      This patch has received as much testing as humanly possible with
      old userspace to check that it didn't break such configuration.
      However not all the applications out there were tested, thus it
      might broke some odd, rare applications.
      
      [airlied: fix rules for cs checker for parallel builds]
      Signed-off-by: NJerome Glisse <jglisse@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      961fb597
  5. 02 12月, 2009 1 次提交
    • A
      drm/radeon/kms: Add support for interrupts on r6xx/r7xx chips (v3) · d8f60cfc
      Alex Deucher 提交于
      This enables the use of interrupts on r6xx/r7xx hardware.
      Interrupts are implemented via a ring buffer.  The GPU adds
      interrupts vectors to the ring and the host reads them off
      in the interrupt handler.  The interrupt controller requires
      firmware like the CP.  This firmware must be installed and
      accessble to the firmware loader for interrupts to function.
      
      MSIs don't seem to work on my RS780.  They work fine on all
      my discrete cards.  I'm not sure about other RS780s or
      RS880s.  I've disabled MSIs on RS780 and RS880, but it would
      probably be worth checking on some other systems.
      
      v2 - fix some checkpatch.pl problems;
           re-read the disp int status reg if we restart the ih;
      
      v3 - remove the irq handler if r600_irq_init() fails;
           remove spinlock in r600_ih_ring_fini();
           move ih rb overflow check to r600_get_ih_wptr();
           move irq ack to separate function;
      Signed-off-by: NAlex Deucher <alexdeucher@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      d8f60cfc
  6. 23 9月, 2009 1 次提交
  7. 21 9月, 2009 1 次提交
  8. 15 9月, 2009 1 次提交
  9. 08 9月, 2009 1 次提交
    • J
      drm/radeon/kms: add r600 KMS support · 3ce0a23d
      Jerome Glisse 提交于
      This adds the r600 KMS + CS support to the Linux kernel.
      
      The r600 TTM support is quite basic and still needs more
      work esp around using interrupts, but the polled fencing
      should work okay for now.
      
      Also currently TTM is using memcpy to do VRAM moves,
      the code is here to use a 3D blit to do this, but
      isn't fully debugged yet.
      
      Authors:
      Alex Deucher <alexdeucher@gmail.com>
      Dave Airlie <airlied@redhat.com>
      Jerome Glisse <jglisse@redhat.com>
      Signed-off-by: NJerome Glisse <jglisse@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      3ce0a23d
  10. 31 8月, 2009 1 次提交
    • B
      radeon: Use request_firmware() · 70967ab9
      Ben Hutchings 提交于
      Loosely based on a patch by
      Jaswinder Singh Rajput <jaswinderlinux@gmail.com>.
      
      KMS support by Dave Airlie <airlied@redhat.com>.
      
      For Radeon 100- to 500-series, firmware blobs look like:
          struct {
              __be32 datah;
              __be32 datal;
          } cp_ucode[256];
      
      For Radeon 600-series, there are two separate firmware blobs:
          __be32 me_ucode[PM4_UCODE_SIZE * 3];
          __be32 pfp_ucode[PFP_UCODE_SIZE];
      
      For Radeon 700-series, likewise:
          __be32 me_ucode[R700_PM4_UCODE_SIZE];
          __be32 pfp_ucode[R700_PFP_UCODE_SIZE];
      Signed-off-by: NBen Hutchings <ben@decadent.org.uk>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      70967ab9
  11. 21 8月, 2009 1 次提交
  12. 05 8月, 2009 1 次提交
  13. 12 6月, 2009 1 次提交
  14. 04 6月, 2009 1 次提交
  15. 24 4月, 2009 1 次提交
  16. 29 3月, 2009 1 次提交
  17. 13 3月, 2009 8 次提交
  18. 29 12月, 2008 1 次提交
    • D
      drm: move to kref per-master structures. · 7c1c2871
      Dave Airlie 提交于
      This is step one towards having multiple masters sharing a drm
      device in order to get fast-user-switching to work.
      
      It splits out the information associated with the drm master
      into a separate kref counted structure, and allocates this when
      a master opens the device node. It also allows the current master
      to abdicate (say while VT switched), and a new master to take over
      the hardware.
      
      It moves the Intel and radeon drivers to using the sarea from
      within the new master structures.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      7c1c2871
  19. 09 12月, 2008 1 次提交
  20. 11 11月, 2008 1 次提交
    • D
      drm/radeon: map registers at load time · 78538bf1
      Dave Airlie 提交于
      Now that the radeon driver has suspend/resume functions, it needs to map its
      registers at load time or it will likely crash if a suspend operation occurs
      before the driver has been initialized.
      
      This patch moves the register mapping code from firstopen to load and makes
      the mapping into a _DRM_DRIVER one so that the core won't remove it at
      lastclose time.
      
      Fixes (at least partially) kernel bz #11891.
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDave Airlie <airlied@linux.ie>
      78538bf1
  21. 28 10月, 2008 1 次提交
  22. 18 10月, 2008 4 次提交
  23. 25 8月, 2008 1 次提交
  24. 14 7月, 2008 1 次提交
    • D
      drm: reorganise drm tree to be more future proof. · c0e09200
      Dave Airlie 提交于
      With the coming of kernel based modesetting and the memory manager stuff,
      the everything in one directory approach was getting very ugly and
      starting to be unmanageable.
      
      This restructures the drm along the lines of other kernel components.
      
      It creates a drivers/gpu/drm directory and moves the hw drivers into
      subdirectores. It moves the includes into an include/drm, and
      sets up the unifdef for the userspace headers we should be exporting.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      c0e09200
  25. 19 6月, 2008 6 次提交