linux/arch/sparc/lib
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
..
ashldi3.S sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC 2012-05-11 20:33:22 -07:00
ashrdi3.S sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC 2012-05-11 20:33:22 -07:00
atomic32.c sparc: Fix __atomic_add_unless() return value. 2011-08-04 02:47:40 -07:00
atomic_64.S sparc: Support atomic64_dec_if_positive properly. 2012-11-09 19:37:59 -08:00
bitext.c sparc/srmmu: clear trailing edge of bitmap properly 2013-03-31 19:29:12 -04:00
bitops.S sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC 2012-05-11 20:33:22 -07:00
blockops.S sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC 2012-05-11 20:33:22 -07:00
bzero.S sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC 2012-05-11 20:33:22 -07:00
checksum_32.S sparc32: Fixed unaligned memory copying in function __csum_partial_copy_sparc_generic 2011-05-11 21:35:04 -07:00
checksum_64.S
clear_page.S
cmpdi2.c
copy_in_user.S
copy_page.S sparc64: Consistently use fsrc2 rather than fmovd in optimized asm. 2012-06-27 01:25:23 -07:00
copy_user.S
COPYING.LIB
csum_copy_from_user.S
csum_copy_to_user.S
csum_copy.S
divdi3.S sparc32: Kill off software 32-bit multiply/divide routines. 2012-05-15 11:23:47 -07:00
ffs.S sparc: Use popc when possible for ffs/__ffs/ffz. 2011-08-02 21:28:53 -07:00
GENbzero.S
GENcopy_from_user.S
GENcopy_to_user.S
GENmemcpy.S
GENpage.S
GENpatch.S
hweight.S sparc: Use popc if possible for hweight routines. 2011-08-02 21:28:50 -07:00
iomap.c sparc: switch to GENERIC_PCI_IOMAP 2011-12-04 15:59:49 +02:00
ipcsum.S sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC 2012-05-11 20:33:22 -07:00
ksyms.c sparc: Support atomic64_dec_if_positive properly. 2012-11-09 19:37:59 -08:00
libgcc.h
locks.S
lshrdi3.S sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC 2012-05-11 20:33:22 -07:00
Makefile sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy. 2012-10-05 13:45:26 -07:00
mcount.S sparc64: Allocate sufficient stack space in ftrace stubs. 2010-04-13 18:59:02 -07:00
memcmp.S
memcpy.S sparc32: Correct the return value of memcpy. 2011-10-20 15:17:23 -07:00
memmove.S sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC 2012-05-11 20:33:22 -07:00
memscan_32.S
memscan_64.S
memset.S sparc: Stop trying to be so fancy and use __builtin_{memcpy,memset}() 2009-12-10 23:32:10 -08:00
muldi3.S sparc32: Kill off software 32-bit multiply/divide routines. 2012-05-15 11:23:47 -07:00
NG2copy_from_user.S
NG2copy_to_user.S
NG2memcpy.S sparc64: Fix return value of Niagara-2 memcpy. 2012-09-27 01:06:43 -07:00
NG2patch.S
NG4clear_page.S sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy. 2012-10-05 13:45:26 -07:00
NG4copy_from_user.S sparc64: Fix comment type in NG4 copy from user. 2012-09-27 14:26:41 -07:00
NG4copy_page.S sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy. 2012-10-05 13:45:26 -07:00
NG4copy_to_user.S sparc64: Add SPARC-T4 optimized memcpy. 2012-09-27 00:35:11 -07:00
NG4memcpy.S sparc64: Fix trailing whitespace in NG4 memcpy. 2012-09-28 13:08:22 -07:00
NG4memset.S sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy. 2012-10-05 13:45:26 -07:00
NG4patch.S sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy. 2012-10-05 13:45:26 -07:00
NGbzero.S
NGcopy_from_user.S
NGcopy_to_user.S
NGmemcpy.S
NGpage.S sparc64: Add SPARC-T4 optimized memcpy. 2012-09-27 00:35:11 -07:00
NGpatch.S
PeeCeeI.c
strlen.S
strncmp_32.S sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC 2012-05-11 20:33:22 -07:00
strncmp_64.S sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC 2012-05-11 20:33:22 -07:00
U1copy_from_user.S
U1copy_to_user.S
U1memcpy.S sparc64: Consistently use fsrc2 rather than fmovd in optimized asm. 2012-06-27 01:25:23 -07:00
U3copy_from_user.S
U3copy_to_user.S
U3memcpy.S
U3patch.S
ucmpdi2.c sparc32: add ucmpdi2 2012-05-19 15:23:57 -07:00
udivdi3.S sparc32: Kill off software 32-bit multiply/divide routines. 2012-05-15 11:23:47 -07:00
user_fixup.c
usercopy.c lib: Sparc's strncpy_from_user is generic enough, move under lib/ 2012-05-24 13:12:28 -07:00
VISsave.S
xor.S sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC 2012-05-11 20:33:22 -07:00