On Thu, May 7, 2015 at 10:43 AM, Linus Torvalds <[email protected]> wrote: > On Thu, May 7, 2015 at 9:03 AM, Dan Williams <[email protected]> wrote: >> >> Ok, I'll keep thinking about this and come back when we have a better >> story about passing mmap'd persistent memory around in userspace. > > Ok. And if we do decide to go with your kind of "__pfn" type, I'd > probably prefer that we encode the type in the low bits of the word > rather than compare against PAGE_OFFSET. On some architectures > PAGE_OFFSET is zero (admittedly probably not ones you'd care about), > but even on x86 it's a *lot* cheaper to test the low bit than it is to > compare against a big constant. > > We know "struct page *" is supposed to be at least aligned to at least > "unsigned long", so you'd have two bits of type information (and we > could easily make it three). With "0" being a real pointer, so that > you can use the pointer itself without masking. > > And the "hide type in low bits of pointer" is something we've done > quite a lot, so it's more "kernel coding style" anyway.
Ok. Although __pfn_t also stores pfn values directly which will consume those 2 bits so we'll need to shift pfns up when storing. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

