All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aaron Plattner <aplattner@nvidia.com>
To: Rahul Sharma <rahul.sharma@samsung.com>
Cc: "joshi@samsung.com" <joshi@samsung.com>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH] drm: modify pages_to_sg prime helper to create optimized SG table
Date: Tue, 29 Jan 2013 09:10:40 -0800	[thread overview]
Message-ID: <51080290.9040108@nvidia.com> (raw)
In-Reply-To: <1359380328-23058-1-git-send-email-rahul.sharma@samsung.com>

On 01/28/2013 05:38 AM, Rahul Sharma wrote:
> It fixes the issue arises due to passing 'nr_pages' in place of 'nents' to
> sg_alloc_table. When ARM_HAS_SG_CHAIN is disabled, it is causing failure in
> creating SG table for the buffers having more than 204 physical pages i.e.
> equal to SG_MAX_SINGLE_ALLOC.
>
> When using sg_alloc_table_from_pages interface, in place of sg_alloc_table,
> page list will be passes to get each contiguous section which is represented
> by a single entry in the table. For a Contiguous Buffer, number of entries
> should be equal to 1.
>
> Following check is causing the failure which is not applicable for Non-Contig
> buffers:
>
> 	if (WARN_ON_ONCE(nents > max_ents))
> 		return -EINVAL;
>
> Above patch is well tested for EXYNOS4 and EXYNOS5 for with/wihtout IOMMU
> supprot. NOUVEAU and RADEON platforms also depends on drm_prime_pages_to_sg
> helper function.
>
> This set is base on "exynos-drm-fixes" branch at
> http://git.kernel.org/?p=linux/kernel/git/daeinki/drm-exynos.git
>
> Signed-off-by: Rahul Sharma <rahul.sharma@samsung.com>

Reviewed-by: Aaron Plattner <aplattner@nvidia.com>

I also verified that this reduces my 2025-entry sg_table to 6 entries, so

Tested-by: Aaron Plattner <aplattner@nvidia.com>

-- 
Aaron

> ---
>   drivers/gpu/drm/drm_prime.c | 8 ++------
>   1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
> index 7f12573..072ee08 100644
> --- a/drivers/gpu/drm/drm_prime.c
> +++ b/drivers/gpu/drm/drm_prime.c
> @@ -217,21 +217,17 @@ int drm_prime_fd_to_handle_ioctl(struct drm_device *dev, void *data,
>   struct sg_table *drm_prime_pages_to_sg(struct page **pages, int nr_pages)
>   {
>   	struct sg_table *sg = NULL;
> -	struct scatterlist *iter;
> -	int i;
>   	int ret;
>
>   	sg = kmalloc(sizeof(struct sg_table), GFP_KERNEL);
>   	if (!sg)
>   		goto out;
>
> -	ret = sg_alloc_table(sg, nr_pages, GFP_KERNEL);
> +	ret = sg_alloc_table_from_pages(sg, pages, nr_pages, 0,
> +				nr_pages << PAGE_SHIFT, GFP_KERNEL);
>   	if (ret)
>   		goto out;
>
> -	for_each_sg(sg->sgl, iter, nr_pages, i)
> -		sg_set_page(iter, pages[i], PAGE_SIZE, 0);
> -
>   	return sg;
>   out:
>   	kfree(sg);
>

  reply	other threads:[~2013-01-29 17:10 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-28 13:38 [PATCH] drm: modify pages_to_sg prime helper to create optimized SG table Rahul Sharma
2013-01-29 17:10 ` Aaron Plattner [this message]
2013-01-31  8:38   ` Rahul Sharma
2013-01-31  8:53     ` Daniel Vetter
2013-01-31 11:54       ` Rahul Sharma
2013-01-31 12:17         ` Daniel Vetter
2013-01-31 13:26           ` Rahul Sharma
2013-01-31 14:24             ` Daniel Vetter
2013-03-19  9:09   ` Daniel Vetter

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=51080290.9040108@nvidia.com \
    --to=aplattner@nvidia.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=joshi@samsung.com \
    --cc=rahul.sharma@samsung.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.