On Wed Feb 03 2010 at 03:55:29 +0900, Masao Uebayashi wrote:
> > Can't the first XIP device to attach simply allocate it?
> 
> It's getpages()'s iteration loop which redirects unallocated pages to
> zero-pages.  If we allocate zero-page in device drivers, we have to
> have an interface which can be retrieved from vnode or mount.
> Having a well-known global name is simple, but I'm fine with both.

I assumed the reason you mentioned #ifdef XIP was because you didn't
want to waste a whole page of memory on systems which don't use XIP.

So in my suggestion you'd have a global:

        struct uvm_page *page_of_blues;

and then in xip_attach:

        RUN_ONCE(zeroes, allocate_nothingness);

Or something like that (you can even refcount it if you want to be
extra-fancy).  Then you can just always use the global zeropage in xip
getpages() and don't need to recompile your kernel (and reboot!) to
support XIP device modules.

Reply via email to