On Tuesday 30 August 2005 19.27, Stephen Williams wrote: > I have a PPC405GPr system with an image processing device, that > is creating potentially huge amounts of data. In one setup I > have a 256Meg system, and I'm trying to map a 192Meg destination > buffer using map_user_kiovec and an array of kiobufs.
Never tried to map that amount at once. Our code looks, or looked, like this. Found some code... /usr/src/linuxppc_2_4_devel/arch/cris/drivers/examples/kiobuftest.c > > I'm finding, however, that I'm getting an Oops in map_user_kiovec > when it tries this, and I'm wondering where I need to look for > any limits I might be overrunning. What does the Oops say?? Hmm... How much space will the vector itself require? > > Also, I've been considering skipping kiobufs all together and > instead using code like this (lifted from map_user_kiobuf) > > /* Try to fault in all of the necessary pages */ > down_read(&mm->mmap_sem); > /* rw==READ means read from disk, write into memory area */ > err = get_user_pages(current, mm, va, pgcount, > (rw==READ), 0, iobuf->maplist, NULL); > up_read(&mm->mmap_sem); > > to get the user pages directly. This is really what I want, and > I do not need the other functionality of kiobufs. Is the > get_user_pages function kosher for use by drivers? Is there > a limit to what get_user_pages may map? Isn't this the way it is done in 2.6 anyway? /RogerL