1. 01 9月, 2014 1 次提交
  2. 24 7月, 2013 2 次提交
    • D
      qxl: convert qxl driver to proper use for reservations · 8002db63
      Dave Airlie 提交于
      The recent addition of lockdep support to reservations and their subsequent
      use by TTM showed up a number of potential problems with the way qxl was using
      TTM objects.
      
      a) it was allocating objects, and reserving them later without validating
      underneath the reservation, which meant in extreme conditions the objects could
      be evicted before the reservation ever used them.
      
      b) it was reserving objects straight after allocating them, but with no
      ability to back off should the reservations fail. It now allocates the necessary
      objects then does a complete reservation pass on them to avoid deadlocks.
      
      c) it had two lists per release tracking objects, unnecessary complicating
      the reservation process.
      
      This patch removes the dual object tracking, adds reservations ticket support
      to the release and fence object handling. It then ports the internal fb
      drawing code and the userspace facing ioctl to use the new interfaces properly,
      along with cleanup up the error path handling in some codepaths.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      8002db63
    • D
      qxl: allow creation of pre-pinned objects and use for releases. · 4f49ec92
      Dave Airlie 提交于
      In order to fix an issue with reservations we need to create the releases
      as pre-pinned objects, this changes the placement interface and bo creation
      interface to allow creating pinned objects to save nested reservations later.
      
      This is just a stepping stone to main fix which follows to actually fix how
      qxl deals with reservations.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      4f49ec92
  3. 05 7月, 2013 2 次提交
  4. 17 5月, 2013 1 次提交
    • D
      drm/qxl: fix ioport interactions for kernel submitted commands. · a6ac1bc3
      Dave Airlie 提交于
      So qxl has ioports, but it really really really doesn't want you
      to write to them twice, but if you write and get a signal before
      the irq arrives to let you know its completed, you have to think
      ahead and avoid writing another time.
      
      However this works fine for update area where really multiple
      writes aren't the end of the world, however with create primary
      surface, you can't ever do multiple writes. So this stop internal
      kernel writes from doing interruptible waits, because otherwise
      we have no idea if this write is a new one or a continuation of
      a previous one.
      
      virtual hw sucks more than real hw.
      
      This fixes lockups and VM crashes when resizing and starting/stopping
      X.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      a6ac1bc3
  5. 03 5月, 2013 1 次提交
  6. 16 4月, 2013 1 次提交
    • D
      drm/qxl: make lots of things static. · 6d01f1f5
      Dave Airlie 提交于
      /usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h:414:9: sparse: preprocessor token offsetof redefined
      include/linux/stddef.h:17:9: this was the original definition
      >> drivers/gpu/drm/qxl/qxl_drv.c:49:5: sparse: symbol 'qxl_modeset' was not declared. Should it be static?
      
      Reported-by: kbuild test robot.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      6d01f1f5
  7. 12 4月, 2013 1 次提交
    • D
      drm: add new QXL driver. (v1.4) · f64122c1
      Dave Airlie 提交于
      QXL is a paravirtual graphics device used by the Spice virtual desktop
      interface.
      
      The drivers uses GEM and TTM to manage memory, the qxl hw fencing however
      is quite different than normal TTM expects, we have to keep track of a number
      of non-linear fence ids per bo that we need to have released by the hardware.
      
      The releases are freed from a workqueue that wakes up and processes the
      release ring.
      
      releases are suballocated from a BO, there are 3 release categories, drawables,
      surfaces and cursor cmds. The hw also has 3 rings for commands, cursor and release handling.
      
      The hardware also have a surface id tracking mechnaism and the driver encapsulates it completely inside the kernel, userspace never sees the actual hw surface
      ids.
      
      This requires a newer version of the QXL userspace driver, so shouldn't be
      enabled until that has been placed into your distro of choice.
      
      Authors: Dave Airlie, Alon Levy
      
      v1.1: fixup some issues in the ioctl interface with padding
      v1.2: add module device table
      v1.3: fix nomodeset, fbcon leak, dumb bo create, release ring irq,
            don't try flush release ring (broken hw), fix -modesetting.
      v1.4: fbcon cpu usage reduction + suitable accel flags.
      Signed-off-by: NAlon Levy <alevy@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      f64122c1