radeon_fence.c (256281) | radeon_fence.c (259742) |
---|---|
1/* 2 * Copyright 2009 Jerome Glisse. 3 * All Rights Reserved. 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the 7 * "Software"), to deal in the Software without restriction, including 8 * without limitation the rights to use, copy, modify, merge, publish, --- 16 unchanged lines hidden (view full) --- 25 */ 26/* 27 * Authors: 28 * Jerome Glisse <glisse@freedesktop.org> 29 * Dave Airlie 30 */ 31 32#include <sys/cdefs.h> | 1/* 2 * Copyright 2009 Jerome Glisse. 3 * All Rights Reserved. 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the 7 * "Software"), to deal in the Software without restriction, including 8 * without limitation the rights to use, copy, modify, merge, publish, --- 16 unchanged lines hidden (view full) --- 25 */ 26/* 27 * Authors: 28 * Jerome Glisse <glisse@freedesktop.org> 29 * Dave Airlie 30 */ 31 32#include <sys/cdefs.h> |
33__FBSDID("$FreeBSD: stable/10/sys/dev/drm2/radeon/radeon_fence.c 254885 2013-08-25 19:37:15Z dumbbell $"); | 33__FBSDID("$FreeBSD: stable/10/sys/dev/drm2/radeon/radeon_fence.c 259742 2013-12-22 21:18:21Z dumbbell $"); |
34 35#include <dev/drm2/drmP.h> 36#include "radeon_reg.h" 37#include "radeon.h" 38#ifdef DUMBBELL_WIP 39#include "radeon_trace.h" 40#endif /* DUMBBELL_WIP */ 41 --- 274 unchanged lines hidden (view full) --- 316 r = cv_timedwait_sig(&rdev->fence_queue, 317 &rdev->fence_queue_mtx, 318 timeout); 319 } else { 320 r = cv_timedwait(&rdev->fence_queue, 321 &rdev->fence_queue_mtx, 322 timeout); 323 } | 34 35#include <dev/drm2/drmP.h> 36#include "radeon_reg.h" 37#include "radeon.h" 38#ifdef DUMBBELL_WIP 39#include "radeon_trace.h" 40#endif /* DUMBBELL_WIP */ 41 --- 274 unchanged lines hidden (view full) --- 316 r = cv_timedwait_sig(&rdev->fence_queue, 317 &rdev->fence_queue_mtx, 318 timeout); 319 } else { 320 r = cv_timedwait(&rdev->fence_queue, 321 &rdev->fence_queue_mtx, 322 timeout); 323 } |
324 if (r == EINTR) 325 r = ERESTARTSYS; |
|
324 if (r != 0) { 325 if (r == EWOULDBLOCK) { 326 signaled = 327 radeon_fence_seq_signaled( 328 rdev, target_seq, ring); 329 } 330 break; 331 } 332 } 333 if (fence_queue_locked) { 334 mtx_unlock(&rdev->fence_queue_mtx); 335 } 336 radeon_irq_kms_sw_irq_put(rdev, ring); | 326 if (r != 0) { 327 if (r == EWOULDBLOCK) { 328 signaled = 329 radeon_fence_seq_signaled( 330 rdev, target_seq, ring); 331 } 332 break; 333 } 334 } 335 if (fence_queue_locked) { 336 mtx_unlock(&rdev->fence_queue_mtx); 337 } 338 radeon_irq_kms_sw_irq_put(rdev, ring); |
337 if (unlikely(r == EINTR || r == ERESTART)) { | 339 if (unlikely(r == ERESTARTSYS)) { |
338 return -r; 339 } 340 CTR2(KTR_DRM, "radeon fence: wait end (ring=%d, seq=%d)", 341 ring, seq); 342 343 if (unlikely(!signaled)) { 344#ifndef __FreeBSD__ 345 /* we were interrupted for some reason and fence --- 163 unchanged lines hidden (view full) --- 509 r = cv_timedwait_sig(&rdev->fence_queue, 510 &rdev->fence_queue_mtx, 511 timeout); 512 } else { 513 r = cv_timedwait(&rdev->fence_queue, 514 &rdev->fence_queue_mtx, 515 timeout); 516 } | 340 return -r; 341 } 342 CTR2(KTR_DRM, "radeon fence: wait end (ring=%d, seq=%d)", 343 ring, seq); 344 345 if (unlikely(!signaled)) { 346#ifndef __FreeBSD__ 347 /* we were interrupted for some reason and fence --- 163 unchanged lines hidden (view full) --- 511 r = cv_timedwait_sig(&rdev->fence_queue, 512 &rdev->fence_queue_mtx, 513 timeout); 514 } else { 515 r = cv_timedwait(&rdev->fence_queue, 516 &rdev->fence_queue_mtx, 517 timeout); 518 } |
519 if (r == EINTR) 520 r = ERESTARTSYS; |
|
517 if (r != 0) { 518 if (r == EWOULDBLOCK) { 519 signaled = 520 radeon_fence_any_seq_signaled( 521 rdev, target_seq); 522 } 523 break; 524 } 525 } 526 if (fence_queue_locked) { 527 mtx_unlock(&rdev->fence_queue_mtx); 528 } 529 for (i = 0; i < RADEON_NUM_RINGS; ++i) { 530 if (target_seq[i]) { 531 radeon_irq_kms_sw_irq_put(rdev, i); 532 } 533 } | 521 if (r != 0) { 522 if (r == EWOULDBLOCK) { 523 signaled = 524 radeon_fence_any_seq_signaled( 525 rdev, target_seq); 526 } 527 break; 528 } 529 } 530 if (fence_queue_locked) { 531 mtx_unlock(&rdev->fence_queue_mtx); 532 } 533 for (i = 0; i < RADEON_NUM_RINGS; ++i) { 534 if (target_seq[i]) { 535 radeon_irq_kms_sw_irq_put(rdev, i); 536 } 537 } |
534 if (unlikely(r == EINTR || r == ERESTART)) { | 538 if (unlikely(r == ERESTARTSYS)) { |
535 return -r; 536 } 537 CTR2(KTR_DRM, "radeon fence: wait end (ring=%d, target_seq=%d)", 538 ring, target_seq[ring]); 539 540 if (unlikely(!signaled)) { 541#ifndef __FreeBSD__ 542 /* we were interrupted for some reason and fence --- 441 unchanged lines hidden --- | 539 return -r; 540 } 541 CTR2(KTR_DRM, "radeon fence: wait end (ring=%d, target_seq=%d)", 542 ring, target_seq[ring]); 543 544 if (unlikely(!signaled)) { 545#ifndef __FreeBSD__ 546 /* we were interrupted for some reason and fence --- 441 unchanged lines hidden --- |