android_kernel_asus_sm8350/arch/sparc/mm
Akinobu Mita 54df2db36c sparc/srmmu: clear trailing edge of bitmap properly
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@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: sparclinux@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-03-31 19:29:12 -04:00
..
extable.c sparc: Add module.h to files previously implicitly using it. 2011-10-31 19:30:54 -04:00
fault_32.c readahead: fault retry breaks mmap file read random detection 2012-10-09 16:22:47 +09:00
fault_64.c sparc64: Fix tsb_grow() in atomic context. 2013-02-20 09:46:08 -08:00
gup.c sparc64: Fix get_user_pages_fast() wrt. THP. 2013-02-13 12:22:14 -08:00
highmem.c sparc32: move kmap_init() to highmem.c 2012-07-26 16:46:17 -07:00
hugetlbpage.c mm: use vm_unmapped_area() in hugetlbfs on sparc64 architecture 2012-12-11 17:22:26 -08:00
hypersparc.S sparc: remove CVS keywords 2008-05-20 00:33:44 -07:00
init_32.c swap: add per-partition lock for swapfile 2013-02-23 17:50:17 -08:00
init_64.c memory-hotplug: remove memmap of sparse-vmemmap 2013-02-23 17:50:12 -08:00
init_64.h sparc64: Support 2GB and 16GB page sizes for kernel linear mappings. 2012-09-06 18:13:58 -07:00
io-unit.c sparc32: Convert mmu_* interfaces from btfixup to method ops. 2012-05-13 13:57:05 -07:00
iommu.c sparc: fix format string argument for prom_printf() 2012-10-02 23:20:34 -04:00
leon_mm.c sparc32: srmmu_probe now knows about leon too 2012-05-27 23:52:51 -07:00
Makefile sparc32: introduce run-time patching of srmmu access functions 2012-05-27 23:52:49 -07:00
srmmu_access.S sparc32: introduce run-time patching of srmmu access functions 2012-05-27 23:52:49 -07:00
srmmu.c sparc/srmmu: clear trailing edge of bitmap properly 2013-03-31 19:29:12 -04:00
srmmu.h sparc32,leon: move leon mmu functions to leon_mm.c 2012-05-19 23:27:38 -07:00
swift.S sparc: remove CVS keywords 2008-05-20 00:33:44 -07:00
tlb.c sparc64: Fix tsb_grow() in atomic context. 2013-02-20 09:46:08 -08:00
tsb.c sparc64: Fix gfp_flags setting in tsb_grow(). 2013-02-20 09:45:53 -08:00
tsunami.S sparc/mm/: possible cleanups 2008-07-17 21:38:01 -07:00
ultra.S sparc64: Add global PMU register dumping via sysrq. 2012-10-16 09:34:01 -07:00
viking.S sparc32: remove runtime btfix support 2012-05-14 14:05:09 -07:00