Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8d23adf7 authored by Eric Anholt's avatar Eric Anholt
Browse files

Merge commit 'ickle/for-anholt' into drm-intel-next

parents 4781f20f 9d34e5db
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1468,6 +1468,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
	spin_lock_init(&dev_priv->user_irq_lock);
	spin_lock_init(&dev_priv->error_lock);
	dev_priv->user_irq_refcount = 0;
	dev_priv->trace_irq_seqno = 0;

	ret = drm_vblank_init(dev, I915_NUM_PIPE);

+2 −0
Original line number Diff line number Diff line
@@ -202,6 +202,7 @@ typedef struct drm_i915_private {
	spinlock_t user_irq_lock;
	/** Refcount for i915_user_irq_get() versus i915_user_irq_put(). */
	int user_irq_refcount;
	u32 trace_irq_seqno;
	/** Cached value of IMR to avoid reads in updating the bitfield */
	u32 irq_mask_reg;
	u32 pipestat[2];
@@ -665,6 +666,7 @@ extern int i915_irq_emit(struct drm_device *dev, void *data,
extern int i915_irq_wait(struct drm_device *dev, void *data,
			 struct drm_file *file_priv);
void i915_user_irq_get(struct drm_device *dev);
void i915_trace_irq_get(struct drm_device *dev, u32 seqno);
void i915_user_irq_put(struct drm_device *dev);
extern void i915_enable_interrupt (struct drm_device *dev);

+8 −2
Original line number Diff line number Diff line
@@ -1770,7 +1770,7 @@ i915_gem_retire_requests(struct drm_device *dev)
	drm_i915_private_t *dev_priv = dev->dev_private;
	uint32_t seqno;

	if (!dev_priv->hw_status_page)
	if (!dev_priv->hw_status_page || list_empty(&dev_priv->mm.request_list))
		return;

	seqno = i915_get_gem_seqno(dev);
@@ -1794,6 +1794,12 @@ i915_gem_retire_requests(struct drm_device *dev)
		} else
			break;
	}

	if (unlikely (dev_priv->trace_irq_seqno &&
		      i915_seqno_passed(dev_priv->trace_irq_seqno, seqno))) {
		i915_user_irq_put(dev);
		dev_priv->trace_irq_seqno = 0;
	}
}

void
@@ -3352,7 +3358,7 @@ i915_dispatch_gem_execbuffer(struct drm_device *dev,
	exec_start = (uint32_t) exec_offset + exec->batch_start_offset;
	exec_len = (uint32_t) exec->batch_len;

	trace_i915_gem_request_submit(dev, dev_priv->mm.next_gem_seqno);
	trace_i915_gem_request_submit(dev, dev_priv->mm.next_gem_seqno + 1);

	count = nbox ? nbox : 1;

+10 −0
Original line number Diff line number Diff line
@@ -725,6 +725,16 @@ void i915_user_irq_put(struct drm_device *dev)
	spin_unlock_irqrestore(&dev_priv->user_irq_lock, irqflags);
}

void i915_trace_irq_get(struct drm_device *dev, u32 seqno)
{
	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;

	if (dev_priv->trace_irq_seqno == 0)
		i915_user_irq_get(dev);

	dev_priv->trace_irq_seqno = seqno;
}

static int i915_wait_irq(struct drm_device * dev, int irq_nr)
{
	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
+25 −24
Original line number Diff line number Diff line
@@ -158,16 +158,17 @@ TRACE_EVENT(i915_gem_request_submit,
	    TP_ARGS(dev, seqno),

	    TP_STRUCT__entry(
			     __field(struct drm_device *, dev)
			     __field(u32, dev)
			     __field(u32, seqno)
			     ),

	    TP_fast_assign(
			   __entry->dev = dev;
			   __entry->dev = dev->primary->index;
			   __entry->seqno = seqno;
			   i915_trace_irq_get(dev, seqno);
			   ),

	    TP_printk("dev=%p, seqno=%u", __entry->dev, __entry->seqno)
	    TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
);

TRACE_EVENT(i915_gem_request_flush,
@@ -178,20 +179,20 @@ TRACE_EVENT(i915_gem_request_flush,
	    TP_ARGS(dev, seqno, flush_domains, invalidate_domains),

	    TP_STRUCT__entry(
			     __field(struct drm_device *, dev)
			     __field(u32, dev)
			     __field(u32, seqno)
			     __field(u32, flush_domains)
			     __field(u32, invalidate_domains)
			     ),

	    TP_fast_assign(
			   __entry->dev = dev;
			   __entry->dev = dev->primary->index;
			   __entry->seqno = seqno;
			   __entry->flush_domains = flush_domains;
			   __entry->invalidate_domains = invalidate_domains;
			   ),

	    TP_printk("dev=%p, seqno=%u, flush=%04x, invalidate=%04x",
	    TP_printk("dev=%u, seqno=%u, flush=%04x, invalidate=%04x",
		      __entry->dev, __entry->seqno,
		      __entry->flush_domains, __entry->invalidate_domains)
);
@@ -204,16 +205,16 @@ TRACE_EVENT(i915_gem_request_complete,
	    TP_ARGS(dev, seqno),

	    TP_STRUCT__entry(
			     __field(struct drm_device *, dev)
			     __field(u32, dev)
			     __field(u32, seqno)
			     ),

	    TP_fast_assign(
			   __entry->dev = dev;
			   __entry->dev = dev->primary->index;
			   __entry->seqno = seqno;
			   ),

	    TP_printk("dev=%p, seqno=%u", __entry->dev, __entry->seqno)
	    TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
);

TRACE_EVENT(i915_gem_request_retire,
@@ -223,16 +224,16 @@ TRACE_EVENT(i915_gem_request_retire,
	    TP_ARGS(dev, seqno),

	    TP_STRUCT__entry(
			     __field(struct drm_device *, dev)
			     __field(u32, dev)
			     __field(u32, seqno)
			     ),

	    TP_fast_assign(
			   __entry->dev = dev;
			   __entry->dev = dev->primary->index;
			   __entry->seqno = seqno;
			   ),

	    TP_printk("dev=%p, seqno=%u", __entry->dev, __entry->seqno)
	    TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
);

TRACE_EVENT(i915_gem_request_wait_begin,
@@ -242,16 +243,16 @@ TRACE_EVENT(i915_gem_request_wait_begin,
	    TP_ARGS(dev, seqno),

	    TP_STRUCT__entry(
			     __field(struct drm_device *, dev)
			     __field(u32, dev)
			     __field(u32, seqno)
			     ),

	    TP_fast_assign(
			   __entry->dev = dev;
			   __entry->dev = dev->primary->index;
			   __entry->seqno = seqno;
			   ),

	    TP_printk("dev=%p, seqno=%u", __entry->dev, __entry->seqno)
	    TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
);

TRACE_EVENT(i915_gem_request_wait_end,
@@ -261,16 +262,16 @@ TRACE_EVENT(i915_gem_request_wait_end,
	    TP_ARGS(dev, seqno),

	    TP_STRUCT__entry(
			     __field(struct drm_device *, dev)
			     __field(u32, dev)
			     __field(u32, seqno)
			     ),

	    TP_fast_assign(
			   __entry->dev = dev;
			   __entry->dev = dev->primary->index;
			   __entry->seqno = seqno;
			   ),

	    TP_printk("dev=%p, seqno=%u", __entry->dev, __entry->seqno)
	    TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
);

TRACE_EVENT(i915_ring_wait_begin,
@@ -280,14 +281,14 @@ TRACE_EVENT(i915_ring_wait_begin,
	    TP_ARGS(dev),

	    TP_STRUCT__entry(
			     __field(struct drm_device *, dev)
			     __field(u32, dev)
			     ),

	    TP_fast_assign(
			   __entry->dev = dev;
			   __entry->dev = dev->primary->index;
			   ),

	    TP_printk("dev=%p", __entry->dev)
	    TP_printk("dev=%u", __entry->dev)
);

TRACE_EVENT(i915_ring_wait_end,
@@ -297,14 +298,14 @@ TRACE_EVENT(i915_ring_wait_end,
	    TP_ARGS(dev),

	    TP_STRUCT__entry(
			     __field(struct drm_device *, dev)
			     __field(u32, dev)
			     ),

	    TP_fast_assign(
			   __entry->dev = dev;
			   __entry->dev = dev->primary->index;
			   ),

	    TP_printk("dev=%p", __entry->dev)
	    TP_printk("dev=%u", __entry->dev)
);

#endif /* _I915_TRACE_H_ */