Re: [PATCH 01 of 12] Core of mmu notifiers

Robin Holt
2008-04-22T20:31:14Z

On Tue, Apr 22, 2008 at 01:19:29PM -0700, Christoph Lameter wrote:
> Thanks for adding most of my enhancements. But
>
> 1. There is no real need for invalidate_page(). Can be done with
> invalidate_start/end. Needlessly complicates the API. One
> of the objections by Andrew was that there mere multiple
> callbacks that perform similar functions.

While I agree with that reading of Andrew's email about invalidate_page,
I think the GRU hardware makes a strong enough case to justify the two
seperate callouts.

Due to the GRU hardware, we can assure that invalidate_page terminates all
pending GRU faults (that includes faults that are just beginning) and can
therefore be completed without needing any locking. The invalidate_page()
callout gets turned into a GRU flush instruction and we return.

Because the invalidate_range_start() leaves the page table information
available, we can not use a single page _start to mimick that
functionality. Therefore, there is a documented case justifying the
seperate callouts.

I agree the case is fairly weak, but it does exist. Given Andrea's
unwillingness to move and Jack's documented case, it is my opinion the
most likely compromise is to leave in the invalidate_page() callout.

Thanks,
Robin