Re: using kmalloc

Dan Maas (dmaas@dcine.com)
Wed, 20 Mar 2002 00:53:20 -0500


> I am getting some problems with kmalloc. If I tried to
> allocate more than certain memory then the system is
> hanging while booting with the changed kernel. Can you
> suggest me how to come out this situation. Can't I
> allocate as much I want when I want to allocate in the
> kernel.

kmalloc() allocates physically-contiguous pages of memory. Due to
fragmentation, more than 64KB-128KB of contiguous pages might not be
available, and hence kmalloc() will fail.

To allocate more memory, use vmalloc(), which allocates and maps physically
disjoint pages into a virtually-contiguous region. Be careful when doing DMA
to a vmalloc() area, since it is not physically contiguous and exists only
in the kernel's virtual memory map... Also I believe vmalloc()ed memory is
only accessible from (the context of) the process in which it was allocated
(?).

Regards,
Dan

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