All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adrian Hunter <adrian.hunter@nokia.com>
To: Kyungmin Park <kmpark@infradead.org>
Cc: "Bityutskiy Artem \(Nokia-D/Helsinki\)"
	<Artem.Bityutskiy@nokia.com>,
	linux-mtd Mailing List <linux-mtd@lists.infradead.org>
Subject: Re: UBIFS abnormal unaligned access at OneNAND 4KiB page
Date: Mon, 03 Aug 2009 10:51:20 +0300	[thread overview]
Message-ID: <4A7696F8.1090509@nokia.com> (raw)
In-Reply-To: <9c9fda240908030000nd0c4b3fp6adc6ac57584748b@mail.gmail.com>

Kyungmin Park wrote:
> On Mon, Aug 3, 2009 at 3:40 PM, Adrian Hunter<adrian.hunter@nokia.com> wrote:
>> Kyungmin Park wrote:
>>> On Mon, Aug 3, 2009 at 3:29 PM, Adrian Hunter<adrian.hunter@nokia.com>
>>> wrote:
>>>> Kyungmin Park wrote:
>>>>> Now I'm working with 4KiB pagesize OneNAND, I got problem with
>>>>> unaligned byte align again.
>>>>>
>>>>> <7>UBIFS DBG (pid 1): read_znode: LEB 78:205824, level 0, 8 branch
>>>>> <7>UBIFS DBG (pid 1): ubifs_read_node: LEB 78:206016, indexing node,
>>>>> length 48
>>>>> onenand_mlc_read_ops_nolock[1108] buf c41bda80 1216 48
>>>>> <7>UBIFS DBG (pid 1): read_znode: LEB 78:206016, level 0, 1 branch
>>>>> onenand_mlc_read_ops_nolock[1108] buf c40a68c0 441 13
>>>>> onenand_read_bufferram[674] area 0x400, buffer c40a68c0, offset 441,
>>>>> count
>>>>> 13
>>>>> <1>Unhandled fault: external abort on non-linefetch (0x1008) at
>>>>> 0xc58805ba
>>>>>
>>>>> In the previous time, we got the similar case. but the problem gone
>>>>> with some patch. but it happens again.
>>>>>
>>>>> Do you have any idea?
>>>> It is up to your driver to meet your bus requirements.  If the bus
>>>> requires
>>>> word (2 bytes) aligned accesses then you must check the alignment in the
>>>> driver and read the ends words separately.
>>> It's onenand_base.c. Only change is page size is 4KiB. others are same.
>>>
>>>> UBIFS does make unaligned reads to the LPT e.g. reading 13 bytes at
>>>> offset
>>>> 441
>>> I think so. but now I got the these unaligned reads.
>>> That's mystery
>> Well, onenand_read_bufferram seems to check only the 'count', not the
>> 'offset'
> 
> I added the handling of offset also

Show me

>> Also perhaps the alignment is 32-bits?
> 
> 16-bits
> 
> For more information.
> Note that 4KiB pagesize has 1 NOP.
> 
> I also suspect the superblock overwrite since block 89, 90 is maybe
> superblock. Is it right?
> 
> UBI is written at offset 0x1580000, size 0x1440000
> 
> * first boot
> 
> <5>UBI: attaching mtd4 to ubi0
> <5>UBI: physical eraseblock size:   262144 bytes (256 KiB)
> <5>UBI: logical eraseblock size:    253952 bytes
> <5>UBI: smallest flash I/O unit:    4096
> <5>UBI: VID header offset:          4096 (aligned 4096)
> <5>UBI: data offset:                8192
> <5>UBI: attached mtd4 to ubi0
> <5>UBI: MTD device name:            "UBI"
> <5>UBI: MTD device size:            490 MiB
> <5>UBI: number of good PEBs:        1955
> <5>UBI: number of bad PEBs:         7
> <5>UBI: max. allowed volumes:       128
> <5>UBI: wear-leveling threshold:    4096
> <5>UBI: number of internal volumes: 1
> <5>UBI: number of user volumes:     1
> <5>UBI: available PEBs:             0
> <5>UBI: total number of reserved PEBs: 1955
> <5>UBI: number of PEBs reserved for bad PEB handling: 19
> <5>UBI: max/mean erase counter: 1/0
> <5>UBI: image sequence number: 0
> <5>UBI: background thread "ubi_bgt0d" started, PID 925
> ...
> <7>UBIFS DBG (pid 1): ubifs_get_sb: name ubi0!rootfs, flags 0x8000
> <7>UBIFS DBG (pid 1): ubifs_get_sb: opened ubi0_1
> <7>UBIFS DBG (pid 1): ubifs_read_superblock: Auto resizing (sb) from 79 LEBs to
> 1932 LEBs
> <7>UBIFS DBG (pid 970): ubifs_bg_thread: background thread "ubifs_bgt0_1" starte
> d, PID 970
> <7>UBIFS DBG (pid 1): ubifs_read_master: Auto resizing (master) from 79 LEBs to
> 1932 LEBs
> onenand_read_bufferram[675] area 0x400, buffer c413cc20, offset 441, count 13
> <3>UBIFS error (pid 1): check_lpt_type: invalid type (11) in LPT node type 1

This is the first problem.

> [<c002d8e0>] (unwind_backtrace+0x0/0xdc) from [<c0116f00>] (check_lpt_type+0x58/
> 0x6c)
> [<c0116f00>] (check_lpt_type+0x58/0x6c) from [<c0118044>] (ubifs_unpack_nnode+0x
> 34/0xd0)
> [<c0118044>] (ubifs_unpack_nnode+0x34/0xd0) from [<c01182c4>] (ubifs_read_nnode+
> 0xc4/0x180)
> [<c01182c4>] (ubifs_read_nnode+0xc4/0x180) from [<c0118dc8>] (ubifs_lpt_lookup_d
> irty+0x20/0x32c)
> [<c0118dc8>] (ubifs_lpt_lookup_dirty+0x20/0x32c) from [<c0109da8>] (ubifs_replay
> _journal+0x24/0x1a74)
> [<c0109da8>] (ubifs_replay_journal+0x24/0x1a74) from [<c00fe514>] (ubifs_fill_su
> per+0xbc0/0x1954)
> [<c00fe514>] (ubifs_fill_super+0xbc0/0x1954) from [<c00ff540>] (ubifs_get_sb+0x2
> 98/0x310)
> [<c00ff540>] (ubifs_get_sb+0x298/0x310) from [<c008f214>] (vfs_kern_mount+0x4c/0
> x9c)
> [<c008f214>] (vfs_kern_mount+0x4c/0x9c) from [<c008f2a8>] (do_kern_mount+0x34/0x
> d8)
> [<c008f2a8>] (do_kern_mount+0x34/0xd8) from [<c00a3ec8>] (do_mount+0x674/0x6e0)
> [<c00a3ec8>] (do_mount+0x674/0x6e0) from [<c00a3fb8>] (sys_mount+0x84/0xcc)
> [<c00a3fb8>] (sys_mount+0x84/0xcc) from [<c0008e68>] (mount_block_root+0x100/0x2
> ac)
> [<c0008e68>] (mount_block_root+0x100/0x2ac) from [<c00090fc>] (prepare_namespace
> +0x88/0x1bc)
> [<c00090fc>] (prepare_namespace+0x88/0x1bc) from [<c00085bc>] (kernel_init+0xd4/
> 0x108)
> [<c00085bc>] (kernel_init+0xd4/0x108) from [<c0028e08>] (kernel_thread_exit+0x0/
> 0x8)
> <3>UBIFS error (pid 1): ubifs_read_nnode: error -22 reading nnode at 7:441
> <7>UBIFS DBG (pid 970): ubifs_bg_thread: background thread "ubifs_bgt0_1" stops
> 
> * second boot
> <7>UBIFS DBG (pid 1): ubifs_get_sb: name ubi0!rootfs, flags 0x8000
> <7>UBIFS DBG (pid 1): ubifs_get_sb: opened ubi0_1
> <7>UBIFS DBG (pid 970): ubifs_bg_thread: background thread "ubifs_bgt0_1" starte
> d, PID 970
> onenand_wait[519] state 1, block 89
> <3>onenand_wait: controller error = 0x0400
> onenand_wait[519] state 1, block 89
> <3>onenand_wait: controller error = 0x0400
> onenand_wait[519] state 1, block 89
> <3>onenand_wait: controller error = 0x0400
> onenand_wait[519] state 1, block 89
> <3>onenand_wait: controller error = 0x0400
> <3>UBI error: ubi_io_read: error -5 while reading 253952 bytes from PEB 3:8192,
> read 4096 bytes
> <3>UBIFS error (pid 1): ubifs_start_scan: cannot read 253952 bytes from LEB 1:0,
>  error -5
> onenand_wait[519] state 1, block 89
> <3>onenand_wait: controller error = 0x0400
> onenand_wait[519] state 1, block 89
> <3>onenand_wait: controller error = 0x0400
> onenand_wait[519] state 1, block 89
> <3>onenand_wait: controller error = 0x0400
> onenand_wait[519] state 1, block 89
> <3>onenand_wait: controller error = 0x0400
> <3>UBI error: ubi_io_read: error -5 while reading 253952 bytes from PEB 3:8192,
> read 4096 bytes
> <3>UBIFS error (pid 1): ubifs_recover_master_node: failed to recover master node
> <7>UBIFS DBG (pid 970): ubifs_bg_thread: background thread "ubifs_bgt0_1" stops
> 

  reply	other threads:[~2009-08-03  7:51 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-03  5:35 UBIFS abnormal unaligned access at OneNAND 4KiB page Kyungmin Park
2009-08-03  6:29 ` Adrian Hunter
2009-08-03  6:34   ` Kyungmin Park
2009-08-03  6:40     ` Adrian Hunter
2009-08-03  7:00       ` Kyungmin Park
2009-08-03  7:51         ` Adrian Hunter [this message]
2009-08-03  8:57           ` Kyungmin Park
2009-08-03  9:08             ` Adrian Hunter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A7696F8.1090509@nokia.com \
    --to=adrian.hunter@nokia.com \
    --cc=Artem.Bityutskiy@nokia.com \
    --cc=kmpark@infradead.org \
    --cc=linux-mtd@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.