Lines Matching refs:dev_priv

49 	struct vmw_private *dev_priv = vmw_priv(dev);  in vmw_thread_fn()  local
53 dev_priv->irqthread_pending)) { in vmw_thread_fn()
54 vmw_fences_update(dev_priv->fman); in vmw_thread_fn()
55 wake_up_all(&dev_priv->fence_queue); in vmw_thread_fn()
60 dev_priv->irqthread_pending)) { in vmw_thread_fn()
61 vmw_cmdbuf_irqthread(dev_priv->cman); in vmw_thread_fn()
82 struct vmw_private *dev_priv = vmw_priv(dev); in vmw_irq_handler() local
86 status = vmw_irq_status_read(dev_priv); in vmw_irq_handler()
87 masked_status = status & READ_ONCE(dev_priv->irq_mask); in vmw_irq_handler()
90 vmw_irq_status_write(dev_priv, status); in vmw_irq_handler()
96 wake_up_all(&dev_priv->fifo_queue); in vmw_irq_handler()
100 !test_and_set_bit(VMW_IRQTHREAD_FENCE, dev_priv->irqthread_pending)) in vmw_irq_handler()
106 dev_priv->irqthread_pending)) in vmw_irq_handler()
112 static bool vmw_fifo_idle(struct vmw_private *dev_priv, uint32_t seqno) in vmw_fifo_idle() argument
115 return (vmw_read(dev_priv, SVGA_REG_BUSY) == 0); in vmw_fifo_idle()
118 void vmw_update_seqno(struct vmw_private *dev_priv) in vmw_update_seqno() argument
120 uint32_t seqno = vmw_fence_read(dev_priv); in vmw_update_seqno()
122 if (dev_priv->last_read_seqno != seqno) { in vmw_update_seqno()
123 dev_priv->last_read_seqno = seqno; in vmw_update_seqno()
124 vmw_fences_update(dev_priv->fman); in vmw_update_seqno()
128 bool vmw_seqno_passed(struct vmw_private *dev_priv, in vmw_seqno_passed() argument
133 if (likely(dev_priv->last_read_seqno - seqno < VMW_FENCE_WRAP)) in vmw_seqno_passed()
136 vmw_update_seqno(dev_priv); in vmw_seqno_passed()
137 if (likely(dev_priv->last_read_seqno - seqno < VMW_FENCE_WRAP)) in vmw_seqno_passed()
140 if (!(vmw_fifo_caps(dev_priv) & SVGA_FIFO_CAP_FENCE) && in vmw_seqno_passed()
141 vmw_fifo_idle(dev_priv, seqno)) in vmw_seqno_passed()
149 ret = ((atomic_read(&dev_priv->marker_seq) - seqno) in vmw_seqno_passed()
155 int vmw_fallback_wait(struct vmw_private *dev_priv, in vmw_fallback_wait() argument
162 struct vmw_fifo_state *fifo_state = dev_priv->fifo; in vmw_fallback_wait()
180 if (dev_priv->cman) { in vmw_fallback_wait()
181 ret = vmw_cmdbuf_idle(dev_priv->cman, interruptible, in vmw_fallback_wait()
188 signal_seq = atomic_read(&dev_priv->marker_seq); in vmw_fallback_wait()
192 prepare_to_wait(&dev_priv->fence_queue, &__wait, in vmw_fallback_wait()
195 if (wait_condition(dev_priv, seqno)) in vmw_fallback_wait()
220 finish_wait(&dev_priv->fence_queue, &__wait); in vmw_fallback_wait()
222 vmw_fence_write(dev_priv, signal_seq); in vmw_fallback_wait()
224 wake_up_all(&dev_priv->fence_queue); in vmw_fallback_wait()
232 void vmw_generic_waiter_add(struct vmw_private *dev_priv, in vmw_generic_waiter_add() argument
235 spin_lock_bh(&dev_priv->waiter_lock); in vmw_generic_waiter_add()
237 vmw_irq_status_write(dev_priv, flag); in vmw_generic_waiter_add()
238 dev_priv->irq_mask |= flag; in vmw_generic_waiter_add()
239 vmw_write(dev_priv, SVGA_REG_IRQMASK, dev_priv->irq_mask); in vmw_generic_waiter_add()
241 spin_unlock_bh(&dev_priv->waiter_lock); in vmw_generic_waiter_add()
244 void vmw_generic_waiter_remove(struct vmw_private *dev_priv, in vmw_generic_waiter_remove() argument
247 spin_lock_bh(&dev_priv->waiter_lock); in vmw_generic_waiter_remove()
249 dev_priv->irq_mask &= ~flag; in vmw_generic_waiter_remove()
250 vmw_write(dev_priv, SVGA_REG_IRQMASK, dev_priv->irq_mask); in vmw_generic_waiter_remove()
252 spin_unlock_bh(&dev_priv->waiter_lock); in vmw_generic_waiter_remove()
255 void vmw_seqno_waiter_add(struct vmw_private *dev_priv) in vmw_seqno_waiter_add() argument
257 vmw_generic_waiter_add(dev_priv, SVGA_IRQFLAG_ANY_FENCE, in vmw_seqno_waiter_add()
258 &dev_priv->fence_queue_waiters); in vmw_seqno_waiter_add()
261 void vmw_seqno_waiter_remove(struct vmw_private *dev_priv) in vmw_seqno_waiter_remove() argument
263 vmw_generic_waiter_remove(dev_priv, SVGA_IRQFLAG_ANY_FENCE, in vmw_seqno_waiter_remove()
264 &dev_priv->fence_queue_waiters); in vmw_seqno_waiter_remove()
267 void vmw_goal_waiter_add(struct vmw_private *dev_priv) in vmw_goal_waiter_add() argument
269 vmw_generic_waiter_add(dev_priv, SVGA_IRQFLAG_FENCE_GOAL, in vmw_goal_waiter_add()
270 &dev_priv->goal_queue_waiters); in vmw_goal_waiter_add()
273 void vmw_goal_waiter_remove(struct vmw_private *dev_priv) in vmw_goal_waiter_remove() argument
275 vmw_generic_waiter_remove(dev_priv, SVGA_IRQFLAG_FENCE_GOAL, in vmw_goal_waiter_remove()
276 &dev_priv->goal_queue_waiters); in vmw_goal_waiter_remove()
281 struct vmw_private *dev_priv = vmw_priv(dev); in vmw_irq_preinstall() local
284 status = vmw_irq_status_read(dev_priv); in vmw_irq_preinstall()
285 vmw_irq_status_write(dev_priv, status); in vmw_irq_preinstall()
290 struct vmw_private *dev_priv = vmw_priv(dev); in vmw_irq_uninstall() local
294 if (!(dev_priv->capabilities & SVGA_CAP_IRQMASK)) in vmw_irq_uninstall()
297 vmw_write(dev_priv, SVGA_REG_IRQMASK, 0); in vmw_irq_uninstall()
299 status = vmw_irq_status_read(dev_priv); in vmw_irq_uninstall()
300 vmw_irq_status_write(dev_priv, status); in vmw_irq_uninstall()