[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Why don't we make mmap MAP_SHARED with /dev/zero possible?
On 3 Nov 1999, Eric W. Biederman wrote:
> Not really. I played with the idea, and the only really tricky aspect I saw
> was how to write a version of copy_to/from_user that would handle the bigmem
> case. Because kmap ... copy .. kunmap isn't safe as you can sleep due
> to a page fault.
yes, i implemented a new 'kaddr = kmap_permanent(page)'
'kunmap_permanent(kaddr)' interface which is schedulable. This is now
getting used in exec.c (argument pages can be significantly big) and the
page cache.
> And I played with putting a wrapper around ll_rw_block calls in
> buffer.c that would allocate bounce buffers from the buffer cache as
> needed.
that is a much more problematic issue, especially if you consider future
64-bit PCI DMAing. What i did was to change bh->b_data to bh->b_page,
which b_page is a 32-bit value describing the physical address of the
buffer, in 512-byte units. This also ment changing bazillion places where
b_data was used (lowlevel fs, buffer-cache and block layer, device
drivers) ... But it's working just fine on my box:
moon:~> cat /proc/meminfo
MemTotal: 8249708 kB
MemFree: 7760256 kB
MemShared: 0 kB
Buffers: 20292 kB
Cached: 432052 kB <=== 432M pagecache
HighTotal: 7471104 kB
HighFree: 7035928 kB <=== 444M high memory allocated
LowTotal: 778604 kB
LowFree: 724328 kB <=== 50M normal memory allocated
SwapTotal: 0 kB
SwapFree: 0 kB
> I'll probably get back to shmfs in a kernel version or two.
looking forward to test it, i believe we could get some spectacular
benchmark numbers with that thing and 2.4 ...
-- mingo
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://humbolt.geo.uu.nl/Linux-MM/