All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maarten Lankhorst <maarten.lankhorst@canonical.com>
To: "Christian König" <christian.koenig@amd.com>,
	"Daniel Vetter" <daniel.vetter@ffwll.ch>
Cc: "Christian König" <deathsimple@vodafone.de>,
	"Thomas Hellstrom" <thellstrom@vmware.com>,
	nouveau <nouveau@lists.freedesktop.org>,
	LKML <linux-kernel@vger.kernel.org>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	"Ben Skeggs" <bskeggs@redhat.com>,
	"Deucher, Alexander" <alexander.deucher@amd.com>
Subject: Re: [Nouveau] [PATCH 09/17] drm/radeon: use common fence implementation for fences
Date: Wed, 23 Jul 2014 15:16:50 +0200	[thread overview]
Message-ID: <53CFB5C2.7060207@canonical.com> (raw)
In-Reply-To: <53CFAC38.9050501@amd.com>

op 23-07-14 14:36, Christian König schreef:
> Am 23.07.2014 12:52, schrieb Daniel Vetter:
>> On Wed, Jul 23, 2014 at 12:13 PM, Christian König
>> <christian.koenig@amd.com> wrote:
>>>> And the dma-buf would still have fences belonging to both drivers, and it
>>>> would still call from outside the driver.
>>>
>>> Calling from outside the driver is fine as long as the driver can do
>>> everything necessary to complete it's work and isn't forced into any ugly
>>> hacks and things that are not 100% reliable.
>>>
>>> So I don't see much other approach as integrating recovery code for not
>>> firing interrupts and some kind of lockup handling into the fence code as
>>> well.
>> That approach doesn't really work at that well since every driver has
>> it's own reset semantics. And we're trying to move away from global
>> reset to fine-grained reset. So stop-the-world reset is out of
>> fashion, at least for i915. As you said, reset is normal in gpus and
>> we're trying to make reset less invasive. I really don't see a point
>> in imposing a reset scheme upon all drivers and I think you have about
>> as much motivation to convert radeon to the scheme used by i915 as
>> I'll have for converting to the one used by radeon. If it would fit at
>> all.
> Oh my! No, I didn't wanted to suggest any global reset infrastructure.
>
> My idea was more that the fence framework provides a fence->process_signaling callback that is periodically called after enable_signaling is called to trigger manual signal processing in the driver.
>
> This would both be suitable as a fallback in case of not working interrupts as well as a chance for any driver to do necessary lockup handling.
I managed to do it without needing it to be part of the interface? I'm not sure whether radeon_fence_driver_recheck needs exclusive_lock, but if so it's a small change..

diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index 7fbfd41479f1..51b646b9c8bb 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -345,6 +345,9 @@ struct radeon_fence_driver {
 	uint64_t			sync_seq[RADEON_NUM_RINGS];
 	atomic64_t			last_seq;
 	bool				initialized;
+	struct delayed_work		work;
+	struct radeon_device *rdev;
+	unsigned ring;
 };
 
 struct radeon_fence_cb {
diff --git a/drivers/gpu/drm/radeon/radeon_fence.c b/drivers/gpu/drm/radeon/radeon_fence.c
index da83f36dd708..955c825946ad 100644
--- a/drivers/gpu/drm/radeon/radeon_fence.c
+++ b/drivers/gpu/drm/radeon/radeon_fence.c
@@ -231,6 +231,9 @@ static bool __radeon_fence_process(struct radeon_device *rdev, int ring)
 		}
 	} while (atomic64_xchg(&rdev->fence_drv[ring].last_seq, seq) > seq);
 
+	if (!wake && last_seq < last_emitted)
+		schedule_delayed_work(&rdev->fence_drv[ring].work, jiffies_to_msecs(10));
+
 	return wake;
 }
 
@@ -815,6 +818,14 @@ int radeon_fence_driver_start_ring(struct radeon_device *rdev, int ring)
 	return 0;
 }
 
+static void radeon_fence_driver_recheck(struct work_struct *work)
+{
+	struct radeon_fence_driver *drv = container_of(work, struct radeon_fence_driver, work.work);
+
+	DRM_ERROR("omg, working!\n");
+	radeon_fence_process(drv->rdev, drv->ring);
+}
+
 /**
  * radeon_fence_driver_init_ring - init the fence driver
  * for the requested ring.
@@ -836,6 +847,10 @@ static void radeon_fence_driver_init_ring(struct radeon_device *rdev, int ring)
 		rdev->fence_drv[ring].sync_seq[i] = 0;
 	atomic64_set(&rdev->fence_drv[ring].last_seq, 0);
 	rdev->fence_drv[ring].initialized = false;
+
+	rdev->fence_drv[ring].ring = ring;
+	rdev->fence_drv[ring].rdev = rdev;
+	INIT_DELAYED_WORK(&rdev->fence_drv[ring].work, radeon_fence_driver_recheck);
 }
 
 /**
@@ -880,6 +895,7 @@ void radeon_fence_driver_fini(struct radeon_device *rdev)
 	for (ring = 0; ring < RADEON_NUM_RINGS; ring++) {
 		if (!rdev->fence_drv[ring].initialized)
 			continue;
+		cancel_delayed_work_sync(&rdev->fence_drv[ring].work);
 		r = radeon_fence_wait_empty(rdev, ring);
 		if (r) {
 			/* no need to trigger GPU reset as we are unloading */
diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c
index 16807afab362..85391ddd3ce9 100644
--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
@@ -331,7 +331,7 @@ void radeon_irq_kms_sw_irq_get(struct radeon_device *rdev, int ring)
 {
 	unsigned long irqflags;
 
-	if (!rdev->ddev->irq_enabled)
+//	if (!rdev->ddev->irq_enabled)
 		return;
 
 	if (atomic_inc_return(&rdev->irq.ring_int[ring]) == 1) {
@@ -355,7 +355,7 @@ void radeon_irq_kms_sw_irq_put(struct radeon_device *rdev, int ring)
 {
 	unsigned long irqflags;
 
-	if (!rdev->ddev->irq_enabled)
+//	if (!rdev->ddev->irq_enabled)
 		return;
 
 	if (atomic_dec_and_test(&rdev->irq.ring_int[ring])) {


WARNING: multiple messages have this Message-ID (diff)
From: Maarten Lankhorst <maarten.lankhorst-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
To: "Christian König" <christian.koenig-5C7GfCeVMHo@public.gmane.org>,
	"Daniel Vetter" <daniel.vetter-/w4YWyX8dFk@public.gmane.org>
Cc: "Thomas Hellstrom"
	<thellstrom-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>,
	nouveau
	<nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>,
	LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	dri-devel
	<dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>,
	"Christian König"
	<deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>,
	"Ben Skeggs" <bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	"Deucher,
	Alexander" <alexander.deucher-5C7GfCeVMHo@public.gmane.org>
Subject: Re: [PATCH 09/17] drm/radeon: use common fence implementation for fences
Date: Wed, 23 Jul 2014 15:16:50 +0200	[thread overview]
Message-ID: <53CFB5C2.7060207@canonical.com> (raw)
In-Reply-To: <53CFAC38.9050501-5C7GfCeVMHo@public.gmane.org>

op 23-07-14 14:36, Christian König schreef:
> Am 23.07.2014 12:52, schrieb Daniel Vetter:
>> On Wed, Jul 23, 2014 at 12:13 PM, Christian König
>> <christian.koenig@amd.com> wrote:
>>>> And the dma-buf would still have fences belonging to both drivers, and it
>>>> would still call from outside the driver.
>>>
>>> Calling from outside the driver is fine as long as the driver can do
>>> everything necessary to complete it's work and isn't forced into any ugly
>>> hacks and things that are not 100% reliable.
>>>
>>> So I don't see much other approach as integrating recovery code for not
>>> firing interrupts and some kind of lockup handling into the fence code as
>>> well.
>> That approach doesn't really work at that well since every driver has
>> it's own reset semantics. And we're trying to move away from global
>> reset to fine-grained reset. So stop-the-world reset is out of
>> fashion, at least for i915. As you said, reset is normal in gpus and
>> we're trying to make reset less invasive. I really don't see a point
>> in imposing a reset scheme upon all drivers and I think you have about
>> as much motivation to convert radeon to the scheme used by i915 as
>> I'll have for converting to the one used by radeon. If it would fit at
>> all.
> Oh my! No, I didn't wanted to suggest any global reset infrastructure.
>
> My idea was more that the fence framework provides a fence->process_signaling callback that is periodically called after enable_signaling is called to trigger manual signal processing in the driver.
>
> This would both be suitable as a fallback in case of not working interrupts as well as a chance for any driver to do necessary lockup handling.
I managed to do it without needing it to be part of the interface? I'm not sure whether radeon_fence_driver_recheck needs exclusive_lock, but if so it's a small change..

diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index 7fbfd41479f1..51b646b9c8bb 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -345,6 +345,9 @@ struct radeon_fence_driver {
 	uint64_t			sync_seq[RADEON_NUM_RINGS];
 	atomic64_t			last_seq;
 	bool				initialized;
+	struct delayed_work		work;
+	struct radeon_device *rdev;
+	unsigned ring;
 };
 
 struct radeon_fence_cb {
diff --git a/drivers/gpu/drm/radeon/radeon_fence.c b/drivers/gpu/drm/radeon/radeon_fence.c
index da83f36dd708..955c825946ad 100644
--- a/drivers/gpu/drm/radeon/radeon_fence.c
+++ b/drivers/gpu/drm/radeon/radeon_fence.c
@@ -231,6 +231,9 @@ static bool __radeon_fence_process(struct radeon_device *rdev, int ring)
 		}
 	} while (atomic64_xchg(&rdev->fence_drv[ring].last_seq, seq) > seq);
 
+	if (!wake && last_seq < last_emitted)
+		schedule_delayed_work(&rdev->fence_drv[ring].work, jiffies_to_msecs(10));
+
 	return wake;
 }
 
@@ -815,6 +818,14 @@ int radeon_fence_driver_start_ring(struct radeon_device *rdev, int ring)
 	return 0;
 }
 
+static void radeon_fence_driver_recheck(struct work_struct *work)
+{
+	struct radeon_fence_driver *drv = container_of(work, struct radeon_fence_driver, work.work);
+
+	DRM_ERROR("omg, working!\n");
+	radeon_fence_process(drv->rdev, drv->ring);
+}
+
 /**
  * radeon_fence_driver_init_ring - init the fence driver
  * for the requested ring.
@@ -836,6 +847,10 @@ static void radeon_fence_driver_init_ring(struct radeon_device *rdev, int ring)
 		rdev->fence_drv[ring].sync_seq[i] = 0;
 	atomic64_set(&rdev->fence_drv[ring].last_seq, 0);
 	rdev->fence_drv[ring].initialized = false;
+
+	rdev->fence_drv[ring].ring = ring;
+	rdev->fence_drv[ring].rdev = rdev;
+	INIT_DELAYED_WORK(&rdev->fence_drv[ring].work, radeon_fence_driver_recheck);
 }
 
 /**
@@ -880,6 +895,7 @@ void radeon_fence_driver_fini(struct radeon_device *rdev)
 	for (ring = 0; ring < RADEON_NUM_RINGS; ring++) {
 		if (!rdev->fence_drv[ring].initialized)
 			continue;
+		cancel_delayed_work_sync(&rdev->fence_drv[ring].work);
 		r = radeon_fence_wait_empty(rdev, ring);
 		if (r) {
 			/* no need to trigger GPU reset as we are unloading */
diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c
index 16807afab362..85391ddd3ce9 100644
--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
@@ -331,7 +331,7 @@ void radeon_irq_kms_sw_irq_get(struct radeon_device *rdev, int ring)
 {
 	unsigned long irqflags;
 
-	if (!rdev->ddev->irq_enabled)
+//	if (!rdev->ddev->irq_enabled)
 		return;
 
 	if (atomic_inc_return(&rdev->irq.ring_int[ring]) == 1) {
@@ -355,7 +355,7 @@ void radeon_irq_kms_sw_irq_put(struct radeon_device *rdev, int ring)
 {
 	unsigned long irqflags;
 
-	if (!rdev->ddev->irq_enabled)
+//	if (!rdev->ddev->irq_enabled)
 		return;
 
 	if (atomic_dec_and_test(&rdev->irq.ring_int[ring])) {

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

  parent reply	other threads:[~2014-07-23 13:17 UTC|newest]

Thread overview: 165+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-09 12:29 [PATCH 00/17] Convert TTM to the new fence interface Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 01/17] drm/ttm: add interruptible parameter to ttm_eu_reserve_buffers Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 02/17] drm/ttm: kill off some members to ttm_validate_buffer Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 03/17] drm/nouveau: add reservation to nouveau_gem_ioctl_cpu_prep Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 04/17] drm/nouveau: require reservations for nouveau_fence_sync and nouveau_bo_fence Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 05/17] drm/ttm: call ttm_bo_wait while inside a reservation Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 06/17] drm/ttm: kill fence_lock Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 07/17] drm/nouveau: rework to new fence interface Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 08/17] drm/radeon: add timeout argument to radeon_fence_wait_seq Maarten Lankhorst
2014-07-09 12:29   ` Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 09/17] drm/radeon: use common fence implementation for fences Maarten Lankhorst
2014-07-09 12:57   ` Deucher, Alexander
2014-07-09 12:57     ` Deucher, Alexander
2014-07-09 13:23     ` [PATCH v2 " Maarten Lankhorst
2014-07-09 13:23       ` Maarten Lankhorst
2014-07-10 17:27       ` Alex Deucher
2014-07-10 17:27         ` Alex Deucher
2014-07-22  4:05   ` [PATCH " Dave Airlie
2014-07-22  4:05     ` Dave Airlie
2014-07-22  4:05     ` Dave Airlie
2014-07-22  8:43     ` Christian König
2014-07-22  8:43       ` Christian König
2014-07-22 11:46       ` Daniel Vetter
2014-07-22 11:46         ` Daniel Vetter
2014-07-22 11:52         ` Daniel Vetter
2014-07-22 11:52           ` Daniel Vetter
2014-07-22 11:57         ` Daniel Vetter
2014-07-22 11:57           ` Daniel Vetter
2014-07-22 12:19           ` Christian König
2014-07-22 12:19             ` Christian König
2014-07-22 13:26             ` [Nouveau] " Daniel Vetter
2014-07-22 13:26               ` Daniel Vetter
2014-07-22 13:45               ` Christian König
2014-07-22 13:45                 ` Christian König
2014-07-22 14:44                 ` [Nouveau] " Maarten Lankhorst
2014-07-22 14:44                   ` Maarten Lankhorst
2014-07-22 15:02                   ` [Nouveau] " Christian König
2014-07-22 15:18                     ` Maarten Lankhorst
2014-07-22 15:17                 ` Daniel Vetter
2014-07-22 15:17                   ` Daniel Vetter
2014-07-22 15:35                   ` [Nouveau] " Christian König
2014-07-22 15:35                     ` Christian König
2014-07-22 15:42                     ` Daniel Vetter
2014-07-22 15:42                       ` Daniel Vetter
2014-07-22 15:59                       ` Christian König
2014-07-22 15:59                         ` Christian König
2014-07-22 16:21                         ` Daniel Vetter
2014-07-22 16:21                           ` Daniel Vetter
2014-07-22 16:39                           ` Christian König
2014-07-22 16:39                             ` Christian König
2014-07-22 16:52                             ` Daniel Vetter
2014-07-22 16:52                               ` Daniel Vetter
2014-07-22 16:43                           ` Daniel Vetter
2014-07-22 16:43                             ` Daniel Vetter
2014-07-23  6:40                         ` Maarten Lankhorst
2014-07-23  6:40                           ` Maarten Lankhorst
2014-07-23  6:52                           ` Christian König
2014-07-23  6:52                             ` Christian König
2014-07-23  7:02                             ` [Nouveau] " Daniel Vetter
2014-07-23  7:02                               ` Daniel Vetter
2014-07-23  7:06                             ` [Nouveau] " Maarten Lankhorst
2014-07-23  7:06                               ` Maarten Lankhorst
2014-07-23  7:09                               ` Daniel Vetter
2014-07-23  7:09                                 ` Daniel Vetter
2014-07-23  7:15                                 ` Christian König
2014-07-23  7:15                                   ` Christian König
2014-07-23  7:32                                   ` [Nouveau] " Maarten Lankhorst
2014-07-23  7:32                                     ` Maarten Lankhorst
2014-07-23  7:41                                     ` Christian König
2014-07-23  7:41                                       ` Christian König
2014-07-23  7:26                               ` [Nouveau] " Christian König
2014-07-23  7:26                                 ` Christian König
2014-07-23  7:31                                 ` Daniel Vetter
2014-07-23  7:31                                   ` Daniel Vetter
2014-07-23  7:37                                   ` Christian König
2014-07-23  7:37                                     ` Christian König
2014-07-23  7:51                                     ` [Nouveau] " Maarten Lankhorst
2014-07-23  7:51                                       ` Maarten Lankhorst
2014-07-23  7:58                                       ` [Nouveau] " Christian König
2014-07-23  7:58                                         ` Christian König
2014-07-23  8:07                                         ` [Nouveau] " Daniel Vetter
2014-07-23  8:07                                           ` Daniel Vetter
2014-07-23  8:20                                           ` [Nouveau] " Christian König
2014-07-23  8:20                                             ` Christian König
2014-07-23  8:25                                             ` Maarten Lankhorst
2014-07-23  8:25                                               ` Maarten Lankhorst
2014-07-23  8:42                                               ` [Nouveau] " Daniel Vetter
2014-07-23  8:42                                                 ` Daniel Vetter
2014-07-23  8:46                                                 ` Christian König
2014-07-23  8:46                                                   ` Christian König
2014-07-23  8:54                                                   ` [Nouveau] " Daniel Vetter
2014-07-23  8:54                                                     ` Daniel Vetter
2014-07-23  9:27                                                     ` [Nouveau] " Christian König
2014-07-23  9:27                                                       ` Christian König
2014-07-23  9:30                                                       ` [Nouveau] " Daniel Vetter
2014-07-23  9:30                                                         ` Daniel Vetter
2014-07-23  9:36                                                         ` [Nouveau] " Christian König
2014-07-23  9:36                                                           ` Christian König
2014-07-23  9:38                                                           ` [Nouveau] " Maarten Lankhorst
2014-07-23  9:38                                                             ` Maarten Lankhorst
2014-07-23  9:39                                                             ` Christian König
2014-07-23  9:39                                                               ` Christian König
2014-07-23  9:39                                                           ` [Nouveau] " Daniel Vetter
2014-07-23  9:39                                                             ` Daniel Vetter
2014-07-23  9:44                                                             ` Daniel Vetter
2014-07-23  9:44                                                               ` Daniel Vetter
2014-07-23  9:47                                                               ` [Nouveau] " Christian König
2014-07-23  9:47                                                                 ` Christian König
2014-07-23  9:52                                                                 ` Daniel Vetter
2014-07-23  9:52                                                                   ` Daniel Vetter
2014-07-23  9:55                                                                 ` [Nouveau] " Maarten Lankhorst
2014-07-23  9:55                                                                   ` Maarten Lankhorst
2014-07-23 10:13                                                                   ` [Nouveau] " Christian König
2014-07-23 10:13                                                                     ` Christian König
2014-07-23 10:52                                                                     ` [Nouveau] " Daniel Vetter
2014-07-23 10:52                                                                       ` Daniel Vetter
2014-07-23 12:36                                                                       ` Christian König
2014-07-23 12:36                                                                         ` Christian König
2014-07-23 12:42                                                                         ` Daniel Vetter
2014-07-23 12:42                                                                           ` Daniel Vetter
2014-07-23 13:16                                                                         ` Maarten Lankhorst [this message]
2014-07-23 13:16                                                                           ` Maarten Lankhorst
2014-07-23 14:05                                                                           ` [Nouveau] " Maarten Lankhorst
2014-07-23 14:05                                                                             ` Maarten Lankhorst
2014-07-24 13:47                                                                             ` [Nouveau] " Christian König
2014-07-24 13:47                                                                               ` Christian König
2014-07-23  8:01                                     ` Daniel Vetter
2014-07-23  8:01                                       ` Daniel Vetter
2014-07-23  8:31                                       ` Christian König
2014-07-23  8:31                                         ` Christian König
2014-07-23 12:35                             ` Rob Clark
2014-07-23 12:35                               ` Rob Clark
2014-07-22 14:05             ` Maarten Lankhorst
2014-07-22 14:24               ` Christian König
2014-07-22 14:27                 ` Maarten Lankhorst
2014-07-22 14:39                   ` Christian König
2014-07-22 14:47                     ` Maarten Lankhorst
2014-07-22 15:16                       ` Christian König
2014-07-22 15:19                     ` Daniel Vetter
2014-07-22 15:19                       ` Daniel Vetter
2014-07-22 15:42                       ` Alex Deucher
2014-07-22 15:42                         ` Alex Deucher
2014-07-22 15:48                         ` Daniel Vetter
2014-07-22 15:48                           ` Daniel Vetter
2014-07-22 19:14                           ` Jesse Barnes
2014-07-22 19:14                             ` Jesse Barnes
2014-07-23  9:47                             ` [Nouveau] " Daniel Vetter
2014-07-23  9:47                               ` Daniel Vetter
2014-07-23 15:37                               ` [Nouveau] " Jesse Barnes
2014-07-23 15:37                                 ` Jesse Barnes
2014-07-22 11:51     ` Maarten Lankhorst
2014-07-22 11:51       ` Maarten Lankhorst
2014-07-09 12:29 ` [PATCH 10/17] drm/qxl: rework to new fence interface Maarten Lankhorst
2014-07-09 12:30 ` [PATCH 11/17] drm/vmwgfx: get rid of different types of fence_flags entirely Maarten Lankhorst
2014-07-09 12:30 ` [PATCH 12/17] drm/vmwgfx: rework to new fence interface Maarten Lankhorst
2014-07-09 12:30 ` [PATCH 13/17] drm/ttm: flip the switch, and convert to dma_fence Maarten Lankhorst
2014-07-09 12:30 ` [PATCH 14/17] drm/nouveau: use rcu in nouveau_gem_ioctl_cpu_prep Maarten Lankhorst
2014-07-09 12:30 ` [PATCH 15/17] drm/radeon: use rcu waits in some ioctls Maarten Lankhorst
2014-07-09 12:30 ` [PATCH 16/17] drm/vmwgfx: use rcu in vmw_user_dmabuf_synccpu_grab Maarten Lankhorst
2014-07-09 12:30 ` [PATCH 17/17] drm/ttm: use rcu in core ttm Maarten Lankhorst
2014-07-09 13:09 ` [PATCH 00/17] Convert TTM to the new fence interface Mike Lothian
2014-07-09 13:21   ` Maarten Lankhorst
2014-07-09 13:21     ` Maarten Lankhorst
2014-07-10 21:37 ` Thomas Hellström
2014-07-10 21:37   ` Thomas Hellström

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53CFB5C2.7060207@canonical.com \
    --to=maarten.lankhorst@canonical.com \
    --cc=alexander.deucher@amd.com \
    --cc=bskeggs@redhat.com \
    --cc=christian.koenig@amd.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=deathsimple@vodafone.de \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nouveau@lists.freedesktop.org \
    --cc=thellstrom@vmware.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.