On 20.09.2011, at 19:54, Scott Wood wrote:
> On 09/19/2011 06:35 PM, Alexander Graf wrote:
>> + /*
>> + * e500 doesn't implement the lowest tsize bit,
>> + * or 1K pages.
>> + */
>> + tsize = max(BOOK3E_PAGESZ_4K, tsize & ~1);
>> +
>> + /* take the smallest page size that satisfies host and
>> + guest mapping */
>
> kernel comment style...
>
> I don't personally care much, but this leaves a checkpatch complaint for
> the next person to modify the comment. Such as to make it say "take the
> largest page size that...". :-)
Ahem :). Changed.
>
>> + 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 :).
>
>> }
>>
>> 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 :).
>
>> pfn = gfn_to_pfn_memslot(vcpu_e500->vcpu.kvm, slot, gfn);
>> + pfn &= ~(tsize_pages - 1);
>> + gvaddr &= ~((tsize_pages << PAGE_SHIFT) - 1);
>> if (is_error_pfn(pfn)) {
>
> Won't the masking of pfn affect is_error_pfn()?
Yes, it would. Good catch!
Alex
--
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