All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Simek <monstr@monstr.eu>
To: Rusty Russell <rusty@rustcorp.com.au>
Cc: Jens Axboe <axboe@kernel.dk>, LKML <linux-kernel@vger.kernel.org>,
	Ohad Ben-Cohen <ohad@wizery.com>
Subject: Re: scatterlist: sg_set_buf() argument must be in linear mapping (sha1: ac4e97abce9b80c020e7113325f49e58b7b15e3f)
Date: Mon, 22 Jul 2013 14:58:28 +0200	[thread overview]
Message-ID: <51ED2C74.7050502@monstr.eu> (raw)
In-Reply-To: <87siz7xt4z.fsf@rustcorp.com.au>

[-- Attachment #1: Type: text/plain, Size: 1839 bytes --]

+ Ohad

On 07/22/2013 03:47 AM, Rusty Russell wrote:
> Michal Simek <monstr@monstr.eu> writes:
>> Hi Rusty and Jens,
>>
>> I am getting problem with your patch which you have added to the kernel.
>> The problem is with my arm zynq remoteproc driver where
>> I use dma_declare_coherent_memory() to specify memory for remoteproc
>> which is ioremap to the vmalloc area.
>>
>> Based on that buf addr is not inside ram even this coherent memory is in ram.
>> That's why virt_addr_valid(buf) is failing.
> 
> But sg_set_buf() calls virt_to_page(buf).  So does that work?
> 
> I would think calling sg_set_page() directly would be what you want
> here...

Let me take some code from virtio_rpmsg_bus.c to show that problematic part.

bufs_va = dma_alloc_coherent(vdev->dev.parent->parent,
				RPMSG_TOTAL_BUF_SPACE,
				&vrp->bufs_dma, GFP_KERNEL);
vrp->rbufs = bufs_va;
for (i = 0; i < RPMSG_NUM_BUFS / 2; i++) {
	struct scatterlist sg;
	void *cpu_addr = vrp->rbufs + i * RPMSG_BUF_SIZE;

	sg_init_one(&sg, cpu_addr, RPMSG_BUF_SIZE);
}


dma_alloc_coherent returns ioremaped ram address and sg_init_one()
is checking if addr is valid.

It is no problem to call instead of sg_init_one()
	sg_init_table(sg, 1);
	sg_set_page(sg, virt_to_page(cpu_addr), RPMSG_BUF_SIZE, offset_in_page(cpu_addr));


But my question is if SG lists have to be used just for memory which is not remapped.

Ohad: Can you see similar problem with your remoteproc drivers when DEBUG_SG is enabled?

Thanks,
Michal

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]

  reply	other threads:[~2013-07-22 12:58 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-17  7:48 scatterlist: sg_set_buf() argument must be in linear mapping (sha1: ac4e97abce9b80c020e7113325f49e58b7b15e3f) Michal Simek
2013-07-22  1:47 ` Rusty Russell
2013-07-22 12:58   ` Michal Simek [this message]
2013-07-23  2:30     ` Rusty Russell
2013-07-23  2:30       ` Rusty Russell
2013-07-23 10:37       ` Russell King - ARM Linux
2013-07-23 10:37         ` Russell King - ARM Linux
2013-07-23 12:12         ` Michal Simek
2013-07-23 12:12           ` Michal Simek

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=51ED2C74.7050502@monstr.eu \
    --to=monstr@monstr.eu \
    --cc=axboe@kernel.dk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ohad@wizery.com \
    --cc=rusty@rustcorp.com.au \
    /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.