login
Header Space

 
 

Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only symbols

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Pavel Roskin <proski@...>
Cc: Linus Torvalds <torvalds@...>, Zan Lynx <zlynx@...>, linux-kernel <linux-kernel@...>, Jon Masters <jcm@...>, Rusty Russell <rusty@...>
Date: Tuesday, March 4, 2008 - 8:57 am

* Pavel Roskin <proski@gnu.org> wrote:


so ... i suspect the requirement would be for 
NdisMAllocateSharedMemory() to return a linear address that is DMA-able, 
and to properly map it to a physical address via dma_map_single(). I can 
see only one complication in pushing this to user-space: physical 
fragmentation of allocations. What are the typical buffer sizes that 
NDIS drivers request from the kernel? Is it frequently above 4K?

you could try to create a syscall-ish API towards the kernel that allows 
DMA, it would have the following functionality:

- allocate a piece of continuous memory and return its physical address
  plus its linear address as well and map the linear address into the
  user-space pagetables. This memory would be unfragmented on the 
  physical side.

you probably could even use/hack hugetlbfs right now to achieve 
something very similar. (hugetlbfs pages are unfragmented 2MB 
largepages)

if the NDIS API is done halfways right, then there's no need for any of 
these buffers to be in kernel-space and for the driver to run in kernel 
space.

i think someone should really try to push a known-well-behaving NDIS 
driver (for which a Linux driver exists too) down to user-space. NDIS 
has been around since Netware so it's a pretty well-understood driver 
model. And with an iommu it could all be made a safe sandbox as well (an 
NDIS device could never exit its sandbox).

	Ingo
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [PATCH 2.6.25] module: allow ndiswrapper to use GPL-only..., Ingo Molnar, (Tue Mar 4, 8:57 am)
speck-geostationary