[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Ramdisk for > 1GB / >2 GB
I've written a ramdisk driver that can use physical, unmapped memory. I've
posted a beta version this morning to linux-kernel.
Basically, it is a kernel patch that manages the memory (alloc_hugemem(),
free_hugemem()), and a block device driver that can use this memory.
I'm new in the Linux MM, perhaps you could help me on these questions:
1) SMP:
I use a spinlock for every ramdisk, and one page for each drive as a window
to the physical memory. Since only 1 processor uses this page, I can use
__flush_tlb_one( == INVLPG only on the local processor) without any further
synchronization.
Is that stable on SMP, and do you think that this parallel enough?
Linus suggested using one 4MB pte for each processor, but I think that this
would be to much overhead.
Another idea would be using a hash table (eg. 32 spinlocks, 32 pages) that
is shared by all processors.
2) I can't make the driver a module because I use 'pgt_offset_k()' to
traverse the page tables, but init_mm is not exported.
Is there any other way how I can find the pte_t that belongs to my page?
3) Is more than 2 GB memory a problem that only applies to the i386
architecture, or is there demand for that on PowerPC, Sparc32?
Regards,
Manfred
--
To unsubscribe, send a message with 'unsubscribe linux-mm my@address'
in the body to majordomo@kvack.org. For more info on Linux MM,
see: http://humbolt.geo.uu.nl/Linux-MM/