Re: vmalloc() in interrupt context

Jeff Garzik (jgarzik@mandrakesoft.com)
Tue, 27 Jun 2000 12:56:44 -0400


Amit Dror wrote:
>
> Hi,
>
> I have a kernel driver that needs to dynamically allocate large amounts of
> memory in interrupt context.
>
> I can't use kmalloc(GFP_ATOMIC) or get_free_pages(GFP_ATOMIC) since they are
> limited to 131056 bytes.

vmalloc won't give you a whole lot more than that in practice. Write
some test code and see how much memory you can grab, outside of
interrupt context.

> Is there any other way to work around this problem ?

Use __vmalloc, that lets you provide a priority. Requires 2.4.x though,
doesn't exist in 2.2.x.

Though be aware that the sort of operation you propose has a high
probability of failure even with vmalloc. Unless you control the
hardware in this case, I would suggest considering some sort of
alternate implementation. There is always the hack of specifying
"mem=XX" on the kernel cmd line, where XX is a value less than the total
amount of system RAM. Then your driver can happily scribble all over
that space[1].

Jeff

[1] unless another framegrabber or 3D driver is doing so..

-- 
Jeff Garzik              |
Building 1024            | Free beer tomorrow.
MandrakeSoft, Inc.       |

- 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/