diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c index 0b5d31f..4ba702c 100644 --- a/libdrm/xf86drm.c +++ b/libdrm/xf86drm.c @@ -48,6 +48,7 @@ #include #include #include +#include #include /* Not all systems have MAP_FAILED defined */ @@ -1261,10 +1262,14 @@ int drmDMA(int fd, drmDMAReqPtr request) dma.request_sizes = request->request_sizes; dma.granted_count = 0; + clock_t czas = clock(); + do { ret = ioctl( fd, DRM_IOCTL_DMA, &dma ); } while ( ret && errno == EAGAIN && i++ < DRM_DMA_RETRY ); + drmMsg(" xf86drm::drmDMA() ioctl used %d time(s), ret==%d (%.2f sec)\n", i + 1, ret, (float)(clock() - czas)/CLOCKS_PER_SEC); + if ( ret == 0 ) { request->granted_count = dma.granted_count; return 0;