summaryrefslogtreecommitdiff
path: root/nouveau
AgeCommit message (Collapse)Author
2015-05-21nouveau: add coherent BO attributeAlexandre Courbot
Add a flag allowing Nouveau to specify that an object should be coherent at allocation time. This is required for some class of objects like fences which are randomly-accessed by both the CPU and GPU. This flag instructs the kernel driver to make sure the object remains coherent even on architectures for which coherency is not guaranteed by the bus. Reviewed-by: Ben Skeggs <bskeggs@redhat.com> Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
2015-05-06nouveau: restore check that avoids multiple user bos per kernel boBen Skeggs
Lost in 5ea6f1c32628887c9df0c53bc8c199eb12633fec, triggering fdo#89842. Unlike the PRIME fd->handle interfaces, the GEM_OPEN interface doesn't do anything at the kernel level to prevent this situation occuring, and we end up with multiple GEM handles for a single kernel buffer. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2015-04-28Add missing <strings.h> includesGreg Hackmann
A couple of files use ffs() without explicitly including strings.h. Some systems will pull in ffs()'s declaration through another header anyway, but not when compiling against bionic in AOSP master. Signed-off-by: Greg Hackmann <ghackmann@google.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-04-28drm: remove drm_public macroEmil Velikov
Some compilers (like the Oracle Studio), require that the function declaration must be annotated with the same visibility attribute as the definition. As annotating functions with drm_public is no longer required just remove the macro. Cc: Ben Skeggs <bskeggs@redhat.com> Cc: Damien Lespiau <damien.lespiau@intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com> Cc: Michel Dänzer <michel.daenzer@amd.com> Cc: Rob Clark <robdclark@gmail.com> Cc: Thierry Reding <treding@nvidia.com> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-04-28drm: remove no longer needed VISIBILITY_CFLAGSEmil Velikov
With earlier commits we've annotated the private symbols, thus we no longer require the -fvisibility=hidden CFLAGS. Cc: Ben Skeggs <bskeggs@redhat.com> Cc: Damien Lespiau <damien.lespiau@intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com> Cc: Michel Dänzer <michel.daenzer@amd.com> Cc: Rob Clark <robdclark@gmail.com> Cc: Thierry Reding <treding@nvidia.com> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-04-28drm: rename libdrm{,_macros}.hEmil Velikov
Provide a more meaningful name, considering what it does. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-04-28nouveau: add symbols testEmil Velikov
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-04-28nouveau: annotate the private symbolsEmil Velikov
They are less and easier to track than the public ones. The macro drm_public will be going away by the end of the series. Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com> Cc: Ben Skeggs <bskeggs@redhat.com> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-03-20autotools: remove ${srcdir} from the includesEmil Velikov
Already handled by the build system. v2: s/compiler/build system/ Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-03-20android: remove LOCAL_COPY_HEADERS* variablesEmil Velikov
With earlier changes we've implicitly add the relevant directories to the includes list, via LOCAL_EXPORT_C_INCLUDES_DIRS. v2: Update the top Android.mk as well. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-03-20android: remove ${srcdir} from the includesEmil Velikov
Already handled by the build system. v2: s/compiler/build system/. Spotted by Chih-Wei. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-03-20android: simplify LOCAL_C_INCLUDESEmil Velikov
Each of the libdrm_${hw} modules pull libdrm for linking as such: libdrm's LOCAL_EXPORT_C_INCLUDE_DIRS are added to the includes list. The former of which is already set to ${top} and ${top}/include/drm. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-03-20android: correcly set LOCAL_EXPORT_C_INCLUDE_DIRSEmil Velikov
- Don't add ${hw}/${hw}, but ${hw} to the includes path. The former does not exist. - Set the variable for libkms. Inspired by the work of from Chih-Wei from the Android-x86 project. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-03-13nouveau: Do not add most bo's to the global bo list.Maarten Lankhorst
Only add wrapped bo's and bo's that have been exported through flink or dma-buf. This avoids a lock in the common case, and decreases traversal needed for importing a dma-buf or flink. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@ubuntu.com> Tested-By: Emil Velikov <emil.l.velikov@gmail.com>
2015-03-13nouveau: make nouveau importing global buffers completely thread-safe, with ↵Maarten Lankhorst
tests While I've closed off most races in a previous patch, a small race still existed where importing then unreffing cound cause an invalid bo. Add a test for this case. Racing sequence fixed: - thread 1 releases bo, refcount drops to zero, blocks on acquiring nvdev->lock. - thread 2 increases refcount to 1. - thread 2 decreases refcount to zero, blocks on acquiring nvdev->lock. At this point the 2 threads will clean up the same bo. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@ubuntu.com> Reviewed-By: Emil Velikov <emil.l.velikov@gmail.com>
2015-02-23android: remove duplicate libdrm in LOCAL_SHARED_LIBRARIESChih-Wei Huang
v2: Fold libpciaccess and libdrm into a single local_shared_libraries Acked-by: Jan Vesely <jan.vesely@rutgers.edu> Signed-off-by: Chih-Wei Huang <cwhuang@linux.org.tw> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-02-16nouveau: fix unlock nouveau_bo_name_ref()Jerome Glisse
Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
2015-01-26nouveau: Remove unused static function.Thomas Klausner
Signed-off-by: Thomas Klausner <wiz@NetBSD.org> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@ubuntu.com>
2014-09-28fix compile error on 32bit systemsRob Clark
4c2766b (drm_mmap/drm_unmap) brought this error for every .c file that was not #including config.h: In file included from private.h:4:0, from abi16.c:29: ../libdrm.h: In function 'drm_munmap': ../libdrm.h:81:4: error: size of unnamed array is negative Signed-off-by: Rob Clark <robdclark@gmail.com>
2014-09-28nouveau: use drm_mmap/drm_munmap wrappersEmil Velikov
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
2014-09-28automake: pick up all files for distribution.Emil Velikov
Autotools is already smart enough to pick the *.pc.in files but it needs some help with the Android.mk ones. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
2014-09-01nouveau: add Android build supportEmil Velikov
v2 Rename the headers variable(s) to *_H_FILES. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2014-09-01libdrm, freedreno, intel, nouveau, radeon: add Makefile.sourcesEmil Velikov
Will be used to consolidate the required sources lists as well as the install-able headers. This is turn will help us to avoid the duplication with the upcoming Android build support. v2: Rename the headers variable to *_H_FILES. v3: Rebase on top of symbol visibility patches. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2014-08-04nouveau: Only export public functions.Maarten Lankhorst
This hides all the abi16_* functions and the nouveau_debug variable, they should have been private to begin with. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
2014-04-16amend previous commit to actually compileMaarten Lankhorst
Ugh!
2014-04-15nouveau: safen up nouveau_device list usage against concurrent accessMaarten Lankhorst
I cannot make nouveau_bo_wrap thread-safe (by design), but it seems to be used to convert drm fb's to nouveau_bo's and to get a notify handle from fifo->notify in nv30_screen.c Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@ubuntu.com>
2013-11-07nouveau: prevent undefined behavior in nouveau_pushbuf_reloc with gcc-4.8Maarten Lankhorst
Reported-by: ronald645@gmail.com Bisected-by (gcc): Andreas Radke <a.radke@arcor.de> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71116 Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
2013-03-26nouveau: add a way to override single pushbuffer memory limitsMarcin Slusarz
Currently single pushbuffer can take up to 80% of VRAM and 80% of GART. As this value seems to be arbitrary (and user may need to set it differently) this patch adds support for 2 environment variables: NOUVEAU_LIBDRM_VRAM_LIMIT_PERCENT (default 80) NOUVEAU_LIBDRM_GART_LIMIT_PERCENT (default 80) which will let users override pushbuffer VRAM/GART limits. Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
2013-03-26nouveau: return error from pushbuf_validateMarcin Slusarz
Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
2013-01-16nouveau: use @PACKAGE_VERSION@ in libdrm_nouveau.pcMaarten Lankhorst
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
2013-01-16nouveau: expose channel engine selection on kepler chipsetsBen Skeggs
v2: Take Maarten Lankhorst's suggestion of nesting the struct to prevent sizeof() issues due to padding on older revisions. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
2013-01-14libdrm_nouveau.pc: don't include I${includedir}/nouveauMarcin Slusarz
Nouveau headers are installed in I${includedir}/libdrm.
2013-01-07nouveau: disallow pushbuf BOs in multiple memory typesBen Skeggs
Under certain circumstances it's possible for libdrm to decide to move a GART|VRAM pushbuf to be VRAM-only. This causes the kernel to reject the command submission on GF8 and up, due to a stricter policy where buffers are only allowed to move to memory types that were specified at creation time. The simplest fix for this is to force the creation-time memory type for the lifetime of the push buffer. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-07-19libdrm/nouveau: add prime handle->bo and bo->handle support.Dave Airlie
This adds prime support to nouveau libdrm. Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-06-09nouveau: silence some remaining valgrind warningsMarcin Slusarz
Valgrind can't understand some of the fields passed to ioctls are overwritten by kernel, so we need to initialize them. Almost all of our ioctl wrappers already do it and the cost of remaining 3 is very small. Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
2012-05-02nouveau: fix channel closingMarcin Slusarz
Restore code lost in libdrm_nouveau rewrite. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-04-24nouveau: expose notifier handle on nvc0 as wellChristoph Bumiller
Signed-off-by: Christoph Bumiller <e0425955@student.tuwien.ac.at> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-04-24nouveau: remove unnecessary EAGAIN loopsMarcin Slusarz
drmCommandWrite / drmCommandWriteRead already loop on EAGAIN. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-04-17nouveau: init nvc0 channel alloc req structure fullyBen Skeggs
Kernel rejects ~0 handles, even though they're not used on NVC0. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-04-14nouveau: pull in major libdrm rewriteBen Skeggs
Redesigned primarily to allow us to better take advantage of BO's having fixed GPU virtual addresses on GeForce 8 and up, and to reduce the overhead of handling relocations on earlier chipsets. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Signed-off-by: Christoph Bumiller <e0425955@student.tuwien.ac.at>
2011-11-27nouveau: Mark nouveau subchannel unbound nouveau_grobj_freeMaarten Lankhorst
Valgrind throws warns about a user-after-free if you try to bind a new subchannel after the old one in that slot was freed, so remove it from the channel list. Signed-off-by: Maarten Lankhorst <m.b.lankhorst@gmail.com>
2011-10-19nouveau: free in error path if drmAvailable fails.Dave Airlie
This was reported in coverity. Signed-off-by: Dave Airlie <airlied@redhat.com>
2011-09-18nouveau: assert argument cannot have side effectsMarcin Slusarz
... because argument is evaluated only if NDEBUG is not defined
2010-12-21nouveau: fix up reloc_emit() to accept NULL target bufferBen Skeggs
The nvc0 gallium drivers passes NULL here to indicate to the memory manager that a buffer is being used, but without creating an actual reloc. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2010-12-21nouveau: split pushbuf macros specific to nv04-nv50 out, and add nvc0Ben Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2010-12-21nouveau: nvc0 drm has no concept of "notifier block"Ben Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2010-11-22nouveau: Add implicit pushbuf flush before gpuobj destruction.Francisco Jerez
It makes sure that GPU object destruction is executed in order with respect to the previous FIFO commands. Signed-off-by: Francisco Jerez <currojerez@riseup.net> Acked-by: Ben Skeggs <bskeggs@redhat.com>
2010-10-31nouveau: Avoid unnecessary call to CPU_FINI.Francisco Jerez
nouveau_bo_unmap called the CPU_FINI IOCTL even if it was a NOSYNC mapping. It caused no harmful effects (actually CPU_FINI is a no-op on recent enough kernels) besides the precious CPU cycles being wasted. Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2010-10-12nouveau: Let the user choose the push buffer size.Francisco Jerez
Signed-off-by: Francisco Jerez <currojerez@riseup.net> Acked-by: Ben Skeggs <bskeggs@redhat.com>
2010-10-12nouveau: Define buffer object usage flags.Francisco Jerez
Signed-off-by: Francisco Jerez <currojerez@riseup.net> Acked-by: Ben Skeggs <bskeggs@redhat.com>