From: Akinobu Mita <akinobu.mita@xxxxxxxxx> Date: Fri, 29 Mar 2013 22:44:43 +0900 > srmmu_nocache_bitmap is cleared by bit_map_init(). But bit_map_init() > attempts to clear by memset(), so it can't clear the trailing edge of > bitmap properly on big-endian architecture if the number of bits is not > a multiple of BITS_PER_LONG. > > Actually, the number of bits in srmmu_nocache_bitmap is not always > a multiple of BITS_PER_LONG. It is calculated as below: > > bitmap_bits = srmmu_nocache_size >> SRMMU_NOCACHE_BITMAP_SHIFT; > > srmmu_nocache_size is decided proportionally by the amount of system RAM > and it is rounded to a multiple of PAGE_SIZE. SRMMU_NOCACHE_BITMAP_SHIFT > is defined as (PAGE_SHIFT - 4). So it can only be said that bitmap_bits > is a multiple of 16. > > This fixes the problem by using bitmap_clear() instead of memset() > in bit_map_init() and this also uses BITS_TO_LONGS() to calculate correct > size at bitmap allocation time. > > Signed-off-by: Akinobu Mita <akinobu.mita@xxxxxxxxx> Applied. -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html