All of lore.kernel.org
 help / color / mirror / Atom feed
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Sumit Semwal <sumit.semwal@linaro.org>
Cc: linux-kernel@vger.kernel.org, linux-media@vger.kernel.org,
	dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org,
	linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org,
	linaro-kernel@lists.linaro.org,
	stanislawski.tomasz@googlemail.com, robdclark@gmail.com,
	daniel@ffwll.ch, robin.murphy@arm.com, m.szyprowski@samsung.com
Subject: Re: [RFCv3 2/2] dma-buf: add helpers for sharing attacher constraints with dma-parms
Date: Thu, 29 Jan 2015 14:39:08 +0000	[thread overview]
Message-ID: <20150129143908.GA26493@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1422347154-15258-2-git-send-email-sumit.semwal@linaro.org>

On Tue, Jan 27, 2015 at 01:55:54PM +0530, Sumit Semwal wrote:
> +/*
> + * recalc_constraints - recalculates constraints for all attached devices;
> + *  useful for detach() recalculation, and for dma_buf_recalc_constraints()
> + *  helper.
> + *  Returns recalculated constraints in recalc_cons, or error in the unlikely
> + *  case when constraints of attached devices might have changed.
> + */

Please see kerneldoc documentation for the proper format of these comments.

> +static int recalc_constraints(struct dma_buf *dmabuf,
> +			      struct device_dma_parameters *recalc_cons)
> +{
> +	struct device_dma_parameters calc_cons;
> +	struct dma_buf_attachment *attach;
> +	int ret = 0;
> +
> +	init_constraints(&calc_cons);
> +
> +	list_for_each_entry(attach, &dmabuf->attachments, node) {
> +		ret = calc_constraints(attach->dev, &calc_cons);
> +		if (ret)
> +			return ret;
> +	}
> +	*recalc_cons = calc_cons;
> +	return 0;
> +}
> +
>  /**
>   * dma_buf_export_named - Creates a new dma_buf, and associates an anon file
>   * with this buffer, so it can be exported.
> @@ -313,6 +373,9 @@ struct dma_buf *dma_buf_export_named(void *priv, const struct dma_buf_ops *ops,
>  	dmabuf->ops = ops;
>  	dmabuf->size = size;
>  	dmabuf->exp_name = exp_name;
> +
> +	init_constraints(&dmabuf->constraints);
> +
>  	init_waitqueue_head(&dmabuf->poll);
>  	dmabuf->cb_excl.poll = dmabuf->cb_shared.poll = &dmabuf->poll;
>  	dmabuf->cb_excl.active = dmabuf->cb_shared.active = 0;
> @@ -422,7 +485,7 @@ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
>  					  struct device *dev)
>  {
>  	struct dma_buf_attachment *attach;
> -	int ret;
> +	int ret = 0;
>  
>  	if (WARN_ON(!dmabuf || !dev))
>  		return ERR_PTR(-EINVAL);
> @@ -436,6 +499,9 @@ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
>  
>  	mutex_lock(&dmabuf->lock);
>  
> +	if (calc_constraints(dev, &dmabuf->constraints))
> +		goto err_constraints;
> +
>  	if (dmabuf->ops->attach) {
>  		ret = dmabuf->ops->attach(dmabuf, dev, attach);
>  		if (ret)
> @@ -448,6 +514,7 @@ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
>  
>  err_attach:
>  	kfree(attach);
> +err_constraints:
>  	mutex_unlock(&dmabuf->lock);
>  	return ERR_PTR(ret);
>  }
> @@ -470,6 +537,8 @@ void dma_buf_detach(struct dma_buf *dmabuf, struct dma_buf_attachment *attach)
>  	if (dmabuf->ops->detach)
>  		dmabuf->ops->detach(dmabuf, attach);
>  
> +	recalc_constraints(dmabuf, &dmabuf->constraints);
> +

To me, this whole thing seems horribly racy.

What happens if subsystem X creates a dmabuf, which is passed to
userspace. It's then passed to subsystem Y, which starts making use
of it, calling dma_buf_map_attachment() on it.

The same buffer is also passed (via unix domain sockets) to another
program, which then passes it independently into subsystem Z, and
subsystem Z has more restrictive DMA constraints.

What happens at this point?

Subsystems such as DRM cache the scatter table, and return it for
subsequent attach calls, so DRM drivers using the default
drm_gem_map_dma_buf() implementation would not see the restrictions
placed upon the dmabuf.  Moreover, the returned scatterlist would not
be modified for those restrictions either.

What would other subsystems do?

This needs more thought before it's merged.

For example, in the above situation, should we deny the ability to
create a new attachment when a dmabuf has already been mapped by an
existing attachment?  Should we deny it only when the new attachment
has more restrictive DMA constraints?

Please consider the possible sequences of use (such as the scenario
above) when creating or augmenting an API.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

WARNING: multiple messages have this Message-ID (diff)
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Sumit Semwal <sumit.semwal@linaro.org>
Cc: linux-kernel@vger.kernel.org, linux-media@vger.kernel.org,
	dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org,
	linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org,
	linaro-kernel@lists.linaro.org,
	stanislawski.tomasz@googlemail.com, robdclark@gmail.com,
	daniel@ffwll.ch, robin.murphy@arm.com, m.szyprowski@samsung.com
Subject: Re: [RFCv3 2/2] dma-buf: add helpers for sharing attacher constraints with dma-parms
Date: Thu, 29 Jan 2015 14:39:08 +0000	[thread overview]
Message-ID: <20150129143908.GA26493@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1422347154-15258-2-git-send-email-sumit.semwal@linaro.org>

On Tue, Jan 27, 2015 at 01:55:54PM +0530, Sumit Semwal wrote:
> +/*
> + * recalc_constraints - recalculates constraints for all attached devices;
> + *  useful for detach() recalculation, and for dma_buf_recalc_constraints()
> + *  helper.
> + *  Returns recalculated constraints in recalc_cons, or error in the unlikely
> + *  case when constraints of attached devices might have changed.
> + */

Please see kerneldoc documentation for the proper format of these comments.

> +static int recalc_constraints(struct dma_buf *dmabuf,
> +			      struct device_dma_parameters *recalc_cons)
> +{
> +	struct device_dma_parameters calc_cons;
> +	struct dma_buf_attachment *attach;
> +	int ret = 0;
> +
> +	init_constraints(&calc_cons);
> +
> +	list_for_each_entry(attach, &dmabuf->attachments, node) {
> +		ret = calc_constraints(attach->dev, &calc_cons);
> +		if (ret)
> +			return ret;
> +	}
> +	*recalc_cons = calc_cons;
> +	return 0;
> +}
> +
>  /**
>   * dma_buf_export_named - Creates a new dma_buf, and associates an anon file
>   * with this buffer, so it can be exported.
> @@ -313,6 +373,9 @@ struct dma_buf *dma_buf_export_named(void *priv, const struct dma_buf_ops *ops,
>  	dmabuf->ops = ops;
>  	dmabuf->size = size;
>  	dmabuf->exp_name = exp_name;
> +
> +	init_constraints(&dmabuf->constraints);
> +
>  	init_waitqueue_head(&dmabuf->poll);
>  	dmabuf->cb_excl.poll = dmabuf->cb_shared.poll = &dmabuf->poll;
>  	dmabuf->cb_excl.active = dmabuf->cb_shared.active = 0;
> @@ -422,7 +485,7 @@ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
>  					  struct device *dev)
>  {
>  	struct dma_buf_attachment *attach;
> -	int ret;
> +	int ret = 0;
>  
>  	if (WARN_ON(!dmabuf || !dev))
>  		return ERR_PTR(-EINVAL);
> @@ -436,6 +499,9 @@ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
>  
>  	mutex_lock(&dmabuf->lock);
>  
> +	if (calc_constraints(dev, &dmabuf->constraints))
> +		goto err_constraints;
> +
>  	if (dmabuf->ops->attach) {
>  		ret = dmabuf->ops->attach(dmabuf, dev, attach);
>  		if (ret)
> @@ -448,6 +514,7 @@ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
>  
>  err_attach:
>  	kfree(attach);
> +err_constraints:
>  	mutex_unlock(&dmabuf->lock);
>  	return ERR_PTR(ret);
>  }
> @@ -470,6 +537,8 @@ void dma_buf_detach(struct dma_buf *dmabuf, struct dma_buf_attachment *attach)
>  	if (dmabuf->ops->detach)
>  		dmabuf->ops->detach(dmabuf, attach);
>  
> +	recalc_constraints(dmabuf, &dmabuf->constraints);
> +

To me, this whole thing seems horribly racy.

What happens if subsystem X creates a dmabuf, which is passed to
userspace. It's then passed to subsystem Y, which starts making use
of it, calling dma_buf_map_attachment() on it.

The same buffer is also passed (via unix domain sockets) to another
program, which then passes it independently into subsystem Z, and
subsystem Z has more restrictive DMA constraints.

What happens at this point?

Subsystems such as DRM cache the scatter table, and return it for
subsequent attach calls, so DRM drivers using the default
drm_gem_map_dma_buf() implementation would not see the restrictions
placed upon the dmabuf.  Moreover, the returned scatterlist would not
be modified for those restrictions either.

What would other subsystems do?

This needs more thought before it's merged.

For example, in the above situation, should we deny the ability to
create a new attachment when a dmabuf has already been mapped by an
existing attachment?  Should we deny it only when the new attachment
has more restrictive DMA constraints?

Please consider the possible sequences of use (such as the scenario
above) when creating or augmenting an API.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFCv3 2/2] dma-buf: add helpers for sharing attacher constraints with dma-parms
Date: Thu, 29 Jan 2015 14:39:08 +0000	[thread overview]
Message-ID: <20150129143908.GA26493@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1422347154-15258-2-git-send-email-sumit.semwal@linaro.org>

On Tue, Jan 27, 2015 at 01:55:54PM +0530, Sumit Semwal wrote:
> +/*
> + * recalc_constraints - recalculates constraints for all attached devices;
> + *  useful for detach() recalculation, and for dma_buf_recalc_constraints()
> + *  helper.
> + *  Returns recalculated constraints in recalc_cons, or error in the unlikely
> + *  case when constraints of attached devices might have changed.
> + */

Please see kerneldoc documentation for the proper format of these comments.

> +static int recalc_constraints(struct dma_buf *dmabuf,
> +			      struct device_dma_parameters *recalc_cons)
> +{
> +	struct device_dma_parameters calc_cons;
> +	struct dma_buf_attachment *attach;
> +	int ret = 0;
> +
> +	init_constraints(&calc_cons);
> +
> +	list_for_each_entry(attach, &dmabuf->attachments, node) {
> +		ret = calc_constraints(attach->dev, &calc_cons);
> +		if (ret)
> +			return ret;
> +	}
> +	*recalc_cons = calc_cons;
> +	return 0;
> +}
> +
>  /**
>   * dma_buf_export_named - Creates a new dma_buf, and associates an anon file
>   * with this buffer, so it can be exported.
> @@ -313,6 +373,9 @@ struct dma_buf *dma_buf_export_named(void *priv, const struct dma_buf_ops *ops,
>  	dmabuf->ops = ops;
>  	dmabuf->size = size;
>  	dmabuf->exp_name = exp_name;
> +
> +	init_constraints(&dmabuf->constraints);
> +
>  	init_waitqueue_head(&dmabuf->poll);
>  	dmabuf->cb_excl.poll = dmabuf->cb_shared.poll = &dmabuf->poll;
>  	dmabuf->cb_excl.active = dmabuf->cb_shared.active = 0;
> @@ -422,7 +485,7 @@ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
>  					  struct device *dev)
>  {
>  	struct dma_buf_attachment *attach;
> -	int ret;
> +	int ret = 0;
>  
>  	if (WARN_ON(!dmabuf || !dev))
>  		return ERR_PTR(-EINVAL);
> @@ -436,6 +499,9 @@ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
>  
>  	mutex_lock(&dmabuf->lock);
>  
> +	if (calc_constraints(dev, &dmabuf->constraints))
> +		goto err_constraints;
> +
>  	if (dmabuf->ops->attach) {
>  		ret = dmabuf->ops->attach(dmabuf, dev, attach);
>  		if (ret)
> @@ -448,6 +514,7 @@ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
>  
>  err_attach:
>  	kfree(attach);
> +err_constraints:
>  	mutex_unlock(&dmabuf->lock);
>  	return ERR_PTR(ret);
>  }
> @@ -470,6 +537,8 @@ void dma_buf_detach(struct dma_buf *dmabuf, struct dma_buf_attachment *attach)
>  	if (dmabuf->ops->detach)
>  		dmabuf->ops->detach(dmabuf, attach);
>  
> +	recalc_constraints(dmabuf, &dmabuf->constraints);
> +

To me, this whole thing seems horribly racy.

What happens if subsystem X creates a dmabuf, which is passed to
userspace. It's then passed to subsystem Y, which starts making use
of it, calling dma_buf_map_attachment() on it.

The same buffer is also passed (via unix domain sockets) to another
program, which then passes it independently into subsystem Z, and
subsystem Z has more restrictive DMA constraints.

What happens at this point?

Subsystems such as DRM cache the scatter table, and return it for
subsequent attach calls, so DRM drivers using the default
drm_gem_map_dma_buf() implementation would not see the restrictions
placed upon the dmabuf.  Moreover, the returned scatterlist would not
be modified for those restrictions either.

What would other subsystems do?

This needs more thought before it's merged.

For example, in the above situation, should we deny the ability to
create a new attachment when a dmabuf has already been mapped by an
existing attachment?  Should we deny it only when the new attachment
has more restrictive DMA constraints?

Please consider the possible sequences of use (such as the scenario
above) when creating or augmenting an API.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

WARNING: multiple messages have this Message-ID (diff)
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Sumit Semwal <sumit.semwal@linaro.org>
Cc: linaro-kernel@lists.linaro.org, robin.murphy@arm.com,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linaro-mm-sig@lists.linaro.org, linux-mm@kvack.org,
	m.szyprowski@samsung.com, stanislawski.tomasz@googlemail.com,
	linux-arm-kernel@lists.infradead.org,
	linux-media@vger.kernel.org
Subject: Re: [RFCv3 2/2] dma-buf: add helpers for sharing attacher constraints with dma-parms
Date: Thu, 29 Jan 2015 14:39:08 +0000	[thread overview]
Message-ID: <20150129143908.GA26493@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1422347154-15258-2-git-send-email-sumit.semwal@linaro.org>

On Tue, Jan 27, 2015 at 01:55:54PM +0530, Sumit Semwal wrote:
> +/*
> + * recalc_constraints - recalculates constraints for all attached devices;
> + *  useful for detach() recalculation, and for dma_buf_recalc_constraints()
> + *  helper.
> + *  Returns recalculated constraints in recalc_cons, or error in the unlikely
> + *  case when constraints of attached devices might have changed.
> + */

Please see kerneldoc documentation for the proper format of these comments.

> +static int recalc_constraints(struct dma_buf *dmabuf,
> +			      struct device_dma_parameters *recalc_cons)
> +{
> +	struct device_dma_parameters calc_cons;
> +	struct dma_buf_attachment *attach;
> +	int ret = 0;
> +
> +	init_constraints(&calc_cons);
> +
> +	list_for_each_entry(attach, &dmabuf->attachments, node) {
> +		ret = calc_constraints(attach->dev, &calc_cons);
> +		if (ret)
> +			return ret;
> +	}
> +	*recalc_cons = calc_cons;
> +	return 0;
> +}
> +
>  /**
>   * dma_buf_export_named - Creates a new dma_buf, and associates an anon file
>   * with this buffer, so it can be exported.
> @@ -313,6 +373,9 @@ struct dma_buf *dma_buf_export_named(void *priv, const struct dma_buf_ops *ops,
>  	dmabuf->ops = ops;
>  	dmabuf->size = size;
>  	dmabuf->exp_name = exp_name;
> +
> +	init_constraints(&dmabuf->constraints);
> +
>  	init_waitqueue_head(&dmabuf->poll);
>  	dmabuf->cb_excl.poll = dmabuf->cb_shared.poll = &dmabuf->poll;
>  	dmabuf->cb_excl.active = dmabuf->cb_shared.active = 0;
> @@ -422,7 +485,7 @@ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
>  					  struct device *dev)
>  {
>  	struct dma_buf_attachment *attach;
> -	int ret;
> +	int ret = 0;
>  
>  	if (WARN_ON(!dmabuf || !dev))
>  		return ERR_PTR(-EINVAL);
> @@ -436,6 +499,9 @@ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
>  
>  	mutex_lock(&dmabuf->lock);
>  
> +	if (calc_constraints(dev, &dmabuf->constraints))
> +		goto err_constraints;
> +
>  	if (dmabuf->ops->attach) {
>  		ret = dmabuf->ops->attach(dmabuf, dev, attach);
>  		if (ret)
> @@ -448,6 +514,7 @@ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
>  
>  err_attach:
>  	kfree(attach);
> +err_constraints:
>  	mutex_unlock(&dmabuf->lock);
>  	return ERR_PTR(ret);
>  }
> @@ -470,6 +537,8 @@ void dma_buf_detach(struct dma_buf *dmabuf, struct dma_buf_attachment *attach)
>  	if (dmabuf->ops->detach)
>  		dmabuf->ops->detach(dmabuf, attach);
>  
> +	recalc_constraints(dmabuf, &dmabuf->constraints);
> +

To me, this whole thing seems horribly racy.

What happens if subsystem X creates a dmabuf, which is passed to
userspace. It's then passed to subsystem Y, which starts making use
of it, calling dma_buf_map_attachment() on it.

The same buffer is also passed (via unix domain sockets) to another
program, which then passes it independently into subsystem Z, and
subsystem Z has more restrictive DMA constraints.

What happens at this point?

Subsystems such as DRM cache the scatter table, and return it for
subsequent attach calls, so DRM drivers using the default
drm_gem_map_dma_buf() implementation would not see the restrictions
placed upon the dmabuf.  Moreover, the returned scatterlist would not
be modified for those restrictions either.

What would other subsystems do?

This needs more thought before it's merged.

For example, in the above situation, should we deny the ability to
create a new attachment when a dmabuf has already been mapped by an
existing attachment?  Should we deny it only when the new attachment
has more restrictive DMA constraints?

Please consider the possible sequences of use (such as the scenario
above) when creating or augmenting an API.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2015-01-29 14:39 UTC|newest]

Thread overview: 262+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-27  8:25 [RFCv3 1/2] device: add dma_params->max_segment_count Sumit Semwal
2015-01-27  8:25 ` Sumit Semwal
2015-01-27  8:25 ` Sumit Semwal
2015-01-27  8:25 ` [RFCv3 2/2] dma-buf: add helpers for sharing attacher constraints with dma-parms Sumit Semwal
2015-01-27  8:25   ` Sumit Semwal
2015-01-27  8:25   ` Sumit Semwal
2015-01-27  8:25   ` Sumit Semwal
2015-01-29 14:16   ` Maarten Lankhorst
2015-01-29 14:16     ` Maarten Lankhorst
2015-01-29 14:16     ` Maarten Lankhorst
2015-01-29 14:16     ` Maarten Lankhorst
2015-01-29 14:39   ` Russell King - ARM Linux [this message]
2015-01-29 14:39     ` Russell King - ARM Linux
2015-01-29 14:39     ` Russell King - ARM Linux
2015-01-29 14:39     ` Russell King - ARM Linux
2015-01-29 15:30     ` Sumit Semwal
2015-01-29 15:30       ` Sumit Semwal
2015-01-29 15:30       ` Sumit Semwal
2015-01-29 15:30       ` Sumit Semwal
2015-01-29 15:47       ` Russell King - ARM Linux
2015-01-29 15:47         ` Russell King - ARM Linux
2015-01-29 15:47         ` Russell King - ARM Linux
2015-01-29 15:47         ` Russell King - ARM Linux
2015-01-29 15:47         ` Russell King - ARM Linux
2015-01-29 16:55         ` Sumit Semwal
2015-01-29 16:55           ` Sumit Semwal
2015-01-29 16:55           ` Sumit Semwal
2015-01-29 16:55           ` Sumit Semwal
2015-01-29 18:52         ` Rob Clark
2015-01-29 18:52           ` Rob Clark
2015-01-29 18:52           ` Rob Clark
2015-01-29 18:52           ` Rob Clark
2015-01-29 18:52           ` Rob Clark
2015-01-29 19:26           ` Russell King - ARM Linux
2015-01-29 19:26             ` Russell King - ARM Linux
2015-01-29 19:26             ` Russell King - ARM Linux
2015-01-29 19:26             ` Russell King - ARM Linux
2015-01-29 19:26             ` Russell King - ARM Linux
2015-01-29 22:18             ` Rob Clark
2015-01-29 22:18               ` Rob Clark
2015-01-29 22:18               ` Rob Clark
2015-01-29 22:18               ` Rob Clark
2015-01-29 22:31               ` Russell King - ARM Linux
2015-01-29 22:31                 ` Russell King - ARM Linux
2015-01-29 22:31                 ` Russell King - ARM Linux
2015-01-29 22:31                 ` Russell King - ARM Linux
2015-01-29 23:19                 ` Rob Clark
2015-01-29 23:19                   ` Rob Clark
2015-01-29 23:19                   ` Rob Clark
2015-01-29 23:19                   ` Rob Clark
2015-02-02 16:54               ` Daniel Vetter
2015-02-02 16:54                 ` Daniel Vetter
2015-02-02 16:54                 ` Daniel Vetter
2015-02-02 16:54                 ` Daniel Vetter
2015-02-02 20:30                 ` Rob Clark
2015-02-02 20:30                   ` Rob Clark
2015-02-02 20:30                   ` Rob Clark
2015-02-02 20:30                   ` Rob Clark
2015-02-02 21:46                   ` Russell King - ARM Linux
2015-02-02 21:46                     ` Russell King - ARM Linux
2015-02-02 21:46                     ` Russell King - ARM Linux
2015-02-02 21:46                     ` Russell King - ARM Linux
2015-02-02 22:36                     ` Rob Clark
2015-02-02 22:36                       ` Rob Clark
2015-02-02 22:36                       ` Rob Clark
2015-02-02 22:36                       ` Rob Clark
2015-02-02 22:36                       ` Rob Clark
2015-02-03  7:50                       ` Daniel Vetter
2015-02-03  7:50                         ` Daniel Vetter
2015-02-03  7:50                         ` Daniel Vetter
2015-02-03  7:50                         ` Daniel Vetter
2015-02-03  7:46                     ` Daniel Vetter
2015-02-03  7:46                       ` Daniel Vetter
2015-02-03  7:46                       ` Daniel Vetter
2015-02-03  7:46                       ` Daniel Vetter
2015-02-03  7:48                   ` Daniel Vetter
2015-02-03  7:48                     ` Daniel Vetter
2015-02-03  7:48                     ` Daniel Vetter
2015-02-03  7:48                     ` Daniel Vetter
2015-02-03 12:28                     ` Russell King - ARM Linux
2015-02-03 12:28                       ` Russell King - ARM Linux
2015-02-03 12:28                       ` Russell King - ARM Linux
2015-02-03 12:28                       ` Russell King - ARM Linux
2015-02-03 13:00                       ` Daniel Vetter
2015-02-03 13:00                         ` Daniel Vetter
2015-02-03 13:00                         ` Daniel Vetter
2015-02-03 13:00                         ` Daniel Vetter
2015-02-03 13:28                       ` Christian Gmeiner
2015-02-03 13:28                         ` Christian Gmeiner
2015-02-03 13:28                         ` Christian Gmeiner
2015-02-03 13:28                         ` Christian Gmeiner
2015-02-03 13:28                         ` Christian Gmeiner
2015-02-03 14:32                         ` Russell King - ARM Linux
2015-02-03 14:32                           ` Russell King - ARM Linux
2015-02-03 14:32                           ` Russell King - ARM Linux
2015-02-03 14:32                           ` Russell King - ARM Linux
2015-02-03 14:32                           ` Russell King - ARM Linux
2015-02-03 14:25                       ` Rob Clark
2015-02-03 14:25                         ` Rob Clark
2015-02-03 14:25                         ` Rob Clark
2015-02-03 14:25                         ` Rob Clark
2015-02-03 14:04                     ` Rob Clark
2015-02-03 14:04                       ` Rob Clark
2015-02-03 14:04                       ` Rob Clark
2015-02-03 14:04                       ` Rob Clark
2015-02-03 14:17                       ` Arnd Bergmann
2015-02-03 14:17                         ` Arnd Bergmann
2015-02-03 14:17                         ` Arnd Bergmann
2015-02-03 14:17                         ` Arnd Bergmann
2015-02-03 14:41                         ` Russell King - ARM Linux
2015-02-03 14:41                           ` Russell King - ARM Linux
2015-02-03 14:41                           ` Russell King - ARM Linux
2015-02-03 14:41                           ` Russell King - ARM Linux
2015-02-03 14:52                           ` Arnd Bergmann
2015-02-03 14:52                             ` Arnd Bergmann
2015-02-03 14:52                             ` Arnd Bergmann
2015-02-03 15:22                             ` Russell King - ARM Linux
2015-02-03 15:22                               ` Russell King - ARM Linux
2015-02-03 15:22                               ` Russell King - ARM Linux
2015-02-03 15:22                               ` Russell King - ARM Linux
2015-02-03 15:31                               ` [Linaro-mm-sig] " Arnd Bergmann
2015-02-03 15:31                                 ` Arnd Bergmann
2015-02-03 15:31                                 ` Arnd Bergmann
2015-02-03 15:54                                 ` Russell King - ARM Linux
2015-02-03 15:54                                   ` Russell King - ARM Linux
2015-02-03 15:54                                   ` Russell King - ARM Linux
2015-02-03 15:54                                   ` Russell King - ARM Linux
2015-02-03 16:12                                   ` Arnd Bergmann
2015-02-03 16:12                                     ` Arnd Bergmann
2015-02-03 16:12                                     ` Arnd Bergmann
2015-02-03 16:12                                     ` Arnd Bergmann
2015-02-03 16:22                                     ` Rob Clark
2015-02-03 16:22                                       ` Rob Clark
2015-02-03 16:22                                       ` Rob Clark
2015-02-03 16:22                                       ` Rob Clark
2015-02-03 16:36                                       ` Arnd Bergmann
2015-02-03 16:36                                         ` Arnd Bergmann
2015-02-03 16:36                                         ` Arnd Bergmann
2015-02-03 16:36                                         ` Arnd Bergmann
2015-02-03 16:36                                         ` Arnd Bergmann
2015-02-03 20:04                                         ` Daniel Vetter
2015-02-03 20:04                                           ` Daniel Vetter
2015-02-03 20:04                                           ` Daniel Vetter
2015-02-03 20:04                                           ` Daniel Vetter
2015-02-03 21:42                                           ` Arnd Bergmann
2015-02-03 21:42                                             ` Arnd Bergmann
2015-02-03 21:42                                             ` Arnd Bergmann
2015-02-03 21:42                                             ` Arnd Bergmann
2015-02-03 21:42                                             ` Arnd Bergmann
2015-02-03 22:07                                             ` Daniel Vetter
2015-02-03 22:07                                               ` Daniel Vetter
2015-02-03 22:07                                               ` Daniel Vetter
2015-02-03 22:07                                               ` Daniel Vetter
2015-02-04  0:14                                             ` Russell King - ARM Linux
2015-02-04  0:14                                               ` Russell King - ARM Linux
2015-02-04  0:14                                               ` Russell King - ARM Linux
2015-02-04  0:14                                               ` Russell King - ARM Linux
2015-02-03 17:01                                       ` Russell King - ARM Linux
2015-02-03 17:01                                         ` Russell King - ARM Linux
2015-02-03 17:01                                         ` Russell King - ARM Linux
2015-02-03 17:01                                         ` Russell King - ARM Linux
2015-02-03 17:01                                         ` Russell King - ARM Linux
2015-02-03 16:58                                     ` Russell King - ARM Linux
2015-02-03 16:58                                       ` Russell King - ARM Linux
2015-02-03 16:58                                       ` Russell King - ARM Linux
2015-02-03 16:58                                       ` Russell King - ARM Linux
2015-02-03 17:35                                       ` Rob Clark
2015-02-03 17:35                                         ` Rob Clark
2015-02-03 17:35                                         ` Rob Clark
2015-02-03 17:35                                         ` Rob Clark
2015-02-03 20:08                                         ` Daniel Vetter
2015-02-03 20:08                                           ` Daniel Vetter
2015-02-03 20:08                                           ` Daniel Vetter
2015-02-03 20:08                                           ` Daniel Vetter
2015-02-03 20:08                                           ` Daniel Vetter
2015-02-03 21:44                                         ` Arnd Bergmann
2015-02-03 21:44                                           ` Arnd Bergmann
2015-02-03 21:44                                           ` Arnd Bergmann
2015-02-03 21:44                                           ` Arnd Bergmann
2015-02-03 21:44                                           ` Arnd Bergmann
2015-02-03 15:25                             ` Rob Clark
2015-02-03 15:25                               ` Rob Clark
2015-02-03 15:25                               ` Rob Clark
2015-02-03 15:25                               ` Rob Clark
2015-02-03 15:19                           ` Rob Clark
2015-02-03 15:19                             ` Rob Clark
2015-02-03 15:19                             ` Rob Clark
2015-02-03 15:19                             ` Rob Clark
2015-02-03 14:37                       ` Russell King - ARM Linux
2015-02-03 14:37                         ` Russell King - ARM Linux
2015-02-03 14:37                         ` Russell King - ARM Linux
2015-02-03 14:37                         ` Russell King - ARM Linux
2015-02-03 14:37                         ` Russell King - ARM Linux
2015-02-03 14:44                         ` Rob Clark
2015-02-03 14:44                           ` Rob Clark
2015-02-03 14:44                           ` Rob Clark
2015-02-03 14:44                           ` Rob Clark
2015-02-03 14:58                           ` Russell King - ARM Linux
2015-02-03 14:58                             ` Russell King - ARM Linux
2015-02-03 14:58                             ` Russell King - ARM Linux
2015-02-03 14:58                             ` Russell King - ARM Linux
2015-02-03 14:58                             ` Russell King - ARM Linux
2015-02-02  5:53             ` Sumit Semwal
2015-02-02  5:53               ` Sumit Semwal
2015-02-02  5:53               ` Sumit Semwal
2015-02-02  5:53               ` Sumit Semwal
2015-02-11  8:28   ` Marek Szyprowski
2015-02-11  8:28     ` Marek Szyprowski
2015-02-11  8:28     ` Marek Szyprowski
2015-02-11 11:12     ` Russell King - ARM Linux
2015-02-11 11:12       ` Russell King - ARM Linux
2015-02-11 11:12       ` Russell King - ARM Linux
2015-02-11 11:12       ` Russell King - ARM Linux
2015-02-11 11:23       ` Rob Clark
2015-02-11 11:23         ` Rob Clark
2015-02-11 11:23         ` Rob Clark
2015-02-11 11:23         ` Rob Clark
2015-02-11 11:23         ` Rob Clark
2015-02-11 12:56         ` Daniel Vetter
2015-02-11 12:56           ` Daniel Vetter
2015-02-11 12:56           ` Daniel Vetter
2015-02-11 12:56           ` Daniel Vetter
2015-02-11 12:56           ` Daniel Vetter
2015-02-11 13:30           ` Rob Clark
2015-02-11 13:30             ` Rob Clark
2015-02-11 13:30             ` Rob Clark
2015-02-11 13:30             ` Rob Clark
2015-02-11 13:30             ` Rob Clark
2015-02-11 12:20       ` Marek Szyprowski
2015-02-11 12:20         ` Marek Szyprowski
2015-02-11 12:20         ` Marek Szyprowski
2015-02-11 16:23         ` Russell King - ARM Linux
2015-02-11 16:23           ` Russell King - ARM Linux
2015-02-11 16:23           ` Russell King - ARM Linux
2015-02-11 16:23           ` Russell King - ARM Linux
2015-05-05 14:41           ` Sumit Semwal
2015-05-05 14:41             ` Sumit Semwal
2015-05-05 14:41             ` Sumit Semwal
2015-05-05 14:41             ` Sumit Semwal
2015-06-03  6:39             ` [Linaro-mm-sig] " Hans Verkuil
2015-06-03  6:39               ` Hans Verkuil
2015-06-03  6:39               ` Hans Verkuil
2015-06-03  6:39               ` Hans Verkuil
2015-06-03  8:41               ` Russell King - ARM Linux
2015-06-03  8:41                 ` Russell King - ARM Linux
2015-06-03  8:41                 ` Russell King - ARM Linux
2015-06-03  8:41                 ` Russell King - ARM Linux
2015-06-03  8:41                 ` Russell King - ARM Linux
2015-06-03  9:37                 ` Hans Verkuil
2015-06-03  9:37                   ` Hans Verkuil
2015-06-03  9:37                   ` Hans Verkuil
2015-06-03  9:37                   ` Hans Verkuil
2015-06-04  5:24                   ` Sumit Semwal
2015-06-04  5:24                     ` Sumit Semwal
2015-06-04  5:24                     ` Sumit Semwal
2015-06-04  5:24                     ` Sumit Semwal
2015-01-28 14:09 ` [RFCv3 1/2] device: add dma_params->max_segment_count Marek Szyprowski
2015-01-28 14:09   ` Marek Szyprowski
2015-01-28 14:09   ` Marek Szyprowski
2015-06-03  6:13 ` [Linaro-mm-sig] " Hans Verkuil
2015-06-03  6:13   ` Hans Verkuil
2015-06-03  6:13   ` Hans Verkuil

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=20150129143908.GA26493@n2100.arm.linux.org.uk \
    --to=linux@arm.linux.org.uk \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linaro-mm-sig@lists.linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=m.szyprowski@samsung.com \
    --cc=robdclark@gmail.com \
    --cc=robin.murphy@arm.com \
    --cc=stanislawski.tomasz@googlemail.com \
    --cc=sumit.semwal@linaro.org \
    /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.