Go to file
Chris Wilson 4f0f871730 intel: Handle resetting of input params after EINTR during SET_TILING
The SET_TILING is pernicious in that it overwrites the input arguments
following an error in order to report the current tiling state of the
buffer. This caught us by surprise as we then fed those arguments back
into to the ioctl unmodified following an EINTR and so the kernel then
reported success for the no-op. We interpreted this success as meaning
that the tiling on the buffer had changed so updated our state and
started using the buffer incorrectly in the new tiled/untiled manner.
This lead to all sorts of random corruption and GPU hangs, even though
the batch buffers would look sane (when the GPU had not wandered off
into forbidden territory).

References:

  Bug 25475 - [i915] Xorg crash / Execbuf while wedged
  http://bugs.freedesktop.org/show_bug.cgi?id=25475

  Bug 25554 - i830_uxa_prepare_access: gtt bo map failed: Input/output error
  http://bugs.freedesktop.org/show_bug.cgi?id=25554

(And probably every other weird bug in the last few months.)

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-02-10 09:52:36 +00:00
include nouveau: Update nouveau_drm.h 2010-01-27 14:50:32 +10:00
intel intel: Handle resetting of input params after EINTR during SET_TILING 2010-02-10 09:52:36 +00:00
libkms libkms: Rework interface to not duplicate fields from kms and make formats explicit 2010-01-28 17:32:54 +01:00
nouveau nouveau: Regenerate nouveau_class.h. 2010-02-01 01:48:13 +01:00
radeon libdrm/radeon: Fix section size mismatch to reset the section. 2010-02-04 12:14:37 +10:00
tests Tidy up compile warnings by cleaning up types. 2010-02-04 19:45:10 -05:00
.gitignore tests: Add a very small libkms test 2010-01-08 15:34:44 +00:00
Makefile.am libkms: Add libkms 2009-12-04 16:11:55 +01:00
README Update README 2009-11-20 17:08:28 -05:00
RELEASING Add RELEASING to document the release process 2009-12-03 17:50:37 -05:00
autogen.sh update autogen from xserver tree 2005-09-12 06:21:24 +00:00
configure.ac radeon: enable by default now that kms is out of staging 2010-02-02 10:58:50 +10:00
libdrm.pc.in Better pkgconfig-fu: -ldrm in Libs: 2005-10-13 21:03:31 +00:00
libdrm_lists.h Move libdrm/ up one level 2009-11-17 11:15:06 -05:00
xf86drm.c Be less chatty in drmSetMaster/drmDropMaster 2009-12-15 08:44:40 -05:00
xf86drm.h Bump event context structure version for page flipping 2009-12-03 14:27:08 -08:00
xf86drmHash.c Move libdrm/ up one level 2009-11-17 11:15:06 -05:00
xf86drmMode.c modes: Retry GETCONNECTOR if a hotplug event occurs between the two ioctls 2010-01-06 23:46:14 +00:00
xf86drmMode.h Merge branch 'modesetting-dirty-libdrm' 2009-12-02 19:40:58 +01:00
xf86drmRandom.c Move libdrm/ up one level 2009-11-17 11:15:06 -05:00
xf86drmSL.c Tidy up compile warnings by cleaning up types. 2010-02-04 19:45:10 -05:00
xf86mm.h Move libdrm/ up one level 2009-11-17 11:15:06 -05:00

README

libdrm - userspace library for drm

This  is libdrm,  a userspace  library for  accessing the  DRM, direct
rendering  manager, on  Linux,  BSD and  other  operating systes  that
support the  ioctl interface.  The library  provides wrapper functions
for the  ioctls to avoid  exposing the kernel interface  directly, and
for chipsets with drm memory manager, support for tracking relocations
and  buffers.   libdrm  is  a  low-level library,  typically  used  by
graphics drivers  such as the Mesa  DRI drivers, the  X drivers, libva
and  similar projects.  New  functionality in  the kernel  DRM drivers
typically requires  a new  libdrm, but a  new libdrm will  always work
with an older kernel.


Compiling
---------

libdrm  is  a  standard  autotools  packages and  follows  the  normal
configure, build  and install steps.   The first step is  to configure
the package, which is done by running the configure shell script:

	./configure

By default, libdrm  will install into the /usr/local/  prefix.  If you
want  to  install   this  DRM  to  replace  your   system  copy,  pass
--prefix=/usr and  --exec-prefix=/ to configure.  If  you are building
libdrm  from a  git checkout,  you first  need to  run  the autogen.sh
script.  You can  pass any options to autogen.sh  that you would other
wise  pass to configure,  or you  can just  re-run configure  with the
options you need once autogen.sh finishes.

Next step is to build libdrm:

	make

and once make finishes successfully, install the package using

	make install

If you are install into a system location, you will need to be root to
perform the install step.