Convert struct intel_ringbuffer::irq_queue to drm waitqueues.diff -r1.1.1.1.2.7 -r1.1.1.1.2.8 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c
(riastradh)
--- src/sys/external/bsd/drm2/dist/drm/i915/Attic/i915_dma.c 2013/07/24 03:05:41 1.1.1.1.2.7
+++ src/sys/external/bsd/drm2/dist/drm/i915/Attic/i915_dma.c 2013/07/24 03:06:00 1.1.1.1.2.8
@@ -792,28 +792,34 @@ static int i915_wait_irq(struct drm_devi | @@ -792,28 +792,34 @@ static int i915_wait_irq(struct drm_devi | |||
792 | DRM_DEBUG_DRIVER("irq_nr=%d breadcrumb=%d\n", irq_nr, | 792 | DRM_DEBUG_DRIVER("irq_nr=%d breadcrumb=%d\n", irq_nr, | |
793 | READ_BREADCRUMB(dev_priv)); | 793 | READ_BREADCRUMB(dev_priv)); | |
794 | 794 | |||
795 | if (READ_BREADCRUMB(dev_priv) >= irq_nr) { | 795 | if (READ_BREADCRUMB(dev_priv) >= irq_nr) { | |
796 | if (master_priv->sarea_priv) | 796 | if (master_priv->sarea_priv) | |
797 | master_priv->sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv); | 797 | master_priv->sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv); | |
798 | return 0; | 798 | return 0; | |
799 | } | 799 | } | |
800 | 800 | |||
801 | if (master_priv->sarea_priv) | 801 | if (master_priv->sarea_priv) | |
802 | master_priv->sarea_priv->perf_boxes |= I915_BOX_WAIT; | 802 | master_priv->sarea_priv->perf_boxes |= I915_BOX_WAIT; | |
803 | 803 | |||
804 | if (ring->irq_get(ring)) { | 804 | if (ring->irq_get(ring)) { | |
805 | #ifdef __NetBSD__ | |||
806 | DRM_TIMED_WAIT_UNTIL(ret, &ring->irq_queue, &drm_global_mutex, | |||
807 | 3 * DRM_HZ, | |||
808 | READ_BREADCRUMB(dev_priv) >= irq_nr); | |||
809 | #else | |||
805 | DRM_WAIT_ON(ret, ring->irq_queue, 3 * DRM_HZ, | 810 | DRM_WAIT_ON(ret, ring->irq_queue, 3 * DRM_HZ, | |
806 | READ_BREADCRUMB(dev_priv) >= irq_nr); | 811 | READ_BREADCRUMB(dev_priv) >= irq_nr); | |
812 | #endif | |||
807 | ring->irq_put(ring); | 813 | ring->irq_put(ring); | |
808 | } else if (wait_for(READ_BREADCRUMB(dev_priv) >= irq_nr, 3000)) | 814 | } else if (wait_for(READ_BREADCRUMB(dev_priv) >= irq_nr, 3000)) | |
809 | ret = -EBUSY; | 815 | ret = -EBUSY; | |
810 | 816 | |||
811 | if (ret == -EBUSY) { | 817 | if (ret == -EBUSY) { | |
812 | DRM_ERROR("EBUSY -- rec: %d emitted: %d\n", | 818 | DRM_ERROR("EBUSY -- rec: %d emitted: %d\n", | |
813 | READ_BREADCRUMB(dev_priv), (int)dev_priv->dri1.counter); | 819 | READ_BREADCRUMB(dev_priv), (int)dev_priv->dri1.counter); | |
814 | } | 820 | } | |
815 | 821 | |||
816 | return ret; | 822 | return ret; | |
817 | } | 823 | } | |
818 | 824 | |||
819 | /* Needs the lock as it touches the ring. | 825 | /* Needs the lock as it touches the ring. |
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c 2013/07/23 21:28:22 1.1.1.1.2.2
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c 2013/07/24 03:06:00 1.1.1.1.2.3
@@ -1018,34 +1018,44 @@ static int __wait_seqno(struct intel_rin | @@ -1018,34 +1018,44 @@ static int __wait_seqno(struct intel_rin | |||
1018 | 1018 | |||
1019 | timeout_jiffies = timespec_to_jiffies(&wait_time); | 1019 | timeout_jiffies = timespec_to_jiffies(&wait_time); | |
1020 | 1020 | |||
1021 | if (WARN_ON(!ring->irq_get(ring))) | 1021 | if (WARN_ON(!ring->irq_get(ring))) | |
1022 | return -ENODEV; | 1022 | return -ENODEV; | |
1023 | 1023 | |||
1024 | /* Record current time in case interrupted by signal, or wedged * */ | 1024 | /* Record current time in case interrupted by signal, or wedged * */ | |
1025 | getrawmonotonic(&before); | 1025 | getrawmonotonic(&before); | |
1026 | 1026 | |||
1027 | #define EXIT_COND \ | 1027 | #define EXIT_COND \ | |
1028 | (i915_seqno_passed(ring->get_seqno(ring, false), seqno) || \ | 1028 | (i915_seqno_passed(ring->get_seqno(ring, false), seqno) || \ | |
1029 | atomic_read(&dev_priv->mm.wedged)) | 1029 | atomic_read(&dev_priv->mm.wedged)) | |
1030 | do { | 1030 | do { | |
1031 | #ifdef __NetBSD__ | |||
1032 | /* | |||
1033 | * XXX This wait is always interruptible; we should | |||
1034 | * heed the flag `interruptible'. | |||
1035 | */ | |||
1036 | DRM_TIMED_WAIT_UNTIL(end, &ring->irq_queue, &drm_global_mutex, | |||
1037 | timeout_jiffies, | |||
1038 | EXIT_COND); | |||
1039 | #else | |||
1031 | if (interruptible) | 1040 | if (interruptible) | |
1032 | end = wait_event_interruptible_timeout(ring->irq_queue, | 1041 | end = wait_event_interruptible_timeout(ring->irq_queue, | |
1033 | EXIT_COND, | 1042 | EXIT_COND, | |
1034 | timeout_jiffies); | 1043 | timeout_jiffies); | |
1035 | else | 1044 | else | |
1036 | end = wait_event_timeout(ring->irq_queue, EXIT_COND, | 1045 | end = wait_event_timeout(ring->irq_queue, EXIT_COND, | |
1037 | timeout_jiffies); | 1046 | timeout_jiffies); | |
1038 | 1047 | |||
1048 | #endif | |||
1039 | ret = i915_gem_check_wedge(dev_priv, interruptible); | 1049 | ret = i915_gem_check_wedge(dev_priv, interruptible); | |
1040 | if (ret) | 1050 | if (ret) | |
1041 | end = ret; | 1051 | end = ret; | |
1042 | } while (end == 0 && wait_forever); | 1052 | } while (end == 0 && wait_forever); | |
1043 | 1053 | |||
1044 | getrawmonotonic(&now); | 1054 | getrawmonotonic(&now); | |
1045 | 1055 | |||
1046 | ring->irq_put(ring); | 1056 | ring->irq_put(ring); | |
1047 | trace_i915_gem_request_wait_end(ring, seqno); | 1057 | trace_i915_gem_request_wait_end(ring, seqno); | |
1048 | #undef EXIT_COND | 1058 | #undef EXIT_COND | |
1049 | 1059 | |||
1050 | if (timeout) { | 1060 | if (timeout) { | |
1051 | struct timespec sleep_time = timespec_sub(now, before); | 1061 | struct timespec sleep_time = timespec_sub(now, before); |
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c 2013/07/23 21:28:22 1.1.1.1.2.2
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c 2013/07/24 03:06:00 1.1.1.1.2.3
@@ -343,27 +343,31 @@ static void ironlake_handle_rps_change(s | @@ -343,27 +343,31 @@ static void ironlake_handle_rps_change(s | |||
343 | return; | 343 | return; | |
344 | } | 344 | } | |
345 | 345 | |||
346 | static void notify_ring(struct drm_device *dev, | 346 | static void notify_ring(struct drm_device *dev, | |
347 | struct intel_ring_buffer *ring) | 347 | struct intel_ring_buffer *ring) | |
348 | { | 348 | { | |
349 | struct drm_i915_private *dev_priv = dev->dev_private; | 349 | struct drm_i915_private *dev_priv = dev->dev_private; | |
350 | 350 | |||
351 | if (ring->obj == NULL) | 351 | if (ring->obj == NULL) | |
352 | return; | 352 | return; | |
353 | 353 | |||
354 | trace_i915_gem_request_complete(ring, ring->get_seqno(ring, false)); | 354 | trace_i915_gem_request_complete(ring, ring->get_seqno(ring, false)); | |
355 | 355 | |||
356 | #ifdef __NetBSD__ | |||
357 | DRM_WAKEUP_ALL(&ring->irq_queue, &drm_global_mutex); | |||
358 | #else | |||
356 | wake_up_all(&ring->irq_queue); | 359 | wake_up_all(&ring->irq_queue); | |
360 | #endif | |||
357 | if (i915_enable_hangcheck) { | 361 | if (i915_enable_hangcheck) { | |
358 | dev_priv->hangcheck_count = 0; | 362 | dev_priv->hangcheck_count = 0; | |
359 | mod_timer(&dev_priv->hangcheck_timer, | 363 | mod_timer(&dev_priv->hangcheck_timer, | |
360 | round_jiffies_up(jiffies + DRM_I915_HANGCHECK_JIFFIES)); | 364 | round_jiffies_up(jiffies + DRM_I915_HANGCHECK_JIFFIES)); | |
361 | } | 365 | } | |
362 | } | 366 | } | |
363 | 367 | |||
364 | static void gen6_pm_rps_work(struct work_struct *work) | 368 | static void gen6_pm_rps_work(struct work_struct *work) | |
365 | { | 369 | { | |
366 | drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t, | 370 | drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t, | |
367 | rps.work); | 371 | rps.work); | |
368 | u32 pm_iir, pm_imr; | 372 | u32 pm_iir, pm_imr; | |
369 | u8 new_delay; | 373 | u8 new_delay; | |
@@ -1141,27 +1145,32 @@ static void i915_record_ring_state(struc | @@ -1141,27 +1145,32 @@ static void i915_record_ring_state(struc | |||
1141 | error->ipeir[ring->id] = I915_READ(RING_IPEIR(ring->mmio_base)); | 1145 | error->ipeir[ring->id] = I915_READ(RING_IPEIR(ring->mmio_base)); | |
1142 | error->ipehr[ring->id] = I915_READ(RING_IPEHR(ring->mmio_base)); | 1146 | error->ipehr[ring->id] = I915_READ(RING_IPEHR(ring->mmio_base)); | |
1143 | error->instdone[ring->id] = I915_READ(RING_INSTDONE(ring->mmio_base)); | 1147 | error->instdone[ring->id] = I915_READ(RING_INSTDONE(ring->mmio_base)); | |
1144 | error->instps[ring->id] = I915_READ(RING_INSTPS(ring->mmio_base)); | 1148 | error->instps[ring->id] = I915_READ(RING_INSTPS(ring->mmio_base)); | |
1145 | if (ring->id == RCS) | 1149 | if (ring->id == RCS) | |
1146 | error->bbaddr = I915_READ64(BB_ADDR); | 1150 | error->bbaddr = I915_READ64(BB_ADDR); | |
1147 | } else { | 1151 | } else { | |
1148 | error->faddr[ring->id] = I915_READ(DMA_FADD_I8XX); | 1152 | error->faddr[ring->id] = I915_READ(DMA_FADD_I8XX); | |
1149 | error->ipeir[ring->id] = I915_READ(IPEIR); | 1153 | error->ipeir[ring->id] = I915_READ(IPEIR); | |
1150 | error->ipehr[ring->id] = I915_READ(IPEHR); | 1154 | error->ipehr[ring->id] = I915_READ(IPEHR); | |
1151 | error->instdone[ring->id] = I915_READ(INSTDONE); | 1155 | error->instdone[ring->id] = I915_READ(INSTDONE); | |
1152 | } | 1156 | } | |
1153 | 1157 | |||
1158 | #ifdef __NetBSD__ | |||
1159 | error->waiting[ring->id] = DRM_WAITERS_P(&ring->irq_queue, | |||
1160 | &drm_global_mutex); | |||
1161 | #else | |||
1154 | error->waiting[ring->id] = waitqueue_active(&ring->irq_queue); | 1162 | error->waiting[ring->id] = waitqueue_active(&ring->irq_queue); | |
1163 | #endif | |||
1155 | error->instpm[ring->id] = I915_READ(RING_INSTPM(ring->mmio_base)); | 1164 | error->instpm[ring->id] = I915_READ(RING_INSTPM(ring->mmio_base)); | |
1156 | error->seqno[ring->id] = ring->get_seqno(ring, false); | 1165 | error->seqno[ring->id] = ring->get_seqno(ring, false); | |
1157 | error->acthd[ring->id] = intel_ring_get_active_head(ring); | 1166 | error->acthd[ring->id] = intel_ring_get_active_head(ring); | |
1158 | error->head[ring->id] = I915_READ_HEAD(ring); | 1167 | error->head[ring->id] = I915_READ_HEAD(ring); | |
1159 | error->tail[ring->id] = I915_READ_TAIL(ring); | 1168 | error->tail[ring->id] = I915_READ_TAIL(ring); | |
1160 | error->ctl[ring->id] = I915_READ_CTL(ring); | 1169 | error->ctl[ring->id] = I915_READ_CTL(ring); | |
1161 | 1170 | |||
1162 | error->cpu_ring_head[ring->id] = ring->head; | 1171 | error->cpu_ring_head[ring->id] = ring->head; | |
1163 | error->cpu_ring_tail[ring->id] = ring->tail; | 1172 | error->cpu_ring_tail[ring->id] = ring->tail; | |
1164 | } | 1173 | } | |
1165 | 1174 | |||
1166 | static void i915_gem_record_rings(struct drm_device *dev, | 1175 | static void i915_gem_record_rings(struct drm_device *dev, | |
1167 | struct drm_i915_error_state *error) | 1176 | struct drm_i915_error_state *error) | |
@@ -1456,27 +1465,31 @@ void i915_handle_error(struct drm_device | @@ -1456,27 +1465,31 @@ void i915_handle_error(struct drm_device | |||
1456 | int i; | 1465 | int i; | |
1457 | 1466 | |||
1458 | i915_capture_error_state(dev); | 1467 | i915_capture_error_state(dev); | |
1459 | i915_report_and_clear_eir(dev); | 1468 | i915_report_and_clear_eir(dev); | |
1460 | 1469 | |||
1461 | if (wedged) { | 1470 | if (wedged) { | |
1462 | INIT_COMPLETION(dev_priv->error_completion); | 1471 | INIT_COMPLETION(dev_priv->error_completion); | |
1463 | atomic_set(&dev_priv->mm.wedged, 1); | 1472 | atomic_set(&dev_priv->mm.wedged, 1); | |
1464 | 1473 | |||
1465 | /* | 1474 | /* | |
1466 | * Wakeup waiting processes so they don't hang | 1475 | * Wakeup waiting processes so they don't hang | |
1467 | */ | 1476 | */ | |
1468 | for_each_ring(ring, dev_priv, i) | 1477 | for_each_ring(ring, dev_priv, i) | |
1478 | #ifdef __NetBSD__ | |||
1479 | DRM_WAKEUP_ALL(&ring->irq_queue, &drm_global_mutex); | |||
1480 | #else | |||
1469 | wake_up_all(&ring->irq_queue); | 1481 | wake_up_all(&ring->irq_queue); | |
1482 | #endif | |||
1470 | } | 1483 | } | |
1471 | 1484 | |||
1472 | queue_work(dev_priv->wq, &dev_priv->error_work); | 1485 | queue_work(dev_priv->wq, &dev_priv->error_work); | |
1473 | } | 1486 | } | |
1474 | 1487 | |||
1475 | static void i915_pageflip_stall_check(struct drm_device *dev, int pipe) | 1488 | static void i915_pageflip_stall_check(struct drm_device *dev, int pipe) | |
1476 | { | 1489 | { | |
1477 | drm_i915_private_t *dev_priv = dev->dev_private; | 1490 | drm_i915_private_t *dev_priv = dev->dev_private; | |
1478 | struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; | 1491 | struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; | |
1479 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | 1492 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | |
1480 | struct drm_i915_gem_object *obj; | 1493 | struct drm_i915_gem_object *obj; | |
1481 | struct intel_unpin_work *work; | 1494 | struct intel_unpin_work *work; | |
1482 | unsigned long flags; | 1495 | unsigned long flags; | |
@@ -1661,32 +1674,41 @@ static void valleyview_disable_vblank(st | @@ -1661,32 +1674,41 @@ static void valleyview_disable_vblank(st | |||
1661 | static u32 | 1674 | static u32 | |
1662 | ring_last_seqno(struct intel_ring_buffer *ring) | 1675 | ring_last_seqno(struct intel_ring_buffer *ring) | |
1663 | { | 1676 | { | |
1664 | return list_entry(ring->request_list.prev, | 1677 | return list_entry(ring->request_list.prev, | |
1665 | struct drm_i915_gem_request, list)->seqno; | 1678 | struct drm_i915_gem_request, list)->seqno; | |
1666 | } | 1679 | } | |
1667 | 1680 | |||
1668 | static bool i915_hangcheck_ring_idle(struct intel_ring_buffer *ring, bool *err) | 1681 | static bool i915_hangcheck_ring_idle(struct intel_ring_buffer *ring, bool *err) | |
1669 | { | 1682 | { | |
1670 | if (list_empty(&ring->request_list) || | 1683 | if (list_empty(&ring->request_list) || | |
1671 | i915_seqno_passed(ring->get_seqno(ring, false), | 1684 | i915_seqno_passed(ring->get_seqno(ring, false), | |
1672 | ring_last_seqno(ring))) { | 1685 | ring_last_seqno(ring))) { | |
1673 | /* Issue a wake-up to catch stuck h/w. */ | 1686 | /* Issue a wake-up to catch stuck h/w. */ | |
1687 | #ifdef __NetBSD__ | |||
1688 | if (DRM_WAITERS_P(&ring->irq_queue, &drm_global_mutex)) { | |||
1689 | DRM_ERROR("Hangcheck timer elapsed... %s idle\n", | |||
1690 | ring->name); | |||
1691 | DRM_WAKEUP_ALL(&ring->irq_queue, &drm_global_mutex); | |||
1692 | *err = true; | |||
1693 | } | |||
1694 | #else | |||
1674 | if (waitqueue_active(&ring->irq_queue)) { | 1695 | if (waitqueue_active(&ring->irq_queue)) { | |
1675 | DRM_ERROR("Hangcheck timer elapsed... %s idle\n", | 1696 | DRM_ERROR("Hangcheck timer elapsed... %s idle\n", | |
1676 | ring->name); | 1697 | ring->name); | |
1677 | wake_up_all(&ring->irq_queue); | 1698 | wake_up_all(&ring->irq_queue); | |
1678 | *err = true; | 1699 | *err = true; | |
1679 | } | 1700 | } | |
1701 | #endif | |||
1680 | return true; | 1702 | return true; | |
1681 | } | 1703 | } | |
1682 | return false; | 1704 | return false; | |
1683 | } | 1705 | } | |
1684 | 1706 | |||
1685 | static bool kick_ring(struct intel_ring_buffer *ring) | 1707 | static bool kick_ring(struct intel_ring_buffer *ring) | |
1686 | { | 1708 | { | |
1687 | struct drm_device *dev = ring->dev; | 1709 | struct drm_device *dev = ring->dev; | |
1688 | struct drm_i915_private *dev_priv = dev->dev_private; | 1710 | struct drm_i915_private *dev_priv = dev->dev_private; | |
1689 | u32 tmp = I915_READ_CTL(ring); | 1711 | u32 tmp = I915_READ_CTL(ring); | |
1690 | if (tmp & RING_WAIT) { | 1712 | if (tmp & RING_WAIT) { | |
1691 | DRM_ERROR("Kicking stuck wait on %s\n", | 1713 | DRM_ERROR("Kicking stuck wait on %s\n", | |
1692 | ring->name); | 1714 | ring->name); |
--- src/sys/external/bsd/drm2/dist/drm/i915/Attic/intel_ringbuffer.c 2013/07/24 03:05:41 1.1.1.1.2.4
+++ src/sys/external/bsd/drm2/dist/drm/i915/Attic/intel_ringbuffer.c 2013/07/24 03:06:00 1.1.1.1.2.5
@@ -1141,27 +1141,31 @@ static int init_phys_hws_pga(struct inte | @@ -1141,27 +1141,31 @@ static int init_phys_hws_pga(struct inte | |||
1141 | static int intel_init_ring_buffer(struct drm_device *dev, | 1141 | static int intel_init_ring_buffer(struct drm_device *dev, | |
1142 | struct intel_ring_buffer *ring) | 1142 | struct intel_ring_buffer *ring) | |
1143 | { | 1143 | { | |
1144 | struct drm_i915_gem_object *obj; | 1144 | struct drm_i915_gem_object *obj; | |
1145 | struct drm_i915_private *dev_priv = dev->dev_private; | 1145 | struct drm_i915_private *dev_priv = dev->dev_private; | |
1146 | int ret; | 1146 | int ret; | |
1147 | 1147 | |||
1148 | ring->dev = dev; | 1148 | ring->dev = dev; | |
1149 | INIT_LIST_HEAD(&ring->active_list); | 1149 | INIT_LIST_HEAD(&ring->active_list); | |
1150 | INIT_LIST_HEAD(&ring->request_list); | 1150 | INIT_LIST_HEAD(&ring->request_list); | |
1151 | ring->size = 32 * PAGE_SIZE; | 1151 | ring->size = 32 * PAGE_SIZE; | |
1152 | memset(ring->sync_seqno, 0, sizeof(ring->sync_seqno)); | 1152 | memset(ring->sync_seqno, 0, sizeof(ring->sync_seqno)); | |
1153 | 1153 | |||
1154 | #ifdef __NetBSD__ | |||
1155 | DRM_INIT_WAITQUEUE(&ring->irq_queue, "i915irq"); | |||
1156 | #else | |||
1154 | init_waitqueue_head(&ring->irq_queue); | 1157 | init_waitqueue_head(&ring->irq_queue); | |
1158 | #endif | |||
1155 | 1159 | |||
1156 | if (I915_NEED_GFX_HWS(dev)) { | 1160 | if (I915_NEED_GFX_HWS(dev)) { | |
1157 | ret = init_status_page(ring); | 1161 | ret = init_status_page(ring); | |
1158 | if (ret) | 1162 | if (ret) | |
1159 | return ret; | 1163 | return ret; | |
1160 | } else { | 1164 | } else { | |
1161 | BUG_ON(ring->id != RCS); | 1165 | BUG_ON(ring->id != RCS); | |
1162 | ret = init_phys_hws_pga(ring); | 1166 | ret = init_phys_hws_pga(ring); | |
1163 | if (ret) | 1167 | if (ret) | |
1164 | return ret; | 1168 | return ret; | |
1165 | } | 1169 | } | |
1166 | 1170 | |||
1167 | obj = i915_gem_alloc_object(dev, ring->size); | 1171 | obj = i915_gem_alloc_object(dev, ring->size); |
--- src/sys/external/bsd/drm2/dist/drm/i915/Attic/intel_ringbuffer.h 2013/07/24 03:05:41 1.1.1.1.2.5
+++ src/sys/external/bsd/drm2/dist/drm/i915/Attic/intel_ringbuffer.h 2013/07/24 03:06:00 1.1.1.1.2.6
@@ -123,27 +123,31 @@ struct intel_ring_buffer { | @@ -123,27 +123,31 @@ struct intel_ring_buffer { | |||
123 | 123 | |||
124 | /** | 124 | /** | |
125 | * List of breadcrumbs associated with GPU requests currently | 125 | * List of breadcrumbs associated with GPU requests currently | |
126 | * outstanding. | 126 | * outstanding. | |
127 | */ | 127 | */ | |
128 | struct list_head request_list; | 128 | struct list_head request_list; | |
129 | 129 | |||
130 | /** | 130 | /** | |
131 | * Do we have some not yet emitted requests outstanding? | 131 | * Do we have some not yet emitted requests outstanding? | |
132 | */ | 132 | */ | |
133 | u32 outstanding_lazy_request; | 133 | u32 outstanding_lazy_request; | |
134 | bool gpu_caches_dirty; | 134 | bool gpu_caches_dirty; | |
135 | 135 | |||
136 | #ifdef __NetBSD__ | |||
137 | drm_waitqueue_t irq_queue; | |||
138 | #else | |||
136 | wait_queue_head_t irq_queue; | 139 | wait_queue_head_t irq_queue; | |
140 | #endif | |||
137 | 141 | |||
138 | /** | 142 | /** | |
139 | * Do an explicit TLB flush before MI_SET_CONTEXT | 143 | * Do an explicit TLB flush before MI_SET_CONTEXT | |
140 | */ | 144 | */ | |
141 | bool itlb_before_ctx_switch; | 145 | bool itlb_before_ctx_switch; | |
142 | struct i915_hw_context *default_context; | 146 | struct i915_hw_context *default_context; | |
143 | struct drm_i915_gem_object *last_context_obj; | 147 | struct drm_i915_gem_object *last_context_obj; | |
144 | 148 | |||
145 | void *private; | 149 | void *private; | |
146 | }; | 150 | }; | |
147 | 151 | |||
148 | static inline bool | 152 | static inline bool | |
149 | intel_ring_initialized(struct intel_ring_buffer *ring) | 153 | intel_ring_initialized(struct intel_ring_buffer *ring) |