diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-03-02 19:33:54 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-03-02 19:33:54 -0500 |
commit | 48476df99894492a0f7239f2f3c9a2dde4ff38e2 (patch) | |
tree | 5a1b80f20449968f0de6e5bfbcda5e360e31ba1f /drivers/mtd/tests | |
parent | 37cae6ad4c484030fa972241533c32730ec79b7d (diff) | |
parent | 24dea0c9feccf699749f860fa2f4ccd84d30390d (diff) |
Merge tag 'for-linus-20130301' of git://git.infradead.org/linux-mtd
Pull MTD update from David Woodhouse:
"Fairly unexciting MTD merge for 3.9:
- misc clean-ups in the MTD command-line partitioning parser
(cmdlinepart)
- add flash locking support for STmicro chips serial flash chips, as
well as for CFI command set 2 chips.
- new driver for the ELM error correction HW module found in various
TI chips, enable the OMAP NAND driver to use the ELM HW error
correction
- added number of new serial flash IDs
- various fixes and improvements in the gpmi NAND driver
- bcm47xx NAND driver improvements
- make the mtdpart module actually removable"
* tag 'for-linus-20130301' of git://git.infradead.org/linux-mtd: (45 commits)
mtd: map: BUG() in non handled cases
mtd: bcm47xxnflash: use pr_fmt for module prefix in messages
mtd: davinci_nand: Use managed resources
mtd: mtd_torturetest can cause stack overflows
mtd: physmap_of: Convert device allocation to managed devm_kzalloc()
mtd: at91: atmel_nand: for PMECC, add code to check the ONFI parameter ECC requirement.
mtd: atmel_nand: make pmecc-cap, pmecc-sector-size in dts is optional.
mtd: atmel_nand: avoid to report an error when lookup table offset is 0.
mtd: bcm47xxsflash: adjust names of bus-specific functions
mtd: bcm47xxpart: improve probing of nvram partition
mtd: bcm47xxpart: add support for other erase sizes
mtd: bcm47xxnflash: register this as normal driver
mtd: bcm47xxnflash: fix message
mtd: bcm47xxsflash: register this as normal driver
mtd: bcm47xxsflash: write number of written bytes
mtd: gpmi: add sanity check for the ECC
mtd: gpmi: set the Golois Field bit for mx6q's BCH
mtd: devices: elm: Removes <xx> literals in elm DT node
mtd: gpmi: fix a dereferencing freed memory error
mtd: fix the wrong timeo for panic_nand_wait()
...
Diffstat (limited to 'drivers/mtd/tests')
-rw-r--r-- | drivers/mtd/tests/mtd_nandecctest.c | 10 | ||||
-rw-r--r-- | drivers/mtd/tests/mtd_stresstest.c | 8 | ||||
-rw-r--r-- | drivers/mtd/tests/mtd_torturetest.c | 25 |
3 files changed, 20 insertions, 23 deletions
diff --git a/drivers/mtd/tests/mtd_nandecctest.c b/drivers/mtd/tests/mtd_nandecctest.c index db2f22e7966a..70106607c247 100644 --- a/drivers/mtd/tests/mtd_nandecctest.c +++ b/drivers/mtd/tests/mtd_nandecctest.c | |||
@@ -44,7 +44,7 @@ struct nand_ecc_test { | |||
44 | static void single_bit_error_data(void *error_data, void *correct_data, | 44 | static void single_bit_error_data(void *error_data, void *correct_data, |
45 | size_t size) | 45 | size_t size) |
46 | { | 46 | { |
47 | unsigned int offset = random32() % (size * BITS_PER_BYTE); | 47 | unsigned int offset = prandom_u32() % (size * BITS_PER_BYTE); |
48 | 48 | ||
49 | memcpy(error_data, correct_data, size); | 49 | memcpy(error_data, correct_data, size); |
50 | __change_bit_le(offset, error_data); | 50 | __change_bit_le(offset, error_data); |
@@ -55,9 +55,9 @@ static void double_bit_error_data(void *error_data, void *correct_data, | |||
55 | { | 55 | { |
56 | unsigned int offset[2]; | 56 | unsigned int offset[2]; |
57 | 57 | ||
58 | offset[0] = random32() % (size * BITS_PER_BYTE); | 58 | offset[0] = prandom_u32() % (size * BITS_PER_BYTE); |
59 | do { | 59 | do { |
60 | offset[1] = random32() % (size * BITS_PER_BYTE); | 60 | offset[1] = prandom_u32() % (size * BITS_PER_BYTE); |
61 | } while (offset[0] == offset[1]); | 61 | } while (offset[0] == offset[1]); |
62 | 62 | ||
63 | memcpy(error_data, correct_data, size); | 63 | memcpy(error_data, correct_data, size); |
@@ -68,7 +68,7 @@ static void double_bit_error_data(void *error_data, void *correct_data, | |||
68 | 68 | ||
69 | static unsigned int random_ecc_bit(size_t size) | 69 | static unsigned int random_ecc_bit(size_t size) |
70 | { | 70 | { |
71 | unsigned int offset = random32() % (3 * BITS_PER_BYTE); | 71 | unsigned int offset = prandom_u32() % (3 * BITS_PER_BYTE); |
72 | 72 | ||
73 | if (size == 256) { | 73 | if (size == 256) { |
74 | /* | 74 | /* |
@@ -76,7 +76,7 @@ static unsigned int random_ecc_bit(size_t size) | |||
76 | * and 17th bit) in ECC code for 256 byte data block | 76 | * and 17th bit) in ECC code for 256 byte data block |
77 | */ | 77 | */ |
78 | while (offset == 16 || offset == 17) | 78 | while (offset == 16 || offset == 17) |
79 | offset = random32() % (3 * BITS_PER_BYTE); | 79 | offset = prandom_u32() % (3 * BITS_PER_BYTE); |
80 | } | 80 | } |
81 | 81 | ||
82 | return offset; | 82 | return offset; |
diff --git a/drivers/mtd/tests/mtd_stresstest.c b/drivers/mtd/tests/mtd_stresstest.c index 2d7e6cffd6d4..787f539d16ca 100644 --- a/drivers/mtd/tests/mtd_stresstest.c +++ b/drivers/mtd/tests/mtd_stresstest.c | |||
@@ -55,7 +55,7 @@ static int rand_eb(void) | |||
55 | unsigned int eb; | 55 | unsigned int eb; |
56 | 56 | ||
57 | again: | 57 | again: |
58 | eb = random32(); | 58 | eb = prandom_u32(); |
59 | /* Read or write up 2 eraseblocks at a time - hence 'ebcnt - 1' */ | 59 | /* Read or write up 2 eraseblocks at a time - hence 'ebcnt - 1' */ |
60 | eb %= (ebcnt - 1); | 60 | eb %= (ebcnt - 1); |
61 | if (bbt[eb]) | 61 | if (bbt[eb]) |
@@ -67,7 +67,7 @@ static int rand_offs(void) | |||
67 | { | 67 | { |
68 | unsigned int offs; | 68 | unsigned int offs; |
69 | 69 | ||
70 | offs = random32(); | 70 | offs = prandom_u32(); |
71 | offs %= bufsize; | 71 | offs %= bufsize; |
72 | return offs; | 72 | return offs; |
73 | } | 73 | } |
@@ -76,7 +76,7 @@ static int rand_len(int offs) | |||
76 | { | 76 | { |
77 | unsigned int len; | 77 | unsigned int len; |
78 | 78 | ||
79 | len = random32(); | 79 | len = prandom_u32(); |
80 | len %= (bufsize - offs); | 80 | len %= (bufsize - offs); |
81 | return len; | 81 | return len; |
82 | } | 82 | } |
@@ -191,7 +191,7 @@ static int do_write(void) | |||
191 | 191 | ||
192 | static int do_operation(void) | 192 | static int do_operation(void) |
193 | { | 193 | { |
194 | if (random32() & 1) | 194 | if (prandom_u32() & 1) |
195 | return do_read(); | 195 | return do_read(); |
196 | else | 196 | else |
197 | return do_write(); | 197 | return do_write(); |
diff --git a/drivers/mtd/tests/mtd_torturetest.c b/drivers/mtd/tests/mtd_torturetest.c index c4cde1e9eddb..3a9f6a6a79f9 100644 --- a/drivers/mtd/tests/mtd_torturetest.c +++ b/drivers/mtd/tests/mtd_torturetest.c | |||
@@ -208,7 +208,7 @@ static inline int write_pattern(int ebnum, void *buf) | |||
208 | static int __init tort_init(void) | 208 | static int __init tort_init(void) |
209 | { | 209 | { |
210 | int err = 0, i, infinite = !cycles_count; | 210 | int err = 0, i, infinite = !cycles_count; |
211 | int bad_ebs[ebcnt]; | 211 | int *bad_ebs; |
212 | 212 | ||
213 | printk(KERN_INFO "\n"); | 213 | printk(KERN_INFO "\n"); |
214 | printk(KERN_INFO "=================================================\n"); | 214 | printk(KERN_INFO "=================================================\n"); |
@@ -250,28 +250,24 @@ static int __init tort_init(void) | |||
250 | 250 | ||
251 | err = -ENOMEM; | 251 | err = -ENOMEM; |
252 | patt_5A5 = kmalloc(mtd->erasesize, GFP_KERNEL); | 252 | patt_5A5 = kmalloc(mtd->erasesize, GFP_KERNEL); |
253 | if (!patt_5A5) { | 253 | if (!patt_5A5) |
254 | pr_err("error: cannot allocate memory\n"); | ||
255 | goto out_mtd; | 254 | goto out_mtd; |
256 | } | ||
257 | 255 | ||
258 | patt_A5A = kmalloc(mtd->erasesize, GFP_KERNEL); | 256 | patt_A5A = kmalloc(mtd->erasesize, GFP_KERNEL); |
259 | if (!patt_A5A) { | 257 | if (!patt_A5A) |
260 | pr_err("error: cannot allocate memory\n"); | ||
261 | goto out_patt_5A5; | 258 | goto out_patt_5A5; |
262 | } | ||
263 | 259 | ||
264 | patt_FF = kmalloc(mtd->erasesize, GFP_KERNEL); | 260 | patt_FF = kmalloc(mtd->erasesize, GFP_KERNEL); |
265 | if (!patt_FF) { | 261 | if (!patt_FF) |
266 | pr_err("error: cannot allocate memory\n"); | ||
267 | goto out_patt_A5A; | 262 | goto out_patt_A5A; |
268 | } | ||
269 | 263 | ||
270 | check_buf = kmalloc(mtd->erasesize, GFP_KERNEL); | 264 | check_buf = kmalloc(mtd->erasesize, GFP_KERNEL); |
271 | if (!check_buf) { | 265 | if (!check_buf) |
272 | pr_err("error: cannot allocate memory\n"); | ||
273 | goto out_patt_FF; | 266 | goto out_patt_FF; |
274 | } | 267 | |
268 | bad_ebs = kcalloc(ebcnt, sizeof(*bad_ebs), GFP_KERNEL); | ||
269 | if (!bad_ebs) | ||
270 | goto out_check_buf; | ||
275 | 271 | ||
276 | err = 0; | 272 | err = 0; |
277 | 273 | ||
@@ -290,7 +286,6 @@ static int __init tort_init(void) | |||
290 | /* | 286 | /* |
291 | * Check if there is a bad eraseblock among those we are going to test. | 287 | * Check if there is a bad eraseblock among those we are going to test. |
292 | */ | 288 | */ |
293 | memset(&bad_ebs[0], 0, sizeof(int) * ebcnt); | ||
294 | if (mtd_can_have_bb(mtd)) { | 289 | if (mtd_can_have_bb(mtd)) { |
295 | for (i = eb; i < eb + ebcnt; i++) { | 290 | for (i = eb; i < eb + ebcnt; i++) { |
296 | err = mtd_block_isbad(mtd, (loff_t)i * mtd->erasesize); | 291 | err = mtd_block_isbad(mtd, (loff_t)i * mtd->erasesize); |
@@ -394,6 +389,8 @@ out: | |||
394 | 389 | ||
395 | pr_info("finished after %u erase cycles\n", | 390 | pr_info("finished after %u erase cycles\n", |
396 | erase_cycles); | 391 | erase_cycles); |
392 | kfree(bad_ebs); | ||
393 | out_check_buf: | ||
397 | kfree(check_buf); | 394 | kfree(check_buf); |
398 | out_patt_FF: | 395 | out_patt_FF: |
399 | kfree(patt_FF); | 396 | kfree(patt_FF); |