Re: GPL question: using large contiguous memory in proprietary driver.

From: Mark Hounschell
Date: Wed Oct 15 2008 - 10:13:42 EST


Kaz Kylheku wrote:
> Hi all,
>
> I have the following question. Suppose that some proprietary driver
> (otherwise completely clean, based only on non-GPL symbols)
> requires a large buffer of physically contiguous memory.
>
> A GPL-ed driver could get this memory by having some boot-time
> code compiled into the kernel which calls bootmem_alloc during
> kernel initialization. This function would stash the address of the
> memory into some global variable which is exported for the
> module to use.
>
> How do you solve this problem in a proprietary driver? It seems
> like the above solution taints the kernel, because the kernel
> provides a symbol which exists only for the sake of supporting
> a proprietary driver.
>
> Would it be okay to have a mechanism like this:
> Suppose that on the kernel command line, you could
> request a boot-time memory allocation and give it a name.
> For instance, the parameter:
>
> boot_alloc=foo,8192K
>
> would create an 8192 kilobyte allocation, and associate it
> with the string "foo". A non-GPL function would be provided to
> find the address of this memory, using the string "foo"
> as the key. The proprietary driver would document the
> requirement that it needs a memory region of at least
> 8192K, under the name "foo".
>
> Help! :)

Hardware with scatter/gatcher capabilites would be best. But short
of that, you could just use the bigphysarea patch. GOOGLE for it and you'll
find a version suitable for most kernel versions. I've been using it for years with
a GPL driver but even if the driver wasn't GPL I would still be using it.

I sure wish it could be included in the kernel??

There really aren't many good reasons not to GPL your driver BTW.

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