Re: fork: out of memory

Rik van Riel (H.H.vanRiel@fys.ruu.nl)
Thu, 27 Nov 1997 14:12:16 +0100 (MET)


On Wed, 26 Nov 1997, Mike Jagdis wrote:

> > But if we need a DMA buffer that is physically contiguous can't we
> > just move non-DMA pages around and adjust the page tables such that
> > logical addresses stay the same?
>
> Assuming you know which pages are only accessed using logical
> addresses. We currently have no way of knowing that a page was
> allocated *because* it was DMA-able.
>
> Besides which remapping implies that you would have to relocate
> the page in kernel virtual space (since multi-page allocations

No, we could allocate a certain region in memory (1 MB?) to be
used for buffer/cache/DMA usage only...
Then there's no need to muck with page-table's or whatever...
bye-bye race conditions :)

> > It should be possible to change page tables and let all other references
> > stay the same.
>
> I meant, "references by ptes". If you move a page that is shared
> many times (such as a libc page) you will change a fair few ptes,
> flush a load of tlb entries and bounce quite a few L1/L2 cache
> entries. So remapping has quite a cost and should only be a
> late resort solution (last resort would be to just junk the pages,
> assuming clean, and page them back in when needed).

see above...

grtz,

Rik.

----------
Send Linux memory-management wishes to me: I'm currently looking
for something to hack...