David Gibson wrote on Thursday, February 23, 2006 8:06 PM > But I don't see how not transforming them sometimes can be correct. > Suppose 'floor' is only a little way below 'addr' - addr will be > shifted down, but floor won't, so floor may now be above addr, which > will cause weird results. > > Afaict the *only* thing floor and ceiling are used for is bounds > checking the address range we're examining. How can that ever be > right if one address has been scaled down, but the other hasn't. The scale down isn't exactly on every address bits. Top 3 bits of virtual address are preserved. #define htlbpage_to_page(x) (((unsigned long) REGION_NUMBER(x) << 61) | (REGION_OFFSET(x) >> (HPAGE_SHIFT-PAGE_SHIFT))) So scaled address for a hugetlb address will never be below unscaled normal page address. That is adjusted addr will never below unchanged floor. - Ken - : send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |