On 09/24/2011 02:44 AM, Alexander Graf wrote:
> On 20.09.2011, at 19:54, Scott Wood wrote:
>> On 09/19/2011 06:35 PM, Alexander Graf wrote:
>>> + asm (PPC_CNTLZL "%0,%1" : "=r" (lz) : "r" (psize));
>>> + tsize = min(21 - lz, tsize);
>>
>> No need to open-code the cntlz and subtract-from-21:
>>
>> tsize = min(ilog2(psize) - 10, tsize);
>>
>> /*
>> * e500 doesn't implement the lowest tsize bit,
>> * or 1K pages.
>> */
>> tsize = max(BOOK3E_PAGESZ_4K, tsize & ~1);
>>
>> There's still an open-coded subtraction of 10, but that relates more
>> straightforwardly to the definition of tsize (and could be factored out
>> into a size-to-tsize function).
>
> Yeah, no need to micro-optimized those few bits. The reason I used the asm
> statement was that I copied the hugetlbfs code which does it that way :).
The "21 - lz" thing is broken on 64-bit, FWIW. It works by chance in
the hugetlbfs code (and in settlbcam) because it results in tsize being
too low by 32, which only affects bits that subsequently get masked off.
>>> }
>>>
>>> up_read(¤t->mm->mmap_sem);
>>> }
>>>
>>> if (likely(!pfnmap)) {
>>> + unsigned long tsize_pages = 1 << (tsize - 2);
>>
>> 1 << (tsize + 10 - PAGE_SHIFT);
>
> Are we getting variable page sizes anytime soon? Will change it nevertheless,
> just curious :).
Nothing imminent on our chips AFAIK, but there's some 64K page support
in Linux for IBM's book3e chips, and it's not nice to hardcode
(especially in a hidden way) regardless.
-Scott
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html