Re: [bigmem-patch] 4GB with Linux on IA32

Peter Desnoyers (pjd@fred001.dynip.com)
Thu, 19 Aug 1999 08:59:05 -0400 (EDT)


Linus Torvalds wrote:
>
> I will NOT allow anything that walks page tables. That's pretty much
> completely out of the question. The rawio stuff gives access to the page
> tables, and no device will be accepted that does more than that.

>From your and Alan's responses, it looks like there are two
acceptable mechanisms - either using the rawio patch / modifications
(and map_user_kiobuf in particular) to map the pages, or reversing the
process and mmap-ing kernel pages into user space.

The first approach is a straightforward fit to my application, and has
similar functionality to the interface we use in NT for the same purpose.
(and perusing the rawio patch, which I was unfamiliar with until yesterday,
was instructive in pointing out the perils of walking page tables - there
are a number of cases handled there which would be botched by my code)

However, I think the mmap approach is a better fit for a sound card than
for a networking device. Much like disk traffic and raw IO, there are a
number of cases where you might want to transmit data that is already in
application memory, and avoid copying it into an intermediate buffer.
With map_user_kiobuf you can do this, while with mmap you can't.

Does the map_user_kiobuf approach pass muster? Pat Bozeman at LBNL is
also working on VI for Linux, and is doing a vaguely SCSI-like driver
framework to allow different VI NIC types to live together - in the
long run the proper place for mapping addresses is probably in the
framework, so that per-device drivers don't deal with it.

-- 
............................................................................
 Peter Desnoyers 
 162 Pleasant St.         (617) 661-1979          pjd@fred.cambridge.ma.us
 Cambridge, Mass. 02139   (978) 461-0402 (work)   pjd@giga-net.com 

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/